Всем привет!
Дорабатываю самописную конфу и наткнулся на такое условие, оставшееся от предыдущего программиста (он давно уволился):
Строка общая (строкобщ) это объединение строк праваНаДоки (длина 1000) и праваНаСправочники ( длина 1000) единичка означает истину.
Буду всё грохать и писать по новой.
Но не даёт покоя понять логику этого условия, как оно отрабатывает?
В отладчике : СтрНайти(строкобщая,"1") =5 , получается: 5>1000<2001 общий результат истина.
Меняю: 1001 > 1000 < 2001 результат истина.
Дорабатываю самописную конфу и наткнулся на такое условие, оставшееся от предыдущего программиста (он давно уволился):
Если СтрНайти(строкобщая,"1") > 1000 < 2001 Тогда
ТекущийОбъект.ПраваСтрокаСпр = Сред(строкобщая,1001,1000);
КонецЕсли;
Строка общая (строкобщ) это объединение строк праваНаДоки (длина 1000) и праваНаСправочники ( длина 1000) единичка означает истину.
Буду всё грохать и писать по новой.
Но не даёт покоя понять логику этого условия, как оно отрабатывает?
В отладчике : СтрНайти(строкобщая,"1") =5 , получается: 5>1000<2001 общий результат истина.
Меняю: 1001 > 1000 < 2001 результат истина.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(9) Именно так, и поэтому правильный ответ приведен в (2), где выражение разбирается слева направо.
Нет, в данном случае переменной будет являться "УсловиеЕсли", а "УсловиеПредоплата" будет уже частью выражения. И если оно не равно булеву или 0/1 - то вылетит ошибка приведения к типу "Булево".
УсловиеЕсли = СтрНайти(строкобщая,"1") > 1000 < 2001;
УсловиеЕсли = УсловиеПредоплата = Объект.ТипОплаты = Перечисления.ТипыОплат.Предоплата;
(9) Например, ждем в "Переменная" структуру с ключом "Ключ структуры".
Попробуйте прочитать условие справа налево при Переменная = "ББ" или при отстутсвии в структуре ключа "КлючСтруктуры":
Попробуйте прочитать условие справа налево при Переменная = "ББ" или при отстутсвии в структуре ключа "КлючСтруктуры":
Если ТипЗнч(Переменная) = Тип("Структура") И Переменная.Свойство("КлючСтруктуры") И Переменная.КлючСтруктуры = "ААА" Тогда
(15) Ну и откуда система знает откуда ей проверять - справа или слева? Ответ прост: система ничего не знает, зато программист знает порядок вычисления, когда пишет логические выражения.
И именно поэтому мой пример абсолютно корректен, нагляден, и (о боже) работоспособен.
И именно поэтому мой пример абсолютно корректен, нагляден, и (о боже) работоспособен.
(14)
А вот присвавание видимо всегда в очереди последнее.
Может потому что присваивание - это не часть вычисляемого выражения, а получение результата вычисления? Естественно ,что сначала высчитывается результат, и только потом он присваиваевается переменной (в случае необходимости). Например, при использовании "Если..." присваивания нет, поэтому просто анализируется непосредственный результат вычисления.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот