Долгое время разработчики на платформе 1С:Предприятие сталкивались с серьезным ограничением: внешние обработки (.epf) и отчеты (.erf) существовали в своего рода «изоляции» от расширений конфигурации. Если вы добавляли новый справочник или документ в расширение, вы не могли полноценно использовать его во внешней обработке — конструктор запросов не видел новых таблиц, а типы данных расширения были недоступны для реквизитов. С выходом версии платформы 8.3.28 ситуация кардинально изменилась.
В этой статье мы подробно разберем, как новые механизмы платформы упрощают жизнь разработчика, позволяют отлаживать функционал расширений через внешние обработки и какие дополнительные инструменты помогают визуализировать изменения в коде.
Рассмотрим основной сценарий: нам необходимо создать внешний отчет, который использует данные из новых объектов, добавленных через расширение. Ранее программистам приходилось вручную писать тексты запросов, так как Конструктор запросов просто не отображал таблицы расширений. Теперь же процесс разработки стал бесшовным.
Проанализируем ключевые изменения в работе с объектами:
ДополнительныеСвойстваНоменклатуры, мы можем выбрать СправочникСсылка.ДополнительныеСвойстваНоменклатуры прямо в палитре свойств во внешнем файле.Посмотрим на пример использования во внешнем коде. Допустим, у нас в расширении есть регистр сведений ЛогированиеДействий. Мы можем написать запрос во внешней обработке так же легко, как если бы это был объект основной конфигурации:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЛогированиеДействий.Период КАК Период,
| ЛогированиеДействий.Пользователь КАК Пользователь,
| ЛогированиеДействий.Событие КАК Событие
|ИЗ
| РегистрСведений.ЛогированиеДействий КАК ЛогированиеДействий";
РезультатЗапроса = Запрос.Выполнить();
Разберем преимущество, которое упоминают опытные разработчики: возможность отлаживать сложные отчеты как внешние, прежде чем включать их в состав расширения. Это значительно ускоряет цикл разработки, так как внесение изменений во внешний файл .erf не требует обновления конфигурации базы данных и перезапуска сеанса (в ряде случаев).
Выясним, как это работает на практике: мы создаем логику отчета во внешнем файле, используя все преимущества типов расширения, тестируем её на реальных данных и, когда результат нас устраивает, просто копируем схему компоновки или модуль в расширение. Такой подход минимизирует риск повреждения структуры расширения при частых изменениях.
Одной из главных проблем расширений была их «хрупкость». Если объект основной конфигурации, заимствованный в расширение, удалялся или существенно менялся в обновлении поставщика, расширение переставало подключаться, что приводило к невозможности запустить систему. В версии 8.3.28 реализованы механизмы, позволяющие игнорировать такие несоответствия.
Рассмотрим новые свойства расширений:
Часто возникает ситуация: программист открывает общий модуль основной конфигурации, читает процедуру РассчитатьСкидку(), но не видит, что она полностью перекрыта или изменена расширением через аннотации &Вместо, &Перед или &После. В стандартном конфигураторе 1С визуальной подсветки таких мест «в тексте» основного модуля до сих пор нет.
Проанализируем, какие инструменты помогают решить эту проблему:
F12 так, чтобы система предлагала выбор: перейти к исходному коду или к коду в одном из подключенных расширений.Пример структуры кода, которую мы можем встретить в расширении:
&Вместо("СформироватьПечатнуюФорму")
Процедура Расш1_СформироватьПечатнуюФорму(Параметры)
// Наш код выполняется вместо стандартного
Сообщить("Выполняется логика расширения");
// Если нужно вызвать оригинальный метод:
ПродолжитьВызов(Параметры);
КонецПроцедуры
Для системных администраторов и DevOps-инженеров в версии 8.3.28 расширены возможности утилиты командной строки ibcmd. Теперь управление расширениями можно полностью автоматизировать. Мы можем:
.cfe) без использования графического конфигуратора.Подводя итог, можно сказать, что развитие платформы в сторону снятия барьеров между внешними инструментами и расширениями превращает последние из «заплаток» в полноценный инструмент архитектурного развития систем на базе 1С:Предприятие.