Как добавить свою колонку в обработку «Подбор номенклатуры» в 1С 8.1?

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

В процессе доработки типовых конфигураций на платформе 1С:Предприятие 8.1 часто возникает задача расширения функционала стандартной обработки Подбор номенклатуры. Мы часто сталкиваемся с вопросом: как добавить свою колонку в табличную часть, чтобы она корректно отображала дополнительные данные? Давайте разберем этот процесс по шагам, учитывая специфику работы табличных полей.

Шаг 1: Определяем правильный источник данных

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

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

Шаг 2: Добавляем колонку программно

После того как мы определили верное табличное поле, мы можем добавить в него новую колонку. Проще всего это сделать программно в модуле формы. Для этого используем метод Колонки.Добавить() для соответствующего элемента управления. Рассмотрим пример:


ЭлементыФормы.СправочникНоменклатура.Колонки.Добавить("МояКолонка", "Заголовок колонки");

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

Шаг 3: Наполняем колонку данными

Так как наш список номенклатуры — это динамическая выборка, наиболее эффективным способом вывода данных в новую колонку является использование события ПриВыводеСтроки элемента управления СправочникНоменклатура. Этот механизм позволяет нам «на лету» подставлять нужные значения при отрисовке каждой строки таблицы.

Давайте проанализируем, как реализовать заполнение данными:

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

Пример реализации:


Процедура СправочникНоменклатураПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    // Получаем значение для нашей колонки
    // Важно: избегайте тяжелых запросов внутри этого события для сохранения скорости
    ЗначениеДляВывода = ПолучитьМоиДанные(ДанныеСтроки.Ссылка);
    
    // Заполняем ячейку
    ОформлениеСтроки.Ячейки.МояКолонка.УстановитьТекст(ЗначениеДляВывода);
КонецПроцедуры

Рекомендации по оптимизации и производительности

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

Что мы рекомендуем для повышения скорости:

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

← На главную