Как быстро разрабатывать и внедрять печатные формы в 1С 8.3: от внешних обработок к расширениям

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

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

Классический подход: магия копипаста и универсальные шаблоны

Проанализируем самый простой и эффективный метод, который упоминают опытные разработчики. Быстрее всего разработка идет тогда, когда у вас под рукой есть готовый каркас. Нет смысла каждый раз заново прописывать структуру функции СведенияОВнешнейОбработке. Достаточно иметь одну корректно работающую внешнюю печатную форму (ВПФ), которая станет вашим эталоном.

Рассмотрим алгоритм ускорения работы в этом случае:

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

Посмотрим на пример структуры функции регистрации, которую стоит держать в шаблоне:


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

Современный стандарт: использование расширений конфигурации

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

Выясним преимущества использования расширений для печати:

Для реализации печати через расширение необходимо включить ваши команды печати в состав подсистемы ПодключаемыеОтчетыИОбработки. Это позволит системе автоматически подхватить новые пункты меню в кнопке «Печать».

Как добавить печать в объект, где ее нет (без изменения конфигурации)

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

Ключ к решению лежит в использовании определяемых типов. В БСП за список объектов, поддерживающих печать, отвечает определяемый тип ОбъектСКомандамиПечати. Проанализируем последовательность действий:

  1. Создаем новое расширение.
  2. Добавляем в расширение определяемый тип ОбъектСКомандамиПечати.
  3. Включаем в этот тип наш документ или справочник.
  4. В модуле менеджера объекта (в расширении) или через внешнюю печатную форму реализуем процедуру ДобавитьКомандыПечати.

Пример добавления команды в модуле менеджера через расширение:


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.Представление = НСтр("ru = 'Новая печатная форма'");
    КомандаПечати.Идентификатор = "МояНоваяФорма";
    КомандаПечати.СписокФорм = "ФормаДокумента,ФормаСписка";
КонецПроцедуры

Ускорение отладки: секреты продуктивности

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

Метод «Standalone» отладки: в модуле обработки создайте вспомогательную процедуру, которая позволит запускать печать как обычную обработку через «Файл — Открыть».


// В модуле формы обработки
&НаКлиенте
Процедура ВыполнитьПечать(Команда)
    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(Объект.СсылкаНаОбъектДляТеста);
    
    // Вызов серверной процедуры печати напрямую
    ПечатьНаСервере(МассивОбъектов);
КонецПроцедуры

Это позволяет вам править код в конфигураторе, нажимать Ctrl+S и тут же переоткрывать форму для проверки результата, минуя интерфейс администрирования БСП.

Использование офисных шаблонов для сложных документов

Посмотрим на ситуацию с другой стороны: иногда быстрее разработать форму не в табличном документе (MXL), а в Microsoft Word или LibreOffice Writer. Это особенно актуально для юридических договоров с огромным количеством текста.

БСП предоставляет мощный инструментарий для работы с макетами типа DOCX. Вместо того чтобы мучительно выравнивать ячейки и границы в 1С, вы просто расставляете теги вида {ИмяПоля} в текстовом редакторе. Проанализируем код заполнения такого шаблона:


ДанныеДляПечати = Новый Структура;
ДанныеДляПечати.Вставить("НомерДокумента", ОбъектСсылка.Номер);
ДанныеДляПечати.Вставить("ДатаДокумента", Формат(ОбъектСсылка.Дата, "ДЛФ=DD"));

УправлениеПечатьюMSWordКлиент.ЗаполнитьШаблон(HandlerWord, ДанныеДляПечати);

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

Заключение: чек-лист быстрого разработчика

Подводя итог, сформулируем основные правила, которые помогут вам «клепать» формы быстрее:

Помните, что скорость разработки напрямую зависит от качества ваших инструментов. Использование современных возможностей БСП и правильная организация процесса отладки позволяют сократить время создания печатной формы в несколько раз.

← На главную