Некоторые картинки не загружаются из РФ и РК, используйте VPN.

четверг, 5 октября 2017 г.

1С добавляем возможность отправки вложения в формате PDF

Доброго времени суток.
Речь пойдет о конфигурациях КА 1.1, БП 2.0, УТ 10.3 и т.п. на обычных формах.

1С умеет отправлять печатные формы документов прямо из программы вложением на почту контрагента, но среди возможных вариантов вложения нету PDFа, эту оплошность можно исправить буквально за 10 минут.


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

Открываем конфигуратор, Конфигурация, Общие, ОбщиеФормы и находим форму НастройкаОтправкиОтчета.

Удлиняем форму, нам же нужно куда то впихнуть новую настройку. Копированием создаем новый пункт. Задаем ему имя ВложенияPDF.

Далее открываем процедуру ОсновныеДействияФормыOK и ищем блок где упоминается ВложенияXLS или сразу поиском по модулю формы (это общая форма, поэтому здесь нет модулей объекта/менеджера).
Внесенные изменения отмечены комментарием, если обратите внимание, это просто скопирован предыдущий блок и слегка подкорректирован.

Если ВложенияXLS Тогда
 ФайлВФорматеXLS = ПолучитьИмяВременногоФайла();
 Отчет.Записать(ФайлВФорматеXLS, ТипФайлаТабличногоДокумента.XLS);
 СписокФайловВложений.Добавить(Новый Структура("Хранилище, ИмяФайла, Наименование", ПолучитьДвоичныеДанные(ФайлВФорматеXLS), (ИмяФайлаВложения + ".XLS"), ИмяФайлаВложения));
КонецЕсли;
//PS добавлено
Если ВложенияPDF Тогда
 ФайлВФорматеPDF = ПолучитьИмяВременногоФайла();
 Отчет.Записать(ФайлВФорматеPDF, ТипФайлаТабличногоДокумента.PDF);
 СписокФайловВложений.Добавить(Новый Структура("Хранилище, ИмяФайла, Наименование", ПолучитьДвоичныеДанные(ФайлВФорматеPDF),(ИмяФайлаВложения + ".PDF"), ИмяФайлаВложения));
КонецЕсли;
//PS добавлено

Дабы значение сохранялось, добавляем строчку в процедуру сохранитьЗначения()

Процедура СохранитьЗначения()

 СтруктураЗначений = Новый Структура();
 СтруктураЗначений.Вставить("ВидТекстаПисьма", ВидТекстаПисьма);
 СтруктураЗначений.Вставить("ВложенияHTML"   , ВложенияHTML);
 СтруктураЗначений.Вставить("ВложенияMXL"    , ВложенияMXL);
 СтруктураЗначений.Вставить("ВложенияTXT"    , ВложенияTXT);
 СтруктураЗначений.Вставить("ВложенияXLS"    , ВложенияXLS);
 СтруктураЗначений.Вставить("ВложенияPDF"    , ВложенияPDF); //PS добавлено
 
 СохранитьЗначение("НастройкиОтправкиОтчетов", СтруктураЗначений);

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

А здесь в обратную сторону, восстанавливаем значение в процедуре ВосстановитьЗначения():

ВосстановленноеЗначение.Свойство("ВложенияTXT", ЗначениеСтруктуры);
Если ЗначениеСтруктуры <> Неопределено Тогда
 ВложенияTXT = ЗначениеСтруктуры;
КонецЕсли; 
//PS добавлено
ВосстановленноеЗначение.Свойство("ВложенияPDF", ЗначениеСтруктуры);
Если ЗначениеСтруктуры <> Неопределено Тогда
 ВложенияPDF = ЗначениеСтруктуры;
КонецЕсли; 
//PS добавлено
ВосстановленноеЗначение.Свойство("ВложенияXLS", ЗначениеСтруктуры);



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

Сохраняем конфигурацию и ...
Все


1 комментарий: