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

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    17245    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    238587    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    99974    456    45    

439

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

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

14400 руб.

13.03.2018    62001    215    79    

120

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

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

5400 руб.

08.10.2019    48117    172    95    

168

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

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

13200 руб.

27.06.2023    4359    14    2    

15

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

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

4500 руб.

23.08.2019    58144    182    64    

174

Печатные формы Бухгалтер Платформа 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    39721    268    216    

175
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4661 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 444 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 996 18.09.17 13:21 Сейчас в теме
У нас есть свой механизмик небольшой по комплекту, главный Момент что каждую печатной.форму
можно отправить на свой принтер
9. docerman 73 19.09.17 11:54 Сейчас в теме
А как можно при печати комплекта ввести свои параметры для передачи в печатные формы?
12. WhiteOwl 444 05.11.17 23:07 Сейчас в теме
(9) С параметрами в ВПФ под УФ вообще все непросто) Вот хорошая публикация по теме: https://infostart.ru/public/191796/
10. Поручик 4661 27.09.17 10:39 Сейчас в теме
11. Поручик 4661 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- плюс.
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 444 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 444 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'. Значение данного типа невозможно преобразовать для передачи как файл. (Неопределено)
Оставьте свое сообщение