Шаблон разработки печатных форм и подключения к конфигурациям на БСП 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 г.

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

 

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

См. также

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 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С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    234163    1062    898    

1003

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15405    35    7    

70

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

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

14400 руб.

13.03.2018    60699    207    76    

120

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

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

5400 руб.

08.10.2019    47003    166    95    

160

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

Учет путевых листов выполнен в виде расширения. Предназначен для учета путевых листов в конфигурации БП 3.0., УТ 11.5 и КА 2.5 Печатная форма: Типовая межотраслевая форма № 3. Утверждена постановлением Госкомстата России от 28.11.97 № 78. Типовая межотраслевая форма № 4-П от 18.09.2008 г. N 152 с учетом изменений указанных в Приказе Министерства транспорта Российской Федерации №368 от 11 сентября 2020 г. №368, Типовая межотраслевая форма № ЭСМ-7, и др. ЭСМ-2, 4-С, 3 спец., 6 спец., ПЛ для Автомобильного крана.

3600 руб.

14.10.2019    38854    258    216    

167

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

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

3600 руб.

13.02.2019    96259    440    44    

423

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

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

13200 руб.

27.06.2023    3866    10    1    

11

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

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

4500 руб.

23.08.2019    57065    174    64    

167
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 525 04.10.19 20:48 Сейчас в теме
Уххх сразу флэшбэки ловить начал. "Джони эти расширения по всюду, они даже во внешних обработках, Джони..". А Так спасибо!)
5. user633533_encantado 11 08.10.19 21:35 Сейчас в теме
Весь модуль менеджера документа тащить в расширение ?
10. tolX5 130 22.10.19 08:57 Сейчас в теме
(5)Сама «соль» в том, что документ и его модуль менеджера «ваще» не трогаем, все в модуле обработки созданной в расширении.
6. motorkuzbassa.it 100 09.10.19 17:40 Сейчас в теме
для УРБД это провал, расширения потребуется включать в обмен, в котором они будут ездить всегда, в отличии от допов, которые уезжают только при изменении...
AnryMc; Lapitskiy; +2 Ответить
11. tolX5 130 22.10.19 09:00 Сейчас в теме
(6) ушел от УРБД очень давно, неужели если нет изменений в расширении поедет в узел?
12. motorkuzbassa.it 100 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 100 22.10.19 15:13 Сейчас в теме
(7)Используйте типовые шаблоны внешек БСП , они более чем , покрывают все потребности. и с предварительным окном и пр...
14. simy4 34 23.10.19 09:58 Сейчас в теме
(13)спасибо за совет. видимо я не до конца точно выразился.
...как быть, при условии работы в расширении с конфигурациями на БСП 3.
17. RustIG 1747 10.04.20 15:30 Сейчас в теме
(0) в УТ 11.4 шаблон расширения после подключения выдает ошибки, поскольку сам шаблон разрабатывался на УНФ. Подключать и тестировать лучше все-таки на УНФ.
18. RustIG 1747 10.04.20 15:35 Сейчас в теме
(0) при подключении к УНФ 1.6.20.94, платформа 8.3.15.1830 выдается ошибка
Расширение1 Конфигурация саУНФДокРасходнаяНакладнаяДопПечатныеФормы Значение контролируемого свойства РежимСовместимости у объекта не совпадает со значением в расширяемой конфигурации Исправить...

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

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

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

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

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