Почему СКД выводит лишние строки при добавлении нового поля и как это исправить?

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

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

1. Проверка наличия NULL значений

Одной из самых частых причин появления «лишних» строк является наличие пустых значений (NULL) в добавленном поле. СКД воспринимает NULL как самостоятельное значение, требующее отдельной группировки. Если в вашем наборе данных есть записи, где способ отражения не заполнен, система создаст для них отдельную строку.

Что нужно сделать:

  1. Откройте запрос в конструкторе СКД.
  2. Используйте функцию ЕСТЬNULL() для всех полей, которые могут содержать пустые значения, чтобы привести их к осмысленному виду (например, к пустой строке или значению «Не указано»).
  3. Пример использования в запросе:
    
    ВЫБРАТЬ
        ЕСТЬNULL(СпособыОтражения.Способ, \"Не указано\") КАК СпособОтражения
    ИЗ
        РегистрНакопления.БухучетЗарплатыСотрудников КАК Данные
    

2. Анализ связей наборов данных

Если вы используете несколько наборов данных, проблема часто кроется в настройках Связи наборов данных. При добавлении нового набора СКД пытается соединить данные из него с основным набором. Если условие связи не является уникальным или если связь настроена по полям, которые могут принимать неопределенные значения, система будет дублировать строки.

Как проанализировать ситуацию:

3. Влияние скрытых полей и «Документа-основания»

Иногда поля, которые мы явно не выбираем в отчете, все равно присутствуют в структуре набора данных СКД. Если у поля установлена роль Измерение, оно автоматически становится группировочным. Даже если поле «Документ-основание» скрыто из видимости, само его наличие в наборе данных может заставлять СКД разбивать строки, если значения этого документа различаются.

Порядок действий:

  1. Зайдите на вкладку Наборы данных.
  2. В списке полей найдите поле «Документ-основание» (или любое другое, вызывающее подозрения).
  3. Убедитесь, что у этого поля не установлена роль Измерение, если вы не планируете группировать по нему данные.
  4. Если поле лишнее — лучше удалить его из текста запроса, чтобы оно не попадало в кэш СКД.

4. Использование настроек структуры отчета

Разберем ситуацию, когда проблема не в запросе, а в самих настройках отчета. Если в разделе Настройки на вкладке Выбранные поля или в Детальных записях добавлена избыточная группировка, отчет будет выглядеть развернутым.

Рекомендации по настройке:

Итог: Проанализируйте свои данные, открыв список регистра и сравнив записи, которые «раздваиваются». Скорее всего, вы увидите разницу в скрытых измерениях (период, регистратор или документ-основание). Устранив причину различий в этих полях (через ЕСТЬNULL или корректировку связей), вы добьетесь правильного формирования строки.

← На главную