Часто при разработке отчетов на Система Компоновки Данных (СКД) разработчики сталкиваются с ситуацией, когда при использовании ЛЕВОЕ СОЕДИНЕНИЕ со справочником в запросе, в итоговом отчете отображаются не все элементы справочника. Вместо ожидаемого полного списка партнеров, отчет показывает только тех, по которым были фактические продажи. Давайте разберем, почему это происходит и как настроить отчет так, чтобы он всегда выводил всех контрагентов, даже при нулевых оборотах.
Первое, что необходимо проверить — это корректность запроса. Вы верно используете ЛЕВОЕ СОЕДИНЕНИЕ, которое по логике должно присоединять данные продаж к полному списку партнеров. Если в консоли запросов вы видите все строки, а в готовом отчете — только заполненные, значит, проблема скрыта не в самом тексте запроса, а в хранилище настроек СКД или специфике обработки ресурсов.
Одной из самых частых причин «пропадания» строк является кэширование настроек пользователем. Когда вы изменяете структуру схемы СКД или запрос, система не всегда автоматически обновляет сохраненные настройки формы для пользователя. В результате отчет продолжает работать по «старым правилам», которые могли содержать отборы или фильтры по отсутствующим данным.
Прежде чем приступать к глубокому изменению схемы, попробуйте сбросить настройки, которые могли закэшироваться в режиме 1С:Предприятие. Это самый простой способ исключить влияние «старых» пользовательских фильтров:
1С:Предприятие.После этого переформируйте отчет. Если проблема была в сохраненных настройках, все партнеры появятся в списке.
Убедитесь, что запрос корректно обрабатывает значения, которые приходят из регистра. Использование ЕСТЬNULL — это стандартная практика для того, чтобы заменить NULL на конкретное значение (например, 0), которое СКД сможет правильно отобразить в таблице.
Рассмотрим структуру запроса, которую мы используем для объединения данных:
ВЫБРАТЬ
Партнеры.Ссылка КАК Партнер,
ЕСТЬNULL(ВП_Продажи.Период, &ДатаНачала) КАК Период,
ЕСТЬNULL(ВП_Продажи.СуммаВыручки, 0) КАК СуммаВыручки
ИЗ Справочник.Партнеры КАК Партнеры
ЛЕВОЕ СОЕДИНЕНИЕ ВП_Продажи КАК ВП_Продажи
ПО (ВП_Продажи.Партнер = Партнеры.Ссылка)
ГДЕ Партнеры.ПометкаУдаления = ЛОЖЬ
Важное замечание: не стоит искусственно завышать нулевые значения (например, подставлять 0.01). Если настройка СКД верна, система должна адекватно отображать и «чистый» ноль. Если вы видите, что строки по-прежнему пропадают, значит, настройки группировок в СКД фильтруют пустые записи.
Если сброс настроек не помог, велика вероятность, что при изменении структуры запроса СхемаКомпоновкиДанных «запомнила» старую связь наборов данных или неправильно интерпретировала связи между ними. Иногда наиболее быстрым решением является полное пересоздание схемы:
СКД (или новую обработку).Партнер).При пересоздании схемы все связи наборов данных выстраиваются с нуля, что гарантирует отсутствие мусора из предыдущих настроек. В СКД важно следить за тем, чтобы в настройках связи наборов данных не были случайно включены параметры, ограничивающие выборку только пересечениями (внутренним соединением).
Чтобы отчет работал стабильно и всегда выводил полный список справочника:
ЛЕВОЕ СОЕДИНЕНИЕ в запросе.ЕСТЬNULL для полей ресурсов, чтобы при отсутствии записей в регистре вы получали 0, а не NULL.СКД, это часто занимает меньше времени, чем поиск скрытой галочки в свойствах группировок.Следуя этим шагам, вы сможете добиться корректного отображения всех данных в СКД и избежать исчезновения контрагентов из ваших отчетов по продажам.