Не спишите писать Значение(Справочник.Номенклатура.ПустаяССылка)
Вопрос вот в чем. Есть реквизит с составным типом данных.
Он может принимать как значение пустой ссылки одного из типов данных (которые ему доступен) так и значение НЕОПРЕДЕЛЕННО
Как в запросе проверить заполнен ли этот реквизит?
Выражение типа:
ВЫБОР КОГДА Реквизит = Значение(Справочник.Номенклатура.ПустаяССылка) Тогда
"Пустой"
Иначе
"Не пустой"
Конец
ВЫБОР КОГДА Реквизит = Значение(Справочник.Номенклатура.ПустаяССылка) ИЛИ
Реквизит = Значение(Справочник.Номенклатура1.ПустаяССылка) ИЛИ
Реквизит = Значение(Справочник.Номенклатура2.ПустаяССылка) ИЛИ
Реквизит = Неопределено Тогда
"Пустой"
Иначе
"Не пустой"
Конец
Не годится - нужен универсальный метод - Вы не знаешь состав
NULL
А причем тут NULL если я говорю про не заполненное значение?
Значение ЕСТЬ - как его проверить на заполненность ?
А что, если попробовать выразить значение в строку и проверять на пустую строку?
В общем методом проб и ошибок нашел универсальный метод (как мне кажется) проверить на заполненность значения в запросе
ВЫБОР КОГДА ПРЕДСТАВЛЕНИЕССЫЛКИ(Реквизит1) = "" Тогда // Пустая ссылка будет возвращать пустую строку
"Пустое значение"
КОГДА ПРЕДСТАВЛЕНИЕССЫЛКИ(Реквизит1) = НЕОПРЕДЕЛЕННО ТОГДА // Не выбранное значение будет возвращать НЕОПРЕДЕЛЕННО
"Пустое значение"
КОГДА Реквизит1 ЕСТЬ NULL Тогда // В Случае если вы присоединяете таблицы
"Пустое значение"
Иначе
"Заполненное значение"
Конец
По-идее: Неопределено - будет NULL, Пустая ссылка - ИД=00000000....; если что-то выбрано - не НУЛЛ и не 00000...
Это если только ссылочный тип
И чем это они отличаются?
По-моему так надо:
ВЫБОР КОГДА ПРЕДСТАВЛЕНИЕССЫЛКИ(Реквизит1) = "" Тогда // Пустая ссылка будет возвращать пустую строку
"Пустое значение"
КОГДА Реквизит1 = НЕОПРЕДЕЛЕННО ТОГДА // Не выбранное значение будет возвращать НЕОПРЕДЕЛЕННО
"Пустое значение"
КОГДА Реквизит1 ЕСТЬ NULL Тогда // В Случае если вы присоединяете таблицы
"Пустое значение"
Иначе
"Заполненное значение"
Конец
не ПРЕДСТАВЛЕНИЕ, а ПРЕДСТАВЛЕНИЕССЫЛКИ
Функция ПРЕДСТАВЛЕНИЕССЫЛКИ
Позволяет получать представление ссылочного значения.
В качестве параметра функции передается выражение, представление результата которого нужно получить. В случае, если результатом выражения является ссылка, результатом функции будет строка – представление данной функции. В остальных случаях результатом функции будет значение переданного параметра.
я даже перепроверил :-) если НЕОПРЕДЕЛЕННО, то возвращает НЕОПРЕДЕЛЕННО, а не пустую строку.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua