1С описание типов строка
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
ОписаниеТипов
Описание:
Представляет собой объект для управления допустимыми типами значений. В основном предназначен для присвоения в качестве значений соответствующим свойствам других объектов. Набор допустимых типов и квалификаторы примитивных типов задаются при создании объекта.
Слова «ОписаниеТипов» и «Квалификаторы» вызывают трудность понимания на начальном этапе использования. По сути это простые вещи — с толку может сбивать их название.
Что такое Квалификаторы?
В 1С есть простые типы: Число , Строка , Дата . Но иногда необходимо уточнить, что переменная будет не просто числом, а например, числом длиной 12 символов и 2 разрядами после запятой, при этом неотрицательное. В простых типах это сделать невозможно т.к. тип не имеет соответствующих свойств. Для таких случаев и нужен объект «Квалификатор».
У каждого простого типа есть свой квалификатор:
Что такое Описание типов?
ОписаниеТипов — это объект, который содержит массив допустимых типов, но т.к. в массиве нет возможности указать дополнительные данные, то отдельно для простых типов ( Число , Строка , Дата ) можно уточнить свойства квалификаторами.
- Типы (обязательный, тип Массив , Строка ). Массив значений типа Тип , состоящий из типов, которые будут использованы в объекте, или строка, содержащая имена типов, разделенных запятыми.
- КвалификаторыЧисла (необязательный, тип КвалификаторыЧисла ). Квалификаторы числа, описывающие допустимые значения числового типа. Если параметр не указан, то числа хранить нельзя.
- КвалификаторыСтроки (необязательный, тип КвалификаторыСтроки ). Квалификаторы строки, описывающие допустимые значения строкового типа. Если параметр не указан, то используется неограниченная длина строки.
- КвалификаторыДаты (необязательный, тип КвалификаторыДаты ). Квалификаторы даты, описывающие допустимые значения типа Дата . Если параметр не указан, то используются обе части даты (дата + время).
Создает описание типов на основании заданных типов и квалификаторов для типов Число , Строка , Дата .
У описания типов есть четыре параметра, первый — обязательный, в нем указываются типы. Остальные — необязательные, в них указываются квалификаторы. Для создания описания типов существует несколько вариантов.
Указание типа строкой:
Можно указать несколько типов, разделяя их запятыми:
Можно передать массив типов:
В последнем примере одним из типов является строка и это не случайно. Даже когда в описании типов указывается квалификатор, обязательно нужно добавлять в типы этот простой тип. Т.к. квалификаторы накладывают ограничение на типы, а не устанавливают их.
Заключение
Описание типов — это объект, который используется, чтобы ограничить ввод данных, а квалификаторы — это объекты, которые дополняют ограничения для простых типов. Квалификаторов в описании типов три — по одному для каждого простого типа: Число , Строка , Дата .
Для наглядности посмотрим на ограничение типов в реквизитах объекта конфигурации. По сути, это один механизм:
Когда требуется работать со списком типов – используется объект ОписаниеТипов (см. «Получение доступных типов», «Работа с типами реквизитов в метаданных конфигурации», «Указать фильтр типов в фильтре»).
Получить список типов
Предположим, что Вы получили готовый объект ОписаниеТипов:
- ЭлементыФормы.ИмяПоля.ТипЗначения
- ДокументСсылка.Метаданные().Реквизиты.ИмяРеквизита.Тип
- СписокЗначений.ДоступныеЗначения
Получить список типов из объекта ОписаниеТипов можно с помощью метода .Типы(), например:
Для каждого ДоступныйТип из ЭлементыФормы.ИмяПоля.ТипЗначения Цикл
Если ДоступныйТип = Тип("Строка") Тогда
//…
КонецЕсли;
КонецЦикла;
Проверка наличия типа в списке
Если требуется просто проверить – есть ли в списке типов требуемый, можно использовать метод .СодержитТип(), например:
Если ЭлементыФормы.ИмяПоля.ТипЗначения.СодержитТип( Тип("Строка") ) Тогда
//…
КонецЕсли;
Приведение значения к разрешенному типу
Если у Вас имеется значение (например, переменная со значением) и имеется фильтр типов значений в объекте ОписаниеТипов, то возможно привести значение к тем ограничениям типов, которые указаны в объекте ОписаниеТипов.
Например:
ЗначениеРазрешенногоТипа = ОписаниеТиповФильтр.ПривестиЗначение( НекотороеЗначение );
Создание описания типов
Создать объект ОписаниеТипов требуется в тех случаях, когда требуется указать какой фильтр типов будет установлен, например, при добавлении колонки таблицы значений методом .Добавить (фильтр типов указывается вторым параметром), или для установки фильтра разрешенных типов в список значений в свойстве .ДоступныеЗначения
Если в списке разрешенных типов присутствует только один тип, то в качестве параметра при создании объекта ОписаниеТипов указывается просто название типа (см. выше «Работа с типами»).
Например:
ФильтрТипов = Новый ОписаниеТипов("Строка");
Если в списке разрешенных типов нужно указать список типов, то требуется сначала создать массив типов и указать в качестве параметра массив.
При добавлении базовых типов (строка, число, дата) Вы указываете имя типа. Но ведь базовые типы имеют настройки – длину строки, разрядность числа, дата и время или только дата.
При создании объекта ОписаниеТипов возможно указать дополнительными параметрами настройки базовых типов (любой из указанных параметров настроек – необязательный и можно пропустить).
Новый ОписаниеТипов(ИмяТипа, НастройкиТипаЧисло, НастройкиТипаСтрока, НастройкиТипаДата);
Создадим настройку для целого числа с 5 цифрами: 99 999
НастройкаТипаЧисла = Новый КвалификаторыЧисла(5,0);
Создадим настройку для дробного числа с 5 цифрами до запятой и 2 цифрами после запятой: 99 999,99
НастройкаТипаЧисла = Новый КвалификаторыЧисла(5,2);
Настройка для того же числа, что и выше, и дополнительно – неотрицательного:
Если необходимо использовать строку неограниченной длины – настройку указывать не надо.
Настройка для строки длиной 100 символов:
НастройкаТипаСтроки = Новый КвалификаторыСтроки(100);
Настройка для строки длиной 100 символов, значения которой дополняются до 100 символов пробелами:
Если необходимо использовать дату и время – настройку указывать не надо.
Настройка для только даты, без времени (значение будет содержать время 00:00:00):
НастройкаТипаДаты = Новый КвалификаторыДаты(ЧастиДаты.Дата);
Настройка для только времени, без даты (значение будет содержать дату 01.01.0001):
НастройкаТипаДаты = Новый КвалификаторыДаты(ЧастиДаты.Время);
Пример использования настроек
Проголосовать за этот пост:
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.