Для тех, кому некогда читать много букв: Публикация посвящена реализации механизма создания текстов договоров из шаблонов, хранимых в справочнике «Файлы», с последующим сохранением этих текстов в присоединенных к договорам файлах. Используется механизм расширений. Разработка тестировалась на платформе 8.3.13.1644 и конфигурации «Бухгалтерия предприятия, редакция 3.0 (3.0.72.54)».
А теперь для тех, кому интересны рассмотренные в ходе разработки варианты реализации и грабли, которые ударили по лбу.
На днях (а точнее полгода назад) возникло желание (потребность) перенести одну базу ( с именем «Реклама») с платформы 8.2 на 8.3 («Бухгалтерия»). Конфигурация 8.2 отпраздновала 10-летний юбилей и была существенно доработана (дополнительные справочники, документы, регистры). Предварительный анализ путей решения задачи (переноса базы на платформу 8.3) показал, что механизм расширения конфигурации позволяет создать в расширении необходимые справочники, документы и регистры. Проблема возникла с переносом системы создания и хранения текстов договоров.
Поскольку в конфигурации 8.2 хранились 30 шаблонов различных типов договоров (в макетах), и для каждого типа были реализованы свои алгоритмы заполнения средствами Word, то было решено максимально использовать имеющиеся макеты с шаблонами и алгоритмы в новой конфигурации. Поскольку тексты договоров иногда значительно отличались от шаблонов в конфигурации 8.2 текстовые файлы договоров хранились в отдельных папках, и доступ к ним был организован по коду контрагента и коду договора.
Первоначальный поиск похожих разработок в базе Infostart не дал результатов, так как в основном в работах рассматривалось создание печатной формы из шаблона. Поэтому пришлось искать варианты решения самостоятельно.
Вариант 1. Использование справочника «Шаблоны договоров», имеющийся в новой конфигурации. Этот вариант реализовать не удалось. Как я понял, этот справочник используется только при печати договора, и он ограничен в использовании.
Вариант 2. Непосредственный перенос макетов с шаблонами из справочников 8.2 в справочники 8.3. Вариант не заработал. Основная причина, по-видимому, заключается в следующем. Доступ к макетам в 8.3 возможен только на сервере. Но на нашем сервере Word не установлен. Следовательно надо передать макет на клиентскую часть и там его заполнять. Мне не удалось передать макет типа «Active document» на клиентскую часть. Поэтому было решено отложить этот вариант. Возможно при установленном на сервере Word его можно реализовать.
Вариант 3. Макеты с шаблонами из справочников 8.2 выгружаются в документы Word а затем загружаются в справочники 8.3 в макеты с типом «Двоичные данные». Этот вариант заработал, но затем был отброшен, так как не позволял оперативно изменять макеты с шаблонами.
Вариант 4. Макеты с шаблонами хранятся в справочнике «Файлы». Этот вариант понравился и был реализован. Как раз в это время попалась статья В. Барилко //infostart.ru/public/406048/ и я понял, что изобрел велосипед. Но мой велосипед немного отличается.
Во-первых, разработка реализована с использованием механизма расширений. Текст договора хранится в присоединенном к договору файле. Разработанные в 8.2 алгоритмы автоматического заполнения текста договора полностью удовлетворяют заказчика, поэтому не нужно организовывать диалог для ввода значений и все действия осуществляются нажатием одной кнопки.
Теперь несколько слов о реализации.
Было создано расширение конфигурации «Реклама». В него из основной конфигурации была добавлена форма «Присоединенные файлы» обработки «Работа с файлами». На эту форму была добавлена кнопка «Создать по шаблону рекламы». Для создания текстового файла договора необходимо открыть договор, нажать кнопку «Присоединенные файлы» и в новом окне нажать кнопку «Создать по шаблону рекламы». При нажатии на кнопку из шаблона создается документ Word, заполняется параметрами и записывается в присоединенный к договору файл (Рис.1).
Шаблон договора хранится в справочнике «Файлы» (Рис.2) и является обычным шаблоном Word (Рис.3).
Для того чтобы кнопка работала только для договоров и только для договоров отдела рекламы реализован простейший вариант: в Договор добавлен булевский реквизит «Отдел рекламы». В зависимости от его значения на форме будет появляться кнопка «Создать по шаблону рекламы».
Имя файла-шаблона «ДоговорРекламы», а имя соответствующего присоединенного файла образуется из объединения наименования контрагента и наименования договора (через пробел).