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

Тема в разделе "1C и всё что с ней связано", создана пользователем Дайнеко, 18 ноя 2010.

  1. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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

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

    Mirage Гость

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

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

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

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Спасибо. Вот результаты проверки:

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

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

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

Поделиться этой страницей