Имя: Пароль:
1C
1С v8
Вопрос по синтаксису запроса 1С 8.3.
0 new_hope
 
27.03.19
13:25
Есть простой запрос:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаЕстьОборотДт,
    ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаЕстьОборотКт,
    ХозрасчетныйОбороты.Субконто1,
    ХозрасчетныйОбороты.Субконто2
ПОМЕСТИТЬ ИсходнаяТаблица
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(
            &ДатаНачНеделя,
            &ДатаКон,
            ,
            Счет В ИЕРАРХИИ (&Счет),
            ,
            Субконто1 В (&ВсеСчета)
                И Субконто2 НЕ В (&Субконто2_ПеречислениеНаДругойРР)
                И Организация = &Организация,
            ,
            ) КАК ХозрасчетныйОбороты


У меня вопрос по строке:
"И Субконто2 НЕ В(&Субконто2_ПеречислениеНаДругойРР)" - в таком виде Конструктор ругается на синтаксис (запрос отрабатывает)
"И НЕ Субконто2 В(&Субконто2_ПеречислениеНаДругойРР)" - конструктор не ругается, запрос также отрабатывает

В результате я получаю результат запроса одинаковые.
Задача - получить результат, куда НЕ входят значения из СпискаЗначений "Субконто2_ПеречислениеНаДругойРР"
Или так? : "И НЕ (Субконто2 В(&Субконто2_ПеречислениеНаДругойРР))"

Все три варианта верные и всегда будет одинаковый результат?

Спасибо за совет
1 Ёпрст
 
27.03.19
13:37
(0) да.
2 Ёпрст
 
27.03.19
13:38
но если тебе конструктор нужн, то вариант 2
3 new_hope
 
27.03.19
13:40
(2) Благодарю... Меня конструктор и ввел в заблуждение...и возникли сомнения, что может в какойто-момент выскочить непредвиденный результат.
4 fisher
 
27.03.19
13:58
Классический синтаксис использования НЕ как булевого оператора предполагает что за ним идет булево. Конструктор этому и следует. И я всегда стараюсь именно так и писать. Другое дело, что синтаксис запросов идет навстречу и допускает не совсем каноничную, но более "человекочитаемую" конструкцию.