|
Почему выражение ПустаяСсылка <> ПустаяСсылка возвращает истину? | ☑ | ||
---|---|---|---|---|
0
Momus
27.02.23
✎
16:32
|
https://pastenow.ru/b419779c5473afa21a52ec0f8dda461b
Выражение ПроверяемыйОбъект[ИмяПоля] <> Ссылка[ИмяПоля] возвращает истину, где ПроверяемыйОбъект[ИмяПоля] - пустая ссылка справочника, Ссылка[ИмяПоля] - пустая ссылка этого же справочника |
|||
1
trdm
27.02.23
✎
16:37
|
Не даром же пустаяСсылка - это метод менеджеров, а не глобального объекта.
|
|||
2
Momus
27.02.23
✎
16:37
|
ПроверяемыйОбъект - ДокументОбъект уже ранее записанный, но возможно измененный (Организация из скриншота не меняется).
|
|||
3
Волшебник
модератор
27.02.23
✎
16:37
|
Надо проверять так:
Если ссылка.Пустая() Тогда |
|||
4
Momus
27.02.23
✎
16:39
|
(3) это в моем случае вышло так, что проверяемый реквизит - пустая ссылка. Вообще это типовой код ДО 2.1, проверяющий изменения реквизитов до и после записи
|
|||
5
Garykom
гуру
27.02.23
✎
16:40
|
(3) Надо проверять так:
Если НЕ ЗначениеЗаполнено(ссылка) Тогда |
|||
6
Momus
27.02.23
✎
16:40
|
т.е. это не баг, а фича и для пустые ссылки нельзя сравнивать?
|
|||
7
Momus
27.02.23
✎
16:40
|
две пустые ссылки*
|
|||
8
Garykom
гуру
27.02.23
✎
16:42
|
(6) (7) имхо поведение не определено
тупо не реализована equals функция |
|||
9
Momus
27.02.23
✎
16:45
|
(8) странно, что это в типовом ДО. Код должен проверять изменения подписанного файла. Получается, что эта проверка никогда не срабатывает, кроме тех случаев, когда вообще все реквизиты заполнены и пустые ссылки не сравниваются)
|
|||
10
Hmster
27.02.23
✎
16:45
|
Может у тебя ИмяПоля это 2 разные переменные?
|
|||
11
Momus
27.02.23
✎
16:46
|
(10) на скрине видно, что нет
|
|||
12
Garykom
гуру
27.02.23
✎
16:48
|
(0) Мне у тебя на скрине очень не нравится "Ссылка[ИмяПоля]"
Иногда Ссылка может быть в модуле служебным и перекрываться с неопределенным поведением |
|||
13
Hmster
27.02.23
✎
16:48
|
(11) ПроверяемыйОбъект["Организация"] <> Ссылка["Организация"]. Так что получается? визуально может выглядеть как одна переменная но бывает буквы меняют на другой язык
|
|||
14
Momus
27.02.23
✎
16:51
|
(13) Да, так. Выражение "ПроверяемыйОбъект["Организация"] <> Ссылка["Организация"]" возвращает тоже истину
|
|||
15
Momus
27.02.23
✎
16:52
|
(12) Ссылка в данном случае - это параметр процедуры общего модуля
|
|||
16
Garykom
гуру
27.02.23
✎
16:53
|
А ПроверяемыйОбъект и Ссылка что такое?
Какой тип имеют? |
|||
17
Garykom
гуру
27.02.23
✎
16:55
|
И да ты надеюсь в курсе что .ПустаяСсылка() менеджера и .Ссылка незаписанного элемента это две разные вещи?
Хотя .Ссылка незаписанного тоже "пустая" |
|||
18
Momus
27.02.23
✎
16:56
|
(16) ПроверяемыйОбъект - ДокументОбъект уже ранее записанный, но возможно измененный (Организация из скриншота не меняется).
Ссылка - ДокументОбъект.Ссылка, переданный в общий модуль в качестве параметра |
|||
19
Momus
27.02.23
✎
16:58
|
(17) Думаю это ключ к решению. Я меняю только номер документа, но возможно разработчики меняют также, например, организацию, даже если она не изменилась.
|
|||
20
Momus
27.02.23
✎
17:00
|
(19) Так и есть. Всем спасибо
|
|||
21
Hmster
27.02.23
✎
17:00
|
А если это сначала загнать в переменные
Перменная1 = ПроверяемыйОбъект[ИмяПоля]; Перменная2 = Ссылка[ИмяПоля]; И Проверить Перменная1 = Перменная2 Перменная1 <> Перменная2 Не Перменная1 = Перменная2 ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |