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

20.02.20

Учетные задачи - Печатные формы

«Вместо поставки внешних печатных форм в виде внешних обработок рекомендуется вести их разработку с помощью расширений конфигурации.» [ИТС, БСП гл. 3.38 Печать] У меня задачи типа «Требуется разработать печатную форму …» появляются регулярно, но с временными интервалами. Что бы вести разработку единообразно, для конфигураций на БСП, я заготовил шаблон для таких задачек, который позволяет мне сразу приступить к разработке макета и алгоритма формирования печатной формы, а «обертка» из БСП уже готова.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расширение для конфигурации на БСП 3.0
.cfe 12,50Kb
85
85 Скачать (1 SM) Купить за 1 850 руб.
Расширение для конфигурации на БСП 2.х
.cfe 15,10Kb
11
11 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

 

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

 

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

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

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

 

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

 

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

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

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

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

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

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

#КонецОбласти

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

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

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

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

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

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

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

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

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

 

печатные формы БСП паттерн шаблон расширения УНФ макет устойчивый

См. также

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    17263    43    15    

75

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 1C:Бухгалтерия 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С.

6000 5100 руб.

09.11.2016    238610    1085    905    

1020

Печатные формы Производство готовой продукции (работ, услуг) Бухгалтер Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Бухгалтерия 3.0 Строительство Россия Бухгалтерский учет Платные (руб)

Откройте для себя заполнение КС-2 и КС-3 в "1С:Бухгалтерия 3.0". Вы получаете удобство, скорость и систему, чтобы заполнить, распечатать и сохранить формы КС-2 и КС-3 из документов "Оказание производственных услуг" или "Реализация товаров услуг". Вы можете заполнить дополнительную информацию о материалах из документов "Требование-накладная" и указать сведения, которые не предусмотрены типовой конфигурацией "1С:Бухгалтерия 3.0". Так же доступно множество настроек для формирования КС-2 и КС-3.

4200 руб.

13.02.2019    100050    456    45    

439

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Бухгалтер Пользователь Оперативный учет Управляемые формы 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Задайте для каждой организации свою печать и для каждого физического лица свою подпись. Выберите в документе печатную форму "... с печатью и подписью" - и автоматически сформируется табличный документ с печатью и подписями той организации и ответственных лиц, которые указаны в документе.

14400 руб.

13.03.2018    62012    215    79    

120

Печатные формы Программист Пользователь Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Научите вашу 1C печатать из 1С в файл Word (Например: трудовые договоры, договоры с контрагентами, спецификации, дополнительные соглашения, приказы, коммерческие предложения, акты, накладные, карточки партнера или любого справочника и многие другие). Универсальная печать предназначена для формирования печатных форм на основе шаблонов в формате Word из любой конфигурации 1С. С помощью данного инструмента можно самостоятельно заполнить шаблон реквизитами справочника или документа 1С и сформировать печатные формы на основании ссылки на любой объект.

5400 руб.

08.10.2019    48130    172    95    

168

Печатные формы Логистика, склад и ТМЦ Бухгалтер Платформа 1С v8.3 Бухгалтерский учет Оперативный учет Управляемые формы 1С:Комплексная автоматизация 2.х Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для автоматизации учета путевых листов в 1С - расширение, добавляющее в конфигурацию "Комплексная автоматизация", документ Путевой лист и печатные формы установленных образцов для легковых и грузовых авто, расчет и списание нормативного количества топлива, отчет "Реестр путевых листов" с отбором по автомобилю и по водителю (через настройки) Позволит контролировать расход топлива, потому что сразу будет виден сверхнормативный расход.

13200 руб.

27.06.2023    4375    14    2    

15

Печатные формы Учет рабочего времени Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Бухгалтерия 3.0 Транспорт, автопарки, такси Россия Бухгалтерский учет Платные (руб)

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

4500 руб.

23.08.2019    58150    182    64    

174

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

1800 руб.

21.11.2024    3902    16    15    

