(19) Есть поле с условием в запросе, Значение это "Отсрочка платежа":
Мне необходимо добавить после первого условия ещё одно, А именно Если Нал и НЕ Отсрочка платежа ТОГДА ИСТИНА
Делаю так,корректно ли это?:
ВЫБОР
КОГДА (Контрагенты.Код = "000001846"
ИЛИ Контрагенты.Код = "УТ0007192"
ИЛИ Контрагенты.Код = "УТ0006608"
ИЛИ Контрагенты.Код = "УТ0008180")
И НЕ РТУ.СвободныйТовар
ТОГДА ВЫБОР
КОГДА РТУ.ПрямаяДоставка
ТОГДА Заказ.ОплатаНал
И ВЫБОР
КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ИСТИНА
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА РТУ.Самовывоз
ИЛИ РТУ.Транзит
ТОГДА ВЫБОР
КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ИСТИНА
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ
ИНАЧЕ ЛОЖЬ
КОНЕЦ
ПоказатьМне необходимо добавить после первого условия ещё одно, А именно Если Нал и НЕ Отсрочка платежа ТОГДА ИСТИНА
Делаю так,корректно ли это?:
ВЫБОР
КОГДА (Контрагенты.Код = "000001846"
ИЛИ Контрагенты.Код = "УТ0007192"
ИЛИ Контрагенты.Код = "УТ0006608"
ИЛИ Контрагенты.Код = "УТ0008180")
И НЕ РТУ.СвободныйТовар
ТОГДА ВЫБОР
КОГДА РТУ.ПрямаяДоставка
ТОГДА Заказ.ОплатаНал
И ВЫБОР
КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ИСТИНА
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА РТУ.Самовывоз
ИЛИ РТУ.Транзит
ТОГДА ВЫБОР
КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ИСТИНА
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА Заказ.ОплатаНал
И ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ЛОЖЬ
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ
ПоказатьПо теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)логика работы конструкции
Выбор Когда Тогда Иначе Конец
равнозначна конструкции
Если ИначеЕсли Иначе КонецЕсли
Если остальную логику не поломает тот факт, что при не выполнении условий в ветке Когда в поле строки таблицы будет фигурировать значение типа булево вместо Null, то вариант верный.
Если остальную логику это поломает, то перенесите дополнительное условие в дополнительную ветку Когда.
Выбор Когда Тогда Иначе Конец
равнозначна конструкции
Если ИначеЕсли Иначе КонецЕсли
Если остальную логику не поломает тот факт, что при не выполнении условий в ветке Когда в поле строки таблицы будет фигурировать значение типа булево вместо Null, то вариант верный.
Если остальную логику это поломает, то перенесите дополнительное условие в дополнительную ветку Когда.
(4) Утрирую свою конструкцию и переделаю её на Если Тогда.. :
Мне же надо !:
Вот и всё. Подскажите пожалуйста.
Если Контрагенты.Код = "000001846"... Тогда
Некое Условие
Иначе
Ложь
Мне же надо !:
Если Контрагенты.Код = "000001846"... Тогда
Некое Условие
ИначеЕсли Нал и НЕ Отсрочка платежа ТОГДА
ИСТИНА
Иначе
Ложь
Вот и всё. Подскажите пожалуйста.
(1) Да, так делать можно. Но можно попробовать записать еще короче:
В общем конструкцию "...Иначе Выбор Когда..." можно заменить на еще одно "...Когда..."
ВЫБОР
КОГДА (Контрагенты.Код = "000001846"
ИЛИ Контрагенты.Код = "УТ0007192"
ИЛИ Контрагенты.Код = "УТ0006608"
ИЛИ Контрагенты.Код = "УТ0008180")
И НЕ РТУ.СвободныйТовар
ТОГДА ВЫБОР
КОГДА РТУ.ПрямаяДоставка
ТОГДА Заказ.ОплатаНал И НЕ ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ)
КОГДА РТУ.Самовывоз ИЛИ РТУ.Транзит
ТОГДА НЕ ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ)
ИНАЧЕ ЛОЖЬ
КОНЕЦ
ИНАЧЕ
Заказ.ОплатаНал И НЕ ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ)
КОНЕЦ
ПоказатьВ общем конструкцию "...Иначе Выбор Когда..." можно заменить на еще одно "...Когда..."
(14) Вижу у Вас такую конструкцию:
Если я был достаточно внимателен, то она равносильна предложенной мной:
ВЫБОР
КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ИСТИНА
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
Если я был достаточно внимателен, то она равносильна предложенной мной:
ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ЛОЖЬ
Ваш вариант не очень похож на рабочий.
Первое условие это - "ТОГДА ВЫБОР
КОГДА РТУ.ПрямаяДоставка" ?
Вообще в CASE разумно использовать логически связанные условия... у вас получается что то вроде
"Выбор КОГДА Рост = Большой
Тогда Хорошо
КОГДА Цвет = Зеленый
Тогда Хорошо
Иначе Плохо"
Такая запись эквивалентна условию ИЛИ для цвета и роста в одном КОГДА
В предложенном вами варианте доработки оператора CASE для РТУ.ПрямаяДоставка = Истина он в Иначе уже никогда не попадет
Первое условие это - "ТОГДА ВЫБОР
КОГДА РТУ.ПрямаяДоставка" ?
Вообще в CASE разумно использовать логически связанные условия... у вас получается что то вроде
"Выбор КОГДА Рост = Большой
Тогда Хорошо
КОГДА Цвет = Зеленый
Тогда Хорошо
Иначе Плохо"
Такая запись эквивалентна условию ИЛИ для цвета и роста в одном КОГДА
В предложенном вами варианте доработки оператора CASE для РТУ.ПрямаяДоставка = Истина он в Иначе уже никогда не попадет
(5)(4) Утрирую свою конструкцию и переделаю её на Если Тогда.. :
Мне же надо !:
Вот и всё. Подскажите пожалуйста.
Если Контрагенты.Код = "000001846"... Тогда
Некое Условие
Иначе
Ложь
Мне же надо !:
Если Контрагенты.Код = "000001846"... Тогда
Некое Условие
ИначеЕсли Нал и НЕ Отсрочка платежа ТОГДА
ИСТИНА
Иначе
Ложь
Вот и всё. Подскажите пожалуйста.
Можете попробовать просто соединить первое условие с новыми вводными:
ВЫБОР
КОГДА НЕ (Заказ.ОплатаНал
И ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ЛОЖЬ) И
((Контрагенты.Код = "000001846"
ИЛИ Контрагенты.Код = "УТ0007192"
ИЛИ Контрагенты.Код = "УТ0006608"
ИЛИ Контрагенты.Код = "УТ0008180")
И НЕ РТУ.СвободныйТовар)
ТОГДА ВЫБОР
КОГДА РТУ.ПрямаяДоставка
ТОГДА Заказ.ОплатаНал
И ВЫБОР
КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ИСТИНА
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА РТУ.Самовывоз
ИЛИ РТУ.Транзит
ТОГДА ВЫБОР
КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ИСТИНА
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА Заказ.ОплатаНал
И ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ЛОЖЬ
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ
ВЫБОР
КОГДА НЕ (Заказ.ОплатаНал
И ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ЛОЖЬ) И
((Контрагенты.Код = "000001846"
ИЛИ Контрагенты.Код = "УТ0007192"
ИЛИ Контрагенты.Код = "УТ0006608"
ИЛИ Контрагенты.Код = "УТ0008180")
И НЕ РТУ.СвободныйТовар)
ТОГДА ВЫБОР
КОГДА РТУ.ПрямаяДоставка
ТОГДА Заказ.ОплатаНал
И ВЫБОР
КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ИСТИНА
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА РТУ.Самовывоз
ИЛИ РТУ.Транзит
ТОГДА ВЫБОР
КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ИСТИНА
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА Заказ.ОплатаНал
И ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, ЛОЖЬ) = ЛОЖЬ
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ
Вот в понятной вам форме:
Если НЕ( Нал и НЕ Отсрочка)
И ( платежаКонтрагенты.Код = "000001846"... )Тогда
Некое Условие
ИначеЕсли Нал и НЕ Отсрочка платежа ТОГДА
ИСТИНА
Иначе
Ложь
Добавьте в первое условие инверсное ваше дополнительное...
А в иначе прямое ваше дополнительное.
Смысл в том чтобы связать ваше доп условие с первым
Если НЕ( Нал и НЕ Отсрочка)
И ( платежаКонтрагенты.Код = "000001846"... )Тогда
Некое Условие
ИначеЕсли Нал и НЕ Отсрочка платежа ТОГДА
ИСТИНА
Иначе
Ложь
Добавьте в первое условие инверсное ваше дополнительное...
А в иначе прямое ваше дополнительное.
Смысл в том чтобы связать ваше доп условие с первым
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот