Факсимиле вместо подписи руководителя

10.07.20

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

Расширение добавляет подпись в справочнике "Физические лица" и позволяет использовать ее в печатных формах.

Скачать файл

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

Наименование По подписке [?] Купить один файл
факсимиле вместо руководителя:
.cfe 25,73Kb
3
3 Скачать (1 SM) Купить за 1 850 руб.

Всем доброго времени суток.

Столкнулся с вопросом использовать функционал факсимиле в БП 3.0 (3.0.77.106) и вот незадача как оказалось использовать можно только подпись ответственных лиц организации, а как быть с сотрудниками с правом подписи? тем более что их можно указывать в документах в поле руководитель или ответственный??

На ИТС есть описание, что такой механизм есть, но в моем релизе почему-то он отсутствует, и пришлось немного покопаться и поискать его в базе.

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

Есть замечательный общий модуль: «УправлениеПечатьюБП» и в ней есть функция для формирования соответствия Факсимиле ( ПолучитьДанныеФаксимиле), но вот незадача в нее не попадает документ, только карточка организации и получить из ее тела документ или указанных в нем физических лиц не представляется возможным, хотя при выводе изображений на печатные формы в универсальном механизме происходит попытка получения подписи из переменной «СоответствиеФаксимиле», другое дело что попасть ей туда неоткуда и негде.

Как не искал, так и не нашел где привязать изображение к физлицу и ничего лучше не придумал как использовать справочник «Файлы», тем более, что он прекрасно работает с изображениями и есть к нему даже целый общий модуль «РаботаСФайлами», нам с него понадобится только одна функция: «РаботаСФайлами.ДанныеФайла(СсылкаНаСправочникФайлы)».

Как решение предлагаю добавить явный реквизит, в котором хранить ссылку на «файл» с хранящемся факсимиле, и по его заполненности использовать для печатных форм.

Но для такого решения у пользователя должны быть права на работу со справочником «Файлы».

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

 

 

&НаСервере
Функция ПолучитьСсылкуНаВременноеХранилищеИзображенияИзВложенногоФайла(ОбъектВладелецФайла,ИмяПоляПрисоединенногоФайла)
	
	ПрисоединенныйФайл = ОбъектВладелецФайла[ИмяПоляПрисоединенногоФайла];
	
	Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда
		ДанныеКартинки = РаботаСФайлами.ДанныеФайла(ПрисоединенныйФайл);
		ДвоичныеДанныеКартинки = ПолучитьИзВременногоХранилища(ДанныеКартинки.СсылкаНаДвоичныеДанныеФайла);
	КонецЕсли;
	
	СсылкаНаВременноеХранилище = ПоместитьВоВременноеХранилище(Новый Картинка(ДвоичныеДанныеКартинки), Новый УникальныйИдентификатор);
	
	Возврат СсылкаНаВременноеХранилище;
	
КонецФункции

