Есть задача внешняя печатная форма к документу реализация товаров и услуг. Перед формированием самой ПФ проводится проверка и пользователю выводиться окно с вопросом.
Вопрос такой. вывести вопрос можно только на клиенте на форме, но нужно привести пф к типовому виду при выводу. НЕ ТабДок.Показать(). как это можно реализовать?
Тип команды в сведениях о внешней обработки - ВызовКлиентскогоМетода. На форме провести проверку и передать данные на сервер в модуль объекта обработки и отработать типовой функцией
Процедура Печать(ДанныеПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"СпецификацияСчетФактура",
НСтр("ru = 'Спецификация (счет-фактура)'"),
СформироватьПечатнуюФорму(ДанныеПечати));
КонецПроцедуры
в инете я нашла только одну более-менее подходящую информацию по этому вопросу. но не очень поняла как это реализовывать
https://infostart.ru/public/502742/
Код в модуле формы
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
Если ОбъектыНазначенияМассив.Количество() = 1 Тогда
ДанныеПроверки = Проверка(ОбъектыНазначенияМассив); //проверяется на наличии нескольких реализаций по условию
Если ДанныеПроверки.Количество() > 1 Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("МассивОбъектов",ОбъектыНазначенияМассив);
ДополнительныеПараметры.Вставить("МассивРеализаций",ДанныеПроверки);
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса",ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(Оповещение,"На дату отгрузки есть еще документы реализации по данному контрагенту. Объединить?",
РежимДиалогаВопрос.ДаНетОтмена,,КодВозвратаДиалога.Да,);
Иначе
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("МассивОбъектов",Ссылка);
ДополнительныеПараметры.Вставить("МассивРеализаций",Ссылка);
СформмироватьПечатнуюФормуНаСервере(ДополнительныеПараметры);
КонецЕсли;
Иначе
Для каждого ОбъектНазначения Из ОбъектыНазначенияМассив Цикл
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("МассивОбъектов",Ссылка);
ДополнительныеПараметры.Вставить("МассивРеализаций",Ссылка);
СформмироватьПечатнуюФормуНаСервере(ДополнительныеПараметры);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция Проверка(ОбъектыНазначенияМассив)
Возврат ПолучитьРеализацииНаДатуВыгрузки(ОбъектыНазначенияМассив[0], ОбъектыНазначенияМассив[0].Контрагент);
КонецФункции
&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
СформмироватьПечатнуюФормуНаСервере(Параметры); //вызывается функция в модуле объекта
ИначеЕсли Результат = КодВозвратаДиалога.Нет Тогда
СформмироватьПечатнуюФормуНаСервере(Параметры);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформмироватьПечатнуюФормуНаСервере(Параметры) //вызывается функция в модуле объекта
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.СформироватьПечатнуюФорму(Параметры);
КонецПроцедуры