Имя: Пароль:
1C
1С v8
как проверить логическими операторами список условий
0 na1kk
 
10.05.18
14:38
Добрый день!
Нужно, чтобы после выборки перебиралась номенклатура, и если в условие = ложь, то проваливаться в это условие

было вот так:

Если ВыборкаНоменклатура.Номенклатура.ЕдиницаДляОтчетов.ЕдиницаПоКлассификатору.Код = "196" И НЕ ВыборкаНоменклатура.Номенклатура.ПринадлежитЭлементу(Справочники.Номенклатура.НайтиПоКоду("0245")) Тогда

а нужно добавить еще

НЕ ВыборкаНоменклатура.Номенклатура.ПринадлежитЭлементу(Справочники.Номенклатура.НайтиПоКоду("К0244"))

Если пишу вот так

Если ВыборкаНоменклатура.Номенклатура.ЕдиницаДляОтчетов.ЕдиницаПоКлассификатору.Код = "796" И (НЕ ВыборкаНоменклатура.Номенклатура.ПринадлежитЭлементу(Справочники.Номенклатура.НайтиПоКоду("00000000224")) ИЛИ НЕ ВыборкаНоменклатура.Номенклатура.ПринадлежитЭлементу(Справочники.Номенклатура.НайтиПоКоду("К0000003244")))

то будет хрень, т.к. Истина И Истина или Ложь = Истина

Думаю засунуть все в массив, только хочу его потом перебирать,т.к. уже будет цикл в цикле
1 na1kk
 
10.05.18
14:39
*только НЕ хочу его потом перебирать
2 Любопытная
 
10.05.18
14:40
А ВыборкаНоменклатура откуда берется? Почему при формировании выборки сразу не отсеять всё лишнее?
3 na1kk
 
10.05.18
14:42
(2) из запроса тянется, но там запрос весь разрезан на разные куски и соединяется в зависимости от условий
4 Lexey_
 
10.05.18
14:45
(3) и?
5 Timon1405
 
10.05.18
14:46
(3) Дописать в конце запроса "ГДЕ ... прошлые условия и &МоеУсловие"
Потом СтрЗаменить(Текст,&МоеУсловие,"текст условия")
или СтрЗаменить(Текст,&МоеУсловие,"Истина") если условие применять не нужно
6 na1kk
 
10.05.18
14:47
(4) Есть еще ИНАЧЕ и там отрабатывается другие условия
7 sandal_r
 
10.05.18
14:48
убрать скобки, вместо ИЛИ использовать И
8 na1kk
 
10.05.18
14:49
(7) тогда номенклатура из выборке не будет вообще попадать в условие, т.к. номенклатура не может быть в одной и той же группе
9 Волшебник
 
10.05.18
14:50
В ИЕРАРХИИ(&СписокГрупп)
10 na1kk
 
10.05.18
14:52
(9) тогда отберет в запросе только то, что в списке. А мне нужно и с другими номенкл.работать, которые не находятся в этих группах
11 Волшебник
 
10.05.18
14:53
(10) В ИЕРАРХИИ(&СписокГрупп) И НЕ В ИЕРАРХИИ(&СписокГруппИскл)
12 hhhh
 
10.05.18
14:53
(10) какой вы привередливый.
13 Волшебник
 
10.05.18
14:54
(12) Действительно.
(10) Вам надо, Вы и делайте.
14 sandal_r
 
10.05.18
14:55
(8) у вас условие
Если ЕдиницаИзмерения И НЕ "В группе1" И НЕ "В группе2"

если номенклатура из выборки не находится ни в группе1 ни в группе2 то условие сработает
15 Любопытная
 
10.05.18
14:55
Не, надо флаг рисовать

Выбор когда не Номенклатура в иерархии(&МассивГрупп)
Тогда ИдемНаправо
Иначе ИдемНалево
Конец

И потом проверяем в какую сторону у нас номенклатура поворачивает.
16 na1kk
 
10.05.18
14:55
(13) )))) да я то чего) поставили задачу, сказали добавь еще условие, там делов на 5 минут, вот думаю уже пару часов
17 Timon1405
 
10.05.18
14:55
(10) добавьте в запрос новое поле и там через "выбор когда походит под условие тогда истина иначе ложь" напишите ваши условия потом при обходе выборки будете анализировать только это поле, а не делать запрос в цикле "принадлежит элементу"
18 na1kk
 
10.05.18
14:56
(14) сработает, только есть номеклатура которая находится в группе
19 na1kk
 
10.05.18
15:00
с массивом никаких идей нет?
20 sandal_r
 
10.05.18
15:00
(18) так а что тогда отсечь надо?

Сначала отсекалась номенклатура с ед.изм. и в группе1.
Теперь попросили добавить чтобы отсекалась с такой же ед.изм и в группе2? Или просто, которая в группе2?
21 na1kk
 
10.05.18
15:03
(20) например: запрос формирует:
карандаш,   -группа 1  сумма 100
ручка, -группа 2       сумма 200
стол -группа 3         сумма 500

Если номенклатура входит в группу 1 тогда
сумма = 100 + 200 (тут делаем какое-то действие)
Иначе
Сумма = 500/ 5 ( и тут с оставшиеся номенклатурой делаем действие)
22 na1kk
 
10.05.18
15:04
только ручка в группе 1
23 sandal_r
 
10.05.18
15:09
(22) один из нас хорошо отметил День Победы...

почему ручка в группе1, если запрос показывает "ручка, -группа 2"?

вы бы уже выложили текст старшного запроса, и вам бы тыкнули в каком нужном месте что вставить
24 Михаил Козлов
 
10.05.18
15:14
Если единица="196" И НЕ (номенлатуравГруппе("0245") ИЛИ номенклатураВГруппе("К0244")) Тогда...
(лень было длинные имена писать).
И еще: не ищите в цикле группы "0245" и "К0244" по коду: найдите сразу и проверяйте.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший