Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
02 окт 2022, 12:47

Добавление изображения в макет программно

Автор anna_m, 16 сен 2022, 08:49

0 Пользователей и 1 гость просматривают эту тему.

anna_m

Добрый день!

Есть обработка, которая в зависимости от выбранного пакета печатает набор документов по списку контрагентов.

В определенном поле макета (для примера пусть будет  "Место печати" (МП)) необходимо программно вставить изображение той самой печати предприятия.
Именно в это поле. Изменить существующие макеты нельзя, т.к используются внутри предприятия, печать не нужна.

Как сделать программно на этапе формирования печатной формы?

LexaK

anna_m, просто делают ДВЕ печатные формы
Обычная (что там у вас)
и ТожеСамое_СФаксимиле (слышали такой термин? там печать и подпись)

выполнить это можно десятком способов, лучше всего возьмите за пример Типовой функционал и адаптируйте к своей ПФ.
если помогло нажмите: Спасибо!

anna_m

LexaK, у меня таких форм больше 20, предлагаете все их копировать?


LexaK

anna_m,
Цитироватьу меня таких форм больше 20,
счастливые! У меня по некоторым докам уже больше 50,
так вам же не все с факсимиле нужны!
задублируйте нужные, сделайте их (ПФ) в виде внешних печатных форм

идея конечно интересная, где то там в печатном/табличном документе сделать кнопку ПоставитьФаксимиле
вывел/сформировал Печатную Форму документа, и если надо нажал кнопку, и на готовой ПФ появилась нужная печать с подписью!!!   

а при групповой печати, где-то там можно добавить галочку Выводить факсимиле,
(тоже вариант)

как и говорил выше, можно придумать десятки способов
(но обычно, идем самым простым путем)
если помогло нажмите: Спасибо!

anna_m

LexaK, путь простой, но не самый эффективный...

неужели нет программного способа

"найти подстроку "МП" в печатной форме и добавить туда картинку?"

LexaK

anna_m,
Цитироватьнеужели нет программного способа
эээ, так все печатные формы формируются программно! и факсимиле тоже добавляется программно,
только в определенную область Подвала,
я же говорю/пишу возьмите типовой пример, всего то два десятка команд по обработке добавить
если помогло нажмите: Спасибо!

LexaK

anna_m, вот какой-то пример вывода факсимиле, процедура общего модуля, просто используем ее с нужными параметрами,
может в ней что-то и не оптимально, но работает.
Процедура ВывестиФаксимилеВТабличныйДокумент(Макет, ОбластьМакета, Организация, ПараметрыПечати = Неопределено) Экспорт

ОтображатьФаксимиле = Ложь;
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьФаксимиле") Тогда
ОтображатьФаксимиле = ПараметрыПечати.ОтображатьФаксимиле;
КонецЕсли;

Если НЕ ОтображатьФаксимиле Тогда
Возврат
КонецЕсли;

ФайлКартинки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Организация, "ФайлФаксимильнаяПечать");

Если ОтображатьФаксимиле И НЕ ЗначениеЗаполнено(ФайлКартинки) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru ='Факсимиле для организации не указано.
|Укажите файл с факсимиле в карточке организации, раздел ""Настройка печати"".'"));
КонецЕсли;

Если Не ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ОбластьМакета.Рисунки, "Факсимиле") Тогда
// Картинки Факсимиле в этой области макета нет.

Если Макет.Области.Найти("ОбластьФаксимиле") <> Неопределено Тогда

// Проверить картинку факсимиле в области "ОбластьФаксимиле"
ОбластьМакетаФаксимиле = Макет.ПолучитьОбласть("ОбластьФаксимиле");
Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ОбластьМакетаФаксимиле.Рисунки, "Факсимиле")
И ЗначениеЗаполнено(ФайлКартинки) Тогда

ОбластьМакета = ОбластьМакетаФаксимиле;
Иначе
Возврат;
КонецЕсли;
Иначе
Возврат;
КонецЕсли;

КонецЕсли;

Если Не ЗначениеЗаполнено(ФайлКартинки) Тогда
ОбластьМакета.Рисунки.Удалить(ОбластьМакета.Рисунки.Факсимиле);
Возврат;
КонецЕсли;

ДвоичныеДанныеФайла = РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки);

Если ТипЗнч(ДвоичныеДанныеФайла) = Тип("Картинка") Тогда
Картинка = ДвоичныеДанныеФайла;
ИначеЕсли ТипЗнч(ДвоичныеДанныеФайла) = Тип("ДвоичныеДанные") Тогда
Картинка = Новый Картинка(ДвоичныеДанныеФайла);
Иначе
Картинка = Новый Картинка;
КонецЕсли;

ОбластьМакета.Рисунки.Факсимиле.Картинка = Картинка;

КонецПроцедуры
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск