БСП. Настраиваемый комплект документов. Внешние печатные формы

09.06.17

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

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

Постановка задачи

Итак, возникла следующая задача: распечатывать нажатием одной кнопки комплект документов при приёме на работу сотрудника в ЗУП 3.1. Список печатных форм следующий:

  • Приказ о приеме;
  • Трудовой договор;
  • Согласие на обработку персональных данных.

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

Реализация

Реализация благодаря гибким механизмам БСП очень проста. В функцию "СведенияОВнешнейОбработке" добавляем одну-единственую команду с идентификаторами всех внешних печатных форм, которые должны распечататься в комплекте. В нашем случае это "ПриказОПриеме,ТрудовойДоговор,СогласиеНаОбработку".

Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.ПриемНаРаботу");
    МассивНазначений.Добавить("Документ.ПриемНаРаботуСписком");     
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Комплект документов");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Информация", "Печать комплекта документов");
    
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'Комплект документов'");
    Команда.Идентификатор = "ПриказОПриеме,ТрудовойДоговор,СогласиеНаОбработку";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    Команда.ПоказыватьОповещение = Истина;
    Команда.Модификатор = "ПечатьMXL";
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

Процедура печати выглядит следующим образом:

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, Отладка=ложь) Экспорт 
	
	ГенеральныйДиректор = КтоПодписываетДокументы();
		
	//Приказ о приеме
	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПриказОПриеме");
	Если ПечатнаяФорма <> Неопределено Тогда
		Если ГенеральныйДиректор Тогда
			ПечатнаяФорма.ИмяВРЕГ = "ПФ_MXL_Т1";
			Обработки.ПечатьКадровыхПриказов.Печать(МассивОбъектов, , КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);			
		Иначе
			ВПФ = СоздатьВПФ("ПриказОПриеме");
			ВПФ.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
		КонецЕсли;
		ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Приказ о приеме'");
	КонецЕсли;
	
	//ТД
	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ТрудовойДоговор");
	Если ПечатнаяФорма <> Неопределено Тогда
		ВПФ = СоздатьВПФ("ТрудовойДоговорПРК");
		ВПФ.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
		ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Трудовой договор'");
	КонецЕсли;
	
	//Согласие на обработку
	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "СогласиеНаОбработку");
	Если ПечатнаяФорма <> Неопределено Тогда
		ВПФ = СоздатьВПФ("СогласиеНаОбработку");
		ВПФ.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
		ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Согласие на обработку перс. данных'");
	КонецЕсли;
		
Конецпроцедуры

На входе имеем пустую коллекцию печатных форм, где уже есть формы с вышеперечисленными идентификаторами ("ИмяВРЕГ"). Cоздаём экземпляр соответствующей ВПФ и обращаемся к её экспортной процедуре "Печать". Внимание! Идентификаторы печатных форм в комплекте и ВПФ должны совпадать!

Внешнюю печатную форму вызываем так:

Функция СоздатьВПФ(ИмяОбъекта)
	
	АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", ИмяОбъекта).Ссылка.ХранилищеОбработки.Получить());
	СтрокаВО = ВнешниеОбработки.Подключить(АдресВоВременномХранилище, , Ложь);  
	ВООбъект = ВнешниеОбработки.Создать(СтрокаВО);
	
	Возврат ВООбъект;
	
КонецФункции

Если документы подписывает генеральный директор, нужно вызвать стандартную процедуру печати из обработки "ПечатьКадровыхПриказов". Всё бы ничего, но идентификатор у встроенной печатной формы другой. Нет проблем! Просто заменяем его на нужный:

ПечатнаяФорма.ИмяВРЕГ = "ПФ_MXL_Т1";

И видим на выходе следующее:

Может, кому-нибудь этот материал окажется полезным.

внешняя печатная форма комплект документов БСП

См. также

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

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

22200 руб.

06.10.2023    20653    53    19    

86

