Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Чудеса на виражах! Глюк в вычислении логического выражения. (http://forums.kuban.ru/f1040/chudesa_na_virazhah_glyuk_v_vychislenii_logicheskogo_vyrazheniya-2115128.html)

Billi 26.01.2012 10:14

Чудеса на виражах! Глюк в вычислении логического выражения.
 
Имеем 8.2.14.540 файловая, рдп.
ЗУП 2.5.45.3
Модуль документа ОтражениеЗарплатыВРеглУчете
Процедура КорректноеСочетаниеСчетовНУ

В процедуре еслть строки:
Если (СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда или СчетКт = ПланыСчетов.Хозрасчетный.РасчетыПоВыплатеДоходов)
и Не (ПризнакСтатьиЗатрат = Перечисления.ОтнесениеРасходовКДеятельностиЕНВД.РасходыОтносятсяКЕНВД)
и (СчетДт <> ПланыСчетов.Хозрасчетный.РезервыПредстоящихРасходов)Тогда

Сообщение = "Не указан счет налогового учета!";

КонецЕсли;

Отладчик показывает, что логическое выражение равно Ложь.
Но условие отрабатывает по Истина.

Что за чудеса?

NickLon 26.01.2012 10:28

(0) А в первом "или" это опечатка - отсутствие скобок? или так и есть в коде?

Billi 26.01.2012 10:30

Отбой, чудес не бывает :)))))
Новый год прошёл :)

Uho 26.01.2012 10:30

2-NickLon > и зачем там скобки?

VZ 26.01.2012 10:35

4-Uho > "Ничто не стоит так дешево, как скобки. И ничто так неэффективно для предотвращения ошибок, как скобки"
Старинное наставление по Алголу-60.

VZ 26.01.2012 10:37

=5 Поправка: так неэффективно -> так эффективно
По памяти :)

NickLon 26.01.2012 10:46

(4) Ну разве вот здесь: [em](СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплат еТруда или СчетКт = ПланыСчетов.Хозрасчетный.РасчетыПоВыплатеДоходов)[/em] не надо сделать так: (СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплат еТруда) или (СчетКт = ПланыСчетов.Хозрасчетный.РасчетыПоВыплатеДоходов) и потом, если что-то одно должно выдать истину это всё тоже в скобки заключить?

Uho 26.01.2012 10:54

6-VZ > [quote=VZ;22890935]По памяти :) [/quote] по Фрейду :)
7-NickLon > нет, не надо


Текущее время: 09:34. Часовой пояс GMT +3.