Почему возникает ошибка «Не найден внешний набор данных» в СКД и как ее исправить?

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

При разработке отчетов на базе Системы компоновки данных (СКД) в 1С часто приходится передавать данные, подготовленные в модуле, напрямую в отчет. Ошибка Не найден внешний набор данных является классической для разработчиков, начинающих работать с программной инициализацией процессора компоновки. Давайте разберем, почему она возникает и как привести ваш код и настройки в рабочее состояние.

Понимание причины ошибки

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

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

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

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

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

Рассмотрим пример правильного формирования структуры в коде:


// Предположим, ТЗ — это ваша подготовленная таблица значений
НаборыДанных = Новый Структура();
НаборыДанных.Вставить("ВходящиеДанные", ТЗ);

// Инициализация процессора компоновки
ПК = Новый ПроцессорКомпоновкиДанных;
ПК.Инициализировать(Макет, НаборыДанных);

Важные рекомендации при отладке

Если ошибка сохраняется, выполните следующие действия:

Работая с внешними наборами данных, всегда держите схему компоновки и программный код перед глазами одновременно. В 90% случаев причина кроется в банальной опечатке в имени объекта данных. Если вы строго соблюдаете соответствие имен, система компоновки будет работать стабильно и предсказуемо.

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

← На главную