Имя: Пароль:
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) Ну то есть код который есть его не изменять а просто дописать к этому коду дополнение. Или просто не много изменить, но что бы суть логики осталась та же.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший