Шаблон разработки печатных форм и подключения к конфигурациям на БСП 2.х и БСП 3.0

Шаблон я заготовил еще на БСП 2.х, сейчас актуальна БСП 3.0.х – шаблон менял с развитием БСП. Сравнивая шаблоны получилось очень наглядно как «1С» реализует концепцию «вести разработпечатную версиюку как бы сбоку, оставляя типовые объекты на поддержке, а в идеале на замке». Для этого развивает программный интерфейс подсистем БСП, что позволяет свести к минимуму количество объектов в расширении конфигурации.

Для БСП 2.х и БСП 3.0 макет табличного документа и алгоритм формировтехничскоеания печатной формы располагаю в объекте обраб программу 1С отка, расширения конфигурации. «Обычно макет печатной формы располагается при объекте, но если макет является общим для двух и более объектов, то либо его следует располагать в обраб программу 1С отке, либо это должен быть общий макет.» [ИТС, БСП гл. 3.38 Печать]. Для меня важно оставить конфигурацию «девственной» и минимум объектов заимствовать в расширение конфигурации, поэтому в обраб программу 1С отке.

Если на БСП 2.х укладываемся в 7 шагов:

  1. Создаем внешние компоненты Расширение;
  2. Создаем внешние компоненты обраб программу 1С отку;
  3. Создаем внешние компоненты макет в обраб программу 1С отке;
  4. Заимствуем сам объект (например, документ), для которого требуется добавить команду печати;
  5. Заимствуем Группу команд – «Печать»;
  6. Создаем внешние компоненты команду у обраб программу 1С отки и определяем свойства «Тип параметра команды» (шаг 4) и «Группа» (шаг 5);
  7. В модуле менеджера Обработпечатную версиюки располагаем процедуру с кодом формировтехничскоеания печатной формы и методы подсистемы Печать.

После этого в командной панели формы объекта (например, документа) и формы журнала, в меню «Печать» появится созданная команда. 

 

Рис. 1 Расширение конфигурации на БСП 2.х

 

то на БСП 3.0 получаем желаемое за 4-е шага

  1. Создаем внешние компоненты Расширение;
  2. Создаем внешние компоненты обраб программу 1С отку;
  3. Создаем внешние компоненты макет в обраб программу 1С отке;
  4. В модуле менеджера Обработпечатную версиюки располагаем процедуру с кодом формировтехничскоеания печатной формы и методы подсистемы Печать.

Благодаря развившемуся программному интерфейсу подсистемы «Печать» в расширении конфигурации ничего заимствовать более не нужно.

 

Рис. 2 Расширение конфигурации на БСП 3.0

 

Повинуясь ИТС, подсистему «ПодключаемыеОтчетплатформаыИОбработпечатную версиюки» заимствуем и в нее включаем созданную обраб программу 1С отку.

Вот тот программный интерфейс БСП 3.0, благодаря которому нет более надобности заимствовать «Группу команд», «Документ» и создавать команды у обраб программу 1С отки. Следующие процедуры, располагаем в модуле менеджера обраб программу 1С отки.

#Область ПрограммныйИнтерфейс

// Определяет состав программного интерфейса для интеграции с конфигурацией.
//
// Параметры:
//   Настройки - Структура - Настройки интеграции этого объекта.
//       См. возвращаемое значение функции ПодключаемыеКоманды.НастройкиПодключаемыхОтчетплатформаовИОбработпечатную версиюок().
//
Процедура ПриОпределенииНастроек(Настройки) Экспорт
	
    Настройки.Размещение.Добавить(Метаданные.Документы.РасходнаяНакладная);
    Настройки.ДобавитьКомандыПечати = Истина;
	
Конецконсоль отчетов Процедуры

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - ТаблицаЗначений - Подробнее см. в УправлениеПечатью.СоздатьКоллекциюКомандПечати().
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	Команда = КомандыПечати.Добавить();
	Команда.Представление = НСтр("ru = 'Акт передачи на комиссию (из расширения)'");
	Команда.Идентификатор = "АктПередачиНаКомиссию";
	Команда.ПроверкаПроведенияПередПечатью = Истина;
	Команда.Порядок = 1;
	
Конецконсоль отчетов Процедуры

// Формирует печатные формы.
//
// Параметры:
//  МассивОбъектов - Массив - ссылки на объекты, которые нужно распечатать;
//  ПараметрыПечати - Структура - дополнительные настройки печати;
//  КоллекцияПечатныхФорм - ТаблицаЗначений - сформировтехничскоеанные табличные документы (выходной параметр)
//  ОбъектыПечати - СписокЗначений - значение - ссылка на объект;
//                                            представление - имя области, в которой был выведен объект (выходной параметр);
//  ПараметрыВывода - Структура - дополнительные параметры сформировтехничскоеанных табличных документов (выходной параметр).
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	ПолноеИмя = Создать().Метаданные().ПолноеИмя();
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктПередачиНаКомиссию") Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктПередачиНаКомиссию", "Акт передачи на комиссию (из расширения)", ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ПолноеИмя, "АктПередачиНаКомиссию"));
	Конецконсоль отчетов Если;
	
Конецконсоль отчетов Процедуры

#Конецконсоль отчетов Области

Процедуру формировтехничскоеания печатной формы располагаем в ММ обраб программу 1С отки

До процедуры с кодом формировтехничскоеания конкретного табличного документа, я заворачиваю в метод «обертку» ПечатнаяФорма(), в который вынес общие действия характерные для формировтехничскоеания любого табличного документа и обраб программу 1С отки массива ссылок, которые нужно распечатать.

В самой процедуре формировтехничскоеания печатной формы я придерживаюсь следующей структуры:

  1. Определяю параметры печати и макет табличного документа;
  2. Запросом выбираю нужные данные;
  3. Результатами выборки заполняю структуру ДанныеПечати  и таблицы значений данными табличных частей. Причем, имена ключей структуры и полей таблицы значений совпадают с именами параметров макета;
  4. Области макета собираю в массив и обхожу его заполняя параметры макета из созданных коллекций на предыдущем шаге, на каждом витке цикла выводя в результирующий табличный документ. Для повышения устойчивости кода заполняю методом ЗаполнитьЗначенияСвойств().

Такой прием позволяет в дальнейшем передвигать параметры по областям макета, не меняя код в процедуре и выглядит элегантно.

 
 Пример формировтехничскоеания печатной формы

После того как я себе «зарубил на носу» разрабатывать «так», когда приходят задачи изменить печатные формы не «так» разработпечатную версиюанные (например, мной давно) теперь я испытываю когнитивный диссонанс J. Собрал этот паттерн для себя, может, кто еще проникнется.

//тол+ Обновление публикации от 20.02.2020 г.

 
Клиентский контекст при формировтехничскоеании печатной формы

 

Скриншоты


БСП 2.jpg

БСП 3.png

Клиент_БСП_2.png

Клиент_БСП_2.png

Клиент_без_модальности_БСП_2.png

Клиент_без_модальности_БСП_2.png

Клиент_БСП_3.png

Создание_реквизита.png

Файлы

Наименование Файл Версия Размер Кол. Скачив.
Расширение для конфигурации на БСП 3.0
.cfe 12,50Kb
78
.cfe 12,50Kb 78 Скачать
Расширение для конфигурации на БСП 2.х
.cfe 15,10Kb
11
.cfe 15,10Kb 11 Скачать

Полная версия

© ООО "Инфостарт", 2006-2023 www.infostart.ru