Печать и подпись с минимальной доработкой ЕРП (и ЕРП УХ)

14.01.25

Разработка - Инструментарий разработчика

Активация (с доработкой) механизма отдельного вывода печати, подписи и других картинок в печатных формах наподобие того, как это сделано в 1С: Бухгалтерии 3.0. Также появится возможность выводить различные подписи, печати и другие картинки в зависимости от реквизитов печатаемого документа.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Печать и подпись с минимальной доработкой ЕРП (и ЕРП УХ)
.cfe 9,22Kb
1
1 Скачать (2 SM) Купить за 2 150 руб.

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

 

 

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

Механизм подключения "факсимиле" в моём случае не подошёл (да и по субъективной статистике он редко подходит под большинство задач).

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

Цель этой публикации - показать, как включить механизм вывода печати и подписи в конфигурациях (ЕРП, ЕРПУХ, КА и УТ 11) и, заодно, немного его расширить по сравнению с тем же функционалом из 1С:Бухгалтерия 3.0 или демо примером БСП.

Алгоритм:

1. Сначала закомментировать строку "Настройки.ИспользоватьПодписиИПечати = Ложь;" в процедуре "ПриОпределенииНастроекПечати" общего модуля "УправлениеПечатьюПереопределяемый".

2. Переопределить процедуру "ПриПолученииПодписейИПечатей" в общем модуле "УправлениеПечатьюПереопределяемый". Она изначально пустая и сделана как раз для того, чтобы разработчики уже сами определяли какие картинки выводить (или, соответственно, не выводить в зависимости от признака "Подпись и печать").

3. Переопределить процедуру "ПрефиксыИменОбластейСПодписьюИПечатью" общего модуля "УправлениеПечатью"

Ниже представлен весь код.

В общем модуле "УправлениеПечатьюПереопределяемый") в расширении:

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

&ИзменениеИКонтроль("ПриОпределенииНастроекПечати")
Процедура ПодписиИПечати_ПриОпределенииНастроекПечати(Настройки)

	УправлениеПечатьюЛокализация.ПриОпределенииНастроекПечати(Настройки);

	//++ НЕ ГОСИС
	#Удаление
	Настройки.ИспользоватьПодписиИПечати = Ложь;
	#КонецУдаления
	//-- НЕ ГОСИС

КонецПроцедуры

&После("ПриПолученииПодписейИПечатей")
Процедура ПодписиИПечати_ПриПолученииПодписейИПечатей(Документы, ПодписиИПечати)
	
	СоответствиеРеквизитов = Новый Структура;
	СоответствиеРеквизитов.Вставить("Печать", "Организация");
	СоответствиеРеквизитов.Вставить("Логотип", "Организация");
	СоответствиеРеквизитов.Вставить("ПодписьРуководителя", "Руководитель");
	СоответствиеРеквизитов.Вставить("ПодписьБухгалтера", "ГлавныйБухгалтер");
		
	Для Каждого Документ Из Документы Цикл
		
		МетаданныеДокумента = Документ.Метаданные();
		
		СписокРеквизитовСтрока = "";
		Для Каждого КлючЗначение Из СоответствиеРеквизитов Цикл
			Если ОбщегоНазначения.ЕстьРеквизитОбъекта(КлючЗначение.Значение, МетаданныеДокумента) Тогда
				СписокРеквизитовСтрока = СтрШаблон("%1%2,", СписокРеквизитовСтрока, КлючЗначение.Значение);
			КонецЕсли;			
		КонецЦикла;
		СписокРеквизитовСтрока = Лев(СписокРеквизитовСтрока, СтрДлина(СписокРеквизитовСтрока) - 1);
		
		СтруктураПодписи = Новый Структура;
		
		РеквизитыДокумента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Документ, СписокРеквизитовСтрока);
		Для Каждого РеквизитДокумента Из РеквизитыДокумента Цикл
			
			Для Каждого КлючЗначениеСоответствия Из СоответствиеРеквизитов Цикл
				Если КлючЗначениеСоответствия.Значение = РеквизитДокумента.Ключ Тогда
					КлючКартинки = КлючЗначениеСоответствия.Ключ;
					
					Картинка = КартинкаПоШаблонуИмени(РеквизитДокумента.Значение, КлючКартинки);
					Если Не Картинка = Неопределено Тогда
						СтруктураПодписи.Вставить(КлючКартинки, Картинка);					
					КонецЕсли;					
				КонецЕсли;
			КонецЦикла;
			
		КонецЦикла;
		
		Если СтруктураПодписи.Количество() > 0 Тогда
			ПодписиИПечати.Вставить(Документ, СтруктураПодписи);
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

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

#Область СлужебныеПроцедурыИФункции

