Объект ОписаниеТипов
Описание объекта ОписаниеТипов находится в разделе Общие объекты/описание типов значений в синтаксис – помощнике электронной документации платформы
Объект ОписаниеТипов представляет собой объект для управления допустимыми типами значений. В основном предназначен для присвоения в качестве значений соответствующим свойствам других объектов. Набор допустимых типов и квалификаторы примитивных типов задаются при создании объекта. Существуют 2 вида конструктора описания типов:
- На основании объекта ОписаниеТипов :
ОписаниеТипов = Новый ОписаниеТипов(<ИсходноеОписаниеТипов>, <ДобавляемыеТипы>, <ВычитаемыеТипы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)
Данная конструкция создает описание типов на основании другого описания типов путем добавления одних и исключения других типов. Если новый квалификатор не указан, будут оставлены квалификаторы исходного описания типов. Подробнее см. в синтаксис- помощнике конфигуратора.
Пример
Массив = Новый Массив;
Массив.Добавить(Тип("СправочникСсылка.Методы"));
Массив.Добавить(Тип("Число"));
Знак = ДопустимыйЗнак.Неотрицательный;
КвЧисла = Новый КвалификаторыЧисла(10, 2, Знак);
ДопустимыеТипы = Новый ОписаниеТипов(ДопустимыеТипы, Массив, , КвЧисла);
- На основании типов и квалификаторов :
Новый ОписаниеТипов(<Типы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)
Данный конструктор создает описание типов на основании заданных типов и квалификаторов для типов Число, Строка, Дата.
Пример, составной тип из строки и ссылки на справочник Номенклатуры.
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка.Номенклатура"));
МассивТипов.Добавить(Тип("Строка"));
ПараметрыСтроки = Новый КвалификаторыСтроки(20);
ДопустимыеТипы = Новый ОписаниеТипов(МассивТипов, , ПараметрыСтроки);
Методы объекта описания типа
- ПривестиЗначение
- СодержитТип
- Типы
Метод ПривестиЗначение
ПривестиЗначение(<Значение>)
Формирует значение на основании описания типа и переданного значения.
Например 1. В форме расположено табличное поле Товары, в котором для ячейки колонки Номенклатура определено событие НачалоВыбора, процедура обработчик которого приведена в следующем примере :
Процедура ТоварыНоменклатураНачалоВыбора(Элемент,СтандартнаяОбработка)
ТипСтр = "СправочникСсылка.Номенклатура";
Элемент.ОграничениеТипа = Новый ОписаниеТипов(ТипСтр);
Значение = Элемент.Значение;
Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
Элемент.ВыбиратьТип = Ложь;
КонецПроцедуры
Пример 2. В форме есть таблица отбора с тремя колонками : ВидОтбора (строка) , ВидСравнения (перечисление) и ПодборЗначние ( составной тип значения) и нужно установить пустое значение по типу из списка доступных полей отбора компоновщика настройки:
ДоступноеПоле = КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти(ИмяЭлементаОтбора);
Если ДоступноеПоле <> Неопределено Тогда
ОписаниеТипа = Новый ОписаниеТипов(ДоступноеПоле.Тип);
Значение =ОписаниеТипа.ПривестиЗначение();
Нов = ТабличноеПолеВидыОтбора.Добавить();
Нов.ВидОтбора=Строка(Параметр.ЛевоеЗначение);
Нов.ПодборЗначения= Значение;
Нов.ВидСравнения= Параметр.ВидСравнения;
Нов.Пометка =ложь;
КонецЕсли;
Метод СодержитТип
СодержитТип(<Тип>)
Определяет, входит ли указанный тип в используемые данным объектом типы. Возвращает значение Истина если указанный тип входит в используемые типы; Ложь – в противном случае
Пример:
ПроверяемыйТип = Тип("Строка");
Если ДопустимыеТипы.СодержитТип(ПроверяемыйТип) Тогда
Сообщить("Описание типов содержит тип " + ПроверяемыйТип);
Иначе
Сообщить("Описание типов не содержит тип " + ПроверяемыйТип);
КонецЕсли;
Метод Типы
Типы()
Получает типы, используемые в объекте описания типов. Возвращает массив значений типа Тип, состоящий из используемых типов.
Пример заполнение списка типов документов по указанному элементу формы . Параметр Элемент (Элемент формы) имеет составной тип :
СписокТиповДокументов = Новый СписокЗначений;
Для каждого ТипДокумента Из Элемент.ТипЗначения.Типы() Цикл
ДокументСсылка = Новый(ТипДокумента);
Имя = ДокументСсылка.Метаданные().Имя;
Синоним = ДокументСсылка.Метаданные().Синоним;
СписокТиповДокументов.Добавить(Имя, Синоним);
КонецЦикла;
См. также: