Добрый день! Вопрос простой, но задача срочная. В ближайшее время знания заполню благодарю курсам, но сейчас задача следующая: необходимо задать отбор по Группе материала, по 4 группам. Каким образом можно задать эти группы для отбора? Понимаю, что в запросе надо каким-то образом это задать, но как пока не знаю. или наоборот, как-то в запрос передать эти группы, которые надо найти по коду. Подскажите, пожалуйста

```1c
    "ВЫБРАТЬ
    | пто_Материалы.Код КАК Код,
    | пто_Материалы.Наименование КАК Наименование,
    | пто_Материалы.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | пто_Материалы.ГруппаМатериалов КАК ГруппаМатериалов
    |ИЗ
    | Справочник.пто_Материалы КАК пто_Материалы
    |ГДЕ
    | пто_Материалы.ГруппаМатериалов = &ГруппаМатериалов";
```
---
все так оторвано от реальной задачи
(ведь коды товаров тоже где-то берете, в запрос сразу таблицы можно передавать)

```1c
    лкМассивКодов = Новый Массив;
    лкМассивКодов.Добавить(Код1);
    лкМассивКодов.Добавить(Код2);
    и т.д. или как там у вас

    Запрос.УстановитьПараметр("МассивКодов ", лкМассивКодов);
```

тогда запрос такой

```1c
    "ВЫБРАТЬ
    | пто_Материалы.Код КАК Код,
    | пто_Материалы.Наименование КАК Наименование,
    | пто_Материалы.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | пто_Материалы.ГруппаМатериалов КАК ГруппаМатериалов
    |ИЗ
    | Справочник.пто_Материалы КАК пто_Материалы
    |ГДЕ
    | пто_Материалы.ГруппаМатериалов.Код в ( &МассивКодов ) ";
```
---
Если хотите передать массив в виде одного параметра, то:

```1c
    МассивЗначений = Новый массив;

    МассивЗначений.Добавить(Справочник.Материалы.НайтиПоКоду(Код1));
    МассивЗначений.Добавить(Справочник.Материалы.НайтиПоКоду(Код2));
    МассивЗначений.Добавить(Справочник.Материалы.НайтиПоКоду(Код3));

    Запрос.УстановитьПараметр("ГруппаМатериалов", МассивЗначений);
```

Если разными параметрами, то:

```1c
    Запрос.УстановитьПараметр("ГруппаМатериалов1", Справочник.Материалы.НайтиПоКоду(Код1));
    Запрос.УстановитьПараметр("ГруппаМатериалов2", Справочник.Материалы.НайтиПоКоду(Код2));
    ............
    Запрос.УстановитьПараметр("ГруппаМатериаловN", Справочник.Материалы.НайтиПоКоду(КодN));
```
---
Либо делайте параметр массивом и в тексте запроса

```1c
    |ГДЕ
    | пто_Материалы.ГруппаМатериалов В (&ГруппаМатериалов)
```

Либо можно по одному значению задавать, в этом случае текст запроса будет:

```1c
    |ГДЕ
    | пто_Материалы.ГруппаМатериалов В (&ГруппаМатериалов1, &ГруппаМатериалов2, ......)
```
---
А получается в установить параметр в значение что писать? Справочники.Материалы.найтиПокоду.код?
---
Если хотите передать массив в виде одного параметра, то:

```1c
    МассивЗначений = Новый массив;

    МассивЗначений.Добавить(Справочник.Материалы.НайтиПоКоду(Код1));
    МассивЗначений.Добавить(Справочник.Материалы.НайтиПоКоду(Код2));
    МассивЗначений.Добавить(Справочник.Материалы.НайтиПоКоду(Код3));

    Запрос.УстановитьПараметр("ГруппаМатериалов", МассивЗначений);
```

Если разными параметрами, то:

```1c
    Запрос.УстановитьПараметр("ГруппаМатериалов1", Справочник.Материалы.НайтиПоКоду(Код1));
    Запрос.УстановитьПараметр("ГруппаМатериалов2", Справочник.Материалы.НайтиПоКоду(Код2));
    ............
    Запрос.УстановитьПараметр("ГруппаМатериаловN", Справочник.Материалы.НайтиПоКоду(КодN));
```
---
МассивЗначений = Новый массив;

