Имя: Пароль:
1C
 
В 27 платформе запрос выдает Документ.Менеджер.Наименование = NULL, а в 26 = ""?
0 Emichael
 
01.11.25
18:11
Вечер добрый, коллеги ! Платформа 8.3.27.1688. Вопрос такой - случайно заметил в консоли запросов что запрос:

"Выбрать
    ЗаказПоставщику.Ссылка КАК Заказ,                        
    ЗаказПоставщику.Менеджер.Наименование КАК Наименование
ИЗ Документ.ЗаказПоставщику КАК ЗаказПоставщику"

В результате у Наименование = Null при пустой ссылке Менеджер. Задумался. Запустил 26 платформу, сформировал тот же запрос и в результате получил "". Понятно, что получение таким образом данных считается неправильным :-). Но 1С ники в типовых решениях тоже страдают получением в запросе Наименование таким же образом. Может кто видел в описании 27 платформы описание такого поведения языка запросов? Или это ошибка платформы?
1 Мультук
 
гуру
01.11.25
18:23
(0)

А так ?
Одинаковые результаты в реквизитах т1, т2?

ВЫБРАТЬ ПЕРВЫЕ 100 
	ЗаказПоставщику.Ссылка КАК Ссылка,
	ЗаказПоставщику.Менеджер КАК Менеджер,
	ЗаказПоставщику.Менеджер.Наименование КАК МенеджерНаименование,
	ТИПЗНАЧЕНИЯ(ЗаказПоставщику.Менеджер) как т1,
	ТИПЗНАЧЕНИЯ(ЗаказПоставщику.Менеджер.Наименование) как т2
ИЗ
	Документ.ЗаказПоставщику КАК ЗаказПоставщику



Имхо так правильно.
Во избежании последствий.
Ну или "потом" разгребать что там в "Наименование"

Выбрать
    ЗаказПоставщику.Ссылка КАК Заказ,                        
    ЕСТЬNULL(ЗаказПоставщику.Менеджер.Наименование, "") КАК Наименование
ИЗ Документ.ЗаказПоставщику КАК ЗаказПоставщику
2 lubitelxml
 
01.11.25
18:24
(0) 2 точки в запросе рождает неявное (ну или как оно там называется) соединение таблиц, со всеми полями, что приводит к тормозам. Про запрос по таблице документов - вообще отдельная тема, но сейчас не про это. Сделай Левое соединение с таблицей Справочник.Пользователи и через ЕСТЬNULL выведи правильно наименование.
3 Ненавижу 1С
 
гуру
01.11.25
18:27
(0) какие субд в обоих случаях? Есть ли уверенность, что в обоих случаях у менеджера пустая ссылка?
4 Ненавижу 1С
 
гуру
01.11.25
18:28
(0) опять же правильно ли вы интерпретируете данные. Например проблема в консоли или вы погружаете в типизированную колонку
5 RomanYS
 
01.11.25
18:30
(0) это база, которая не зависит от версии платформы. Должен быть null при описанных условиях.
6 RomanYS
 
01.11.25
18:32
(2) Делать явное соединение не обязательно, ЕстьNULL можно и к неявному соединению (полю с 2+ точками) применять
7 Emichael
 
01.11.25
18:58
Вопрос же не в этом. Технически я понимаю к чему это приводит и из-за чего. Попробуйте на 26 платформе сделать данный запрос. Изменилось поведение - да. Джуны (да и сами 1С ники) часто получают наименование через точку. Только раньше это обрабатывалось нормально, а теперь выпадет в ошибку. Ну вот я и хочу понять это теперь норма стало что любой реквизит через точку есть NULL или это особенность 27 платформы? И хотелось бы ссылочку на изменение работы запроса в платформе 27. Я пролистал описание изменений 27 платформы связанные со словом Null и ничего не нашел.
8 craxx
 
01.11.25
19:02
(7) Вероятно, баг, но очень полезный.
Заставит думать и правильно писать запросы.
9 Мультук
 
гуру
01.11.25
19:10
(0)

В файловой базе на движке 8.3.25.1546
запрос при пустом реквизите "Менеджер" ЗаказПоставщику.Менеджер.Наименование возвращает NULL, как и положено.

8.3.26 у меня локально нет.
Что там ломали, что там чинили - я, увы, не в курсе.
10 Emichael
 
01.11.25
19:10
Возможно вылезет где то в старых разработках, возможно изменится логика работы отчетов и обработок где не заморачивались проверкой на Null и ставили условие на ПустоеЗначение реквизитов полученных через 2 точки.
11 craxx
 
01.11.25
19:16
(10) Режим совместимости конфы какой?
12 RomanYS
 
01.11.25
19:18
(10) бред. Не могли не заморачиваться. Должен быть null
13 Emichael
 
01.11.25
19:50
(12) Про режим совместимости забыл Надо проверить Чисто ииз спортивного интереса :-)
14 Ненавижу 1С
 
гуру
01.11.25
22:24
(13) автор, ты (3) и (4) чего проигнорировал?
Я вот считаю, что ошибка скорее в твоих действиях, а не платформе
15 Garykom
 
гуру
01.11.25
22:49
Скорее всего там Менеджер с пустым Наименование
Должно быть NULL
16 Злопчинский
 
02.11.25
08:15
(15) если там менеджер с пустым наименованием - значит в "менеджер" вполне себе валидная ссылка на существующий объект данных. У этого объекта ПУСТОЕ "наименование", "наименование" - тип Строка. Пустое Наименование - там что? Пустая строка? Или Null?
17 Мультук
 
гуру
02.11.25
10:36
(16)

В (1) я привёл запрос, который "раскрывает" все эти вопросы,
но ТС так и не решился ответить на них
18 TormozIT
 
гуру
02.11.25
18:19
(0) Ты писал
> Запустил 26 платформу, сформировал тот же запрос и в результате получил "".

Тебе показалось. Там будет тоже NULL, если родительское значение - пустая ссылка. Так работает язык запросов изначально.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший