Добавление факсимиле/логотипа в готовую печатную форму (УТ 11)

02.06.21

Задачи пользователя - Адаптация типовых решений

Как вставить в любую уже сформированную форму логотип или факсимиле.

В общем, встала как-то задача, что надо "сделать ТОРГ-12 с факсимиле". Вопрос "зачем" не рассматривался, а, сами понимаете, изменить имеющуюся стандартную форму, чтобы туда можно было вставлять факсимиле нужной организации - дело крайне неблагодарное. Ну и решил я зайти с другой стороны.

Речь идет об Управлении торговлей 11, но, в целом это применимо с небольшими доработками и на бухгалтерию, и на унф и т.д. 

Есть общая форма "ПечатьДокументов", туда в конечном итоге отправляются все печатные формы, сформированные через стандартный механизм печати, значит там и будем и мучать. Я добавил ее в расширение, чтобы не снимать ее с поддержки.

Сам ТабличныйДокумент лежи в переменной "ТекущаяПечатнаяФорма".

Первое - надо получить список имеющихся в системе логотипов и факсимиле:

&НаСервере
Функция ФайлОрганизации(Организация, Тип="Логотип") Экспорт
	врРез = новый Структура;
	врРез.Вставить("Файл", 			"");
	врРез.Вставить("Имя", 			"");
	врРез.Вставить("Организация", 	Организация);
	врРез.Вставить("Расширение", 	"");
	врРез.Вставить("Существует", 	Ложь);
	врРез.Вставить("Данные", 		Неопределено);
	
	Если Тип = "Логотип" Тогда
		Если НЕ Организация.ФайлЛоготип.Пустая() Тогда
			Если Организация.ФайлЛоготип.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
				врРез.Имя = СокрЛП(Организация.ФайлЛоготип.ПутьКФайлу);
				врРез.Файл = СокрЛП(Организация.ФайлЛоготип.Том.ПолныйПутьWindows);
				Если Прав(врРез.Файл,1) <> "\" Тогда
					врРез.Файл = врРез.Файл + "\";
				КонецЕсли;
				врРез.Файл = врРез.Файл + врРез.Имя;
				врФайл = новый Файл(врРез.Файл);
				врРез.Существует = врФайл.Существует();
				врРез.Расширение = врФайл.Расширение;
				Если врРез.Существует Тогда
					врРез.Данные = новый ДвоичныеДанные(врРез.Файл);
				КонецЕсли;
			ИначеЕсли Организация.ФайлЛоготип.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
				врНаборЗаписей = РегистрыСведений.ДвоичныеДанныеФайлов.СоздатьНаборЗаписей();
				врНаборЗаписей.Отбор.Файл.Установить(Организация.ФайлЛоготип);
				врНаборЗаписей.Прочитать();
				Если врНаборЗаписей.Количество() > 0 Тогда
					врХрЛоготип = врНаборЗаписей[0].ДвоичныеДанныеФайла;
					врРез.Данные = врХрЛоготип.Получить();
					врРез.Существует = Истина;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	ИначеЕсли Тип = "Печать" Тогда
		Если НЕ Организация.ФайлФаксимильнаяПечать.Пустая() Тогда
			Если Организация.ФайлФаксимильнаяПечать.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
				врРез.Имя = СокрЛП(Организация.ФайлФаксимильнаяПечать.ПутьКФайлу);
				врРез.Файл = СокрЛП(Организация.ФайлФаксимильнаяПечать.Том.ПолныйПутьWindows);
				Если Прав(врРез.Файл,1) <> "\" Тогда
					врРез.Файл = врРез.Файл + "\";
				КонецЕсли;
				врРез.Файл = врРез.Файл + врРез.Имя;
				врФайл = новый Файл(врРез.Файл);
				врРез.Существует = врФайл.Существует();
				врРез.Расширение = врФайл.Расширение;
				Если врРез.Существует Тогда
					врРез.Данные = новый ДвоичныеДанные(врРез.Файл);
				КонецЕсли;
			ИначеЕсли Организация.ФайлФаксимильнаяПечать.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
				врНаборЗаписей = РегистрыСведений.ДвоичныеДанныеФайлов.СоздатьНаборЗаписей();
				врНаборЗаписей.Отбор.Файл.Установить(Организация.ФайлФаксимильнаяПечать);
				врНаборЗаписей.Прочитать();
				Если врНаборЗаписей.Количество() > 0 Тогда
					врХрЛоготип = врНаборЗаписей[0].ДвоичныеДанныеФайла;
					врРез.Данные = врХрЛоготип.Получить();
					врРез.Существует = Истина;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	Возврат врРез;
КонецФункции

&НаСервере
Функция ФайлыОрганизаций()
	врРез = новый СписокЗначений;
	врВыборка = Справочники.Организации.Выбрать();
	Пока врВыборка.Следующий() Цикл
		врФайл = ФайлОрганизации(врВыборка.Ссылка, "Логотип");
		Если врФайл.Существует Тогда
			врРез.Добавить(врФайл, СокрЛП(врВыборка.Ссылка)+" Логотип");
		КонецЕсли;
		врФайл 	= ФайлОрганизации(врВыборка.Ссылка, "Печать");
		Если врФайл.Существует Тогда
			врРез.Добавить(врФайл, СокрЛП(врВыборка.Ссылка)+" Печать");
		КонецЕсли;
	КонецЦикла;
	Возврат врРез;
КонецФункции

Таким образом получили список с имеющимися факсимиле/логотипами. Далее добавляем кнопку на форму, называем ее, скажем "Факсимиле" и вешаем обработчик, в котором просим пользователя выбрать, что он хочет вставить:

&НаКлиенте
Процедура _факсимилеВместо(Команда)
	врСписокФайлов 	= ФайлыОрганизаций();
	врОповещение = Новый ОписаниеОповещения("_ПослеВыбораРисунка", ЭтотОбъект);
	врСписокФайлов.ПоказатьВыборЭлемента(врОповещение,"Выберите изображение");	
КонецПроцедуры

&НаКлиенте
Процедура _ВыбораРисунка(Элемент, Параметры) Экспорт
    Если Элемент <> Неопределено Тогда
        врФайл = Элемент.Значение;
		врКартинка = новый Картинка(врФайл.Данные);
		врРисунок = ТекущаяПечатнаяФорма.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
		врРисунок.Картинка = врКартинка;
		врРисунок.Высота = 40; 
		врРисунок.Ширина = 40;
		врРисунок.РазмерКартинки = РазмерКартинки.Пропорционально;
		врРисунок.ГраницаСверху = Ложь;
		врРисунок.ГраницаСлева = Ложь;
		врРисунок.ГраницаСправа = Ложь;
		врРисунок.ГраницаСнизу = Ложь;
		//__ чтобы прозрачный рисунок остался прозрачным
		врРисунок.ЦветФона = новый Цвет(); 
    КонецЕсли;
КонецПроцедуры

Тестировалось все это на 

1С:Предприятие 8.3 (8.3.17.1549)

Управление торговлей, редакция 11 (11.4.13.51) 

Печатные формы УТ11 Факсимиле Логотип

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4715    10    5    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

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

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3141    4    0    

20

Каждому менеджеру нужен свой Excel

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

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    3546    dimanich70    9    

14

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1806    dimanich70    8    

14

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

27.10.2023    2135    19    avmartynov    14    

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