Собственно сабж. Как передать параметр, введенный пользователем во внешнюю печатную форму. Нужно что бы пользователь ввел данные, которые будут отображаться в печатной форме.
---
Вот пример реализации https://infostart.ru/1c/articles/1169579/
---
1. В ВПФ создаем свою форму, например, ФормаПодписей для ввода подписей.
2. Эту форму выбираем в реквизите "Форма обработки".
3. При регистрации ВызовКлиентскогоМетода, а не ВызовСерверногоМетода:

```1c
    Функция СведенияОВнешнейОбработке() Экспорт

    //---------------
    Наименование = "(ИС КФ) М-11";
    НаименованиеДляПользователя = "(ИС КФ) М-11";
    Версия = "3.0";
    //---------------

    ...

    // Добавим команду в таблицу
    ДобавитьКоманду(ТаблицаКоманд, НаименованиеДляПользователя, "ФормаПодписей", "ВызовКлиентскогоМетода", Истина, "ПечатьMXL");
    //ДобавитьКоманду(ТаблицаКоманд, НаименованиеДляПользователя, Наименование, "ВызовСерверногоМетода", Истина, "ПечатьMXL");

    // Сохраним таблицу команд в параметры регистрации обработки
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    // Теперь вернем системе наши параметры
    Возврат ПараметрыРегистрации;
    КонецФункции
```

4. Теперь по команде "Печать" открывается ФормаПодписей. В этой форме пользователь вводит подписи и нажимает кнопку "Выполнить печать":

```1c
    &НаКлиенте
    Процедура ВыполнитьПечать(Команда)
    МассивОбъектов=Новый Массив;
    Если Объект.ОбъектыНазначенияСписок.Количество()=0 Тогда
    МассивОбъектов.Добавить(Объект.СсылкаНаОбъект);
    Иначе
    МассивОбъектов=Объект.ОбъектыНазначенияСписок.ВыгрузитьЗначения();
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(Объект.СсылкаНаОбъект) И Объект.ОбъектыНазначенияСписок.Количество()>0 Тогда
    Объект.СсылкаНаОбъект=Объект.ОбъектыНазначенияСписок[0].Значение;
    КонецЕсли;
    СохранитьДанныеРегистраПодписи();
    Идентификатор="(ИС КФ) М-11";
    ПараметрыИсточника=Новый Структура;
    ПараметрыИсточника.Вставить("ИдентификаторКоманды",Идентификатор);
    ПараметрыИсточника.Вставить("ОбъектыНазначения",МассивОбъектов);
    ПараметрыОткрытия=Новый Структура;
    ПараметрыОткрытия.Вставить("ИсточникДанных",ОбработкаСсылка);
    ПараметрыОткрытия.Вставить("ПараметрыИсточника",ПараметрыИсточника);
    ПараметрыПечати=Новый Структура("ЗаголовокФормы","М-11 № "+НомерДокумента(МассивОбъектов[0]));
    ПараметрыОткрытия.Вставить("ПараметрыПечати",ПараметрыПечати);
    Форма=ЭтаФорма.ВладелецФормы;
    ОткрытьФорму("ОбщаяФорма.ПечатьДокументов",ПараметрыОткрытия,Форма);
    Если Форма<>Неопределено Тогда
    ЭтаФорма.Закрыть();
    КонецЕсли;
    КонецПроцедуры
```
---
Вот пример реализации https://infostart.ru/1c/articles/1169579/
---
Спасибо, буду пробовать. По результату отпишусь.
---
Не осилил. Если сделать, как описано по ссылке и открывать, как внешний отчет через файл - открыть, то работает. Т.е. открывается форма ней вводятся параметры, передаются в процедуру печати. Если подключить, как печатную форму, то форма ввода параметров не открывается, сразу выводит табличный документ.
---
Получилось по ссылке. Нужно было ставить основной формой ФормуНастроек.
---
Передаете через ПараметрыПечати получаете через ПараметрыВывода. Если управляемые формы и БСП.
---
Можно подробнее?
---
можно сделать внешней обработкой с открытием формы, а уже из нее вызывается печать с передачей параметров
---
Да, так можно, но интересно было бы сделать через печать. Можно и реквизит в накладную добавить, тогда вообще без проблем.
---
1. В ВПФ создаем свою форму, например, ФормаПодписей для ввода подписей.
2. Эту форму выбираем в реквизите "Форма обработки".
3. При регистрации ВызовКлиентскогоМетода, а не ВызовСерверногоМетода:

```1c
    Функция СведенияОВнешнейОбработке() Экспорт

    //---------------
    Наименование = "(ИС КФ) М-11";
    НаименованиеДляПользователя = "(ИС КФ) М-11";
    Версия = "3.0";
    //---------------

    ...

    // Добавим команду в таблицу
    ДобавитьКоманду(ТаблицаКоманд, НаименованиеДляПользователя, "ФормаПодписей", "ВызовКлиентскогоМетода", Истина, "ПечатьMXL");
    //ДобавитьКоманду(ТаблицаКоманд, НаименованиеДляПользователя, Наименование, "ВызовСерверногоМетода", Истина, "ПечатьMXL");

    // Сохраним таблицу команд в параметры регистрации обработки
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    // Теперь вернем системе наши параметры
    Возврат ПараметрыРегистрации;
    КонецФункции
```

4. Теперь по команде "Печать" открывается ФормаПодписей. В этой форме пользователь вводит подписи и нажимает кнопку "Выполнить печать":

```1c
    &НаКлиенте
    Процедура ВыполнитьПечать(Команда)
    МассивОбъектов=Новый Массив;
    Если Объект.ОбъектыНазначенияСписок.Количество()=0 Тогда
    МассивОбъектов.Добавить(Объект.СсылкаНаОбъект);
    Иначе
    МассивОбъектов=Объект.ОбъектыНазначенияСписок.ВыгрузитьЗначения();
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(Объект.СсылкаНаОбъект) И Объект.ОбъектыНазначенияСписок.Количество()>0 Тогда
    Объект.СсылкаНаОбъект=Объект.ОбъектыНазначенияСписок[0].Значение;
    КонецЕсли;
    СохранитьДанныеРегистраПодписи();
    Идентификатор="(ИС КФ) М-11";
    ПараметрыИсточника=Новый Структура;
    ПараметрыИсточника.Вставить("ИдентификаторКоманды",Идентификатор);
    ПараметрыИсточника.Вставить("ОбъектыНазначения",МассивОбъектов);
    ПараметрыОткрытия=Новый Структура;
    ПараметрыОткрытия.Вставить("ИсточникДанных",ОбработкаСсылка);
    ПараметрыОткрытия.Вставить("ПараметрыИсточника",ПараметрыИсточника);
    ПараметрыПечати=Новый Структура("ЗаголовокФормы","М-11 № "+НомерДокумента(МассивОбъектов[0]));
    ПараметрыОткрытия.Вставить("ПараметрыПечати",ПараметрыПечати);
    Форма=ЭтаФорма.ВладелецФормы;
    ОткрытьФорму("ОбщаяФорма.ПечатьДокументов",ПараметрыОткрытия,Форма);
    Если Форма<>Неопределено Тогда
    ЭтаФорма.Закрыть();
    КонецЕсли;
    КонецПроцедуры
```