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

14.01.25

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Печать и подпись с минимальной доработкой ЕРП (и ЕРП УХ)
.cfe 9,22Kb
2
2 Скачать (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    171275    959    403    

914

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

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

8400 руб.

20.08.2024    13771    107    46    

107

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

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

22200 руб.

06.10.2023    17169    43    15    

75

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

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

9360 руб.

17.05.2024    27130    94    48    

136

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

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

15000 руб.

10.11.2023    11806    44    27    

67

SALE! %

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

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

4800 3840 руб.

14.01.2013    191029    1152    0    

919

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

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

3600 руб.

27.12.2024    1061    2    0    

5

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

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

5000 руб.

07.02.2018    104075    244    100    

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