Имя: Пароль:
1C
1С v8
Обращение к подгруппам
0 HelpMePlz
 
05.01.21
10:19
Добры день, такой вопрос у меня. у меня есть справочник "Номенклатура" в нем хранятся группы. В свою очередь в группах хранятся еще группы и элементы.
На этот момент я получаю с помощью запроса только те элементы которые находятся на первом уровне группы, а мне надо что бы если в первом уровне групп если есть еще группы
то и элементы которые в них находятся тоже читать.
Код {
Функция НаименованиеАвтомобилей()
    
    Массив = Новый Массив;
    Массив.Добавить("BMW");
    Массив.Добавить("CHEVROLET");
    Массив.Добавить("CHRYSLER");
    Массив.Добавить("CITROEN-PEUGEOT");
    Массив.Добавить("DAEWOO");
    Массив.Добавить("FIAT");
    Массив.Добавить("FORD");
    Массив.Добавить("HONDA");
    Возврат Массив;
    
КонецФункции

Функция ПолучитьВыборкуИзНоменклатуры() Экспорт
    
    
    Результат = Неопределено;    
    Массив = Новый Массив;
    Автомобиль = НаименованиеАвтомобилей();    

    Для Индекс = 0 По Автомобиль.Количество()-1 Цикл
        Выполнено = Ложь;
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка КАК Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК номенклатура
        |ГДЕ
        |    Номенклатура.Родитель.Наименование = &Автомобиль
        |    И Номенклатура.ТипНоменклатуры = &ТипНоменклатуры";
        Запрос.УстановитьПараметр("Автомобиль", Автомобиль[Индекс]);
        Запрос.УстановитьПараметр("ТипНоменклатуры", ТипНоменклатуры);
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            Структура = Новый Структура;
            Структура.Вставить("Марка", Автомобиль[Индекс]);
            Структура.Вставить("Ссылка", Выборка.Ссылка);
            Массив.Добавить(Структура);
            Выполнено = Истина;
                КонецЦикла;
        КонецЦикла;
    Если Массив.Количество() <> 0 Тогда
         Результат = Массив;
         Возврат Результат
    КонецЕсли;
    
    Возврат Результат;
    
КонецФункции
} Код
Если вар как то продолжить без изменения структуры кода подскажите в какую сторону искать.
(Почему я создал массив из наименований групп?
Потому что в номенклатуре есть еще группы первого
уровня в которые я заходить не хочу)
1 rphosts
 
05.01.21
10:31
Делать за тебя не буду, но подсказку дам:   "ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ (&Группа1)" выберет вообще всё с любой глубиной вложения папки Группа1.
Вторая подсказка: сделай пакетный запрос указав вместо Группа1 выборку из временной таблицы
2 acht
 
05.01.21
10:31
Что такое "вар"?
3 acht
 
05.01.21
10:32
"без изменения структуры кода" - Это как?
4 HelpMePlz
 
05.01.21
10:32
(2) вариант
5 HelpMePlz
 
05.01.21
10:34
(1) спасибо
6 HelpMePlz
 
05.01.21
10:35
(3) Ну то есть код который есть его не изменять а просто дописать к этому коду дополнение. Или просто не много изменить, но что бы суть логики осталась та же.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.