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