Всем привет. У меня есть внешняя печатная форма (Во вложении). В качестве макета выступает документ MSWord ПримерВордовскойПечати, добавлен в Active Document. Задача: в 1с предприятии, а не в конфигурации, в разделе продажи -> документы продажи(все) -> печать и вывести в печати именно тот документ, который я сделал (ПримерВордовскойПечати). так как я еще совсем новичок, обошел все форумы, написал код программы, в модуле объекта, в в дополнительные отчеты и обработки, загрузил этот документ, зашел в раздел продажи -> документы продажи(все) -> печать-> ПримерВордПечати и выводит такую ошибку:

{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(235)}: Слишком много фактических параметров
ВнешняяОбработкаОбъект.Печать(

пока я обошел все форумы я уже запутался. посмотрите мой код (Во вложении) и объясните начинающему нормально, как эту ошибку устранить
---
Чегож проще-то?!
---
для начала

```1c
    Функция Печать(Команда) Экспорт
```

почему функция, а не процедура? кому и что она должна возвращать?
почему в модуле обработки, а не формы?
почему вызов серверного метода? на сервере нужно только макет и нужные данные получить, а выводить по-любому на клиенте. на сервере может(скорее всего) и офис не установлен.
делайте вызовклиентскогометода
в модуле обработки убирайте свою функцию
в форме

```1c
    &НаКлиенте
    Процедура Печать(Команда) Экспорт
    ....
    Макет = ПолучитьМакетНаСервере();
    ....

    &НаСервере
    Функция ПолучитьМакетНаСервере()
    Обработка = РеквизитФормыВЗначение("Объект");
    Возврат Обработка.ПолучитьМакет("НужныйМакет");
    КонецФункции
```
---
&НаСервере
Функция ПолучитьМакетНаСервере()
Обработка = РеквизитФормыВЗначение("Объект");
Возврат Обработка.ПолучитьМакет("НужныйМакет");
КонецФункции

вообще я это все из примеров брал.
переделал так, как ты написал (во вложении),
ошибка следующая:

{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(412)}: Слишком много фактических параметров
  ФормаОбработки.Печать(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения);
---
а ну да... еще же объекты назначения...

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

Это массив ссылок на документы из которых вызывается обработка. Как правило, там один твой документ.
---
а коман
(4) ИдентификаторКоманды, МассивОбъектов

теперь выводит такую ошибку:

{ВнешняяОбработка.ПримерВордовскойПечати.Форма.Форма.Форма(10)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
Договор = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПФ_WORD_Договор");
по причине:
Метод недоступен на клиенте
---
Потому, что это должно быть с дериктивой &НаСервере

```1c
    &НаСервере
    Функция ПолучитьМакетНаСервере()
    Обработка = РеквизитФормыВЗначение("Объект");
    Возврат Обработка.ПолучитьМакет("НужныйМакет");
    КонецФункции
```
---
Потому, что это должно быть с дериктивой &НаСервере
&НаСервере
Функция ПолучитьМакетНаСервере()
Обработка = РеквизитФормыВЗначение("Объект");
Возврат Обработка.ПолучитьМакет("НужныйМакет");
КонецФункции

с какой дериктивой?
---
```1c
    Договор = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПФ_WORD_Договор");
```
Это лишнее. Вместо этого должно быть
```1c
    Договор = ПолучитьМакетНаСервере();
```
---
да, но без этой строки он ругается

{ВнешняяОбработка.ПримерВордовскойПечати.Форма.Форма.Форма(11,11)}: Переменная не определена (Договор)
 MSWord = <<?>>Договор.Получить(); (Проверка: Тонкий клиент)
---
а понял
---
сейчас, он руается на такую ошибку:

{ВнешняяОбработка.ПримерВордовскойПечати.Форма.Форма.Форма(10)}: Ошибка при вызове метода контекста (ПолучитьМакетНаСервере)
Договор = ПолучитьМакетНаСервере();
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ret':
 форма: Элемент
 имя: {http://v8.1c.ru/8.2/managed-application/modules}ret
по причине:
---
У меня в макете используется вордовский файл загруженный в двоичном формате.
Обработка такая

```1c
    ДокументВордДляПечати = Новый COMОбъект("Word.Application");
    Макет = ПолучитьМакетСервер();
    временныйПуть = КаталогВременныхФайлов();
    имяВременногоФайла = временныйПуть + "dog1s.doc";
    Макет.Записать(имяВременногоФайла);
    ТекДок = ДокументВордДляПечати.Documents.ADD(имяВременногоФайла);
    Замена = ТекДок.Content.Find;

    Замена.Execute("{Номер}", Ложь, Истина, Ложь, , , Истина, , Ложь, СокрЛП(РеквизитыДокумента.НомерДоговора));
    ...

    ДокументВордДляПечати.Visible = Истина;
```
---
Я правильно понимаю, Ты мне предлагаешь тип макета Active document поменять на двоичные данные, вставить тот код который ты мне сейчас написал??
---
С актив документ не разбирался. Мой код у меня работает.
---
я просто не понимаю про двоичные данные
---
в свой макет загружаешь свой "шаблон.doc" в формате двоичных данных. Двочные данные - это сам файл.
Потом, по логике, этот файл локально сохраняется во временных файлах и COMОбъект("Word.Application") загружает этот сохраненный документ.
Дальше крути как хочешь.
---
(12)

а код этот ты куда пихаешь????
---
Если написанные строчки кода не несут для вас смысловой нагрузки(т.е. что, откуда и куда), то вам нужно идти к самым истокам изучения программирования 1с.
---
Уже просто запутался
---
ДокументВордДляПечати = Новый COMОбъект("Word.Application");
    Макет = ПолучитьМакетСервер();
    временныйПуть = КаталогВременныхФайлов();
    имяВременногоФайла = временныйПуть + "dog1s.doc";
    Макет.Записать(имяВременногоФайла);
    ТекДок = ДокументВордДляПечати.Documents.ADD(имяВременногоФайла);

как же муторно все тут зачем вы именно двоичные данные используете. еще больше запутали! :( пррр. голова кипит уже
---
Чегож проще-то?!
---
спасибо. а через эктив документ не получится, я так понимаю