Функция КартинкаПоШаблонуИмени(Объект, ШаблонИмени)
	
	РезультатФункции = Неопределено;
	
	ИмяСправочникаХранилищаФайлов = РаботаСФайламиСлужебный.ИмяСправочникаХраненияФайлов(Объект);
        Если Не ЗначениеЗаполнено(ИмяСправочникаХранилищаФайлов) Тогда
		Возврат РезультатФункции;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст =  
	"ВЫБРАТЬ
	|	Файлы.Ссылка КАК Ссылка
	|ИЗ
	|	&ИмяСправочника КАК Файлы
	|ГДЕ
	|	Файлы.ВладелецФайла = &ВладелецФайлов
	|	И НЕ Файлы.ПометкаУдаления
	|	И ВРЕГ(Файлы.Наименование) ПОДОБНО ""&ШаблонИмени%""";
	
	ПолноеИмяСправочника = "Справочник." + ИмяСправочникаХранилищаФайлов;
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИмяСправочника", ПолноеИмяСправочника);
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ШаблонИмени", ВРег(ШаблонИмени));
	
	Запрос.УстановитьПараметр("ВладелецФайлов", Объект);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Если Не Выборка.Следующий() Тогда
		Возврат РезультатФункции;
	КонецЕсли;
	
	ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.Ссылка, Ложь);
	Если ДвоичныеДанные = Неопределено Тогда
		Возврат РезультатФункции;
	КонецЕсли;
	
	Возврат Новый Картинка(ДвоичныеДанные);
	
КонецФункции

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

В общем модуле "УправлениеПечатью" в расширении:


#Область СлужебныеПроцедурыИФункции

&ИзменениеИКонтроль("ПрефиксыИменОбластейСПодписьюИПечатью")
Функция ПодписиИПечати_ПрефиксыИменОбластейСПодписьюИПечатью()

	Результат = Новый Массив;
	Результат.Добавить("Печать");
	Результат.Добавить("Подпись");
	Результат.Добавить("Факсимиле");
	#Вставка
	Результат.Добавить("Логотип");
	#КонецВставки

	Возврат Результат;

КонецФункции

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

 

Подробнее про доработку:

1. У документа, печатную форму которого мы выводим, есть определённые реквизиты (в данном случае - это Организация, Руководитель и ГлавныйБухгалтер). Элементы справочников из этих реквизитов используются для получения картинок. У Организации это могут быть картинка печати и логотипа. У Руководителя - подпись. И так далее. Список этих реквизитов перечисляем в коде путём добавления в код соответствующих строк.

2. К элементам соответствующих справочников этих реквизитов прикрепляем вложенные файлы картинок - печати, подписи или чего-то другого. Самое главное, чтобы имена этих файлов начинались на те слова, которые являются ключами соответствующих строк структуры. Например, в элементе справочника, который указан в реквизите "Руководитель" документа должно быть вложение с именем, начинающимся на "ПодписьРуководителя"

 

 

 

3. В макет печатной формы, редактируемом через пользовательский режим - добавляется в нужное место картинка с именем равным ключу соответствующей строки структуры. Например, для примера из п.2 - это "ПодписьРуководителя"

 

 

4. Изначально в функционале БСП определено, что выводимыми/скрываемыми картинками могут быть только картинки с именами, начинающимися на "Печать", "Подпись" или "Факсимиле". Чтобы расширить этот список (добавить, например, "Логотип") нужно переопределить процедуру "ПрефиксыИменОбластейСПодписьюИПечатью" общего модуля "УправлениеПечатью"

Готово.

 

Отличия от примера, приведённого в демобазе конфигурации БСП:

1. Картинки берутся из прикрепленных файлов. Нет необходимости дополнительно дописывать конфигурацию и добавлять реквизиты для хранения картинок.

2. Картинки можно брать из различных реквизитов документа, а не только из реквизита "Организация"

3. Можно брать сразу несколько картинок из одного реквизита (например, как в примере выше - "Печать" и "Логотип" из одного реквизита "Организация").

4. Используются макеты из "Макеты печатных форм".

 

На что стоит обратить внимание:

1. Флажок "Подпись и печать" будет появляться на форме только в том случае, если есть хотя бы одна картинка, которая была подключена с помощью этого механизма.

2. Если в типовом макете уже есть картинка с именем, которое мы хотим добавить (например, в типовом макете "Счет на оплату" уже есть картинка "Логотип"), то в редактируемый пользователем макет уже не добавить такую картинку. Это стандартное поведение платформы, просто нужно это держать в голове и в коде прописывать имя картинки уже с учётом этого (например, "ЛоготипОрганизации").

 

Для большинства случаев вышеприведённого кода достаточно. А в приложенном файле расширение со специфическим дополнительным функционалом для получения не только реквизитов документа, но и вложенных реквизитов этих реквизитов. Например, для получения картинки из элемента справочника "ФизическиеЛица", который является реквизитом справочника "ОтветственныеЛицаОрганизаций", элемент справочника которого является реквизитом "Руководитель" документа "ЗаказКлиента"

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.20.80

ПФ печать подпись логотип печатная форма картинка факсимиле

См. также

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

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    169025    937    403    

904

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12410    98    42    

100

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

9360 руб.

17.05.2024    26455    90    48    

133

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

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

22200 руб.

06.10.2023    16767    41    10    

75

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    190495    1150    0    

918

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    11363    40    27    

66

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    681    2    0    

4

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    103900    244    100    

306
Оставьте свое сообщение