Имя: Пароль:
1C
 
Не находит набор данных
0 GoreEclipse
 
26.02.25
21:26
При формировании выдает такую ошибку:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "НД1"
по причине:
Не найден внешний набор данных "НД1"
Что делать?
Код:

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

    НД=СКД.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НД.Имя="НД1";
    НД.ИмяОбъекта="НД1";
    НД.ИсточникДанных="СхемаСКД";
    
    ПНД = НД.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    ПНД.Поле = "Наименование";
    ПНД.ПутьКДанным = "Наименование";
    ПНД.Заголовок = "Наименование";

    ПНД2 = НД.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    ПНД2.Поле = "Комплектующие";
    ПНД2.ПутьКДанным = "Комплектующие";
    ПНД2.Заголовок = "Комплектующие";
    
    НК=КомпоновщикНастроек.Настройки;    
    
    Если нк.Структура.Количество()=0 Тогда
    
        Таб=НК.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных"));
    
        ГКД1 = Таб.Строки.Добавить();
        ГКД1.Использование = Истина;
        ПГКД1 = ГКД1.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ПГКД1.Использование = Истина;
        ПГКД1.Поле = Новый ПолеКомпоновкиДанных("Наименование");
        
        ВП1=ГКД1.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
        ВП1.Использование=Истина;
        
        ГКД2 = ГКД1.Структура.Добавить();
        ГКД2 = Таб.Колонки.Добавить();
        ГКД2.Использование = Истина;
        ПГКД2 = ГКД2.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ПГКД2.Использование = Истина;
        ПГКД2.Поле = Новый ПолеКомпоновкиДанных("Комплектующие");
        
        ВП2=ГКД2.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
        ВП2.Использование=Истина;
    
    КонецЕсли;
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Комплектующее.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ втКомплект
    |ИЗ
    | Справочник.Комплектующее КАК Комплектующее
    |ГДЕ
    | Комплектующее.Ссылка В (&Комплект)
    |;
    |/////////////////////////
    |ВЫБРАТЬ различные
    |    ИзделиеСостав.Ссылка КАК Ссылка
    | ПОМЕСТИТЬ втИзделияСовпадающиеПоОднойСоставлящией
    |ИЗ
    |    Справочник.Изделие.Состав КАК ИзделиеСостав
    |ГДЕ
    |    ИзделиеСостав.Комплектующие В (&Комплектующие)
    |;
    |
    |/////////////////////////
    |
    |ВЫБРАТЬ различные
    |    втИзделия.Ссылка КАК Ссылка
    | ПОМЕСТИТЬ втИзделияСНедостающимЛибоЛишнимиКомплектующими
    |ИЗ
    |     втИзделияСовпадающиеПоОднойСоставлящией как втИзделия
    |        Соединение Справочник.Изделие.Состав КАК ИзделиеСостав
    |           Полное Соединение втКомплект как втКомплект
    |            По ИзделиеСостав.Комплектующие = втКомплект.Ссылка
    |         По ИзделиеСостав.Ссылка = втИзделия.Ссылка
    |ГДЕ
    |   ИзделиеСостав.Комплектующие is null
    |   Или втКомплект.Ссылка is null
    |;
    |/////////////////////////
    |ВЫБРАТЬ
    |    ВсеИзделия.Ссылка КАК Ссылка
    |
    |ИЗ
    |   втИзделияСовпадающиеПоОднойСоставлящией Как ВсеИзделия
    |    Левое Соединение втИзделияСНедостающимЛибоЛишнимиКомплектующими Как ЛишниеИзделия
    |    По ВсеИзделия.Ссылка = ЛишниеИзделия.Ссылка
    |ГДЕ
    |   ЛишниеИзделия.Ссылка is null
    |";
    
    Запрос.УстановитьПараметр("Комплект", МассПар);
    Запрос.УстановитьПараметр("Комплектующие", МассПар);
    РезЗап = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
    
    ВнешНаб=Новый Структура("НД1",РезЗап);
    КМ=Новый КомпоновщикМакетаКомпоновкиДанных;
    МКМ=КМ.Выполнить(СКД,НК);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МКМ,ВнешНаб);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
КонецПроцедуры
1 rudnitskij
 
26.02.25
21:45
"РезЗап = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); "
-------------------
Запрос должен возвращать таблицу значений, из которой строится отчет. А вы, выгрузив колонку, получаете массив