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

10.07.20

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

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

Скачать файл

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

Наименование SM По подписке [?] Купить один файл
факсимиле вместо руководителя:
.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С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    11762    31    6    

62

SALE! 20%

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

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    223101    963    891    

970

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

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

3600 руб.

13.02.2019    91307    413    44    

396

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

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

12000 руб.

13.03.2018    58183    193    76    

118

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

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

5400 руб.

08.10.2019    45000    152    89    

149

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

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

2520 руб.

18.02.2019    62678    186    14    

152

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

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

4500 руб.

23.08.2019    55161    161    63    

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


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