Отчеты и Аналитика · 10 мин
Как убрать пустые строки в отчёте на СКД в 1С
Как убрать пустые строки в отчёте на СКД в 1С: фильтры, отборы, настройки группировок, запрос и пользовательские настройки. Пошаговые способы и частые ошибки.
Пустые строки в отчёте на системе компоновки данных (СКД) — одна из самых частых жалоб пользователей 1С. Они появляются, когда в выборку попадают записи с незаполненными значениями измерений, нулевыми ресурсами или когда соединение таблиц в запросе порождает строки без данных. Отчёт становится длиннее, итоги размываются, а печатная форма выглядит неаккуратно.
Убрать пустые строки можно несколькими способами: отбором в настройках СКД, условием в тексте запроса, настройкой группировок и отбором по ресурсам на уровне детальных записей. Выбор зависит от того, откуда берётся пустота: из самих данных, из логики запроса или из настроек варианта отчёта.
Ниже разобраны основные причины появления пустых строк и конкретные способы их устранения — от простых настроек, доступных пользователю без изменения конфигурации, до правок запроса, которые делает разработчик.
Откуда берутся пустые строки в СКД
Прежде чем что-то отключать, полезно понять источник пустоты. Самая частая причина — записи, у которых не заполнено одно из полей группировки: например, у документа не указан склад или контрагент. СКД честно выводит такую строку с пустым значением, чтобы итоги сходились с данными.
Вторая причина — левое соединение таблиц в запросе набора данных. Если основная таблица соединяется с таблицей остатков или цен, а совпадения не нашлось, поля второй таблицы приходят со значением NULL, и в отчёте образуется строка с пустыми колонками.
Третья причина — нулевые или пустые ресурсы: строка есть, но сумма, количество и другие показатели равны нулю. Формально строка не пустая, но пользователь воспринимает её как лишнюю. Это тоже решается, но другим инструментом — отбором по ресурсу.
Проверить заполнение реквизита в данных; решение — отбор «Заполнено»
Проверить тип соединения в запросе; решение — ВНУТРЕННЕЕ СОЕДИНЕНИЕ или ГДЕ
Решение — отбор по ресурсу или условие ИМЕЮЩИЕ
Проверить итоги по группировкам и наличие «мусорных» записей в регистре
Способ 1. Отбор в настройках отчёта без изменения конфигурации
Самый безопасный способ, доступный даже пользователю без прав разработчика, — добавить отбор прямо в настройках варианта отчёта. Откройте отчёт, нажмите «Настройки» (или «Изменить вариант» в типовых конфигурациях), перейдите на закладку «Отбор» и добавьте условие по нужному полю.
Для поля, которое не должно быть пустым, используйте вид сравнения «Заполнено» — это отсекает и NULL, и пустые ссылки, и пустые строки. Альтернатива — условие «Не равно» с пустым значением, но вариант «Заполнено» надёжнее, потому что учитывает все виды пустоты сразу.
Если отчёт построен на управляемых формах и настройки скрыты, включите «Расширенный режим» настройки или попросите администратора вывести нужный отбор в пользовательские настройки — тогда условие можно будет менять прямо в форме отчёта без входа в конструктор.
- 1Откройте отчёт и нажмите «Настройки» / «Изменить вариант»
- 2На закладке «Отбор» добавьте новый элемент
- 3В поле выберите нужный реквизит, в виде сравнения — «Заполнено»
- 4Сформируйте отчёт и проверьте, что пустые строки исчезли, а итоги сходятся
- 5Сохраните вариант отчёта, чтобы настройка применялась постоянно
Способ 2. Условие ГДЕ в запросе набора данных
Если отчёт разрабатывается или дорабатывается в конфигураторе, надёжнее отсечь пустые строки на уровне запроса набора данных. Откройте схему компоновки данных, перейдите на закладку «Набор данных» и добавьте в запрос условие в секции ГДЕ.
Типовые условия выглядят так: ГДЕ Продажи.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) или проверка на NULL после соединения: ГДЕ НЕ Остатки.Количество ЕСТЬ NULL. Для отсечения нулевых ресурсов удобно условие ИМЕЮЩИЕ после группировки: ИМЕЮЩИЕ СУММА(Продажи.Сумма) <> 0.
Важный нюанс: условие ГДЕ работает всегда, независимо от настроек пользователя, и его нельзя отключить из формы отчёта. Если хотите оставить гибкость, вынесите условие в фигурные скобки {ГДЕ ...} — тогда отбор станет управляемым через настройки СКД.
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
СУММА(Продажи.Сумма) КАК Сумма
ИЗ
РегистрНакопления.Продажи КАК Продажи
ГДЕ
Продажи.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
СГРУППИРОВАТЬ ПО
Продажи.Номенклатура
ИМЕЮЩИЕ
СУММА(Продажи.Сумма) <> 0Способ 3. Отбор по ресурсам и настройка группировок
Когда строки формально заполнены, но ресурсы нулевые, помогает отбор по ресурсу в настройках СКД. На закладке «Отбор» добавьте условие вида «Сумма > 0» или «Количество <> 0». СКД применит его к детальным записям, и строки без движений исчезнут.
Отдельный случай — пустые строки внутри иерархических группировок. Если группировка строится по иерархии справочника, промежуточные уровни могут выводиться без данных. Проверьте тип группировки: для поля иерархии в настройках поля группировки можно выбрать «Элементы» вместо «Иерархия», тогда пустые родительские уровни не будут порождать лишних строк.
Также проверьте, не включён ли вывод итогов там, где он не нужен: общие итоги и итоги по группировкам иногда визуально выглядят как пустые строки, особенно если у них не настроено оформление. Отключить лишние итоги можно в настройках группировки на закладке «Другие настройки».
Способ 4. Работа с соединениями и NULL в запросе
Если пустые колонки появляются из-за левого соединения, первый вопрос — нужно ли вообще выводить строки без совпадений. Если не нужно, замените ЛЕВОЕ СОЕДИНЕНИЕ на ВНУТРЕННЕЕ: останутся только строки, где данные есть в обеих таблицах.
Если строки без совпадений нужны, но пустые значения в колонках мешают, используйте функцию ЕСТЬNULL(Поле, 0) — она заменит NULL на ноль или другое значение по умолчанию. Это не убирает строку, но устраняет визуальную «пустоту» и упрощает дальнейшие отборы.
Для соединений с виртуальными таблицами регистров проверяйте параметры виртуальной таблицы: например, отбор в параметрах таблицы «Остатки» сужает выборку ещё до соединения, что снижает количество NULL-строк и ускоряет отчёт.
Сравнение способов
Подходит пользователю без прав разработчика; ограничение — можно случайно сбросить при смене варианта
Надёжно и работает всегда; ограничение — требует изменения конфигурации или внешнего отчёта
Убирает строки без совпадений на уровне СУБД; ограничение — теряются строки без данных во второй таблице
Убирает визуальную пустоту в колонках; ограничение — сама строка остаётся в отчёте
Проверка результата и контроль итогов
После любого способа обязательно сверьте итоги отчёта до и после изменения. Если отбор «Заполнено» отсёк строки с незаполненным реквизитом, сумма этих строк выпадет из итогов — и это правильно, но пользователей отчёта стоит предупредить, иначе возникнут вопросы «куда делись данные».
Полезная практика — временно добавить в отчёт группировку или колонку, показывающую отсечённые строки: например, сформировать вариант без отбора и посмотреть, какие именно документы имеют пустой реквизит. Часто выясняется, что проблему правильнее решать заполнением данных, а не их скрытием.
Как проверить результат
Итоги совпадают с контрольным значением или расхождение объяснено отсечёнными строками
Итоги изменились без видимой причины — проверьте условие отбора
В отчёте нет строк с пустыми ключевыми полями
Пустые строки остались — отбор применён не к тому уровню группировки
Отчёт формируется не медленнее, чем раньше
Отчёт стал заметно медленнее — условие добавлено неоптимально, перенесите его в запрос
Типичные ошибки и ограничения
Частая ошибка — попытка убрать пустые строки условным оформлением, скрывая их цветом или шрифтом. Строки остаются в данных, занимают место, попадают в итоги и в выгрузку в Excel. Оформление решает только визуальную задачу, для реального исключения нужен отбор или условие в запросе.
Вторая ошибка — отбор по строковому полю условием «Не равно ""», когда в данных встречается NULL. Сравнение с пустой строкой не отсекает NULL, и строки остаются. Используйте «Заполнено» или явную проверку НЕ Поле ЕСТЬ NULL.
Третья ошибка — добавление условия ГДЕ после левого соединения по полю правой таблицы без учёта NULL: такое условие фактически превращает левое соединение во внутреннее, что может неожиданно изменить состав данных. Если это не цель, корректируйте само соединение, а не компенсируйте его условием.
Что важно запомнить
Пустые строки в СКД убираются отбором «Заполнено» в настройках, условиями ГДЕ и ИМЕЮЩИЕ в запросе или заменой левого соединения на внутреннее. После изменения всегда сверяйте итоги и проверяйте, не является ли пустота признаком незаполненных данных, которые правильнее исправить.
Частые вопросы
Как убрать пустую строку в конце отчёта СКД?
Чаще всего это строка общего итога или запись с NULL в поле группировки. Проверьте, включены ли общие итоги в настройках отчёта, и добавьте отбор «Заполнено» по полю группировки. Если строка остаётся, сформируйте отчёт с выводом детальных записей и посмотрите, какая именно запись её порождает.
Можно ли убрать пустые строки без изменения конфигурации?
Да, если поле доступно в настройках отчёта. Откройте «Настройки» → «Отбор», добавьте условие «Заполнено» по нужному полю и сохраните вариант отчёта. Если поле недоступно для отбора, потребуется доработка схемы компоновки разработчиком.
Почему отбор «Не равно пустое значение» не работает?
Потому что в данных может быть не пустая ссылка и не пустая строка, а NULL — особенно после соединений таблиц. Сравнение с пустым значением NULL не отсекает. Используйте вид сравнения «Заполнено» или условие «НЕ Поле ЕСТЬ NULL» в запросе.
Как скрыть группы с нулевым итогом, а не детальные строки?
Отбор по ресурсу в настройках работает на детальных записях и группы не скрывает. Используйте условие ИМЕЮЩИЕ СУММА(Ресурс) <> 0 в запросе набора данных — оно отсекает группы с нулевым итогом ещё на уровне выборки.
Влияет ли удаление пустых строк на итоги отчёта?
Да. Если у отсечённых строк были ненулевые ресурсы (например, документы с незаполненным складом, но с суммами), итоги уменьшатся. Перед внедрением отбора сверьте итоги до и после и убедитесь, что расхождение объяснимо.
Что лучше: отбор в настройках или условие в запросе?
Условие в запросе надёжнее и быстрее, но требует правки схемы и работает всегда. Отбор в настройках гибче — его можно включать и отключать без разработчика. Для постоянного правила выбирайте запрос, для опционального фильтра — настройки.