При настройке типового отчета «Остатки и доступность товаров» в программе 1С:Управление торговлей 11 пользователи часто сталкиваются с неожиданным поведением системы компоновки данных (СКД). Задача кажется предельно простой: вывести список товаров, у которых показатель Доступно больше нуля, скрыв все лишние колонки и нулевые позиции. Однако установка стандартного фильтра Доступно > 0 не убирает пустые строки с наименованиями номенклатуры. Проанализируем механику работы СКД в данном отчете, выясним причину такого поведения и разберем по шагам надежные способы решения проблемы.
Рассмотрим подробнее внутреннюю логику построения отчета. Поведение системы обусловлено несколькими факторами архитектуры СКД и структуры типового отчета:
В наличии формируется напрямую из остатков регистра накопления. Если наложить отбор на физическое поле, СКД отсекает записи на уровне выборки данных. Поле Доступно является сложным расчетным ресурсом: из текущего остатка вычитаются резервы, неотгруженные заказы и учитываются плановые поступления. Для позиций, по которым не было движений, значение ресурса не равно нулю, а принимает значение NULL. Условие сравнения Доступно > 0 в стандартной логике СКД не фильтрует записи со значением NULL, из-за чего строка группировки выводится пустой.Номенклатура).Доступно, легко ошибиться уровнем вложенности поля.Посмотрим на практические способы решения этой задачи, от самых простых пользовательских настроек до глубокой корректировки структуры отчета.
Разберем самый быстрый способ, не требующий перехода в тонкую настройку структуры варианта отчета. Если нам требуется анализировать только оперативный остаток товаров на складе, используем связку условий.
Выполним следующие шаги:
В наличии, установим вид сравнения Больше и значение 0. Это условие отсечет номенклатурные позиции, по которым на складе нет физического остатка, исключив пустые строки с NULL.Доступно, установим вид сравнения Больше и значение 0. Это условие исключит товары, которые физически есть на складе, но полностью зарезервированы под заказы клиентов.В результате совместной работы двух условий отчет сформирует только те позиции, где физический остаток положителен и свободный остаток строго больше нуля.
Если требуется вывести товары, которых сейчас нет на складе, но они доступны в будущих поступлениях (или если фильтрация по полю В наличии не подходит по бизнес-логике), перенесем отбор непосредственно на строку группировки.
Разберем по шагам правильную настройку СКД:
Номенклатура (или Номенклатура, Характеристика). Обратите внимание: выделять нужно не корневой элемент Отчет, а конкретную строку группировки внутри таблицы.Доступно с видом сравнения Больше и значением 0.При таком подходе СКД применит фильтр не к исходным записям таблицы, а к уже рассчитанным итогам свернутой группировки. Пустые строки будут полностью исключены из макета.
Если необходимо настроить общий отбор без редактирования схемы варианта отчета, используем группировку условий с проверкой на NULL.
Доступно → Больше → 0.Доступно → Заполнено.Вид сравнения Заполнено заставляет систему отсекать неопределенные и пустые значения (NULL), очищая итоговую таблицу от пустых строк номенклатуры.