Как получить пустое значение данного типа

Дайнеко

Well-known member
19.11.2009
951
0
#1
Задача такова: в универсальной процедуре сделать запрос по справочнику записей с пустым полем.
Но имя поля передается параметром. Следовательно тип поля может быть любым: строка, число, ссылка.
В запросе пишу:
|ГДЕ
| ТекСправочник."+ Поле+ "= &ЗначПустое")+"
.....
Запрос.УстановитьПараметр("ЗначПустое", ЗначПустое);

Как бы родить значение для параметра "ЗначПустое" ?
Причем можно считать, что в распоряжении есть другая переменная "ЗначТекущее", которая содержит нужный тип значения для данного поля, но чем-то заполнена.
 
M

Mirage

#2
Значение = Новый (ТипЗначения)
+ Не забыть что значения составного типа = Неопределено
Получить тип по значению просто.

вот немного немного не оттудава - но рациональное зерно вырвать можно

Функция ПолучитьПустуюСсылкуТипа(ЗначениеТипа) Экспорт
Если ЗначениеТипа = Тип("Неопределено") Тогда //Изменить на проверку описания типов
Возврат Неопределено;
ИначеЕсли ЗначениеТипа = Тип("NULL") Тогда
Возврат NULL;
ИначеЕсли ЗначениеТипа = Тип("Строка") Тогда
Возврат "";
ИначеЕсли ЗначениеТипа = Тип("Число") Тогда
Возврат 0;
ИначеЕсли ЗначениеТипа = Тип("Дата") Тогда
Возврат Дата('00010101');
ИначеЕсли ЗначениеТипа = Тип("Булево") Тогда
Возврат Ложь;
ИначеЕсли ЗначениеТипа = Тип("РежимПроведенияДокумента") Тогда
Возврат РежимПроведенияДокумента.Неоперативный;
Иначе
ТипВозврата = Неопределено;
Попытка
ТипВозврата = Новый(ЗначениеТипа.Типы()[0]);
Исключение
ТипВозврата = Неопределено;
КонецПопытки;
Возврат ТипВозврата;
КонецЕсли;
КонецФункции //ПолучитьПустуюСсылкуТипа
 

Дайнеко

Well-known member
19.11.2009
951
0
#3
Спасибо. Вот результаты проверки:

Значение = Новый (ТипЗнч(ЗначОбразец))

Прекрасно отработало для объектов Справочник, Перечисление. А вот на число ругнулось:
"С помощью встроенной функции Новый (New) не могут создаваться значения примитивных типов (Число)"

Так что, буду комбинировать с приведенной функцией.