МассивЗначений.Добавить(Справочник.Материалы.НайтиПоКоду(Код1));
МассивЗначений.Добавить(Справочник.Материалы.НайтиПоКоду(Код2));
МассивЗначений.Добавить(Справочник.Материалы.НайтиПоКоду(Код3));

Запрос.УстановитьПараметр("ГруппаМатериалов", МассивЗначений);

Спасибо, так и думал сделать, просто сомневался, что не пойдёт
---
C позиций методологии 1С такой подход абсолютно неприемлем, так ка каждый оператор НайтиПоКоду обращается к серверу столько раз сколько раз вы его напишите. Грамотный подход описан в (10) - там ваша программа обратится к серверу только один раз, тем самым экономя время выполнения ресурсы системы.
---
Вы абсолютно правы. Я своим сообщением хотел показать принцип.
Думаю, ТС реализует свое решение правильно.
---
курсамДобрый день. Какие курсы собрались проходить?
Тоже собрался изучить изучить, а скорей всего вспомнить Язык запросов и СКД.
---
https://infostart.ru/courses/1410322/ вроде как эти крутые. На этот поток не успел из-за финансов, подкоплю и буду следующий ждать
---
так ты цену видел 7500, дорого. Говорят на Курс по 1С-рф хорошие. https://xn----1-bedvffifm4g.xn--p1ai/1c-v8/development-optimize-queries/
---
Эти глядел, вроде как уже староваты. Хотя не думаю, что космос поменялся с момента выпуска
---
Хочешь сделаю тебя подарок по старой дружбе). У меня есть эти курсы и могу скинуть тебе на почту. Как ты на это смотришь?
---
Сообщение было скрыто модератором.
---
Но не просто так, а за "Спасибо" :)
---
Сообщение было скрыто модератором.
---
8.3 оно и в Африке 8.3. Так что прошло 6 лет а может и больше и ничего точно не изменилось. Вот когда было 8.2, то тут есть незначительные изменения, но они как мне кажется не коснулись самого синтаксиса выражений в запросе, то может немного общего процедуры при обходе результата
---
Помимо этих курсов, есть еще одни, тоже не менее интересные, но немного по старее.
---
инфостарт затирает сообщения с электронкой )))))
---
да, он затирает из-за того что после собачки идет. отлавливает такие сообщения.
---
наглядное объяснение всего того, что писали джентльмены в этой теме на видео с 28:05 минуты.
---
попробуйте так

     | Справочник.пто_Материалы КАК пто_Материалы
        |ГДЕ
        | пто_Материалы.ГруппаМатериалов в ( &ГруппаМатериалов ) ";
---
Справочник.пто_Материалы КАК пто_Материалы
|ГДЕ
| пто_Материалы.Групп

А потом стандартно делаю Массив.Добавить и далее заполняю его?
---
спи = новый списокзначений;
спи.добавить
...
установить параметр спи
что-то так примерно
---
Интересно, и главное все рабочие алгоритмы"!
---
все так оторвано от реальной задачи
(ведь коды товаров тоже где-то берете, в запрос сразу таблицы можно передавать)

```1c
    лкМассивКодов = Новый Массив;
    лкМассивКодов.Добавить(Код1);
    лкМассивКодов.Добавить(Код2);
    и т.д. или как там у вас

    Запрос.УстановитьПараметр("МассивКодов ", лкМассивКодов);
```

тогда запрос такой

```1c
    "ВЫБРАТЬ
    | пто_Материалы.Код КАК Код,
    | пто_Материалы.Наименование КАК Наименование,
    | пто_Материалы.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | пто_Материалы.ГруппаМатериалов КАК ГруппаМатериалов
    |ИЗ
    | Справочник.пто_Материалы КАК пто_Материалы
    |ГДЕ
    | пто_Материалы.ГруппаМатериалов.Код в ( &МассивКодов ) ";
```
---
Спасибо!