&ИзменениеИКонтроль("ДополнитьДокументПодписьюИПечатью")
Процедура ТРМедия_ДополнитьДокументПодписьюИПечатью(ОбластьМакета, СведенияОДокументе, ОбъектыПечати, ПараметрыПечати)

	КлючевыеДанные = Новый Структура("Документ, Организация,
	|Предприниматель, Руководитель, ГлавныйБухгалтер,
	|ОтветственныйЗаОформление, Исполнитель, Кладовщик");

	// Заполняем по данным печатной формы
	Если ТипЗнч(СведенияОДокументе) = Тип("ВыборкаИзРезультатаЗапроса") Тогда
		ЗаполнитьЗначенияСвойств(КлючевыеДанные, СведенияОДокументе);
		Колонки = СведенияОДокументе.Владелец().Колонки;
	ИначеЕсли ТипЗнч(СведенияОДокументе) = Тип("СтрокаТаблицыЗначений") Тогда
		Колонки = СведенияОДокументе.Владелец().Колонки;
		Если Колонки.Найти("ДанныеШапки") <> Неопределено Тогда
			ЗаполнитьЗначенияСвойств(КлючевыеДанные, СведенияОДокументе.ДанныеШапки);
		Иначе
			ЗаполнитьЗначенияСвойств(КлючевыеДанные, СведенияОДокументе);
		КонецЕсли;
	Иначе
		УдалитьВсеОбластиФаксимиле(ОбластьМакета);
		Возврат;
	КонецЕсли;

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

	ИсключаемыеТипыДокументов = ИсключаемыеТипыДокументов(ПараметрыПечати);
	Если ИсключаемыеТипыДокументов.Найти(ТипЗнч(КлючевыеДанные.Документ)) <> Неопределено Тогда

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

		// Ситуация, когда в документе подписанты явно не указаны
		Если НЕ ЗначениеЗаполнено(КлючевыеДанные.Руководитель)
			ИЛИ НЕ ЗначениеЗаполнено(КлючевыеДанные.ГлавныйБухгалтер) Тогда

			ДатаДокумета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КлючевыеДанные.Документ, "Дата");
			Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(КлючевыеДанные.Организация, ДатаДокумета);

			Если НЕ ЗначениеЗаполнено(КлючевыеДанные.Руководитель) Тогда
				КлючевыеДанные.Руководитель = Руководители.Руководитель;
			КонецЕсли;
			Если НЕ ЗначениеЗаполнено(КлючевыеДанные.ГлавныйБухгалтер) Тогда
				КлючевыеДанные.ГлавныйБухгалтер = Руководители.ГлавныйБухгалтер;
			КонецЕсли;

		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(КлючевыеДанные.Исполнитель) Тогда
			Если Колонки.Найти("ПредставительОрганизации") <> Неопределено Тогда
				КлючевыеДанные.Исполнитель = СведенияОДокументе.ПредставительОрганизации;
			Иначе
				КлючевыеДанные.Исполнитель = КлючевыеДанные.Руководитель;
			КонецЕсли;
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(КлючевыеДанные.Кладовщик) Тогда
			Если Колонки.Найти("ОтпускПроизвел") <> Неопределено Тогда
				КлючевыеДанные.Кладовщик = СведенияОДокументе.ОтпускПроизвел;
			Иначе
				Если ЗначениеЗаполнено(КлючевыеДанные.Исполнитель) Тогда
					КлючевыеДанные.Кладовщик = КлючевыеДанные.Исполнитель;
				ИначеЕсли ЗначениеЗаполнено(КлючевыеДанные.Руководитель) Тогда
					КлючевыеДанные.Кладовщик = КлючевыеДанные.Руководитель;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;

		// Предприниматель - он же руководитель
		Если НЕ ЗначениеЗаполнено(КлючевыеДанные.Предприниматель) Тогда
			КлючевыеДанные.Предприниматель = КлючевыеДанные.Руководитель;
		КонецЕсли;
	КонецЕсли;

	ДанныеОбласти      = ОбъектыПечати.НайтиПоЗначению(КлючевыеДанные.Документ);
	ОбластьВладелец    = ДанныеОбласти.Представление;
	ПозицияРазделителя = СтрНайти(ОбластьВладелец, ";", НаправлениеПоиска.СКонца);
	Если ПозицияРазделителя <> 0 Тогда
		ОбластьВладелец = СокрЛП(Прав(ОбластьВладелец, СтрДлина(ОбластьВладелец) - ПозицияРазделителя));
		ДанныеОбласти.Представление = ОбластьВладелец;
	КонецЕсли;

	СоответствиеФаксимиле          = Новый Соответствие;
	МассивИменПоказателей          = Новый Массив;
	МассивУдаляемыхИменПоказателей = Новый Массив;
	ОрганизацияЮридическоеЛицо     = Истина;

	ПолучитьДанныеФаксимиле(СоответствиеФаксимиле,
	МассивИменПоказателей,
	МассивУдаляемыхИменПоказателей,
	ОрганизацияЮридическоеЛицо,
	КлючевыеДанные.Организация,
	ПараметрыПечати);
	#Вставка
	
	СсылкаНаВременноеХранилище = Неопределено;
	
	Если ЗначениеЗаполнено(КлючевыеДанные.Руководитель) Тогда 
		Если ЗначениеЗаполнено(КлючевыеДанные.Руководитель.TRMedia_ФайлПодписьФизЛица) Тогда 
			
			СсылкаНаВременноеХранилище = ПолучитьСсылкуНаВременноеХранилищеИзображенияИзВложенногоФайла(КлючевыеДанные.Руководитель,"TRMedia_ФайлПодписьФизЛица");
			СоответствиеФаксимиле.Вставить(КлючевыеДанные.Руководитель,
				СсылкаНаВременноеХранилище);
  
		КонецЕсли;
	КонецЕсли;
	
	#КонецВставки	

	// Удаляем заведомо лишние картинки из табличного документа
	Для Каждого ЗначениеПоказателя ИЗ МассивУдаляемыхИменПоказателей Цикл
		ОчиститьОбластьФаксимиле(ОбластьМакета, ЗначениеПоказателя);
	КонецЦикла;

	// В некоторых случаях на форме есть взаимоисключающие реквизиты.
	// Например, подпись руководителя и подпись предпринимателя в счете-фактуре
	Если ОрганизацияЮридическоеЛицо Тогда
		ОчиститьОбластьФаксимиле(ОбластьМакета, "ФаксимилеПредприниматель");
	Иначе
		ОбластьФаксимиле = ОбластьМакета.Области.Найти("ФаксимилеПредприниматель");
		Если ОбластьФаксимиле <> Неопределено Тогда
			ОчиститьОбластьФаксимиле(ОбластьМакета, "ФаксимилеРуководитель");
		КонецЕсли;
	КонецЕсли;

	РасшифровкаФаксимилеМакета = Новый Структура();

	Для Каждого ЗначениеПоказателя ИЗ МассивИменПоказателей Цикл

		// Печать нельзя привязать к ответственному лицу
		Если СтрНайти(ЗначениеПоказателя, "ФаксимилеПечать") > 0
			ИЛИ СтрНайти(ЗначениеПоказателя, "ФаксимильнаяПечать") > 0 Тогда
			КлючСоответствия = "Организация";
		Иначе
			КлючСоответствия = СтрЗаменить(ЗначениеПоказателя, "Факсимиле", "");
			КлючСоответствия = СтрЗаменить(КлючСоответствия,   "Накладная", "");
			КлючСоответствия = СтрЗаменить(КлючСоответствия,   "Услуги",    "");
			КлючСоответствия = СтрЗаменить(КлючСоответствия,   "Материалы", "");
		КонецЕсли;

		ОбработатьОбластьФаксимиле(РасшифровкаФаксимилеМакета,
		ОбластьВладелец,
		ОбластьМакета,
		ЗначениеПоказателя,
		КлючевыеДанные,
		КлючСоответствия,
		СоответствиеФаксимиле);

	КонецЦикла;

	// Измененный макет, не содержащий области факсимиле
	Если РасшифровкаФаксимилеМакета.Количество() = 0 Тогда
		УдалитьВсеОбластиФаксимиле(ОбластьМакета);
		Возврат;
	КонецЕсли;

	// Расшифровка в первой колонке последней строки
	АдресПараметровРасшифровки = ПоместитьВоВременноеХранилище(РасшифровкаФаксимилеМакета, Новый УникальныйИдентификатор);

	ОбластьРасшифровки = ОбластьМакета.Область("R" + Формат(ОбластьМакета.Области[ОбластьВладелец].Низ, "ЧГ=")
	+ "C1:R" + Формат(ОбластьМакета.Области[ОбластьВладелец].Низ, "ЧГ=") + "C1");

	ОбластьРасшифровки.Имя = "РасшифровкаФаксимилеМакета_" + ОбластьВладелец;
	ОбластьРасшифровки.Расшифровка = АдресПараметровРасшифровки;
	ОбластьРасшифровки.ИспользованиеРасшифровки = ИспользованиеРасшифровкиТабличногоДокумента.БезОбработки;

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

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

	Настройки = Новый Структура;
	Настройки.Вставить("ВыводитьФаксимиле", Ложь);
	Настройки.Вставить("ФаксимилеДоступноДляВывода", Истина);

	НастройкиВыводаФаксимиле = ХранилищеОбщихНастроек.Загрузить("УправлениеФаксимиле", "НастройкиВыводаФаксимиле");
	Если НастройкиВыводаФаксимиле <> Неопределено
		И НастройкиВыводаФаксимиле.Свойство("ФаксимилеДоступноДляВывода") Тогда

		Настройки.ФаксимилеДоступноДляВывода = НастройкиВыводаФаксимиле.ФаксимилеДоступноДляВывода;
		Если Не Настройки.ФаксимилеДоступноДляВывода Тогда
			Возврат Настройки;
		КонецЕсли;

		ВыводитьФаксимиле = Неопределено;
		НастройкиВыводаФаксимиле.Свойство("ВыводитьФаксимиле" + ИмяМакета, ВыводитьФаксимиле);
		Если ВыводитьФаксимиле <> Неопределено Тогда
			#Удаление
			Настройки.ВыводитьФаксимиле = ВыводитьФаксимиле;
			#КонецУдаления
			#Вставка
        	Настройки.ВыводитьФаксимиле = ?(НастройкиВыводаФаксимиле.ФаксимилеДоступноДляВывода,Истина,ВыводитьФаксимиле);
			#КонецВставки
		КонецЕсли;

	КонецЕсли;

	Возврат Настройки;

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


Как-то так. Надеюсь, кому-нибудь поможет.

Тестировалось на Бухгалтерия предприятия, редакция 3.0 (3.0.77.106) .

См. также

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

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

22200 руб.

06.10.2023    20812    55    19    

86

Печатные формы Бухгалтер Платформа 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 спец., ПЛ для Автомобильного крана.

4800 руб.

14.10.2019    40836    287    216    

187

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

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

14400 руб.

13.03.2018    63336    227    79    

120

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

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

3960 руб.

08.10.2019    49671    182    105    

175

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

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

4560 руб.

13.02.2019    103455    467    46    

450

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

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

3720 руб.

18.02.2019    66412    229    15    

182

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3500 руб.

07.02.2023    8370    90    17    

47

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

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

13200 руб.

27.06.2023    5144    16    2    

17
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Trucker 7 15.07.20 12:57 Сейчас в теме
На ИТС есть описание, что такой механизм есть, но в моем релизе почему-то он отсутствует, и пришлось немного покопаться и поискать его в базе.


Функционал "Факсимиле подписи уполномоченного сотрудника" доступен начиная с релиза 3.0.78
https://its.1c.ru/db/updinfo#content:764:1:issogl1_9
Оставьте свое сообщение