Как реализовать отбор «Документы по номенклатуре» в 1С:Управление торговлей 11?

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

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

Почему критерий отбора отсутствует в типовом решении УТ 11

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

Разработчики 1С в УТ 11 отдают предпочтение получению данных через регистры накопления. Это более производительный метод, так как индексы регистров оптимизированы для быстрого получения итогов и оборотов. Однако, для программиста и аналитика критерий отбора часто кажется более удобным инструментом из-за своей простоты и наглядности.

Вариант 1: Использование стандартных отчетов (без доработки)

Прежде чем приступать к программированию, рассмотрим штатную альтернативу, которую предлагает система. Для анализа движения конкретного товара в УТ 11 предназначен отчет «Движения товара». Его можно вызвать непосредственно из карточки номенклатуры (кнопка «Отчеты»).

Преимущества этого метода:

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

Вариант 2: Создание собственного критерия отбора

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

  1. Создадим новый объект метаданных КритерийОтбора с именем ДокументыПоНоменклатуре.
  2. На вкладке «Данные» укажем тип — СправочникСсылка.Номенклатура.
  3. На вкладке «Состав» выберем все необходимые документы и их табличные части, где встречается реквизит Номенклатура.

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

Вариант 3: Перенос механизмов из УНФ

Рассмотрим более продвинутый способ, который упоминали пользователи форума. В УНФ существует специализированная обработка ДокументыПоКритериюОтбора. Мы можем перенести ее в УТ 11, чтобы получить более гибкий интерфейс работы со списком документов.

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


ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ЗначениеОтбора", Объект.Ссылка);
ПараметрыОтбора.Вставить("ИмяКритерия", "ДокументыПоНоменклатуре");

ОткрытьФорму("Обработка.ДокументыПоКритериюОтбора.Форма.Форма", ПараметрыОтбора);

В самой обработке следует обратить внимание на типичные ошибки, возникающие при переносе:

Реализация через расширение конфигурации

Если ваша база находится на поддержке, крайне рекомендуется использовать расширения. В современных версиях платформы (начиная с 8.3.15) критерии отбора можно добавлять непосредственно в расширение. Разберем, как это сделать:

  1. Создаем новое расширение.
  2. Добавляем в него КритерийОтбора.
  3. Заимствуем в расширение необходимые документы и табличные части.
  4. Заимствуем форму номенклатуры и через «Изменить форму» или командный интерфейс выводим команду критерия.

Внимание: Если версия платформы или режим совместимости ниже 8.3.15, добавить новый объект КритерийОтбора в расширение не получится. В этом случае придется использовать внешнюю обработку или отчет на СКД, который будет имитировать поведение критерия.

Проблемы «полноты» данных

Проанализируем ситуации, когда критерий отбора может выдавать неполную информацию. В УТ 11 широко используются наборы и комплекты. Если в документе указан «Набор-комплект», а не сама номенклатура, входящая в него, стандартный критерий отбора по прямой ссылке не покажет такой документ.

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

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

← На главную