Почему в отчете СКД вместо названий и ссылок выводятся цифры и как это исправить

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

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

Разбор исходной ситуации и запроса

Рассмотрим типичный запрос, который может стать фундаментом для подобного отчета. В нашем примере мы обращаемся к табличной части документа ЧекККМ и соединяем её с основной таблицей документа для получения дополнительных реквизитов:


ВЫБРАТЬ
    ЧекККМЗапасы.Партия КАК Партия,
    ЧекККМЗапасы.Ссылка КАК Ссылка,
    ЧекККМ.Ссылка КАК Ссылка1,
    ЧекККМ.СуммаВключаетНДС КАК СуммаВключаетНДС,
    ЧекККМ.ФормаОплаты КАК ФормаОплаты,
    ЧекККМ.Дата КАК Дата
ИЗ
    Документ.ЧекККМ.Запасы КАК ЧекККМЗапасы
ЛЕВОЕ СОЕДИНЕНИЕ 
    Документ.ЧекККМ КАК ЧекККМ
ПО 
    ЧекККМЗапасы.Ссылка = ЧекККМ.Ссылка
ГДЕ 
    ЧекККМ.Дата >= &ДатаНачала И ЧекККМ.Дата <= &ДатаОкончания

На первый взгляд, запрос абсолютно корректен. Однако именно на уровне настроек самой схемы компоновки данных (СКД) часто допускается ошибка, превращающая данные в набор цифр. Выясним, почему это происходит.

Причина №1: Ошибочное использование вкладки «Ресурсы»

Основная причина появления цифр вместо объектов — попадание полей Партия, Номенклатура или Ссылка в список Ресурсов. В СКД вкладка «Ресурсы» предназначена для описания полей, по которым должны рассчитываться итоги (суммирование, среднее, количество).

Проанализируем механизм работы этого механизма:

  1. Когда вы добавляете поле на вкладку «Ресурсы», СКД автоматически назначает ему функцию агрегации.
  2. Для числовых полей (например, Сумма) по умолчанию выбирается СУММА().
  3. Для ссылочных полей (Объекты, Справочники, Документы) система не может применить арифметическое сложение, поэтому она назначает функцию Количество() или Количество(Различные).

В результате, когда отчет формируется, вместо того чтобы вывести представление ссылки (например, "Партия №1 от 01.01.2023"), СКД считает, сколько таких ссылок попало в текущую группировку, и выводит результат подсчета — число 1 (или больше, если записей несколько).

Решение: Перейдите на вкладку «Ресурсы» в схеме компоновки данных и удалите оттуда все поля, которые не являются числовыми показателями. Оставьте только те данные, по которым вам действительно нужны итоги (например, количество товара или сумма выручки).

Причина №2: Настройка группировок и детальных записей

Рассмотрим ситуацию, когда поле удалено из ресурсов, но данные всё равно отображаются некорректно или отсутствуют. Это может быть связано с тем, как настроена структура отчета на вкладке «Настройки».

В СКД существует два принципиально разных способа вывода данных в строках:

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

Причина №3: Роли полей в наборе данных

Иногда поведение системы обусловлено автоматическими настройками на вкладке «Наборы данных». Проанализируем колонку «Роль». Если для поля программно или вручную установлены специфические роли (например, поле помечено как обязательное или имеет флаг «Без итогов»), это может влиять на генерацию итогового запроса СКД.

Особое внимание стоит уделить ситуациям с ЛЕВЫМ СОЕДИНЕНИЕМ. Если в правой таблице (в нашем случае Документ.ЧекККМ) нет соответствующих данных, поля из нее примут значение NULL. Если такое поле ошибочно назначено ресурсом, функция СУММА() может вернуть пустое значение или 0, что также приведет к появлению "лишних" цифр или пустот вместо данных.

Причина №4: Отсутствие выражения представления

Бывают редкие случаи, когда поле не является ресурсом, но СКД выводит внутренний идентификатор (GUID) или код вместо наименования. Это происходит, если у объекта в метаданных не задано стандартное представление или в СКД на вкладке «Наборы данных» для поля не заполнено свойство «Выражение представления».

Чтобы это исправить, можно в колонке «Выражение представления» явно указать, что вы хотите видеть, например: Партия.Наименование или Партия.Номер. Однако в 99% случаев достаточно просто корректно настроить поля и ресурсы.

Итоговый алгоритм исправления отчета

Для того чтобы в вашем отчете вместо цифр появились реальные данные (названия партий, номенклатуры, даты), выполните следующие шаги:

  1. Откройте Схему компоновки данных и перейдите на вкладку «Ресурсы».
  2. Удалите из списка все поля, которые не должны суммироваться (ссылки на справочники, документы, даты, строки).
  3. Перейдите на вкладку «Настройки».
  4. В иерархии настроек выберите отчет или конкретную группировку.
  5. На вкладке «Выбранные поля» убедитесь, что нужные вам поля (Партия, Номенклатура, Дата) добавлены в список.
  6. Убедитесь, что в структуре отчета присутствуют «Детальные записи», если вам нужен построчный вывод всех документов, а не только сводные итоги по категориям.

Следуя этим правилам, вы исключите автоматическую агрегацию ссылочных типов данных и получите информативный отчет с текстовыми представлениями объектов вместо набора цифр.

← На главную