Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
ОписаниеТипов
Описание:
Представляет собой объект для управления допустимыми типами значений. В основном предназначен для присвоения в качестве значений соответствующим свойствам других объектов. Набор допустимых типов и квалификаторы примитивных типов задаются при создании объекта.
Слова «ОписаниеТипов» и «Квалификаторы» вызывают трудность понимания на начальном этапе использования. По сути это простые вещи — с толку может сбивать их название.
Что такое Квалификаторы?
В 1С есть простые типы: Число , Строка , Дата . Но иногда необходимо уточнить, что переменная будет не просто числом, а например, числом длиной 12 символов и 2 разрядами после запятой, при этом неотрицательное. В простых типах это сделать невозможно т.к. тип не имеет соответствующих свойств. Для таких случаев и нужен объект «Квалификатор».
У каждого простого типа есть свой квалификатор:
Что такое Описание типов?
ОписаниеТипов — это объект, который содержит массив допустимых типов, но т.к. в массиве нет возможности указать дополнительные данные, то отдельно для простых типов ( Число , Строка , Дата ) можно уточнить свойства квалификаторами.
- Типы (обязательный, тип Массив , Строка ). Массив значений типа Тип , состоящий из типов, которые будут использованы в объекте, или строка, содержащая имена типов, разделенных запятыми.
- КвалификаторыЧисла (необязательный, тип КвалификаторыЧисла ). Квалификаторы числа, описывающие допустимые значения числового типа. Если параметр не указан, то числа хранить нельзя.
- КвалификаторыСтроки (необязательный, тип КвалификаторыСтроки ). Квалификаторы строки, описывающие допустимые значения строкового типа. Если параметр не указан, то используется неограниченная длина строки.
- КвалификаторыДаты (необязательный, тип КвалификаторыДаты ). Квалификаторы даты, описывающие допустимые значения типа Дата . Если параметр не указан, то используются обе части даты (дата + время).
Создает описание типов на основании заданных типов и квалификаторов для типов Число , Строка , Дата .
У описания типов есть четыре параметра, первый — обязательный, в нем указываются типы. Остальные — необязательные, в них указываются квалификаторы. Для создания описания типов существует несколько вариантов.
Указание типа строкой:
Можно указать несколько типов, разделяя их запятыми:
Можно передать массив типов:
В последнем примере одним из типов является строка и это не случайно. Даже когда в описании типов указывается квалификатор, обязательно нужно добавлять в типы этот простой тип. Т.к. квалификаторы накладывают ограничение на типы, а не устанавливают их.
Заключение
Описание типов — это объект, который используется, чтобы ограничить ввод данных, а квалификаторы — это объекты, которые дополняют ограничения для простых типов. Квалификаторов в описании типов три — по одному для каждого простого типа: Число , Строка , Дата .
Для наглядности посмотрим на ограничение типов в реквизитах объекта конфигурации. По сути, это один механизм:
Слова «ОписаниеТипов» и «Квалификаторы» у некоторых разработчиков вызывают трудность понимания на начальном этапе использования, хотя по сути это простые вещи с толку может сбивать их название, поэтому постараюсь объяснить смысл этих объектов.
Что такое Квалификаторы?
В программе 1с есть простые типы: Число, Дата, Строка. Но иногда необходимо уточнить, что переменная будет не просто числом, а например, числом длиной 17 символов и 2 разрядами после запятой, при этом неотрицательное. В простых типах это сделать невозможно т.к. тип не имеет соответствующих свойств. Для таких случаев и нужен объект «Квалификатор». Это именно объект, создается он методом « Новый »:
У каждого простого типа есть свой квалификатор. Соответственно есть также квалификаторы:
Что такое Описание типов?
ОписаниеТипов – это объект который содержит массив допустимых типов, но т.к. в массиве нет возможности указать дополнительные данные, то отдельно для простых типов(Число, Строка, Дата) можно уточнить свойства квалификаторами.
У описания типов есть 4 параметра, первый – обязательный, в нем указываются типы. Остальные – необязательные, в них указываются квалификаторы. Для создания описания типов существует несколько вариантов.
Указание типа строкой:
Можно указать несколько типов разделяя их запятыми:
Можно передать массив типов:
В последнем примере одним из типов является строка и это не случайно. Даже когда в описании типов указывается квалификатор обязательно нужно добавлять в типы этот простой тип. Т.к. квалификаторы накладывают ограничение на типы, а не устанавливают их.
Итак, подытожим. Описание типов это объект, который используется, чтобы ограничить ввод данных, а квалификаторы это объекты которые дополняют ограничения для простых типов. Квалификаторов в описании типов 3 по одному для простых типов: Число, Строка, Дата. Соответственно у объекта ОписаниеТипов при создании 4 параметра: — первый массив доступных типов, последние три — квалификаторы. Т.к. квалификатор для каждого простого типа передается один, то соответственно нельзя назначить более одного ограничения для простого типа. Указывать все квалификаторы не обязательно, поэтому в вышеприведенном примере мы передали квалификатор для Строки(3 параметр), а для Числа(2-ой) и Даты(4-ый) не передавали.
Для наглядности проведу аналогию объекта ОписаниеТипов с ограничением типов в реквизитах, по сути это один механизм.
При редактировании типов данных реквизита мы увидим окно указанное выше. Что же здесь происходит, по сути, отметив флажками, типы мы добавим их в массив доступных типов объекта ОписаниеТипов для этого реквизита. А если тип простой, то внизу можно дополнительно его ограничить, указав значения, при этом будет создан квалификатор. Здесь наглядно видно, что нет смысла передавать несколько квалификаторов для одного простого типа, просто следует указать описание максимально возможного значения. Например, если могут записываться как число «12,258» так и «235,5»,то необходимо установить Длина: 6, Точность:3.
Небольшое пояснение: ограничение для числа действует не как обрезание строки. Т.е. если было число «25,12» то указав квалификатор Длина:2, Точность:1 получится число «9,9», а не «5,1».
Чтобы было проще запомнить объект ОписаниеТипов, приведу следующую картинку:
3 ключевых момента работы с описанием типов:
- Если массив пустой, то можно записать значение любого типа несмотря на квалификаторы.
- Если типы указаны, то можно записать значения только указанных типов.
- Если тип простой и для него есть квалификатор, то можно записать значение ограниченное квалификатором.