Как добавить колонку в типовую форму подбора товаров в 1С:Управление торговлей 11?

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

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

Разбор причин возникновения проблемы

Основная сложность заключается в архитектуре типовых форм подбора, используемых в УТ 11, начиная с версии 11.1. Вопреки ожиданиям, динамический список СписокНоменклатура, который мы видим в конфигураторе, не является статичным объектом с фиксированным запросом.

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

Где искать логику формирования списка

Чтобы успешно добавить новые колонки (например, «Количество в пути» или «Оптовая цена»), нам необходимо вмешаться в процесс формирования запроса. Ключевая логика вынесена в общие модули конфигурации.

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

Пошаговое руководство по решению задачи

Для реализации задачи по добавлению колонок выполним следующие действия:

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

Пример программного подхода

Рассмотрим структуру, к которой стоит стремиться при доработке. Допустим, мы расширяем запрос в модуле следующим образом:


// Пример логики расширения запроса в модуле ПодборТоваровСервер
ТекстЗапроса = "ВЫБРАТЬ
|   Номенклатура.Ссылка КАК Ссылка,
|   ...
|   ЕСТЬNULL(ТоварыКПоступлениюОстатки.КоличествоОстаток, 0) КАК КоличествоВПути
|ИЗ
|   Справочник.Номенклатура КАК Номенклатура
|   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПоступлению.Остатки КАК ТоварыКПоступлениюОстатки
|   ПО Номенклатура.Ссылка = ТоварыКПоступлениюОстатки.Номенклатура";

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

Рекомендации по оптимизации

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

Важные советы:

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

← На главную