К статье
Практический материал

Отчеты и Аналитика · 11 мин

Пустое значение в СКД 1С: как убрать лишние строки и пустоты в отчете

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

Пустые значения в отчете на СКД появляются в нескольких типовых ситуациях: строка с незаполненным полем из-за левого соединения, итоговая строка без группировки, пустая ссылка в данных или «битая» ссылка удаленного объекта. Способ убрать пустоту зависит от того, где именно она возникает — в самих данных, в представлении поля или в настройках варианта отчета.

Однозначного «волшебного» флажка нет: для каждого случая применяется свой прием. Где-то достаточно отбора «Не равно пустому», где-то нужно заменить представление через вычисляемое поле, а где-то — перестроить связь наборов данных. Ниже разобраны основные сценарии с конкретными действиями.

Откуда берутся пустые значения в отчете СКД

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

  • Левое соединение в запросе. Когда основная таблица соединяется с дополнительной через ЛЕВОЕ СОЕДИНЕНИЕ, для строк без совпадения поля второй таблицы возвращают NULL, который в отчете выглядит как пустая ячейка.
  • Связь наборов данных. При объединении нескольких наборов (запрос + запрос, запрос + объект) строки без связанных данных дают пустые поля присоединенного набора.
  • Пустые ссылки и незаполненные реквизиты в данных. В базе реально хранятся документы без контрагента, номенклатуры без группы и т.п.
  • Детальные записи и итоги. Строка общего итога или группировки может показывать пустое значение поля, которое не входит в группировку.
Пусто во второй части соединенияЛевое соединение или связь наборов

Проверьте запрос на ЛЕВОЕ СОЕДИНЕНИЕ и настройку связей наборов данных

Пусто в справочном полеНезаполненный реквизит в базе

Откройте карточку объекта и проверьте реквизит

Пусто в строке итогаПоле вне группировки

Проверьте, какие поля входят в группировку строк

Пусто только при определенном отбореУсловие отбора отсекает данные

Проверьте отборы в настройках варианта

Способ 1. Убрать пустые строки отбором в настройках отчета

Самый простой и безопасный способ — стандартный отбор. Он подходит, когда нужно исключить из отчета строки с незаполненным полем, и не требует изменения схемы компоновки.

Откройте отчет, перейдите в настройки (кнопка «Настройки» или «Изменить вариант»), на закладку «Отбор». Добавьте нужное поле и установите вид сравнения «Не равно» со значением пустой ссылки соответствующего типа. Для строкового поля используйте «Не равно» пустой строке, для числового — условие «Заполнено», если оно доступно в вашей версии платформы.

Если отбор нужен постоянно и пользователи не должны его снимать, добавьте условие не в пользовательские настройки, а в фиксированные настройки варианта или прямо в схему компоновки на закладке «Настройки» в конструкторе. Тогда условие будет применяться всегда и не отобразится в быстрых настройках.

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

Способ 2. Убрать пустоту условием в запросе набора данных

Если пустые строки заведомо не нужны, правильнее отсечь их на уровне запроса — так отчет будет работать быстрее, потому что компоновщику не придется обрабатывать лишние записи.

Откройте схему компоновки данных (в конфигураторе: отчет → «Открыть схему компоновки данных»), закладка «Наборы данных», и добавьте в запрос условие ГДЕ:

ВЫБРАТЬ

Продажи.Номенклатура,

Продажи.Контрагент,

Продажи.Сумма

ИЗ

РегистрНакопления.Продажи.Обороты КАК Продажи

ГДЕ

НЕ Продажи.Контрагент = &ПустойКонтрагент

Для проверки на NULL после левого соединения используйте условие НЕ Поле ЕСТЬ NULL. Важно: NULL и пустая ссылка — разные сущности. Сравнение «Поле = ПустаяСсылка» не отловит NULL, а «ЕСТЬ NULL» не отловит пустую ссылку. Если поле может содержать и то, и другое, комбинируйте условия через И.

Способ 3. Заменить пустоту текстом через вычисляемое поле

Иногда строку удалять нельзя — она содержит нужные суммы, — но пустая ячейка выглядит неаккуратно. В этом случае пустоту заменяют осмысленным текстом: «Не указан», «Без группы» и т.п.

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

ВЫБОР

КОГДА Контрагент ЕСТЬ NULL

ТОГДА "Не указан"

КОГДА Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)

ТОГДА "Не указан"

ИНАЧЕ Контрагент

КОНЕЦ

Затем на закладке «Настройки» замените в выбранных полях исходное поле на вычисляемое. Учтите ограничение: вычисляемое поле возвращает строку, поэтому по нему нельзя будет перейти в карточку контрагента по двойному щелчку, а группировка будет работать по тексту, а не по ссылке.

Способ 4. Настроить связь наборов данных, чтобы не было пустых строк

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

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

Дополнительно проверьте поля связи: если связь настроена только по номенклатуре, а строки отличаются еще и по складу, компоновка может порождать комбинации с пустыми полями. Добавьте все измерения, по которым данные должны совпадать.

Маршрут решения

Как выбрать способ устранения пустоты

