Как добавить и разрешить пользователю редактировать самодельный макет в 1С:Комплексная автоматизация 2?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

В процессе эксплуатации системы «1С:Комплексная автоматизация 2» часто возникает ситуация, когда типовых печатных форм недостаточно, а существующие шаблоны этикеток и ценников не удовлетворяют требованиям бизнеса. При этом крайне важно сохранить конфигурацию на поддержке (без возможности изменения), чтобы не усложнять процесс последующих обновлений. Рассмотрим детально, как реализовать механизм редактирования пользовательского макета, используя возможности встроенной Библиотеки стандартных подсистем (БСП) и расширений.

Использование стандартного механизма «Макеты печатных форм»

Прежде всего, разберем ситуацию, когда нам необходимо добавить совершенно новую печатную форму или этикетку так, чтобы она появилась в штатном списке переопределяемых макетов. В конфигурациях на базе БСП (к которым относится и КА 2) существует специальный регистр или справочник «Макеты печатных форм». Найти его можно в разделе Администрирование — Печатные формы, отчеты и обработки.

Проанализируем алгоритм работы этого механизма:

  1. Если вы добавляете свою форму через расширение или внешнюю обработку, она должна быть корректно зарегистрирована в системе.
  2. При регистрации программный интерфейс БСП сканирует доступные макеты. Если макет помечен как переопределяемый, он попадает в список, где пользователь может нажать кнопку «Изменить».
  3. После нажатия кнопки открывается не HTML-редактор (как опасался автор темы), а полноценный встроенный редактор табличных документов 1С. В нем можно менять границы ячеек, шрифты, добавлять логотипы и управлять параметрами страницы.
  4. Система сохраняет измененную копию макета в базе данных, и при следующей печати будет использоваться именно она, а не «зашитый» разработчиком оригинал.

Реализация через внешнюю печатную форму

Для этикеток, которые требуют частой настройки «под принтер» (то шире, то уже), оптимальным решением будет создание Внешней печатной формы (ВПФ). Рассмотрим, как это сделать по шагам:

Во внешней обработке в модуле объекта мы прописываем функцию СведенияОВнешнейОбработке(). Чтобы макет стал доступен для редактирования пользователем, мы должны включить его в состав печатных форм обработки. Проанализируем пример кода для регистрации:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = 'Печать пользовательской этикетки'");
    НоваяКоманда.Идентификатор = "ПользовательскаяЭтикетка";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыПечать();
    
    Возврат ПараметрыРегистрации;
КонецФункции

Когда такая форма загружена в справочник «Дополнительные отчеты и обработки», макет ТабличныйДокумент, находящийся внутри нее, становится доступен в общем списке макетов печати. Это позволяет пользователю самостоятельно подгонять размеры колонок под свои нужды без привлечения программиста.

Работа с шаблонами этикеток и ценников

Выясним причину, по которой штатный редактор этикеток в КА 2 часто не устраивает пользователей. Обычно это связано с ограничениями визуального конструктора. Однако мало кто знает, что в справочнике «Шаблоны этикеток и ценников» предусмотрена возможность импорта внешних файлов.

Разберем, как это реализовать:

  1. Создаем макет в отдельном файле .mxl в толстом клиенте или в любой другой базе. Настраиваем там все сложные элементы, включая штрихкоды и специфическое форматирование.
  2. В КА 2 создаем новый шаблон этикетки, выбираем тип (например, «Этикетка для товаров»).
  3. В форме редактирования шаблона используем функцию загрузки из файла. Система импортирует ваш .mxl, сохраняя структуру табличного документа.
  4. В дальнейшем пользователь сможет открывать этот шаблон и вносить в него косметические правки, не нарушая логику вывода данных.

Программное хранение макета в ХранилищеЗначений

Если нам нужно реализовать нестандартный интерфейс, где кнопка «Настроить макет» находится прямо в форме обработки, разберем техническую сторону хранения такого макета. Мы можем создать в расширении объект (например, регистр сведений), где будем хранить пользовательские настройки.

Для этого используется тип данных ХранилищеЗначений. Посмотрим на пример кода, который позволяет открыть макет для редактирования и сохранить его обратно:


// Процедура открытия макета для редактирования
&НаКлиенте
Процедура РедактироватьМакет(Команда)
    ТабДок = ПолучитьМакетССервера();
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьСетку = Истина;
    ТабДок.Показать("Настройте макет этикетки");
КонецПроцедуры

// Сохранение отредактированного документа
&НаСервере
Процедура СохранитьМакет(ТабличныйДокумент)
    Хранилище = Новый ХранилищеЗначений(ТабличныйДокумент, Новый СжатиеДанных(9));
    // Запись в ресурс регистра или реквизит справочника
    МенеджерЗаписи = РегистрыСведений.ПользовательскиеМакеты.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Макет = Хранилище;
    МенеджерЗаписи.Записать();
КонецПроцедуры

В этом случае при формировании печатной формы программа должна сначала проверить наличие записи в этом регистре, и если она есть — извлечь макет методом Хранилище.Получить(). Если записи нет — использовать макет по умолчанию из конфигурации.

Особенности настройки размеров и печати штрихкодов

Проанализируем ситуацию, когда «всё разъезжается». Это критическая проблема для этикеток. При редактировании макета пользователем важно соблюдать следующие правила:

Резюме для реализации

Самый правильный и «чистый» путь для «1С:Комплексная автоматизация 2» — это использование внешней печатной формы в сочетании со штатным механизмом БСП «Переопределяемые макеты». Это дает пользователю знакомый интерфейс (Администрирование — Макеты печатных форм), а разработчику — возможность не вносить изменения в основную конфигурацию. Если же требуется максимально гибкая настройка этикеток, стоит смотреть в сторону загрузки готовых .mxl файлов в справочник шаблонов этикеток, что полностью решает проблему «неудобного встроенного редактора».

← На главную