Печатные формы Бухгалтер Платформа 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 спец., ПЛ для Автомобильного крана.

4800 руб.

14.10.2019    40770    286    216    

187

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

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

14400 руб.

13.03.2018    63300    227    79    

120

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

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

3960 руб.

08.10.2019    49646    182    105    

175

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

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

4560 руб.

13.02.2019    103356    467    46    

450

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

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

3720 руб.

18.02.2019    66372    229    15    

182

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3500 руб.

07.02.2023    8320    89    17    

46

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

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

13200 руб.

27.06.2023    5113    16    2    

17
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4675 12.06.17 20:00 Сейчас в теме
2. Новиков 292 13.06.17 10:33 Сейчас в теме
3. fokin 13.06.17 11:40 Сейчас в теме
а подскажите в какой версии БП (3.0)
есть возможность менять печатные формы местами?

у нас на Бухгалтерия предприятия (3.0.47.28)
и 1С:ERP Управление предприятием (2.2.3.205)

нет возможности перемещать формы вверх/вниз
они выстраиваются по-умолчанию по алфавиту
4. WhiteOwl 449 14.06.17 12:40 Сейчас в теме
(3) Посмотрела в БП, там для печати комплекта используется другая форма, изменить порядок печатных форм в ней не получится.
5. shoy 19 14.06.17 17:25 Сейчас в теме
Благодарю за такую подсказку.
6. пользователь 05.07.17 09:26
Сообщение было скрыто модератором.
...
7. LexSeIch 212 06.07.17 07:41 Сейчас в теме
Спасибо за публикацию. Берем на заметку.
8. maxx 998 18.09.17 13:21 Сейчас в теме
У нас есть свой механизмик небольшой по комплекту, главный Момент что каждую печатной.форму
можно отправить на свой принтер
9. docerman 74 19.09.17 11:54 Сейчас в теме
А как можно при печати комплекта ввести свои параметры для передачи в печатные формы?
12. WhiteOwl 449 05.11.17 23:07 Сейчас в теме
(9) С параметрами в ВПФ под УФ вообще все непросто) Вот хорошая публикация по теме: https://infostart.ru/public/191796/
10. Поручик 4675 27.09.17 10:39 Сейчас в теме
11. Поручик 4675 28.09.17 23:38 Сейчас в теме
У меня условия были посложнее. Формировать комплект из разных документов в УТ 11 в зависимости от налогообложения и формы оплаты, указанных в соглашении реализации, то есть набор печатных форм заранее неизвестен. Вывернулся с помощью "динамической" генерации коллекции печатных форм в процедуре печати.
13. user1043839 05.09.18 09:52 Сейчас в теме
Почему то с этим кодом говорит что табличный документ не сформирован в обработчике печати, все пролазил не могу понять куда копать?
a-m-gv; medexe; programmer_87; +3 Ответить
14. klaus38 06.10.20 10:02 Сейчас в теме
Я такие конструкции выдумывал, нечитаемые, а тут так изящно. Спасибо. 101- плюс.
user894576; c300pm; +2 Ответить
15. user1226970 28.01.21 06:52 Сейчас в теме
Создала 2 ВПФ,третья-комплект документов.Добавила код СведенияОВнешнейОбработке() и процедуры Печати,открываю комплект, выдает ошибку-слишклм много фактических параметров в УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ВПФ");
Что не так?
16. terran_1C 25.01.22 16:55 Сейчас в теме
(15) при такой ошибке необходимо добавить проверку перед вызовом УправлениеПечатью.СведенияОПечатнойФорме и процедуру

// проверка
Если ТипЗНЧ(КоллекцияПечатныхФорм) = Тип("Массив") Тогда
МассивСтруктурВТаблЗначений(КоллекцияПечатныхФорм);
КонецЕсли;

Процедура МассивСтруктурВТаблЗначений(КоллекцияПечатныхФорм)

КоллекцияПечатныхФормТ = Новый ТаблицаЗначений;
Колонки = КоллекцияПечатныхФормТ.Колонки;

Для каждого ЭлементМассива Из КоллекцияПечатныхФорм Цикл

СтрокаТЗ = КоллекцияПечатныхФормТ.Добавить();

Для каждого Свойство Из ЭлементМассива Цикл

Если Колонки.Найти(Свойство.Ключ) = Неопределено Тогда
//МассТипов = Новый Массив();
//МассТипов.Добавить(ТипЗНЧ(Свойство.Ключ));
Колонки.Добавить(Свойство.Ключ);
КонецЕсли;

СтрокаТЗ[Свойство.Ключ] = Свойство.Значение;

КонецЦикла;

КонецЦикла;

КоллекцияПечатныхФорм = КоллекцияПечатныхФормТ;

КонецПроцедуры
17. Shestopalova_L 15.04.22 10:52 Сейчас в теме
Столкнулась с проблемой, когда комплект состоит из большого количества печатных форм и разного количества копий. Проблема возникает в этой строке:
Команда.Идентификатор = "ПриказОПриеме,ТрудовойДоговор,СогласиеНаОбработку";
Здесь перечисляются все идентификаторы печ. форм и если есть копии, то надо повторять идентификаторы по количеству копий. Поле идентификатор, строка с ограничением до 100 символов, соответственно не все нужные печ.формы помещаются. Подскажите пожалуйста, как можно это решить?
18. WhiteOwl 449 15.04.22 14:36 Сейчас в теме
(17) попробуйте примерно так:

Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("ЛюбаяСсылка"); 
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", "Комплект документов"); 
	ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); 
	ПараметрыРегистрации.Вставить("Версия", "1.0"); 
	ПараметрыРегистрации.Вставить("Информация", "Печать комплекта документов"); 
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Комплект документов'");
	Команда.Идентификатор = "КомплектДокументов";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	Команда.ПоказыватьОповещение = Истина;
	Команда.Модификатор = "ПечатьMXL"; 
	
	Возврат ПараметрыРегистрации; 
	
КонецФункции

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


Насчёт копий есть более изящное решение, вот тут в комментариях посмотрите:
https://forum.infostart.ru/forum9/topic220334/
Shestopalova_L; +1 Ответить
19. Shestopalova_L 15.04.22 16:41 Сейчас в теме
(18)
УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(


Большое спасибо! Получилось.
20. mariya.mary.00 31.08.22 12:31 Сейчас в теме
Добрый день!
Подскажите, пожалуйста, а можно выводить в комплект печатные формы с макетом active document, например если печатаем сразу в word?
Печатная форма в списке комплекта появляется, но при нажатии кнопки печать получаю сообщение - "Печатная форма недоступна".
21. WhiteOwl 449 31.08.22 18:19 Сейчас в теме
(20) не доводилось сталкиваться, к сожалению, не подскажу.
22. ValentineZ 02.12.22 11:34 Сейчас в теме
23. user1965444 04.03.24 22:40 Сейчас в теме
Может я делаю что-то не так, но у меня в имя ПФ попадает путь к файлу ошибка и всё...
Ошибка при выполнении файловой операции 'e1cib/tempstorage/9fd05d3d-8d0d-4a78-a220-8f4daeebf9af?seanceId=NTk3OWY0NzQtYzg3YS00YTliLThhNjAtYzkxNTUxMGYwMzNm94y­gJMX28keG0'. Значение данного типа невозможно преобразовать для передачи как файл. (Неопределено)
24. a-m-gv 28 21.04.25 10:01 Сейчас в теме
(23)
мя ПФ попадает путь к фа

Скорее всего либо "имяобъекта" в справочнике ДополнительныеОтчетыИОбработки не найдено.
Перехватите отладчиком эту строку

АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", ИмяОбъекта).Ссылка.ХранилищеОбработки.Получить());

Проверьте что объект найден (Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта").
Оставьте свое сообщение