Имя: Пароль:
1C
 
Как из типа значения (Тип) получить значение по умолчанию данного типа?
0 Женя Женя
 
16.08.06
12:42
В продолжение темы v8: Как из типа значения (Тип) получить значение по умолчанию данного типа?

Написал функцию, которая из переменной, в которой хранится описание типов, получает некоторое значение по умолчанию.

Для простоты тип может быть ссылкой на документ, ссылкой на справочник, строкой, числом, датой, логическим.

Вопрос: что в этой функции можно оптимизировать?

// А - переменная типа ОписаниеТипов
Функция ПолучитьЗначениеПоУмолчанию(А)
   Если А.Типы().Количество() = 1 Тогда
       Если Найти(Строка(А.Типы()[0]), "Справочник") > 0 Тогда
           Возврат Справочники[Метаданные.НайтиПоТипу(А.Типы()[0]).Имя].ПустаяСсылка();
       ИначеЕсли Найти(Строка(А.Типы()[0])), "Документ") > 0 Тогда
           Возврат Документы[Метаданные.НайтиПоТипу(Элемент.ТекущаяСтрока.Реквизит.ТипДанных.ТипЗначения.Типы()[0]).Имя].ПустаяСсылка();
       ИначеЕсли Строка(А.Типы()[0]) = "Строка" Тогда
           Возврат "";
       ИначеЕсли Строка(А.Типы()[0]) = "Число" Тогда
           Возврат 0;
       ИначеЕсли Строка(А.Типы()[0]) = "Дата" Тогда
           Возврат Дата(1,1,1);
       ИначеЕсли Строка(А.Типы()[0]) = "Булево" Тогда
           Возврат Истина;
       КонецЕсли;
   КонецЕсли;
КонецФункции

Для добавления обработки новых типов, надо добавить соответствующие ветки в дереве условий.
1 ТелепатБот
 
гуру
16.08.06
12:42
2 dimoff
 
16.08.06
12:46
Новый(А.Типы()[0])
3 Женя Женя
 
16.08.06
12:47
(2) Кажется да )
4 Женя Женя
 
16.08.06
12:51
(2) Можно ссылки, нельзя примитивные типы.
5 megalodon
 
16.08.06
12:53
(Новый ОписаниеТипов(ТвойТип)).ПриветиЗначение()
6 dimoff
 
16.08.06
13:01
5 стопроцентно работает
7 Женя Женя
 
16.08.06
13:13
(6) Да, работает, причём универсально.

Похоже, это самое лучшее решение.
Закон Брукера: Даже маленькая практика стоит большой теории.