Универсальная печатная форма Приказа/Договора с возможностью настройки макета в пользовательском режиме

Публикация № 1255188

Разработка - Печать - Универсальные печатные формы

печать произвольная пользовательский режим docx

В данной статье я опишу реализацию универсальной (в кавычках) печати Приказа (Договора или чего пожелаете) с возможностью настройки выводимого текста с параметрами из пользовательского режима

Обратился клиент, который, среди всего прочего, занимается организацией прохождения производственной и преддипломной практики на своих предприятиях. Постановка задачи звучала как-то так: "У нас есть большое количество различных приказов, текст которых утвержден, но может часто меняться. Также для каждого подразделения текст и бланк приказа может быть разный. Также в частном случае текст может быть изменен, но макет при этом менять не нужно, а вот сделанные изменения запомнить нужно. При этом мы не хотим платить программистам каждый раз, когда нам нужно что-то поменять в макете, пусть все изменения макета происходят в пользовательском режиме". Ну и небольшой особенностью клиента является то, что все печатные формы должны сразу быть в формате Word.

Взяли все варианты их приказов и начали анализировать. Структура всех макетов схожа:

- Шапка – Номер / Дата

- Заголовок – Текст заголовка по центру страницы

- Преамбула – Текст без форматирования, в котором присутствует фиксированный текст и текст, который можно выделить как параметры

- Пункты приказа – Набор абзацев текста без форматирования, в котором присутствует фиксированный текст и текст, который можно выделить как параметры. Абзацы могут быть либо пронумерованы, либо нет. В абзаце может быть повторяющийся текст, например:
«…организовать прохождение производственной практики студенту(ам): Иванову И.И.; Петрову П.П.; Сергееву С.С…». Также обратили внимание, что в разных абзацах повторяющийся текст может быть разным.

- Подвал – различные подписанты

Клиент работает в дописанной ЗУП 3.1.13.120. Поискали что-нибудь подходящее в типовых решениях, но на 100% подходящего ничего не нашлось. К тому же документ, который будет фиксировать приказы, создавать нужно, поэтому было принято решение добавлять новый функционал.

В основе всей доработки лежит макет табличного документа с ровно одной ячейкой с видом заполнения «Шаблон».

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

Для начала был разработан справочник «Шаблоны приказов»:

 
 Форма элемента справочника "Шаблоны приказов"

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

Одна табличная часть будет содержать тексты пунктов, а во второй будут описаны шаблоны повторяющегося текста.

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

 
 Скриншот макета MXL_ДоступныеПараметры

Затем был разработан документ «Приказ об организации прохождения практики». Документ разделен на 2 страницы:

1. Основные данные – для заполнения данных документа:

 
 Вид страницы Основные данные

2. Шаблон приказа – для подготовки текста Приказа:

 
 Вид страницы Шаблон приказа

В табличной части "Практиканты" присутствует служебный реквизит "Вариант текста" с типом Число, который определяет в каком именно варианте повторяющегося текста будет участвовать текущая строка. По умолчанию подставляется 1, но при необходимости пользователь сам регулирует вариант (по текущему бизнес процессу данные из одной строки могут выводиться только в одном варианте повторяющегося текста).

При выборе Шаблона заполнения из базы данных получается структура самого шаблона и данные для заполнения параметров

 
 Код получения структуры шаблона

Получение шаблона ячейки для заполнения

 
 Код получения шаблона ячейки для заполнения
 
 Скриншот макета MXL_ШаблонЯчейкиДляЗаполнения
 
 Код получения данных для заполнения параметров

Фамилия с инициалами по умолчанию не участвуют в склонении, поэтому из базы данных получается информация в именительном падеже, а затем отдельно происходит склонение

 
 Код склонения полей содержащих фамилию с инициалами

 Затем идет подстановка параметров в шаблон и заполнение полей документа, отвечающих за «предварительный просмотр» печатной формы

 
 Код заполнения параметров шаблона

Теперь пользователь может редактировать полученный текст с заполненными параметрами и отправлять документ на печать.

Рассмотрим процесс одной из печатных форм (Для хранения Бланков был разработан отдельный справочник, т.к. он использовался еще в других подсистемах разработки. Для упрощения можно использовать функционал Присоединенных файлов)

 
 Код печати Приказа об организации прохождения практики

  

Скачать файлы

Наименование Файл Версия Размер
Универсальная печатная форма Приказа/Договора с возможностью настройки макета в пользовательском режиме:

.rar 84,91Kb
1
.rar 1.1 84,91Kb 1 Скачать

Специальные предложения

Оставьте свое сообщение

См. также

Безопасная работа с транзакциями во встроенном языке Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    38131    tormozit    54