|   |   | 
| 
 | Почему выражение ПустаяСсылка <> ПустаяСсылка возвращает истину? | ☑ | ||
|---|---|---|---|---|
| 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 ? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |