Имя: Пароль:
1C
1С v8
Массив в запросе
🠗 (Волшебник 15.12.2022 16:55)
0 Underwood
 
15.12.22
15:00
Добрый день! Необходимо получить значения из регистра накопления с отбором по регистратору (отбор по 3 типам документов). Работать решил с массивом...

Подскажите как передать нужное значение (тип документа) в массив.

Пытался передать тип документа через функцию ТИП(Документы.ИмяДокумента) Не получается...

                "ВЫБРАТЬ
        |    РегистПриходРасходСводная.Регистратор КАК Регистратор
        |ИЗ
        |    РегистрНакопления.РегистПриходРасходСводная КАК РегистПриходРасходСводная
        |ГДЕ
        |    РегистПриходРасходСводная.Регистратор В(&Массив)";
1 Волшебник
 
модератор
15.12.22
15:01
нужно так:

ГДЕ Регистратор ССЫЛКА Документ.Тип1
ИЛИ Регистратор ССЫЛКА Документ.Тип2
ИЛИ Регистратор ССЫЛКА Документ.Тип3
2 Волшебник
 
модератор
15.12.22
15:01
ещё хорошо бы регистр переименовать. За "РегистПриходРасходСводная" могут и побить
3 Kassern
 
15.12.22
15:01
(0) беда...
РегистПриходРасходСводная.Регистратор В(&Массив)"; - тогда вы должны не тип указывать, а массив из ссылок документов.
4 pasha_d
 
15.12.22
15:23
ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) В (ТИП(Документ.1), ТИП(Документ.2))
5 lodger
 
15.12.22
16:46
ещё так!

ВЫБРАТЬ
    РегистПриходРасходСводная.Регистратор
ИЗ
    РегистрНакопления.РегистПриходРасходСводная КАК РегистПриходРасходСводная
ГДЕ
    РегистПриходРасходСводная.Регистратор ССЫЛКА Документ.Тип1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    РегистПриходРасходСводная.Регистратор
ИЗ
    РегистрНакопления.РегистПриходРасходСводная КАК РегистПриходРасходСводная
ГДЕ
    РегистПриходРасходСводная.Регистратор ССЫЛКА Документ.Тип2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    РегистПриходРасходСводная.Регистратор
ИЗ
    РегистрНакопления.РегистПриходРасходСводная КАК РегистПриходРасходСводная
ГДЕ
    РегистПриходРасходСводная.Регистратор ССЫЛКА Документ.Тип3
6 polosov
 
15.12.22
16:49
(1) За такое и побить могут.
Правильный ответ в (5)
7 Гипервизор
 
15.12.22
16:51
А вдруг у этого регистра всего 4 типа регистратора? )
8 RomanYS
 
15.12.22
16:53
(6) типы давно уже доступны в запросах, чем (5) лучше (4)?
9 lodger
 
15.12.22
16:54
(7) это в условия задачи не входило. типов может быть от 3 и до бесконечности.
10 Волшебник
 
модератор
15.12.22
16:55
Такие запросы не имеют смысла, топлю ветку
11 Гипервизор
 
15.12.22
17:00
(8) Ну ссылка это логический оператор, для  условий и созданный.
12 mikecool
 
15.12.22
17:02
(8) 5 лучше тем, что нет "В"
13 Said_We
 
15.12.22
17:51
(12) Зато есть сканирование три раза одной и той же таблицы вместо одного. И текст запроса длиннее. Операция IN () достаточно быстрая, по сравнению с NOT IN(). Поэтому ничего плохого в IN нет.
14 kittystark
 
15.12.22
19:29
я за (5), но если возвращаться к постановке ТС, то можно так
ТипЗначения(Регистратор) В ( ТипЗначения(Значение(Документ.РТиУ.ПустаяСсылка)), ТипЗначения(Значение(Документ.ПТиУ.ПустаяСсылка)))
15 kittystark
 
15.12.22
19:32
а, блин увидел (4)...
16 magicSan
 
16.12.22
07:25
(5) походу не многие читают рекомендации 1С ))))
17 lodger
 
16.12.22
08:39
(16) 2. С другой стороны, не следует пытаться любой ценой перенести выполнение задачи в СУБД. СУБД обычно оптимизирует и выполняет простые запросы более эффективно, чем сложные.
18 Eiffil123
 
16.12.22
12:47
(12) экономия на спичках против снижения скорости чтения запроса программистом