Имя: Пароль:
1C
1С v8
Выбор Элемента из Справочника по нескольким условиям
0 Pyryrym
 
16.08.20
17:29
Можно ли в 1С производить поиск в справочнике по нескольким условиям? Например, зная группу, искать элемент только в этой группе.
1 МихаилМ
 
16.08.20
17:31
да. можно.
2 Pyryrym
 
16.08.20
17:32
А каким образом можно? Просто я не уверен, будет ли это лучше по производительности?
3 osa1C
 
16.08.20
17:39
(0)

СсылкаНаРодителя = Справочники.Вкусы.НайтиПоНаименованию("Любимые");


    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   Наименование
        |ИЗ
        |   Справочник.Вкусы КАК Вкусы
        |ГДЕ
        |   Вкусы.Родитель = &Родитель";

    Запрос.УстановитьПараметр("Родитель", СсылкаНаРодителя);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаВкусов = РезультатЗапроса.Выбрать();

    Пока ВыборкаВкусов.Следующий() Цикл
        Сообщить(ВыборкаВкусов.Наименование);
    КонецЦикла;
4 Pyryrym
 
16.08.20
17:43
Спасибо огромное
5 Pyryrym
 
16.08.20
18:29
(3) А не подскажешь, в чем может быть проблема? Строка.Группа содержит название группы

    Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
                    |    Номенклатура.Наименование КАК Наименование
                    |ИЗ
                    |    Справочник.Номенклатура КАК Номенклатура
                    |ГДЕ
                    |    Номенклатура.Родитель = &Родитель";
    
    Запрос.УстановитьПараметр("Родитель", Строка.Группа);
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл                           //на этой строчке отладчик пишет, что Выборка.Наименование - "Ошибка чтения запроса"
    Сообщить(Выборка.Наименование);    
    КонецЦикла;
6 osa1C
 
16.08.20
18:47
(5) Думаю что  Строка.Группа содержит текстовое значение, а нужна ссылка на группу. Попробуй:

СсылкаНаРодителя = Справочники.Вкусы.НайтиПоНаименованию(Строка.Группа");

Запрос.УстановитьПараметр("Родитель", СсылкаНаРодителя);
7 osa1C
 
16.08.20
18:48
+ (6) Кавычку только в конце не надо )))
8 Pyryrym
 
16.08.20
18:55
(6) Не помогло(
9 youalex
 
16.08.20
18:57
(5) >>Пока Выборка.Следующий() Цикл

До первого выполнения метода Следующий() и должно так писать.
Внутри цикла же этой ошибки нет? И при втором проходе?
10 osa1C
 
16.08.20
18:59
(8) покажи откуда ты эту Строку берешь
11 Pyryrym
 
16.08.20
19:03
(10) (9) Работает, просто у меня там еще одна ошибка была, которая выскакивала сразу после цикла. Сейчас все нормально, спасибо, всех обниммаю (9) (9)