Готовый шаблон для создания своей печатной формы. Имеется удобная форма отладки прямо из формы обработки, позволяет автоматически регистрировать обработку в справочнике «Дополнительные отчеты и обработки». Сделана на базе БСП 3.0, проверялась на БП 3.0.73, ЗУП 3.1.11, УТ 11.4.9, КА 2.4.9
Если каждый раз лень делать одно и тоже или не знаешь, как создавать внешнюю печатную форму, то это то, что нужно.
что есть:
- Сам шаблон, меняй функцию печати и работай.
- Удобно отлаживать прямо в обработке.
- Функция авторегистрации.
особенности обработки
- Имя — это уникальное название для справочника.
- Синоним — наименование обработки с версией
- Комментарий — объект метаданных для печати.
к примеру
- Имя — ВПФ_ЗаказКлиента__ЗаказКлиента
- Синоним — Заказ клиента v 1.2
- Комментарий — Документ.ЗаказКлиента
обработка имеет набор стандартных функций для регистрации и печати
Функция СведенияОВнешнейОбработке() Экспорт
Имя = Метаданные().Имя;
Синоним = Метаданные().Синоним;
Разделитель = Найти(Синоним, "v");
Если Разделитель = 0 Тогда
Версия = "1.0";
Иначе
Версия = СокрЛП(Сред(Синоним,Разделитель+1));
Синоним = Лев(Синоним,Разделитель-1);
КонецЕсли;
НаименованиеСправочника = Метаданные().Комментарий + " - " + Синоним;
ОписаниеОтчетаОбработки = Синоним;
ВерсияБСП = СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ВерсияБСП);
//ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Версия", Версия);
ПараметрыРегистрации.Вставить("Назначение", ПолучитьНазначениеОбработки());
ПараметрыРегистрации.Вставить("Наименование", НаименованиеСправочника);
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
//РаботаВБезопасномРежиме.Разрешение<ВидРазрешения>(<ПараметрыРазрешения>).
//ПараметрыРегистрации.Вставить("Разрешения",);
ПараметрыРегистрации.Вставить("Информация", ОписаниеОтчетаОбработки);
ПараметрыРегистрации.Вставить("ВерсияБСП",ВерсияБСП);
//ПараметрыРегистрации.Вставить("ОпределитьНастройкиФормы",);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
Синоним,
Имя,
"ВызовСерверногоМетода",
Ложь,
"",
Ложь);
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
для печати нужно переопределить функцию
Функция СформироватьТабличныйДокумент() Экспорт
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("МакетОбъекта");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьЗаголовок.Параметры.Дата = ТекущаяДата();
ТабДокумент.Вывести(ОбластьЗаголовок);
Возврат ТабДокумент;
КонецФункции
// Процедура выводит табличный документ внешней печатной формы
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Имя = Метаданные().Имя;
Синоним = Метаданные().Синоним;
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
Имя,
Синоним,
СформироватьТабличныйДокумент());
КонецПроцедуры
т.к. я не знаю, какая у вас конфигурация, то по умолчанию будет браться первый попавшийся документ. Для корректной работы нужно изменить код в модуле обработки!
Функция ПолучитьНазначениеОбработки()
//ИмяОбъекта = "Документ.ПриобретениеТоваровУслуг";
//ИмяОбъекта = "Справочник.Контрагенты";
//было
//ИмяОбъекта = "Документ." + Метаданные.Документы[0].Имя;
//должно стать, ну или укажите, что вам нужно руками
ИмяОбъекта = Метаданные().Комментарий;
Массив = Новый Массив;
Массив.Добавить(ИмяОбъекта);
Возврат Массив;
КонецФункции