Конфигурация «Управление торговлей 10.3» (УТ 10.3) — это проверенное временем, но технически устаревшее решение, построенное на обычных (толстых) формах. Современные стандарты разработки в среде 1С требуют использования механизма расширений конфигурации, чтобы минимизировать изменения в основной конфигурации и упростить процесс последующих обновлений. Однако интеграция расширений в старые конфигурации вызывает множество вопросов у разработчиков.
В этой статье мы подробно разберем, насколько реально использовать расширения в УТ 10.3, с какими платформенными ограничениями придется столкнуться и какие практические методы существуют для обхода этих препятствий.
Выясним причину, по которой расширения не работают в УТ 10.3 «из коробки». Типовая конфигурация изначально проектировалась под платформу 1С 8.2. Даже если вы запускаете базу на современной платформе (например, 8.3.14 или выше), конфигурация по умолчанию работает в режиме совместимости «Версия 8.2».
Для того чтобы задействовать механизм расширений, нам потребуется повысить режим совместимости основной конфигурации. Минимально необходимый уровень — 8.3.10, однако для полноценной работы рекомендуется устанавливать режим совместимости 8.3.14 или выше.
Рассмотрим, с какими рисками сопряжено изменение режима совместимости на работающей базе данных:
Проанализируем специфику работы расширений с интерфейсом УТ 10.3. Механизм расширений проектировался фирмой 1С в первую очередь под управляемый интерфейс (УФ). При попытке применить расширения к обычным формам накладываются жесткие технические ограничения:
&Перед, &После или &Вместо.Несмотря на строгие ограничения платформы, опытные разработчики успешно применяют обходные технологии. Рассмотрим детально основные приемы программного изменения интерфейса и логики.
Если нам необходимо добавить кнопку или поле ввода на существующую обычную форму документа или справочника, мы можем сделать это программно. Для этого мы заимствуем в расширение не саму форму, а модуль соответствующего объекта (например, модуль документа РеализацияТоваровУслуг) или общий модуль, где перехватываем момент инициализации формы.
Разберем по шагам, как выглядит этот процесс на примере добавления новой кнопки на обычную форму документа:
&После("ПередОткрытием")
Процедура Расш1_ПередОткрытием(Отказ, СтандартнаяОбработка)
// Получаем доступ к элементам формы программным путем
ФормаДокумента = ЭтотОбъект.ПолучитьФорму("ФормаДокумента");
Если ФормаДокумента.Открыта() Тогда
Возврат;
КонецЕсли;
// Добавляем новую кнопку на панель формы
НоваяКнопка = ФормаДокумента.ЭлементыФормы.Добавить(Тип("Кнопка"), "Расш1_КнопкаДействия", Истина);
НоваяКнопка.Заголовок = "Выполнить обработку";
НоваяКнопка.Лево = 10;
НоваяКнопка.Верх = 10;
НоваяКнопка.Ширина = 150;
НоваяКнопка.Высота = 25;
// Привязываем обработчик события нажатия на кнопку
ДействиеПриНажатии = Новый Действие("Расш1_ПрограммноеНажатиеКнопки");
НоваяКнопка.УстановитьДействие("Нажатие", ДействиеПриНажатии);
КонецПроцедуры
Сам обработчик события Расш1_ПрограммноеНажатиеКнопки при этом должен быть описан в заимствованном общем модуле или модуле объекта, доступном для вызова.
Платформа 1С позволяет запускать управляемые формы в режиме толстого клиента (обычного приложения). Это открывает перед разработчиками широкие возможности. Если вам нужно внедрить в УТ 10.3 новый сложный функционал (например, рабочее место менеджера, интеграционный модуль или сложный отчет), мы можем спроектировать его полностью на управляемых формах внутри расширения.
Посмотрим на пример вызова новой управляемой формы расширения из обычной формы УТ 10.3:
// Пример программного открытия управляемой формы из обычной формы
ИмяФормы = "ОбщаяФорма.Расш1_НоваяУправляемаяФорма";
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗначениеОтбора", ЭтотОбъект.Ссылка);
ОткрытьФорму(ИмяФормы, ПараметрыФормы);
Этот подход значительно упрощает разработку интерфейса, так как управляемые формы в расширениях поддерживают весь стандартный визуальный функционал без ограничений.
Платформа позволяет создавать абсолютно новые обычные формы непосредственно внутри расширения. Вы можете спроектировать такую форму с нуля визуально. Однако для того чтобы связать ее с существующими объектами конфигурации УТ 10.3, вам потребуется программно вызывать ее из заимствованных общих модулей или модулей объектов, используя стандартные методы работы с метаданными.
Возможности вашего расширения будут напрямую зависеть от того, до какого уровня вы сможете поднять режим совместимости в свойствах конфигурации «Управление торговлей 10.3»:
&Перед, &После и &Вместо для перехвата процедур и функций в общих модулях и модулях объектов. Позволяет программно вмешиваться в проведение документов и запись справочников.&ИзменениеИКонтроль. Это значительно упрощает процедуру обновления конфигурации, позволяя точечно изменять фрагменты оригинального кода без полной замены метода.Подводя итог, можно с уверенностью сказать, что использовать расширения в торговле 10.3 не только можно, но и нужно для сохранения поддержки конфигурации. Главное — провести тщательное тестирование базы данных на копии после изменения режима совместимости и использовать программные методы для кастомизации обычных форм.