Так сложилось, что формирование документов (заявления, договоры и т.д.) происходит из макетов, формы макетов часто меняются, вводятся новые, появляются новые макропеременные и дополнительные условия. И в нашем случае ситуация дошла до того, что сценарий генерации документов уже перевалил за две тысячи строк. Стало очень сложно ориентироваться и не повторять макропеременные. Дабы облегчить и структурировать все макропеременные и сделать процесс формирования макета более прозрачным, решили разработать решение по генерации макетов. На данном этапе решение всё еще в разработке, но мы решили представить его сообществу, чтобы решить куда нам двигаться дальше и услышать ваши мнения и пожелания.
Решение состоит из двух справочников IT_Maket, IT_MacroVariable и функции IT_GenerateDocument.
IT_MacroVariable – хранит в себе информацию о макропеременных
Макропеременные бывают двух типов статические и общие. Статическая макропеременная хранит в себе конкретное значение. Например, как на картинке ниже:
Имя организации = ООО “Мобил-Авто”.
Общий тип хранит в себе алгоритм вычисления макропеременной. По кнопке “Вычисление” открывается окно редактора, в котором необходимо написать или просмотреть само вычисление. Причем значение макропеременной будет присваиваться переменной Result. По кнопке “Посчитать”, исполняется код вычисления и результат выводится в поле “Значение”, очень удобно использовать для тестирования вычисления.
На картинках указано как создать макропеременную, хранящую в себе текущую дату.
По практике работы, проще создать один диалог, который опросит пользователя и вернет несколько значений макропеременных, для этих случаев такие макропеременные можно задать через знак ‘|’
Как вы заметили и результат вычисления тоже должен возвращаться через ‘|’
Перейдем к главному справочнику IT_Maket
Так выглядит окно карточки макета.
В поле "Макет" указывается документ с видом макет
Наше решение пока работает только с макетами Word и Excel.
В таблицу добавляются макропеременные созданные ранее. В колонки автоматически перетекает тип переменной, вычисление (только для чтения) и значение.
Вычисление, добавленное в колонку "Условие", позволяет выполнить какие-либо действия над результатом макропеременной (например, во всех макетах у вас везде должно быть указано полное ФИО, а именно в макете заявления должно быть в формате Фамилия И.О.).
Теперь перейдем к кнопкам в ленте. По кнопкам «Внести» или «Внести и открыть» макропеременные из карточки заносятся в сам макет, для дальнейшей их расстановки. По кнопке «Открыть макет» открывается макет документа для редактирования, это удобнее чем искать его в папках или по ID. Для удобства тестирования существует кнопка «Сгенерировать документ» с двумя вариантами: «Сгенерировать с вычислениями», то есть генерация документа будет с вычислением всех макропеременных или «Сгенерировать с тестовыми значениями», в документ подставятся значения макропеременных из колонки «Значение»:
Для использования данного функционала в разработке применяется следующая функция
IT_GenerateDocument(Code:Строка;[OpenDoc: Логический = FALSE];[DeleteDoc: Логический = FALSE])
Code – код записи справочника IT_Maket с необходимым макетом
OpenDoc – открытие документа после генерации (по умолчанию False - не открывается)
DeleteDoc – удаление документа после генерации (по умолчанию False - не удаляется)
Функция возвращает путь сгенерированного документа, если параметр DeleteDoc установлен в TRUE возвращается пустое значение.
Ссылка на разработку: IT_Maket.zip
А какого типа макеты требуются, можете пример привести? и какие изменения туда надо постоянно вносить?
Макеты заявлений на различные работы, в крупных компаниях их много и они имеют свойство постоянно изменяться, появляются новые и.т.д. Сюда же можно отнести и договора и многие другие документы.
Периодически вносятся изменения в законодательство, меняются требования внутри компании. Новые поля, различные условия и др.
Авторизуйтесь, чтобы написать комментарий