Создал внешнюю обработку "Создание связных объектов" в модуле обработки вызов "ВызовКлиентскогоМетода"

В форме обработки создал следующий код

```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт

    // Реализация логики команды по созданию связанных объектов
    Если ИдентификаторКоманды = "ЗаказПоставщику" Тогда

    ЗаполнитьПоДокументуОснованию(ОбъектыНазначенияМассив);

    КонецЕсли

    КонецПроцедуры

    &НаСервере
    Процедура ЗаполнитьПоДокументуОснованию(ОснованиеМассив)

    Основание = ОснованиеМассив[0];
    НовыйДокумент = Документы.СчетНаОплатуПоставщика.СоздатьДокумент();

    Если ТипЗнч(Основание) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда

    // Заполним реквизиты шапки по документу основанию.
    АдресДоставки = Основание.АдресДоставки;
    ЗаполнениеДокументов.ЗаполнитьПоОснованию(НовыйДокумент, Основание);

    // Заполним табличные части
    СкопироватьТовары(Основание, НовыйДокумент);
    СкопироватьВозвратнуюТару(Основание, НовыйДокумент);

    КонецЕсли;

    КонецПроцедуры
```

Обработка всё время падает с ошибкой
{ВнешняяОбработка.ВводНаОснованииЗаказПоставщику.Форма.Форма.Форма(8)}: Ошибка при вызове метода контекста (ЗаполнитьПоДокументуОснованию)
  ЗаполнитьПоДокументуОснованию(ОбъектыНазначенияМассив);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: v Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}Ref Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType

Не пойму, что не так
---
```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт

    // Реализация логики команды по созданию связанных объектов
    Если ИдентификаторКоманды = "ЗаказПоставщику" Тогда

    //Переменную ОбъектыНазначенияМассив передать целиком НЕльзя, надо передовать
    //либо в цикле либо один Элемент по индексу массива
    Если ОбъектыНазначенияМассив.Количество() > 0 Тогда

    //Создаем форму документа которую будем заполнять, сам документ НЕ создаем
    //потому что его межд Клиентом и Сервером НЕ передать будет ошибка
    ФормаЗаказПоставщику = ПолучитьФорму("Документ.СчетНаОплатуПоставщика.ФормаОбъекта");
    //Получаем объект из формы структура
    ДанныеФормыСтруктураОбъекта = ФормаЗаказПоставщику.Объект;
    ЗаполнитьПоДокументуОснованию(ОбъектыНазначенияМассив[0], ДанныеФормыСтруктураОбъекта);
    //Заполняем форму документа данными из ДанныеФормыСтруктураОбъект
    КопироватьДанныеФормы(ДанныеФормыСтруктураОбъекта, ФормаЗаказПоставщику.Объект);
    //Реквизит договор почемуто Не доступе на редактирование, ХЗ почему
    ФормаЗаказПоставщику.Элементы.ДоговорКонтрагента.Доступность = Истина;
    //Открываем форму документа
    ФормаЗаказПоставщику.Открыть();
    КонецЕсли;

    КонецЕсли

    КонецПроцедуры

    &НаСервере
    Процедура ЗаполнитьПоДокументуОснованию(Основание, ДанныеФормыСтруктура)

    Если ТипЗнч(Основание) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда

    НовыйДокумент = ДанныеФормыВЗначение(ДанныеФормыСтруктура,Тип("ДокументОбъект.СчетНаОплатуПоставщика"));

    // Заполним реквизиты шапки по документу основанию.
    ЗаполнениеДокументов.ЗаполнитьПоОснованию(НовыйДокумент, Основание);
    НовыйДокумент.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();

    // Заполним табличные части
    СкопироватьТовары(Основание, НовыйДокумент);
    СкопироватьВозвратнуюТару(Основание, НовыйДокумент);

    ЗначениеВДанныеФормы(НовыйДокумент,ДанныеФормыСтруктура);

    КонецЕсли;

    КонецПроцедуры
```
---
fа если в цикле перебрать?

