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

14.01.25

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

В конфигурациях серии ЕРП (ЕРП УХ, КА и УТ 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С.

15500 руб.

02.09.2020    210885    1157    413    

1043

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

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

8400 руб.

20.08.2024    39626    217    113    

204

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

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

16000 руб.

10.11.2023    18546    78    39    

92

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

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

9500 руб.

17.05.2024    37165    136    55    

176

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    26093    65    30    

96

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше.<br/> Далее в публикации:<br/> MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    2975    4    7    

12

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

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

3600 руб.

27.12.2024    3585    7    0    

12
Для отправки сообщения требуется регистрация/авторизация