Почему не открывается или не выводит данные отчет на СКД в 1С?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

1. Почему отчет не открывается в режиме «1С:Предприятие»

Если в режиме «1С:Предприятие» при вызове отчета не появляется окно, выясним причину в свойствах объекта конфигурации:

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

2. Почему отчет формируется, но не выводит данные

Если форма открывается, кнопка «Сформировать» нажимается, но результат остается пустым, проанализируем настройки самой схемы компоновки данных:

  1. Не определены ресурсы на вкладке «Ресурсы». Числовые показатели, которые должны суммироваться или рассчитываться по группировкам (например, количество, сумма, остаток), необходимо обязательно добавить в список ресурсов с указанием агрегатной функции (по умолчанию Сумма(...)).
  2. Не настроена структура отчета на вкладке «Настройки». СКД требует явного указания структуры вывода:
    • В окне Структура необходимо добавить группировку (например, Номенклатура или Склад). Если группировка не нужна, можно добавить пустую строку <Детальные записи>.
    • Если выбран тип отчета Таблица, необходимо явно задать поля в секциях Строки и Колонки.
  3. Не заполнены «Выбранные поля». Проверьте вкладку Выбранные поля в нижней части настроек. Если поля не выбраны на уровне отчета или конкретной группировки, табличный документ останется пустым. Для автоматического вывода всех дочерних полей группировки убедитесь, что включен системный элемент Автополе.
  4. Проверка прав доступа (ролей). Если у текущего пользователя нет права на Чтение и Просмотр объектов (таблиц регистров, документов, справочников), участвующих в запросе СКД, платформа автоматически скроет недоступные поля или вернет пустую выборку без вывода системных ошибок.

3. Особенности работы с параметрами и виртуальными таблицами

Рассмотрим частые ошибки, связанные с логикой запросов и значениями параметров:

  1. Конец периода в виртуальных таблицах. При обращении к виртуальным таблицам остатков и оборотов регистров передача даты без времени интерпретируется как начало дня (00:00:00). Для корректного учета движений за весь день в выражении параметра на вкладке Параметры укажите: КонецПериода(&КонецПериода, "ДЕНЬ").
  2. Сохраненные пользовательские настройки. При отладке отчета платформа сохраняет последние введенные параметры и отборы пользователя. Если ранее был установлен заведомо пустой отбор, он продолжит применяться. Для проверки нажмите Все действия → Стандартные настройки или воспользуйтесь конструктором настроек.
  3. Ограничение типа данных для параметров-документов. Если в параметре запроса используется ссылка на документ и в СКД тип задан как составной ДокументСсылка, система каждый раз будет запрашивать выбор типа. Чтобы открывался сразу список конкретного документа, на вкладке Параметры СКД явно укажите точный тип, например ДокументСсылка.ПоступлениеТоваровУслуг.

4. Программный вывод отчета на СКД в обычном приложении

Если вам требуется управлять формированием отчета вручную через кнопку на форме с полем табличного документа (ПолеТабличногоДокумента), разберем классическую схему программного вывода СКД:


Процедура СформироватьОтчет()
    
    // Получаем схему и настройки
    СхемаКомпоновки = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    // Формируем макет компоновки
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновки, Настройки);
    
    // Инициализируем процессор компоновки данных
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    // Очищаем поле отчета и выводим результат
    ЭлементыФормы.ПолеОтчета.Очистить();
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.ПолеОтчета);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
КонецПроцедуры

Такой подход позволяет полностью контролировать процесс вывода, программно передавать параметры в КомпоновщикНастроек и совмещать гибкость СКД с привычным интерфейсом обычных форм.

← На главную