```1c
    Для каждого Элемент из ОбъектыНазначенияМассив Цикл
    ЗаполнитьПоДокументуОснованию(Элемент )
    Цикл
```
---
Такую же ошибку выдает
---
Тип данных ОбъектыНазначенияМассив исходной процедуры ВыполнитьКоманду не доступен для передачи между клиентом и сервером (к примеру - таблица значений, см. директивы процедур). К тому же - не имеет смысла гонять всю коллекцию между клиентом и сервером, когда вам нужен только первый элемент (неоптимально, избыточно). Можно переделать так:

```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт

    // Реализация логики команды по созданию связанных объектов
    Если ИдентификаторКоманды = "ЗаказПоставщику" Тогда

    Если ОбъектыНазначенияМассив.Количество() > 0 Тогда
    ЗаполнитьПоДокументуОснованию(ОбъектыНазначенияМассив[0]);
    КонецЕсли;

    КонецЕсли

    КонецПроцедуры

    &НаСервере
    Процедура ЗаполнитьПоДокументуОснованию(Основание)

    НовыйДокумент = Документы.СчетНаОплатуПоставщика.СоздатьДокумент();

    Если ТипЗнч(Основание) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда

    // Заполним реквизиты шапки по документу основанию.
    АдресДоставки = Основание.АдресДоставки;
    ЗаполнениеДокументов.ЗаполнитьПоОснованию(НовыйДокумент, Основание);

    // Заполним табличные части
    СкопироватьТовары(Основание, НовыйДокумент);
    СкопироватьВозвратнуюТару(Основание, НовыйДокумент);

    КонецЕсли;

    КонецПроцедуры
```
---
+ возможно, не имеет смысла сразу создавать новый документ, если его заполнение условно и требуется именно создать документ на основании, а не просто пустышку. Возможно, имеет смысл перенести создание документа внутрь условия (если это вся процедура по обработке документа).
---
а как мне открыть форму созданного документа, но не записанного в бд
Ведь открытие формы работает только на клиенте.
---
```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт

    // Реализация логики команды по созданию связанных объектов
    Если ИдентификаторКоманды = "ЗаказПоставщику" Тогда

    //Переменную ОбъектыНазначенияМассив передать целиком НЕльзя, надо передовать
    //либо в цикле либо один Элемент по индексу массива
    Если ОбъектыНазначенияМассив.Количество() > 0 Тогда

    //Создаем форму документа которую будем заполнять, сам документ НЕ создаем
    //потому что его межд Клиентом и Сервером НЕ передать будет ошибка
    ФормаЗаказПоставщику = ПолучитьФорму("Документ.СчетНаОплатуПоставщика.ФормаОбъекта");
    //Получаем объект из формы структура
    ДанныеФормыСтруктураОбъекта = ФормаЗаказПоставщику.Объект;
    ЗаполнитьПоДокументуОснованию(ОбъектыНазначенияМассив[0], ДанныеФормыСтруктураОбъекта);
    //Заполняем форму документа данными из ДанныеФормыСтруктураОбъект
    КопироватьДанныеФормы(ДанныеФормыСтруктураОбъекта, ФормаЗаказПоставщику.Объект);
    //Реквизит договор почемуто Не доступе на редактирование, ХЗ почему
    ФормаЗаказПоставщику.Элементы.ДоговорКонтрагента.Доступность = Истина;
    //Открываем форму документа
    ФормаЗаказПоставщику.Открыть();
    КонецЕсли;

    КонецЕсли

    КонецПроцедуры

    &НаСервере
    Процедура ЗаполнитьПоДокументуОснованию(Основание, ДанныеФормыСтруктура)

    Если ТипЗнч(Основание) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда

    НовыйДокумент = ДанныеФормыВЗначение(ДанныеФормыСтруктура,Тип("ДокументОбъект.СчетНаОплатуПоставщика"));

    // Заполним реквизиты шапки по документу основанию.
    ЗаполнениеДокументов.ЗаполнитьПоОснованию(НовыйДокумент, Основание);
    НовыйДокумент.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();

    // Заполним табличные части
    СкопироватьТовары(Основание, НовыйДокумент);
    СкопироватьВозвратнуюТару(Основание, НовыйДокумент);

    ЗначениеВДанныеФормы(НовыйДокумент,ДанныеФормыСтруктура);

    КонецЕсли;

    КонецПроцедуры
```