Часто возникает не совсем правильная, но такая необходимая потребность сфомировать печатную форму непроведенного документа.
В основе метода публикация Передача параметров во внешнюю печатную форму
- Открыть любую ВПФ.
- Создать пустую форму
- Заполнить параметры формы
- В модуль формы вставить код
&НаСервереБезКонтекста
Функция ЕстьОбщийМодуль(НазваниеМодуля)
Возврат Метаданные.ОбщиеМодули.Найти(НазваниеМодуля) <> Неопределено;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ВыполняемаяКоманда = Параметры;
СтандартнаяОбработка = Истина;
//Проверка на релиз БСП для универсальности.
//Общий модуль ДополнительныеОтчетыИОбработкиКлиентПереопределяемый существует в версии БСП выше 2.0.1.19
Если ЕстьОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый") Тогда
Выполнить("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый.ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы(ВыполняемаяКоманда.ОбъектыНазначения, СтандартнаяОбработка);");
КонецЕсли;
//Определение и заполнение штатных параметров для общей формы ПечатьДокументов
ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");
ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;
ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ВыполняемаяКоманда.ИдентификаторКоманды;
ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = ВыполняемаяКоманда.ОбъектыНазначения;
//Вывод сформированного табличного документа в штатную форму.
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
ЭтаФорма.Закрыть();
КонецПроцедуры
- В модуле Объекта "ВызовСерверногоМетода" заменить на "ОткрытиеФормы"
ДобавитьКоманду(ТаблицаКоманд,
НСтр("ru = 'ВПФ Товарный чек'"),
"ПФ_MXL_РеализацияТоваров",
//"ВызовСерверногоМетода",
"ОткрытиеФормы",
Истина,
"ПечатьMXL");
- Доработать экспортную процедуру "Печать"
//УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПФ_MXL_РеализацияТоваров", НСтр("ru='Реализация товаров'"),
// СформироватьПечатнуюФормуНакладная(МассивОбъектов, ОбъектыПечати, Неопределено, ПараметрыВывода));
Если ТипЗнч(МассивОбъектов) = Тип("СписокЗначений") Тогда
МассивОбъектов = МассивОбъектов.ВыгрузитьЗначения();
КонецЕсли;
ИмяМакета = "ПФ_MXL_РеализацияТоваров";
ПараметрыВывода.Вставить("ИмяМакета", ИмяМакета);
ссылкаДок = МассивОбъектов[0];
//управляем именем сохранения файла
имяФСохр = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ссылкаДок.Номер) + " " + СокрЛП(ссылкаДок.Метаданные().Синоним) + " " + СокрЛП(ссылкаДок.Контрагент);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПФ_MXL_РеализацияТоваров", НСтр("ru='Реализация товаров'"),
СформироватьПечатнуюФормуНакладная(МассивОбъектов, ОбъектыПечати, Неопределено, ПараметрыВывода),,, имяФСохр);