Имя: Пароль:
1C
 
Глюк платформы или расширения? ПредопределенноеЗначение()
0 ponaroshku
 
15.05.18
10:19
Добрый день! Платформа 8.3.11.2867

Есть блок, вынесенный в расширение, там добавлен код (сегодня, поэтому как ранее было не могу сказать, работало ли)

Если Контрагент = ПредопределенноеЗначение("Справочник.Контрагенты.ПустаяСсылка") Тогда

Так вот
Смотрим в табло
Контрагент - пустая ссылка справочника контрагенты
Предопределенное значение - пустая ссылка справочника контрагенты

но условие не выполняется

Если написать явно Контрагент = Справочник.Контрагенты.ПустаяСсылка()
Возвращает Истина


Я посмотрела сервис публикации ошибок, явного упоминания данной ошибки не нашла

Предполагаю, что это из-за того, что блок в расширении, потому что ПредопределенноеЗначение() активно используется в самой конфигурации

Вопрос:
это ошибка платформы или особенности расширения?

В СП написано Результат выполнения кэшируется при первом обращении до изменения конфигурации или версии платформы.

Разница в кэшировании конфигурации/расширения?
1 mehfk
 
15.05.18
10:32
Справочник "Контрагенты" добавлен в расширение?
2 ponaroshku
 
15.05.18
10:39
(1) да
3 RomanYS
 
15.05.18
10:45
>>но условие не выполняется
Неверный вывод. Вставь в табло (Контрагент = ПредопределенноеЗначение("Справочник.Контрагенты.ПустаяСсылка"))

Скорее не выполняется код вообще, или выполняется не этот код. Почисть кэш для начала.
4 mehfk
 
15.05.18
10:47
Вообще, у меня такое впечатление, что я то-ли сам на это наталкивался, то-ли читал об этом где-то. В смысле, что это платформа чудит и обходить нужно именно так: Справочник.Контрагенты.ПустаяСсылка()

Проверю в течении часа.
5 mszsuz
 
15.05.18
10:48
Это ошибка платформы. Написали, что исправили в 8.3.11.2924.
https://bugboard.v8.1c.ru/error/000038192.html
6 ponaroshku
 
15.05.18
10:48
(3) код выполняется
не выполняется именно условие
Хотя контрагент - пустая ссылка, если в отладчике посмотреть
и ПредопределенноеЗначение() - пустая ссылка

Однако пустаяссылка не равно пустаяссылка
7 ponaroshku
 
15.05.18
10:49
(5) спасибо, добрый человек!
мне не попалось в багрепорте, но я смотрела конкретно по этой платформе
Спасибо много-много раз!
8 mszsuz
 
15.05.18
10:49
(+5) Тем не менее, у меня воспроизводилась и на более поздних версиях с заимствованными перечислениями
9 ponaroshku
 
15.05.18
10:51
(8) буду внимательнее

(4) спасибо, ошибка все же
10 hhhh
 
15.05.18
11:06
(9) вообще-то правильно писать

Если НЕ ЗначениеЗаполнено(Контрагент)

что-то вы учудили, сравнивать с пустой ссылкой да еще ее откуда-то там вытаскивать.
11 Buster007
 
15.05.18
11:07
+(10) прям с пальцев снял ))
12 Buster007
 
15.05.18
11:09
+(11) можно предположить, конечно, что там такой алгоритм продвинутый, который завязан на пустые ссылки

Если условие1 тогда
Контрагент = ПредопределенноеЗначение("Справочник.Контрагенты.ПустаяСсылка");
Иначе
Контрагент = ПредопределенноеЗначение("Справочник.Партнеры.ПустаяСсылка");
КонецЕсли

...
а потом
Если Контрагент = ПредопределенноеЗначение("Справочник.Контрагенты.ПустаяСсылка") Тогда
тогда не прокатит Значение заполнено
13 ponaroshku
 
15.05.18
11:13
(10) (11) это упрощенный пример для понимания сути проблемы, не более

Я ценю время других людей, поэтому упрощаю вопросы, не нагружая их лишними деталями
Закон Брукера: Даже маленькая практика стоит большой теории.