
По возможности ответьте. В 1С должны знать правду 😅
Size: a a a
Null
.Число
, Строка
, Булево
, Ссылка
. Неважно. Даже если по тексту запроса очевидно, что в результате невозможен Null
- он всё равно будет.Запрос = Новый Запрос("ВЫБРАТЬ 1");Так как в колонку добавляется тип
Колонки = Запрос.Выполнить().Колонки;
Сообщить(Колонки.Получить(0).ТипЗначения);
//Сообщение: Null, Число
Null
, то она становится составного типа. И получает в довесок тип Неопределено
.Неопределено
. Запрос = Новый Запрос("ВЫБРАТЬ 1 КАК Поле");В принципе, поведение платформы нельзя назвать ошибочным. 1С просто не считает целесообразным проверять, есть ли действительно
Выгрузка = Запрос.Выполнить().Выгрузить();
НоваяСтрока = Выгрузка.Добавить();
Сообщить(ТипЗнч(НоваяСтрока.Поле));
//Сообщение: Неопределено
Null
в результате. И просто добавляет этот тип, исключая возможные ошибки. Null
. Его можно использовать на простых табличках. Например, в этом методе.//Этот код сообщит "Да"И вроде бы вопрос решен, НО. Попробуйте создать таблицу значений с колонкой, у которой тип - Неопределено:
Сообщить( ТипЗнч(Неопределено) = Тип("Неопределено") );
ТЗ = Новый ТаблицаЗначений;Именно, мы получили колонку с произвольным типом, ибо невозможно создать колонку с типом Неопределено.
ТЗ.Колонки.Добавить("Колонка", Новый ОписаниеТипов("Неопределено"));
Строка = ТЗ.Добавить();
Строка.Колонка = 1;
Сообщить(Строка.Колонка); //Сообщит: 1
Строка.Колонка = "Строка";
Сообщить(Строка.Колонка); //Сообщит: Строка
//Получили ТЗ с колонкой НеопределеноПочему так?
Запрос = Новый Запрос("ВЫБРАТЬ Неопределено КАК Поле");
ТЗ = Запрос.Выполнить().Выгрузить();
//Попытались выбрать её в другом запросе
Запрос.Текст = "ВЫБРАТЬ
| ТЗ.Поле
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ТЗ КАК ТЗ;
|ВЫБРАТЬ
| *
|ИЗ
| ВТ КАК ВТ";
Запрос.УстановитьПараметр("ТЗ", ТЗ);
Результат = Запрос.Выполнить();