Пустые строки не нужны ни в одном варианте отчетаДобавьте условие ГДЕ в запрос набора данных
Пустоту нужно скрывать только в конкретном вариантеИспользуйте отбор «Не равно пустое» в настройках варианта
Строки нужны, но ячейка должна быть заполненаСоздайте вычисляемое поле с ВЫБОР ... ТОГДА "текст"
Пустоты появляются при объединении двух наборовПроверьте тип связи и поля связи на закладке «Связи наборов данных»
Пусто в строке итогов или группировкиПроверьте состав группировки и расположение ресурсов

Способ 5. Пустые значения в группировках и итогах

Отдельный случай — пустые ячейки в строках итогов и группировок. Если поле не входит в группировку, в строке итога оно выводится пустым, и это нормальное поведение компоновки. Чтобы поле показывалось в итогах, добавьте его в группировку либо уберите из выбранных полей, чтобы не смущать пользователей.

Если в отчете есть группировка с пустым значением (например, блок строк «без контрагента» вверху отчета), убрать её можно тем же отбором «Контрагент не равно пустая ссылка». Альтернатива — на закладке «Настройки» для группировки в поле «Использование» отключить вывод детальных записей с пустым значением через отбор, установленный непосредственно у группировки, а не у всего отчета.

Обратите внимание на параметр «Выводить отбор» и заголовки группировок: иногда «пустота» — это просто незаполненный заголовок группировки, который можно заменить через настройку оформления поля.

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить результат

Строки с пустым полем
Норма

В отчете нет строк с пустым значением целевого поля

Тревожный признак

Пустые строки остались — проверьте тип сравнения и NULL

Итоги отчета
Норма

Итоги изменились предсказуемо или не изменились

Тревожный признак

Итоги сильно упали — отбор отсек нужные данные

Другие варианты отчета
Норма

Остальные варианты работают как раньше

Тревожный признак

Сломались варианты, где пустые строки были нужны

Расшифровка
Норма

Двойной щелчок по ячейке открывает карточку объекта

Тревожный признак

Расшифровка потеряна из-за вычисляемого строкового поля

Типичные ошибки
01
Сравнение с пустой ссылкой вместо проверки ЕСТЬ NULL — строки с NULL остаются в отчете
02
Отбор добавлен в быстрые настройки, и пользователь снимает его одним кликом — пустоты возвращаются
03
Вычисляемое поле заменяет ссылку строкой — теряется расшифровка и группировка по ссылке
04
Условие ГДЕ добавлено ради одного варианта — ломаются остальные варианты отчета
05
Связь наборов оставлена левой, хотя нужны только совпадающие строки — пустые поля присоединенного набора

Если после всех настроек пустота сохраняется, выведите детальные записи без группировок и посмотрите сырые данные: возможно, проблема не в компоновке, а в самих данных — например, в регистре есть движения с незаполненным измерением, и правильное решение — исправить данные или проведение документов, а не маскировать проблему отбором.

Итог

Что важно запомнить

Пустое значение в СКД убирается четырьмя путями: отбором в настройках, условием в запросе, вычисляемым полем с ВЫБОР и настройкой связей наборов. Сначала определите источник пустоты (NULL, пустая ссылка, связь наборов, итоги), затем выбирайте способ. После изменения обязательно проверьте итоги и работу других вариантов отчета.

Частые вопросы

Чем отличается NULL от пустой ссылки в СКД?

NULL — это отсутствие значения, которое возникает при соединениях таблиц, когда для строки не нашлось пары. Пустая ссылка — реально хранящееся в базе значение ссылочного типа «по умолчанию». Для NULL используется проверка «ЕСТЬ NULL», для пустой ссылки — сравнение «= ЗНАЧЕНИЕ(Справочник.Имя.ПустаяСсылка)». Одно условие не заменяет другое.

Как убрать пустую строку вверху группировки отчета?

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

Почему отбор «Не равно пустое» не срабатывает?

Чаще всего поле содержит NULL после левого соединения, а не пустую ссылку. Добавьте в запрос условие «НЕ Поле ЕСТЬ NULL» либо оберните поле в ЕСТЬNULL(Поле, ЗначениеПоУмолчанию) в запросе, и тогда отбор в настройках начнет работать корректно.

Можно ли скрыть пустые колонки ресурсов, где нет данных?

Штатной настройки «скрыть пустую колонку» в СКД нет: ресурс выводится всегда, если добавлен в выбранные поля. Пустые ячейки ресурса — это нормально, они означают отсутствие значения. Если колонка полностью пустая, уберите её из выбранных полей варианта или проверьте, почему ресурс не рассчитывается.

Как заменить пустое значение на «Не указано» без потери расшифровки?

Используйте два поля: вычисляемое строковое поле с ВЫБОР для отображения и исходное ссылочное поле, добавленное в ресурсы или доступные поля для расшифровки. Либо оставьте ссылку как есть и настройте оформление поля через формат — в ряде случаев это позволяет задать представление пустого значения без изменения типа.

Влияет ли отбор на пустые значения на итоги отчета?

Да. Отбор исключает строки до расчета итогов, поэтому суммы уменьшатся на значения исключенных строк. Это корректное поведение, но если итоги должны оставаться полными, а скрыть нужно только визуально — используйте вычисляемое поле для представления вместо отбора.