Сбербанк, осваивая новые технологии, теперь требует заполнять PDF формы c полями. Формы очень замысловатые и трудно поддаются воспроизведению штатными средствами 1С. Делюсь опытом интеграции 1С и Adobe Acrobat.
Заполнение сделано в виде простейшей обработки, которая для списка физ.лиц заполняет форму заявления Сбербанка на банковское обслуживание в рамках зарплатного проекта.
Работает в ЗУП, переделав запрос, можно заставить работать и в УПП и другой конфигурации.
При желании, на базе обработки можно легко сделать внешнюю печатную форму.
Добавлена новая версия бланка заявления 2024 года
(0) я правильно понимаю, что Вы напрямую разбираете структуру PDF файла из 1С, заполняете поля и потом обратно формируете PDF файл?
(1) BigB, По идеи разбирать там ни чего не надо.. используются средства соответствующего COM-объекта для прямого доступа к полям PDF
(2) lopatin, если не секрет, какой COM объект используется?
Два объекта, один сам документ, другой слой с полями:
doc = Новый COMОбъект(«AcroExch.PDDoc»);
form = Новый COMОбъект(«AFormAut.App»);
(4) эти объекты доступны только с полной версией Acrobat? C ридером нет возможности создать такие объекты, как я понял.
(5) deadman66, верно, нужен Adobe Acrobat либо стандарт либо про.
Можно ли получить полный код?
пришлите пожалуйста на grrus@mai.ru
(7) Так там и лежит полный код, ничего не запаролено. Я что-то не так понимаю?
Добрый вечер! Скачал Вашу обработку. А где в ней собственно взаимодействие с pdf документом?
Поля = ОткрытьНовыйШаблон(«Шаблон»); // Шаблон в двоичных данных
Это как бы самое интересное….
(9) Код открыт. Доступ осуществляется непосредственно к полям документа PDF, в котором эти поля предварительно созданы, и который отрывается как com объект.
Что именно Вам непонятно? С удовольствием поясню.
Код слишком мудреный, а пояснений так и не дождался. СомОбъект form = Новый COMОбъект(«AFormAut.App») не подключался, выдавал ошибку, требуя его «прикручивания к системе». Перерыв английский сегмент сети, нашел изящное решение по работе только с СомОбъектом doc = Новый COMОбъект(«AcroExch.PDDoc»).
(11) Мудреного там мало.
Готовим PDF документ с полями, храним его в макете в двоичных данных, создаем запрос для получения данных, которыми нужно заполнить поля (имена полей в запросе и в документе совпадают, это желательно для упрощения кода — простой цикл на несколько строк.)
Идея такова: достаем файл из макета, открываем как СОМ, из него получаем через AFormAut.App из слоя полей документа коллекцию полей, значения которых заполняем данными запроса, убирая пробелы из имени поля, так чтобы они совпадали с именами в запросе, попутно различаем типы полей — если булево, то проставляем соотв. значение:
Показать
А вся «мудреность» относится к форматированию номера телефона и трансформации некоторых значений из запроса в значок «Х» по требованиям заполнения перед циклом заполнения.
Пытаюсь адаптировать вашу обработку под заполнение форм из из 1с 77. Для наглядности форма лежит по фиксированному пути.
Получилась вот такая выжимка, сделанная из вашего кода с преобразованием под 77, которая заполняет одно из полей формы:
Отрабатывает без ошибок, но форма C:1CPDFformp1.pdf остается незаполненной, а «C:1CPDF m.pdf» нет, что вроде бы не удивительно — явно не хватает сохранения сделанных изменений, в вашем коде сохранения я тоже не заметил — оно точно работает в выложенном вами виде? (имею в виду посл версию 2017г)
(13)
По факту вот такой код оказался рабочим, т.е. из OpenAVDoc имя файла я вообще убрал — по описанию метода на адоб сайте там титул, а не путь к файлу.
Показать
(14) Отличный результат! Я под 7.7 не заморачивался.
Также не было задачи сохранять заполненный ПДФ, кадровик просто его печатает и закрывает.
Кстати, при закрытии вылетает какая-то ошибка, я с ней тоже не разбирался, т.к. на конечный результат не влияет, сказал кадровикам просто закрывайте сообщение.
Я эту форму делал всего день, скачал API reference, да и сделал по-быстрому, чтобы кадровиков освободить от вала ручной работы.
Если доведете до законченной разработки, я буду только рад. Времени, если честно, нет для причесывания.
Проблема в этой строке, на новых версиях Adobe Reader DC этот метод уже не работает. Не решали эту проблему?
Вы на какой версии Adobe Reader проверяли?
Не проверял. На новых версиях чего?
Насколько помню, Adobe X
Reader не катит, нужна про либо стандарт.