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

09.06.17

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

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

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

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

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

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

Реализация

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

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

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

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

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

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

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

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

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

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

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

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

См. также

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7286    21    6    

39

Универсальная печать по шаблонам Word (Печать договоров из 1С БП 3, УНФ 1.6, ЗУП 3, УТ 11, КА 2, ERP 2, ДО 3)

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

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

5400 руб.

08.10.2019    42688    144    88    

134

SALE! 25%

УТ 11, КА 2, ERP 2: Настраиваемые под каждую организацию печать и подпись ответственных лиц в печатных формах (ТОРГ-12, Счёт-фактура, УПД, УКД, Заказ клиента, Акт сверки, М-15 и др.)

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

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

12000 9000 руб.

13.03.2018    56441    179    76    

112

Печатные формы КС-2 и КС-3 в "1С:Бухгалтерия 3.0"

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

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

3240 руб.

13.02.2019    87999    388    44    

371

Печать актов МХ-1, МХ-3 в 1С:Бухгалтерия 3.0

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

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

2520 руб.

18.02.2019    61104    170    14    

139

Путевые листы (расширение)

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

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

2000 руб.

14.10.2019    36519    224    215    

139
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4670 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 429 14.06.17 12:40 Сейчас в теме
(3) Посмотрела в БП, там для печати комплекта используется другая форма, изменить порядок печатных форм в ней не получится.
5. shoy 19 14.06.17 17:25 Сейчас в теме
Благодарю за такую подсказку.
6. пользователь 05.07.17 09:26
Сообщение было скрыто модератором.
...
7. LexSeIch 210 06.07.17 07:41 Сейчас в теме
Спасибо за публикацию. Берем на заметку.
8. maxx 991 18.09.17 13:21 Сейчас в теме
У нас есть свой механизмик небольшой по комплекту, главный Момент что каждую печатной.форму
можно отправить на свой принтер
9. docerman 71 19.09.17 11:54 Сейчас в теме
А как можно при печати комплекта ввести свои параметры для передачи в печатные формы?
12. WhiteOwl 429 05.11.17 23:07 Сейчас в теме
(9) С параметрами в ВПФ под УФ вообще все непросто) Вот хорошая публикация по теме: https://infostart.ru/public/191796/
10. Поручик 4670 27.09.17 10:39 Сейчас в теме
11. Поручик 4670 28.09.17 23:38 Сейчас в теме
У меня условия были посложнее. Формировать комплект из разных документов в УТ 11 в зависимости от налогообложения и формы оплаты, указанных в соглашении реализации, то есть набор печатных форм заранее неизвестен. Вывернулся с помощью "динамической" генерации коллекции печатных форм в процедуре печати.
13. user1043839 05.09.18 09:52 Сейчас в теме
Почему то с этим кодом говорит что табличный документ не сформирован в обработчике печати, все пролазил не могу понять куда копать?
medexe; programmer_87; +2 Ответить
14. klaus38 06.10.20 10:02 Сейчас в теме
Я такие конструкции выдумывал, нечитаемые, а тут так изящно. Спасибо. 101- плюс.
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 429 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 429 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'. Значение данного типа невозможно преобразовать для передачи как файл. (Неопределено)
Оставьте свое сообщение