При разработке отчетов по складскому учету и движению товаров в конфигурациях 1С часто возникает задача компактно разместить номенклатуру и ее характеристику в одной колонке таблицы. Нередко разработчики пытаются решить эту задачу «в лоб» — объединением строк через оператор сложения в тексте запроса или вычисляемом поле. Однако такой подход лишает отчет интерактивности: данные становятся простым текстом, пропадает возможность двойным кликом открыть карточку номенклатуры или характеристики, перестает работать стандартная расшифровка.
Проанализируем различные способы решения этой задачи в системе компоновки данных (СКД), сохранив ссылочную целостность, интерактивность и аккуратный внешний вид отчета.
Выясним причину, почему этот способ является предпочтительным: он настраивается целиком в пользовательском режиме или в схеме компоновки данных без изменения запроса, сохраняя ссылки на объекты. В результирующей ячейке формируются независимые гиперссылки: при клике по наименованию позиции открывается справочник номенклатуры, а при клике по характеристике — соответствующий элемент свойств.
Разберем по шагам порядок настройки:
Номенклатура и Характеристика (либо отчет детальный с этими записями).Номенклатура и Характеристика внутрь созданной группы.Рассмотрим особенность этого метода: СКД разделяет значения полей стандартным разделителем — запятой. Если требуется особый формат (например, вывод характеристики в круглых скобках), этот способ не позволит гибко настроить разделители, поэтому разберем другие варианты.
Рассмотрим еще один типовой вариант отображения, который часто используется в стандартных отчетах УПП и ERP для анализа остатков и оборотов.
Разберем последовательность действий:
Номенклатура, подчиненный уровень — Характеристика.В результате такого подхода номенклатура и характеристика будут выводиться в одной общей колонке в виде сворачиваемого дерева со сдвигом, что делает отчет компактным и удобным для чтения при большом количестве характеристик.
Если необходимо, чтобы поле всегда выводилось в виде Товар (Характеристика) в одной ячейке, но оставалось полноценной ссылкой на справочник, настроим выражение представления.
Разберем по шагам:
Номенклатура.Посмотрим на пример выражения представления:
Номенклатура.Наименование + ВЫБОР
КОГДА Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) ИЛИ Характеристика ЕСТЬ NULL
ТОГДА ""
ИНАЧЕ " (" + Характеристика.Наименование + ")"
КОНЕЦ
При таком подходе поле Номенклатура сохраняет тип ссылки, расшифровка по номенклатуре продолжает функционировать штатно, а текст в отчете выглядит красиво и единообразно.
Когда требуется индивидуальное оформление (перенос на новую строку, определенный шрифт или цвет), применим макет поля или строки группировки.
Разберем алгоритм настройки макета:
Номенклатура.[Номенклатура] ([Характеристика]).Номенклатура и для ячейки укажем в свойстве Параметр расшифровки соответствующее поле, чтобы клик по ячейке продолжал открывать карточку объекта.Проанализируем ошибки, с которыми можно столкнуться при реализации:
NULL. При явном соединении строк всегда используйте конструкцию ВЫБОР КОГДА, иначе наименование товара дополнится пустыми скобками вида Товар ().+ в тексте запроса, система потеряет информацию о ссылочном типе, и стандартные действия контекстного меню («Открыть», «Отчет по движениям») перестанут работать.