При разработке отчетов на базе Системы компоновки данных (СКД) в 1С часто приходится передавать данные, подготовленные в модуле, напрямую в отчет. Ошибка Не найден внешний набор данных является классической для разработчиков, начинающих работать с программной инициализацией процессора компоновки. Давайте разберем, почему она возникает и как привести ваш код и настройки в рабочее состояние.
Система компоновки данных строго сопоставляет структуры, переданные программно, с описанием наборов данных, созданных в схеме компоновки данных (СКД). Когда вы вызываете метод Инициализировать у ПроцессорКомпоновкиДанных, система ищет в переданной структуре с внешними данными ключ, который в точности соответствует полю Имя (или Имя объекта) в наборе данных типа «Объект» внутри самой схемы СКД.
Если имена не совпадают хотя бы на один символ (включая регистр) или если набор данных в СКД забыли создать, система выбрасывает исключение с текстом Не найден внешний набор данных.
Рассмотрим, как правильно настроить связку между модулем и СКД, чтобы избежать подобных сбоев.
Наборы данных. Убедитесь, что там добавлен набор с типом Набор данных - объект. В колонке Имя объекта укажите понятное имя, например: ВходящиеДанные.ВходящиеДанные), а значение — это ваша таблица значений.Рассмотрим пример правильного формирования структуры в коде:
// Предположим, ТЗ — это ваша подготовленная таблица значений
НаборыДанных = Новый Структура();
НаборыДанных.Вставить("ВходящиеДанные", ТЗ);
// Инициализация процессора компоновки
ПК = Новый ПроцессорКомпоновкиДанных;
ПК.Инициализировать(Макет, НаборыДанных);
Если ошибка сохраняется, выполните следующие действия:
Инициализировать. Проверьте содержимое переменной НаборыДанных. Убедитесь, что ключи в этой структуре визуально идентичны тому, что указано в СКД. Часто разработчики не замечают лишних пробелов в конце имен.ВходящиеДанные, в коде должно быть строго ВходящиеДанные.Наборы данных в схеме компоновки вы добавили все необходимые поля, соответствующие колонкам вашей таблицы значений. Если полей нет или их имена не совпадают с именами колонок ТаблицаЗначений, данные могут не отобразиться или вызвать ошибку при выводе.ТаблицаЗначений, которую вы передаете в структуру, действительно содержит данные. Пустая таблица не вызовет ошибку «Не найден внешний набор данных», но может привести к пустому результату отчета, что также потребует отладки.Работая с внешними наборами данных, всегда держите схему компоновки и программный код перед глазами одновременно. В 90% случаев причина кроется в банальной опечатке в имени объекта данных. Если вы строго соблюдаете соответствие имен, система компоновки будет работать стабильно и предсказуемо.
Разбирая подобные ошибки, вы учитесь глубже понимать механизм работы ПроцессорКомпоновкиДанных и КомпоновщикМакетаКомпоновкиДанных, что позволит вам создавать более сложные и гибкие отчеты в 1С в будущем.