Шаблон разработки печатных форм и подключения к конфигурациям на БСП 2.х и БСП 3.0
«Вместо поставки внешних печатных форм в виде внешних обработок рекомендуется вести их разработку с помощью расширений конфигурации.» [ИТС, БСП гл. 3.38 Печать] У меня задачи типа «Требуется разработать печатную форму …» появляются регулярно, но с временными интервалами. Что бы вести разработку единообразно, для конфигураций на БСП, я заготовил шаблон для таких задачек, который позволяет мне сразу приступить к разработке макета и алгоритма формирования печатной формы, а «обертка» из БСП уже готова.
Комментарии
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
«Вместо поставки внешних печатных форм в виде внешних обработок рекомендуется вести их разработку с помощью расширений конфигурации.» [ИТС, БСП гл. 3.38 Печать]
а как они данный тезис закрепили? для мотивации юзать новый функционал или какие то проблемы не решаемые с привычным способом создания внешних печатных форм?
за статью спс)
(2)С этим не поспоришь, если формировать больше одного табличного документа, рекомендуется получить данные до формирования табличных документов. Я чаще сталкиваюсь с задачей много печатных форм у одного документа, обработку массива сохранил т.к. подсистема «Печать» позволяет. Вот доработка нарисовалась, спасибо за дельное замечание.
(7)Можно дать «круголя» в клиентский контекст, запросить у пользователя интерактивно доп. параметры перед печатью и вернуться назад на сервер в процедуру Печать модуля менеджера вот так:
1. В процедуре ДобавитьКомандыПечати определяем в параметре КомандыПечати.Обработчик имя Клиентской функции, в которую перенаправим управление;
2. Добавляем эту Клиентскую функцию в модуль формы обработки или общий клиентский модуль;
3. Из клиентского контекста возвращаем управление на сервер вызовом метода УправлениеПечатьюКлиент.ВыполнитьКомандуПечати
Например, вот так (1):
(2) (3) Например так, в форме запрашиваем реквизит «Автомобиль» и передаем в процедуру формирования табличного документа на сервер.
1. В процедуре ДобавитьКомандыПечати определяем в параметре КомандыПечати.Обработчик имя Клиентской функции, в которую перенаправим управление;
2. Добавляем эту Клиентскую функцию в модуль формы обработки или общий клиентский модуль;
3. Из клиентского контекста возвращаем управление на сервер вызовом метода УправлениеПечатьюКлиент.ВыполнитьКомандуПечати
Например, вот так (1):
Команда.Обработчик = "ПечатьАктПередачиНаКомиссиюКлиент";
(2) (3) Например так, в форме запрашиваем реквизит «Автомобиль» и передаем в процедуру формирования табличного документа на сервер.
&НаКлиенте
Перем ПараметрыФормы;
&НаКлиенте
Функция ПечатьАктПередачиНаКомиссиюКлиент(ПараметрыПечати) Экспорт
ПараметрыФормы = ПараметрыПечати;
ЭтотОбъект.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ЭтотОбъект.Открыть();
КонецФункции
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
ДополнительныеПараметрыПечати = Новый Структура;
ДополнительныеПараметрыПечати.Вставить("Автомобиль", ЭтаФорма.Автомобиль);
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(ПараметрыФормы.МенеджерПечати, ПараметрыФормы.Идентификатор,
ПараметрыФормы.ОбъектыПечати, ПараметрыФормы.Форма, ДополнительныеПараметрыПечати);
КонецПроцедуры
Показать
(8)благодарю. у меня получилось следующим образом:
Менеджер обработки:
Форма обработки:
Менеджер обработки:
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Команда = КомандыПечати.Добавить();
Команда.Представление = НСтр("ru = 'ТЕстовая печать (расширение)'");
Команда.Идентификатор = "ТестовыйИдентификатор";
Команда.ПроверкаПроведенияПередПечатью = Истина;
Команда.Порядок = 1;
Команда.Обработчик = "ОткрытьФормуПечати";
Команда.МенеджерПечати= "Обработка.ТестоваяПечать";
КонецПроцедуры
ПоказатьФорма обработки:
&НаКлиенте
Функция ОткрытьФормуПечати(ПараметрыПечати) Экспорт //процедура
//кешируем параметры печати в реквизиты формы
АдресОбъектовПечати = ПоместитьВоВременноеХранилище(ПараметрыПечати.ОбъектыПечати, УникальныйИдентификатор);
МенеджерПечати = ПараметрыПечати.МенеджерПечати;
ИменаМакетов = ПараметрыПечати.Идентификатор;
Открыть();
КонецФункции
&НаКлиенте
Процедура Печать(Команда)
ОбъектыПечати = ПолучитьИзВременногоХранилища(АдресОбъектовПечати);
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(МенеджерПечати, ИменаМакетов, ОбъектыПечати, ЭтотОбъект, Новый Структура("Тест"));
КонецПроцедуры
Показать
(0) при подключении к УНФ 1.6.20.94, платформа 8.3.15.1830 выдается ошибка
У вас режим совместимости 8.3.12, у конфы 8.3.14 - но это легко поправить.
Расширение1 Конфигурация саУНФДокРасходнаяНакладнаяДопПечатныеФормы Значение контролируемого свойства РежимСовместимости у объекта не совпадает со значением в расширяемой конфигурации Исправить...
У вас режим совместимости 8.3.12, у конфы 8.3.14 - но это легко поправить.
(5)
Насколько я понял из описания...
Плюсы:
- Можно в одно расширение "впихнуть" много ВПФ
- соответственно можно использовать общие модули с "повторяющимся" кодом
Минусы:
- Раньше для ВПФ при её добавлении определялся "перечень" объектов где её использовать, теперь надо для каждой прописывать в коде.. Тоже самое и для модулей печати
- Т.к. есть различные конфигурации - нужно создавать вырианты "наименований" подключаемых объектов (Например если ЗУП то не подключать ПТУ, РТУ, и т.д.)
З.Ы. Например у меня есть "универсальные" ВПФ: "История объекта", "Печать движений" и пр...
Можно все собрать в одно расширение и для каждой обработки:
Прописать для каких объектов её подключать... (или вынести это в общих модуль, или сделать регистр сведений только с административным доступом - для настройки) и какую процедуру печати использовать
А если еще "озаботиться" что кому можно - то вообще мрак...
ИМХО: Интересно. Но пока стандартные ВПФ лучше...
З.З.Ы. Хоть и прошло больше года... Или я что то пропустил?
Насколько я понял из описания...
Плюсы:
- Можно в одно расширение "впихнуть" много ВПФ
- соответственно можно использовать общие модули с "повторяющимся" кодом
Минусы:
- Раньше для ВПФ при её добавлении определялся "перечень" объектов где её использовать, теперь надо для каждой прописывать в коде.. Тоже самое и для модулей печати
- Т.к. есть различные конфигурации - нужно создавать вырианты "наименований" подключаемых объектов (Например если ЗУП то не подключать ПТУ, РТУ, и т.д.)
З.Ы. Например у меня есть "универсальные" ВПФ: "История объекта", "Печать движений" и пр...
Можно все собрать в одно расширение и для каждой обработки:
Прописать для каких объектов её подключать... (или вынести это в общих модуль, или сделать регистр сведений только с административным доступом - для настройки) и какую процедуру печати использовать
А если еще "озаботиться" что кому можно - то вообще мрак...
ИМХО: Интересно. Но пока стандартные ВПФ лучше...
З.З.Ы. Хоть и прошло больше года... Или я что то пропустил?