19
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. d.samsonov92y 04.10.19 12:44 Сейчас в теме
«Вместо поставки внешних печатных форм в виде внешних обработок рекомендуется вести их разработку с помощью расширений конфигурации.» [ИТС, БСП гл. 3.38 Печать]
а как они данный тезис закрепили? для мотивации юзать новый функционал или какие то проблемы не решаемые с привычным способом создания внешних печатных форм?
за статью спс)
RealSurfer; MikhailGirshberg; kild; +3 Ответить
4. Кадош 06.10.19 11:17 Сейчас в теме
(1) разработчики отказались от развития подсистемы допотчетов и допобработок по причинам безопасности и отсутствия модулей менеджера.
cleaner_it; +1 Ответить
2. SarethDark 04.10.19 15:55 Сейчас в теме
Запрос в цикле? Сомнительное решение... Правильнее одним запросом выбрать данные по всем объектам, а потом в цикле обходить группировки.
simy4; kild; +2 1 Ответить
9. tolX5 130 22.10.19 08:49 Сейчас в теме
(2)С этим не поспоришь, если формировать больше одного табличного документа, рекомендуется получить данные до формирования табличных документов. Я чаще сталкиваюсь с задачей много печатных форм у одного документа, обработку массива сохранил т.к. подсистема «Печать» позволяет. Вот доработка нарисовалась, спасибо за дельное замечание.
16. mikecool 5 18.11.19 17:08 Сейчас в теме
(2) уже много мест в типовых переделано, где получаются данные по всему массиву переданных объектов, а далее по ключу забираются нужные
3. feva 529 04.10.19 20:48 Сейчас в теме
Уххх сразу флэшбэки ловить начал. "Джони эти расширения по всюду, они даже во внешних обработках, Джони..". А Так спасибо!)
5. user633533_encantado 12 08.10.19 21:35 Сейчас в теме
Весь модуль менеджера документа тащить в расширение ?
10. tolX5 130 22.10.19 08:57 Сейчас в теме
(5)Сама «соль» в том, что документ и его модуль менеджера «ваще» не трогаем, все в модуле обработки созданной в расширении.
6. motorkuzbassa.it 101 09.10.19 17:40 Сейчас в теме
для УРБД это провал, расширения потребуется включать в обмен, в котором они будут ездить всегда, в отличии от допов, которые уезжают только при изменении...
AnryMc; Lapitskiy; +2 Ответить
11. tolX5 130 22.10.19 09:00 Сейчас в теме
(6) ушел от УРБД очень давно, неужели если нет изменений в расширении поедет в узел?
12. motorkuzbassa.it 101 22.10.19 15:12 Сейчас в теме
7. simy4 34 13.10.19 16:08 Сейчас в теме
Подскажите пожалуйста, а если перед печатью нужно вывести диалоговое окно, как быть?
8. tolX5 130 22.10.19 08:48 Сейчас в теме
(7)Можно дать «круголя» в клиентский контекст, запросить у пользователя интерактивно доп. параметры перед печатью и вернуться назад на сервер в процедуру Печать модуля менеджера вот так:
1. В процедуре ДобавитьКомандыПечати определяем в параметре КомандыПечати.Обработчик имя Клиентской функции, в которую перенаправим управление;
2. Добавляем эту Клиентскую функцию в модуль формы обработки или общий клиентский модуль;
3. Из клиентского контекста возвращаем управление на сервер вызовом метода УправлениеПечатьюКлиент.ВыполнитьКомандуПечати
Например, вот так (1):
Команда.Обработчик = "ПечатьАктПередачиНаКомиссиюКлиент";

(2) (3) Например так, в форме запрашиваем реквизит «Автомобиль» и передаем в процедуру формирования табличного документа на сервер.
&НаКлиенте
Перем ПараметрыФормы;

&НаКлиенте
Функция ПечатьАктПередачиНаКомиссиюКлиент(ПараметрыПечати) Экспорт
	
	ПараметрыФормы = ПараметрыПечати;
	
	ЭтотОбъект.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
	ЭтотОбъект.Открыть();
	
КонецФункции

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	ДополнительныеПараметрыПечати = Новый Структура;
	ДополнительныеПараметрыПечати.Вставить("Автомобиль", ЭтаФорма.Автомобиль);
	
	УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(ПараметрыФормы.МенеджерПечати, ПараметрыФормы.Идентификатор,
		ПараметрыФормы.ОбъектыПечати, ПараметрыФормы.Форма, ДополнительныеПараметрыПечати);
	
