Как в отчете на СКД вывести «Полное наименование» для субконто с сохранением расшифровки?

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

Часто при разработке отчетов на базе Системы Компоновки Данных (СКД), например, в Оборотно-сальдовой ведомости, возникает необходимость изменить способ отображения данных. Стандартное поле субконто обычно выводит Наименование объекта. Однако пользователям часто требуется видеть НаименованиеПолное для номенклатуры. Рассмотрим, как это реализовать правильно, чтобы не потерять возможность открытия карточки объекта по двойному клику.

Почему нельзя просто использовать выражение «ВЫРАЗИТЬ» в запросе?

Многие разработчики на начальном этапе пытаются решить задачу через ВЫРАЗИТЬ непосредственно в тексте запроса:


ВЫБРАТЬ
    ВЫРАЗИТЬ(ОстаткиИОбороты.Субконто1 КАК Справочник.Номенклатура).НаименованиеПолное КАК Субконто1
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты КАК ОстаткиИОбороты

Этот подход имеет существенный недостаток: после применения функции ВЫРАЗИТЬ поле превращается из ссылки на объект в строку. В итоге отчет перестает «понимать», что это номенклатура, и у пользователя пропадает возможность расшифровки (открытия карточки) при двойном клике. Мы же хотим изменить только визуальное представление, сохранив исходный тип данных.

Решение через «Выражение представления» в СКД

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

Для реализации задачи выполним следующие шаги:

  1. Откроем Схему компоновки данных нашего отчета.
  2. Перейдем на вкладку Наборы данных.
  3. Добавим дополнительное поле в запрос, которое будет содержать проверку типа субконто. Например: ОстаткиИОбороты.Субконто1 ССЫЛКА Справочник.Номенклатура КАК Субконто1ЯвляетсяНоменклатурой.
  4. В таблице полей набора данных найдем поле Субконто1.
  5. В колонке Выражение представления пропишем логику выбора отображения.

Рассмотрим пример правильного выражения:


ВЫБОР 
    КОГДА НЕ ЗначениеЗаполнено(Субконто1) ТОГДА "<...>" 
    КОГДА Субконто1ЯвляетсяНоменклатурой ТОГДА Субконто1.НаименованиеПолное 
    ИНАЧЕ Субконто1 
КОНЕЦ

Почему это работает лучше?

При использовании Выражения представления система СКД продолжает оперировать оригинальным полем Субконто1 (которое является ссылкой), поэтому механизм расшифровки продолжает работать корректно. Мы лишь указываем платформе, какой именно текст нужно «нарисовать» в ячейке табличного документа.

Альтернативные подходы

Если логика определения представления становится слишком сложной, рекомендуем использовать следующие методы:

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

← На главную