Можно ли использовать расширения в конфигурации «Управление торговлей 10.3» и как обойти ограничения обычных форм?

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

Конфигурация «Управление торговлей 10.3» (УТ 10.3) — это проверенное временем, но технически устаревшее решение, построенное на обычных (толстых) формах. Современные стандарты разработки в среде 1С требуют использования механизма расширений конфигурации, чтобы минимизировать изменения в основной конфигурации и упростить процесс последующих обновлений. Однако интеграция расширений в старые конфигурации вызывает множество вопросов у разработчиков.

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

Режим совместимости — главный барьер для расширений

Выясним причину, по которой расширения не работают в УТ 10.3 «из коробки». Типовая конфигурация изначально проектировалась под платформу 1С 8.2. Даже если вы запускаете базу на современной платформе (например, 8.3.14 или выше), конфигурация по умолчанию работает в режиме совместимости «Версия 8.2».

Для того чтобы задействовать механизм расширений, нам потребуется повысить режим совместимости основной конфигурации. Минимально необходимый уровень — 8.3.10, однако для полноценной работы рекомендуется устанавливать режим совместимости 8.3.14 или выше.

Рассмотрим, с какими рисками сопряжено изменение режима совместимости на работающей базе данных:

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

Ограничения работы с обычными формами (ОФ) в расширениях

Проанализируем специфику работы расширений с интерфейсом УТ 10.3. Механизм расширений проектировался фирмой 1С в первую очередь под управляемый интерфейс (УФ). При попытке применить расширения к обычным формам накладываются жесткие технические ограничения:

Лайфхаки и практические решения: как обойти ограничения ОФ

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

Способ 1. Программное создание элементов на обычных формах

Если нам необходимо добавить кнопку или поле ввода на существующую обычную форму документа или справочника, мы можем сделать это программно. Для этого мы заимствуем в расширение не саму форму, а модуль соответствующего объекта (например, модуль документа РеализацияТоваровУслуг) или общий модуль, где перехватываем момент инициализации формы.

Разберем по шагам, как выглядит этот процесс на примере добавления новой кнопки на обычную форму документа:


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

Сам обработчик события Расш1_ПрограммноеНажатиеКнопки при этом должен быть описан в заимствованном общем модуле или модуле объекта, доступном для вызова.

Способ 2. Использование управляемых форм внутри обычного приложения

Платформа 1С позволяет запускать управляемые формы в режиме толстого клиента (обычного приложения). Это открывает перед разработчиками широкие возможности. Если вам нужно внедрить в УТ 10.3 новый сложный функционал (например, рабочее место менеджера, интеграционный модуль или сложный отчет), мы можем спроектировать его полностью на управляемых формах внутри расширения.

Посмотрим на пример вызова новой управляемой формы расширения из обычной формы УТ 10.3:


// Пример программного открытия управляемой формы из обычной формы
ИмяФормы = "ОбщаяФорма.Расш1_НоваяУправляемаяФорма";
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗначениеОтбора", ЭтотОбъект.Ссылка);

ОткрытьФорму(ИмяФормы, ПараметрыФормы);

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

Способ 3. Создание новых обычных форм в расширении

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

Зависимость возможностей разработки от версии платформы

Возможности вашего расширения будут напрямую зависеть от того, до какого уровня вы сможете поднять режим совместимости в свойствах конфигурации «Управление торговлей 10.3»:

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

← На главную