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

10.07.20

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

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

Скачать файлы

Наименование Файл Версия Размер
факсимиле вместо руководителя:
.cfe 25,73Kb
3
.cfe 25,73Kb 3 Скачать

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

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

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

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

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

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

		КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЦикла;

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

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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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


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

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

См. также

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7337    22    6    

39

Универсальная печать по шаблонам Word (Печать договоров из 1С БП 3, УНФ 1.6, ЗУП 3, УТ 11, КА 2, ERP 2, ДО 3)

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

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

5400 руб.

08.10.2019    42726    144    88    

134

SALE! 25%

УТ 11, КА 2, ERP 2: Настраиваемые под каждую организацию печать и подпись ответственных лиц в печатных формах (ТОРГ-12, Счёт-фактура, УПД, УКД, Заказ клиента, Акт сверки, М-15 и др.)

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

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

12000 9000 руб.

13.03.2018    56478    179    76    

112

Печатные формы КС-2 и КС-3 в "1С:Бухгалтерия 3.0"

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

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

3240 руб.

13.02.2019    88032    388    44    

371

Печать актов МХ-1, МХ-3 в 1С:Бухгалтерия 3.0

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

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

2520 руб.

18.02.2019    61117    170    14    

139

Путевые листы (расширение)

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

Учет путевых листов выполнен в виде расширения. Предназначен для учета путевых листов в конфигурации Бухгалтерия предприятия 3.0. и Комплексная автоматизация 2. Печатная форма: Типовая межотраслевая форма № 3. Утверждена постановлением Госкомстата России от 28.11.97 № 78. Типовая межотраслевая форма № 4-П от 18.09.2008 г. N 152 с учетом изменений указанных в Приказе Министерства транспорта Российской Федерации №368 от 11 сентября 2020 г. №368, Типовая межотраслевая форма № ЭСМ-7, и др. ЭСМ-2, 4-С, 3 спец., 6 спец., ПЛ для Автомобильного крана. .

2000 руб.

14.10.2019    36546    225    215    

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


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