КонецПроцедуры
Показать
15. simy4 34 23.10.19 10:02 Сейчас в теме
(8)благодарю. у меня получилось следующим образом:
Менеджер обработки:
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	Команда = КомандыПечати.Добавить();
	Команда.Представление = НСтр("ru = 'ТЕстовая печать (расширение)'");
	Команда.Идентификатор = "ТестовыйИдентификатор";
	Команда.ПроверкаПроведенияПередПечатью = Истина;
	Команда.Порядок = 1;
	Команда.Обработчик	= "ОткрытьФормуПечати";
	Команда.МенеджерПечати= "Обработка.ТестоваяПечать";
	
КонецПроцедуры
Показать


Форма обработки:
&НаКлиенте
Функция ОткрытьФормуПечати(ПараметрыПечати) Экспорт //процедура
	//кешируем параметры печати в реквизиты формы

	АдресОбъектовПечати = ПоместитьВоВременноеХранилище(ПараметрыПечати.ОбъектыПечати, УникальныйИдентификатор);
	МенеджерПечати	 	= ПараметрыПечати.МенеджерПечати;
	ИменаМакетов		= ПараметрыПечати.Идентификатор;
	Открыть();
  
 
КонецФункции


&НаКлиенте
Процедура Печать(Команда)
	
	ОбъектыПечати = ПолучитьИзВременногоХранилища(АдресОбъектовПечати);
	УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(МенеджерПечати, ИменаМакетов, ОбъектыПечати, ЭтотОбъект, Новый Структура("Тест"));

КонецПроцедуры
Показать
13. motorkuzbassa.it 101 22.10.19 15:13 Сейчас в теме
(7)Используйте типовые шаблоны внешек БСП , они более чем , покрывают все потребности. и с предварительным окном и пр...
14. simy4 34 23.10.19 09:58 Сейчас в теме
(13)спасибо за совет. видимо я не до конца точно выразился.
...как быть, при условии работы в расширении с конфигурациями на БСП 3.
17. RustIG 1836 10.04.20 15:30 Сейчас в теме
(0) в УТ 11.4 шаблон расширения после подключения выдает ошибки, поскольку сам шаблон разрабатывался на УНФ. Подключать и тестировать лучше все-таки на УНФ.
18. RustIG 1836 10.04.20 15:35 Сейчас в теме
(0) при подключении к УНФ 1.6.20.94, платформа 8.3.15.1830 выдается ошибка
Расширение1 Конфигурация саУНФДокРасходнаяНакладнаяДопПечатныеФормы Значение контролируемого свойства РежимСовместимости у объекта не совпадает со значением в расширяемой конфигурации Исправить...

У вас режим совместимости 8.3.12, у конфы 8.3.14 - но это легко поправить.
19. AnryMc 849 25.10.21 08:59 Сейчас в теме
(5)
Насколько я понял из описания...
Плюсы:
- Можно в одно расширение "впихнуть" много ВПФ
- соответственно можно использовать общие модули с "повторяющимся" кодом
Минусы:
- Раньше для ВПФ при её добавлении определялся "перечень" объектов где её использовать, теперь надо для каждой прописывать в коде.. Тоже самое и для модулей печати
- Т.к. есть различные конфигурации - нужно создавать вырианты "наименований" подключаемых объектов (Например если ЗУП то не подключать ПТУ, РТУ, и т.д.)

З.Ы. Например у меня есть "универсальные" ВПФ: "История объекта", "Печать движений" и пр...
Можно все собрать в одно расширение и для каждой обработки:
Прописать для каких объектов её подключать... (или вынести это в общих модуль, или сделать регистр сведений только с административным доступом - для настройки) и какую процедуру печати использовать

А если еще "озаботиться" что кому можно - то вообще мрак...

ИМХО: Интересно. Но пока стандартные ВПФ лучше...

З.З.Ы. Хоть и прошло больше года... Или я что то пропустил?
20. burgomister 59 16.11.21 19:04 Сейчас в теме
Скачал, установил. Немного переделал для УТ. Работает. Спасибо.
21. mart-artur 8 16.05.22 14:36 Сейчас в теме
Доброго всем дня. Подскажите, как можно прицепить ПФ к документу, созданному в расширении? Сломал себе голову, не появляется кнопка Печать...
Оставьте свое сообщение