В типовой версии 1С Документооборота нет возможности создавать шаблоны автозаполнения из табличных документов MXL макеты табличного документа, поддерживаются только форматы doc, docx, odt.
Расширение позволяет создавать такие шаблоны и сохранять документ в PDF при этом вносит минимальные изменения в типовой код и без изменения метаданных. Как и в типовой версии вставляется штрихкод документа и штамп ЭП.
Чем удобно это расширение? Есть возможность выводить таблицы и реквизиты, пользователю не нужно думать о структуре документа и его форме, он просто заполняет нужные поля, а программа сама генерирует выходной файл в формате PDF и пользователь видит привычный ему документ, к тому же его нельзя редактировать. Далее по процессу можно отправить этот документ на подпись, согласование и рассмотрение. Все это работает быстрее чем офисный документ К тому же визуализированную подпись можно разместить в нужном месте. На такой формат можно перевести кучу документов организации служебки, письма, приказы, распоряжения, коммерческие предложения, договора, отчеты и т.д. и хранить их в электронном виде в PDF.
Примером результата работы может служить вот такой выходной pdf файл
ИЛИ
Как его использовать? Работа с MXL с шаблонами ничем не отличается от работы в типовой версии и работы с табличным документом, но есть свои правила.
После добавления расширения, появляется возможность добавления файла в формате MXL во вкладку файлы шаблона внутреннего документа и становится возможным настраивать заполнение для этого типа файла.
Далее работаем с документом как с обычным макетом. В макете есть зарезервированные необязательные области "Нижний колонтитул" и "ПараметрыМакета". Область "НижнийКолонтитул" необходима если нужно вывести данные внизу страницы, к примеру контакты того кто подготовил документ. В области "ПараметрыМакета" указываются свойства макета, например Автомасштаб, или ОриентацияСтраницы. Логика работы области "ПараметыМакета" проста. В первой столбце имя параметр, во втором его значение.
Области выводятся в алфавитном порядке, поэтому рекомендую задавать имена областей в следующем формате. Латинская A + порядок вывода области + имя. Например: A01_Заголовок, или A02_Шапка и т.д. В остальном создание ничем не отличается созданием обычной печатной формы табличного документа. И не забываем ставить галочку "Макет" в свойствах табличного документа
Как и в типовой версии для вставки штрих кода используется имя параметра картинки ВставитьИзображениеШтрихкода для вставки штампа ЭП имя параметра ВставитьИзображениеШтампаЭП
Далее в настройках заполнения добавляем выбираем поля и настраиваем, на что их заменить.
Заполнение параметров работает так же как и в типовой версии. Исключение составляет вывод строк, к примеру табличной части документа или результат запроса. В данном примере, в области A03_ТЧ_Визы выводится список лиц, согласовавших документ. Их количество может быть неопределенным. Для того, что бы в макет выводились строки таблицы, в параметрах настроек заполнения нужно выбирать не сам параметр, а область куда, в данном примере A03_ТЧ_Визы. Результат обработки в скрипте должен содержать массив со структурой. Имена ключей структуры, должны соответствовать именам параметров в области макета, а переменной ТабличнаяЧасть необходимо присвоить Истина
Например:
ТабличнаяЧасть = Истина;
СтруктураСтрока = Новый Структура;
СтруктураСтрока.Вставить("СогласовалДолжность", "Директор");
СтруктураСтрока.Вставить("СогласовалФИО", "Иванов Иван Петрович");
СтруктураСтрока.Вставить("ДатаСогласования", ТекущаяДатаСеанса());
Строки = Новый Массив;
Строки.Добавить(СтруктураСтрока);
РезультатОбработки = Строки;
Лично я для этого использую функцию БСП ОбщегоНазначения.ТаблицаЗначенийВМассив для преобразования Таблицы значений результата запроса в массив со структурой.
Расширение есть в двух вариантах: для версии 1С: Документооборот 2.1 и для Документооборот 3.0
Работа в расширении ДО 3.0, ничем не отличается от работы в 2.1
Ниже приведу пример заполнения для ДО 2.1
Поле в файле: Подразделение
На значение реквизита: {ВладелецФайла|Подразделение}
Поле в файле: Должность
На скрипт:
АдресатДолжность = РаботаСПользователями.ПолучитьДолжность(Файл.ВладелецФайла.Адресат);
РезультатОбработки = СклонениеПредставленийОбъектов.ПросклонятьПредставление(АдресатДолжность , 3);
Поле в файле: Адресат
На скрипт:
РезультатОбработки = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Файл.ВладелецФайла.Адресат.ПредставлениеВДокументах , 3);
Поле в файле: Номер
На значение реквизита:
{ВладелецФайла|РегистрационныйНомер}
Поле в файле: Дата
На скрипт:
РезультатОбработки = Формат(ФактическийВладелецФайла.ДатаРегистрации,"ДФ='dd MMMM yyyy'");
Поле в файле: Тема
На значение реквизита:
{ВладелецФайла|Наименование}
Поле в файле: Обращение
На скрипт:
Буфер=СокрЛП(Файл.ВладелецФайла.Адресат.ФизЛицо);
Пробел = Найти(Буфер, " ");
Фам = СокрЛП(Лев(Буфер, Пробел));
Буфер = СокрЛП(Сред(Буфер, Пробел + 1));
Пробел = Найти(Буфер, " ");
Имя=СокрЛП(Лев(Буфер, Пробел));
Буфер = СокрЛП(Сред(Буфер, Пробел +1));
Пробел = Найти(Буфер, " ");
Отч=СокрЛП(Сред(Буфер, Пробел));
ФИО=(Имя+" "+Отч);
РезультатОбработки=ФИО;
РезультатОбработки1 = Файл.ВладелецФайла.Адресат.ФизЛицо;
Если ЗначениеЗаполнено(РезультатОбработки1) Тогда
РезультатОбработки = ?(Файл.ВладелецФайла.Адресат.ФизЛицо.Пол = Перечисления.ПолФизическогоЛица.Женский, "Уважаемая", "Уважаемый") + " " + ФИО + "!";
Иначе
РезультатОбработки = "";
КонецЕсли;
Поле в файле: Содержание
На значение реквизита:
{ВладелецФайла|Содержание}
Поле в файле: ДолжностьПодпись
На скрипт:
РезультатОбработки = РаботаСПользователями.ПолучитьДолжность(Файл.ВладелецФайла.Подразделение.Руководитель);
Поле в файле: ПодписьФИО
На скрипт:
РезультатОбработки = Файл.ВладелецФайла.Подразделение.Руководитель.ПредставлениеВДокументах;
Поле в файле: Подготовил
На значение реквизита:
{ВладелецФайла|Подготовил}
Поле в файле: ПодготовилТелефон
На значение реквизита:
{ВладелецФайла|Подготовил|КонтактнаяИнформация|Телефон}
Поле в файле: A03_ТЧ_Визы
На скрипт:
РезультатОбработки = "";
ТабличнаяЧасть = Истина; // Устанавливаем в значение Истина, если будет выводиться таблица
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВизыСогласования.Исполнитель КАК СогласовалФИО,
| ВизыСогласования.ДатаИсполнения КАК ДатаСогласования,
| СведенияОПользователяхДокументооборот.Должность.Представление КАК СогласовалДолжность
|ИЗ
| Справочник.ВизыСогласования КАК ВизыСогласования
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОПользователяхДокументооборот КАК СведенияОПользователяхДокументооборот
| ПО ВизыСогласования.Исполнитель = СведенияОПользователяхДокументооборот.Пользователь
|ГДЕ
| ВизыСогласования.Документ = &Документ
| И НЕ ВизыСогласования.ПометкаУдаления
| И НЕ ВизыСогласования.Удалена
| И Не ВизыСогласования.ПомещенаВИсторию";
Запрос.УстановитьПараметр("Документ", ФактическийВладелецФайла);
РезультатЗапроса = Запрос.Выполнить();
ТЧ_Массив = ОбщегоНазначения.ТаблицаЗначенийВМассив(РезультатЗапроса.Выгрузить());
// Результат должен быть Массив со структурой.
// Имена ключей структуры, должны соответствовать именам параметров в области макета
РезультатОбработки = ТЧ_Массив;
Расширение тестировалось на следующих версиях документооборота: 2.1.26.2, 2.1.30.4, 3.0.6.4
и версиях платформы 8.3.18.1363, 8.3.18.1616
Для примера так же прилагаю макет табличного документа.