Как использовать объекты расширений во внешних обработках и отчетах в 1С 8.3.28?

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

Долгое время разработчики на платформе 1С:Предприятие сталкивались с серьезным ограничением: внешние обработки (.epf) и отчеты (.erf) существовали в своего рода «изоляции» от расширений конфигурации. Если вы добавляли новый справочник или документ в расширение, вы не могли полноценно использовать его во внешней обработке — конструктор запросов не видел новых таблиц, а типы данных расширения были недоступны для реквизитов. С выходом версии платформы 8.3.28 ситуация кардинально изменилась.

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

Доступ к метаданным расширений из внешних обработок

Рассмотрим основной сценарий: нам необходимо создать внешний отчет, который использует данные из новых объектов, добавленных через расширение. Ранее программистам приходилось вручную писать тексты запросов, так как Конструктор запросов просто не отображал таблицы расширений. Теперь же процесс разработки стал бесшовным.

Проанализируем ключевые изменения в работе с объектами:

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

Посмотрим на пример использования во внешнем коде. Допустим, у нас в расширении есть регистр сведений ЛогированиеДействий. Мы можем написать запрос во внешней обработке так же легко, как если бы это был объект основной конфигурации:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ЛогированиеДействий.Период КАК Период,
    |	ЛогированиеДействий.Пользователь КАК Пользователь,
    |	ЛогированиеДействий.Событие КАК Событие
    |ИЗ
    |	РегистрСведений.ЛогированиеДействий КАК ЛогированиеДействий";

РезультатЗапроса = Запрос.Выполнить();

Отладка функционала и ускорение разработки

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

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

Повышение «выживаемости» расширений в 8.3.28

Одной из главных проблем расширений была их «хрупкость». Если объект основной конфигурации, заимствованный в расширение, удалялся или существенно менялся в обновлении поставщика, расширение переставало подключаться, что приводило к невозможности запустить систему. В версии 8.3.28 реализованы механизмы, позволяющие игнорировать такие несоответствия.

Рассмотрим новые свойства расширений:

Визуализация переопределенных методов (проблема «невидимого» кода)

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

Проанализируем, какие инструменты помогают решить эту проблему:

  1. Штатный поиск: Единственный способ в стандартном функционале — использовать глобальный поиск или команду «Найти везде» по имени метода, чтобы увидеть все его вхождения в расширениях.
  2. Сторонние инструменты (TurboConf / ИР): Для более эффективной работы рекомендуется использовать адаптеры инструментов разработчика. Например, TurboConf позволяет видеть индикаторы прямо в редакторе кода. При наведении на имя метода всплывающее окно (аналог Т9) показывает, какие расширения модифицируют данный метод.
  3. Переход к определению: С помощью расширений для конфигуратора можно настроить переход по F12 так, чтобы система предлагала выбор: перейти к исходному коду или к коду в одном из подключенных расширений.

Пример структуры кода, которую мы можем встретить в расширении:


&Вместо("СформироватьПечатнуюФорму")
Процедура Расш1_СформироватьПечатнуюФорму(Параметры)
    // Наш код выполняется вместо стандартного
    Сообщить("Выполняется логика расширения");
    
    // Если нужно вызвать оригинальный метод:
    ПродолжитьВызов(Параметры);
КонецПроцедуры

Автоматизация и CI/CD с использованием ibcmd

Для системных администраторов и DevOps-инженеров в версии 8.3.28 расширены возможности утилиты командной строки ibcmd. Теперь управление расширениями можно полностью автоматизировать. Мы можем:

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

← На главную