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

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) .

См. также

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

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

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

18000 руб.

06.10.2023    10549    25    6    

55

Универсальная печать по шаблонам 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    44394    152    89    

149

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

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

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

12000 руб.

13.03.2018    57553    190    76    

117

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

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

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

3600 руб.

13.02.2019    89998    404    44    

386

Путевой лист грузового автомобиля в 1С:Бухгалтерия 3.0

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

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

4320 руб.

23.08.2019    54588    164    63    

153

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

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

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

2520 руб.

18.02.2019    62178    182    14    

150

Шаблоны.doc - документы Word из 1С (1С:Совместимо!)

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

Приложение для быстрого создания макетов печатных документов, заполняемых из 1С:Предприятие, без привлечения программистов и запуска конфигуратора. Шаблон готовится в редакторе MS Word, отлично освоенном офисными служащими. Так, на подготовку нового шаблона договора купли продажи со спецификацией потребуется 25 минут. Приложение будет полезно, если Вы работаете со множеством Word-шаблонов или если Вам надо часто создавать новые шаблоны. Есть сертификат "1С: Совместимо!". Версия ПРОФ доступна в виде расширения.

2000 руб.

05.09.2017    91143    62    82    

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


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