Формируем макеты легко и просто

8 2

    Так сложилось, что формирование документов (заявления, договоры и т.д.) происходит из макетов, формы макетов часто меняются, вводятся новые, появляются новые макропеременные и дополнительные условия. И в нашем случае ситуация дошла до того, что сценарий генерации документов уже перевалил за две тысячи строк. Стало очень сложно ориентироваться и не повторять макропеременные. Дабы облегчить и структурировать все макропеременные и сделать процесс формирования макета более прозрачным, решили разработать решение по генерации макетов. На данном этапе решение всё еще в разработке, но мы решили представить его сообществу, чтобы решить куда нам двигаться дальше и услышать ваши мнения и пожелания.

Цели

  1. Хранить вычисление или значение макропеременной.
  2. Хранить информацию о макропеременных в макете.
  3. Легко добавлять новую макропеременную в макет.
  4. Удобное тестирование вычислений макропеременных.
  5. Удобное редактирование макетов.

Решение

    Решение состоит из двух справочников IT_MaketIT_MacroVariable и функции IT_GenerateDocument.

IT_MacroVariable

    IT_MacroVariable – хранит в себе информацию о макропеременных

Макропеременные бывают двух типов статические и общие. Статическая макропеременная хранит в себе конкретное значение. Например, как на картинке ниже:


Имя организации = ООО “Мобил-Авто”.

 

Общий тип хранит в себе алгоритм вычисления макропеременной. По кнопке “Вычисление” открывается окно редактора, в котором необходимо написать или просмотреть само вычисление. Причем значение макропеременной будет присваиваться переменной Result. По кнопке “Посчитать”, исполняется код вычисления и результат выводится в поле “Значение”, очень удобно использовать для тестирования вычисления.

На картинках указано как создать макропеременную, хранящую в себе текущую дату.

По практике работы, проще создать один диалог, который опросит пользователя и вернет несколько значений макропеременных, для этих случаев такие макропеременные можно задать через знак ‘|’

Как вы заметили и результат вычисления тоже должен возвращаться через ‘|’


Перейдем к главному справочнику IT_Maket

IT_Maket

    Так выглядит окно карточки макета.


В поле "Макет" указывается документ с видом макет

Наше решение пока работает только с макетами Word и Excel.

В таблицу добавляются макропеременные созданные ранее. В колонки автоматически перетекает тип переменной, вычисление (только для чтения) и значение.

Вычисление, добавленное в колонку "Условие", позволяет выполнить какие-либо действия над результатом макропеременной (например, во всех макетах у вас везде должно быть указано полное ФИО, а именно в макете заявления должно быть в формате Фамилия И.О.).

Теперь перейдем к кнопкам в ленте. По кнопкам «Внести» или «Внести и открыть» макропеременные из карточки заносятся в сам макет, для дальнейшей их расстановки. По кнопке «Открыть макет» открывается макет документа для редактирования, это удобнее чем искать его в папках или по ID. Для удобства тестирования существует кнопка «Сгенерировать документ» с двумя вариантами: «Сгенерировать с вычислениями», то есть генерация документа будет с вычислением всех макропеременных или «Сгенерировать с тестовыми значениями», в документ подставятся значения макропеременных из колонки «Значение»:


 

IT_GenerateDocument

    Для использования данного функционала в разработке применяется следующая функция

IT_GenerateDocument(Code:Строка;[OpenDoc: Логический = FALSE];[DeleteDoc: Логический = FALSE])

Code – код записи справочника IT_Maket с необходимым макетом

OpenDoc – открытие документа после генерации (по умолчанию False - не открывается)

DeleteDoc – удаление документа после генерации (по умолчанию False - не удаляется)

Функция возвращает путь сгенерированного документа, если параметр DeleteDoc установлен в TRUE возвращается пустое значение.

Планы по развитию

  • Создание контекстного типа макропеременных. Передавать в макропеременную объект в контексте которого будут выполнятся вычисления.  
  • Создание табличного типа макропеременных. Использование одной макропеременной для заполнения всей таблицы поколонно или построчно.
  • Вставка картинок.
  • Генерация документов без использования объектной модели Word.
  • Работать с документами других форматов (.odt,.calc и т.д.).
  • Упростить решение для возможности создания макетов пользователем, без навыков разработки.

Ссылка на разработку: IT_Maket.zip

Василий Ившин

А какого типа макеты требуются, можете пример привести? и какие изменения туда надо постоянно вносить? 

Анатолий Придыбайло
А какого типа макеты требуются, можете пример привести?

Макеты заявлений на различные работы, в крупных компаниях их много и они имеют свойство постоянно изменяться, появляются новые и.т.д. Сюда же можно отнести и договора и многие другие документы.

какие изменения туда надо постоянно вносить?

Периодически вносятся изменения в законодательство, меняются требования внутри компании. Новые поля, различные условия и др.

Авторизуйтесь, чтобы написать комментарий