1с 8 как обратиться к типу
В 1С очень много предопределенных типов значений, их можно подразделить на несколько групп.
Группы типов данных
- простые (примитивные) типы
- типы-объекты и их подчиненные
- типы-объекты из метаданных (прикладные типы)
- интерфейсные типы
- прочие типы общего назначения
Простые типы
Типы-объекты
- Коллекции значений (Массивы, Структуры, ТаблицыЗначений и другие)
- Интеграционные (Com, файлы, внешние объекты, zip, WS)
- Общего назначения
Объекты из метаданных (прикладные)
Интерфейсные
Связанные с окнами, формами и элементами форм (полей, надписей, табличных данных и других)
Другие варианты подразделения значений
Задание типов значений
Значение может быть установлено:
Непосредственно
Через создание объекта
Через результат вызова системной функции
Через обращение к свойству объекта
Составные и простые типы
Если не указано специально, то тип значений не ограничивается.
Например, для простого случая
Данный объект также используется для ограничения выбора или внесения данных в диалоговых формах
Приведение значений
Производится автоматически при присвоении к реквизиту (свойству) объекта, если данный реквизит не может хранить данное значение
Также при операциях конкатенации, производится к сначала первому слагаемому, при вычитании, если допустимо, ко втором, а затем уже к результату.
Приведение значений через встроенные функции преобразования
Следует обратить внимание, что некоторые преобразования система не сможет сделать, и это вызовет ошибку исполнения, поэтому проверка должна производится разработчиком
Проверка типов
Сравнение производится через специальные функции ТипЗнч() и Тип().
Первая возвращает значение передаваемого типа, вторая задает тип для проверки
ЭтоЧисло = 15; //ответ на вопрос: тип значения переменной "ЭтоЧисло" является ли типом "Число" ЭтоБулево = ТипЗнч(ЭтоЧисло) = Тип("Число"); //Первый знак "=" - присвоение //Второй " i-11">Сравнение значений
- при сравнении на равенство по четкому совпадению типа и значения, приведение не производится
- сравнение на > или < (на больше-меньше) допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
Более подробно на типах останавливаться не буду, лучше их прочувствовать в реальных задачах или узких примерах
При создании определяемого типа нужно указать его имя и тип. Можно указать составной тип данных:
Для выбора доступно множество различных типов, в том числе примитивные типы, ссылки, объекты, менеджеры, системные перечисления, некоторые универсальные коллекции и т.п.
Теперь данный определяемый тип можно указывать как тип для реквизитов объектов:
Если в дальнейшем нужно будет изменить тип реквизита Ответственный, то достаточно будет добавить новый тип в состав определяемого типа. Тип реквизитов, где был выбран определяемый тип будет изменен автоматически.
Также через определяемый тип можно определять квалификаторы примитивных типов. Например, создать определяемый тип Артикул типа строка и указать для него длину 30.
Если в качестве типа для реквизитов выбирать данный определяемый тип, то гарантируется, что длина везде будет 30 символов.
У определяемого типа есть некоторые ограничения:
- его нельзя использовать как тип значения в плане видов характеристик
- он не может входить в составной тип данных
- не может входить в состав другого определяемого типа
- доступен только начиная с версии платформы 8.3.3
Определяемый тип программно
Чтобы программно указать тип свойства как определяемый тип можно просто создать Описание типов и перечислить все те типы, которые указаны для определяемого типа. Но можно получить готовое описание типов через метаданные:
Объект Структура создается с помощью конструктора Новый.
Структура1 = Новый Структура;
Со структурами можно работать и в серверном и клиентском контексте, причем в клиентском контексте с ними можно работать как под толстым клиентом, так и под тонким клиентом.
В значения структуры можно записать переменные любого типа, но использование типов в этом случае очень сильно зависит от контекста и от вида клиента: мы не можем в клиентском контексте задать значение, тип которого работает только в серверном контексте (например, ДокументОбъект.<>).
Как создать новую структуру, Вы знаете, теперь выясним, как создаются новые элементы данного объекта. Делается это с помощь метода Вставить.
Вот его синтаксис:
Вставить(<Ключ>,<Значение>);
Параметр Ключ имеет тип значения Строка. Он может иметь любое название, какое захочет разработчик (но помним про ограничения в названиях переменных). Параметр Значение может иметь любой тип.
Обращаю Ваше внимание, что связка «Ключ и значение» уникальна, поэтому если Вы напишете для одной структуры два метода Вставить с одинаковыми ключами и разными значениями, то все равно в структуре будет одна связка «Ключ и значение», причем значение возьмется с последнего метода.
Не всегда обязательно использовать метод Вставить, чтобы добавить пару КлючИЗначение в структуру, иногда это можно сделать в конструкторе. Тогда конструктор будет иметь следующий вид:
Структура1 = Новый Структура(Ключ, Значение);
Переделаем предыдущий пример:
В случаях выше мы не стали думать над названиями ключей, Вы же в процессе работы можете давать ключам любые названия, какие захотите. Главное, чтобы тип ключа был Строка.
В структуру можно записывать не только примитивные типы, но также любые другие объекты «1С:Предприятия», вплоть до других структур. Причем значения типов разных ключей структуры могут быть разными.
Если мы посмотрим в отладке конфигуратора на нашу структуру, то увидим, что она представляет собой некоторый список, где напротив каждого ключа есть то значение, которое мы привязали к данному ключу с помощью метода Вставить. Этот ключ является свойством структуры как объекта, и мы можем обращаться к нему.
Изменить значение ключа структуры 1С
Если нам необходимо изменить значение какого-нибудь ключа, то мы, используя метод Вставить, указываем в качестве первого параметра ключ, значение которого хотим поменять, а в качестве второго параметра новое значение для данного ключа.
Или напрямую обращаемся к ключу
Обход коллекции структуры 1С
Обход структуры осуществляется с помощью оператора цикла Для каждого…Цикл.
Обойдем уже созданную структуру.
Безошибочное получение значения элемента
Если при обращении к ключу структуры Вы укажете название несуществующего в данной структуре ключа, то программа выдаст ошибку. Но есть метод объекта Структура, с помощью которого можно обратиться к значению ключа, не боясь вызвать ошибку в случае промаха.
Этот метод – Свойство.
Данный метод является функцией и возвращает Истину, если указанный ключ есть, и Ложь, если указанного ключа нет.
Рассмотрим синтаксис метода:
Свойство(<ИмяКлюча>,<ЗаписываемоеЗначение>);
В параметр «ЗаписываемоеЗначение» будет возвращено найденное значение. В том случае, если ключа нет в структуре, то данному параметру присвоится значение Неопределено. Обращаю Ваше внимание, что параметр «ЗаписываемоеЗначение» где-то должен быть определен.
В переменную А запишется значение, которое связанно с Ключ1.
Но если мы напишем так.
То ни какой ошибки не возникнет, и в переменной А присвоится значение Неопределено.
Статьи о других универсальных коллекциях значений в 1С
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Разберем методы, при помощи которых, в 1С 8.3 можно определить тип значения переменной (или реквизита какого-нибудь объекта). Причем, эти методы могут работать со всеми типами: примитивными, объектными и коллекциями значений.
Для работы с типами, в платформе 1С имеется специальный тип, который так и называется Тип. Этот тип необходим для идентификации типов значений различных данных. Значения типа Тип возвращают только две функции Тип и ТипЗнч.
Функция ТипЗнч в 1С
Разберем функцию ТипЗнч. Эта функция принимает в качестве параметра любое значение и возвращает тип этого значения.
Рассмотрим пример: будем использовать в качестве параметра этой функции число, таблицу значений и объект какого-нибудь справочника.
Посмотрим в отладке, что вернет этот метод.
Как видите, все значения, которые вернул метод ТипЗнч имеют тип Тип. Но, сами по себе знания о том, какой тип у того или иного значения нам ни чего не дают. Разве что можно сравнить одинаковы ли типы у двух разных значений. Эти знания применимы только тогда, когда можно точно определить какого типа наше значение. Делается это при помощи функции Тип.
Функция Тип в 1С
Функция тип имеет один параметр имя получаемого типа в строковом представлении, возвращает тип Тип.
Переделаем предыдущий пример: будем получать типы значений, используя функцию Тип.
В переменных будут те же значения, что и в прошлый раз.
Чтобы быстро получить название какого-то типа, достаточно «задержаться» в написании после первой кавычки, или нажать комбинацию клавиш Ctrl+Пробел.
Появится выпадающий список всех названий типов, где набирая первые символы названия можно быстро найти нужный тип.
Обе функции Тип и ТипЗНЧ возвращают значения одного типа – Тип. Но, если в случае функции ТипЗнч мы не можем точно знать, что вернет эта функция (поскольку, иногда, возникают ситуации, когда точно не известно какого тип та или иная переменная), то при работе с функцией Тип, мы точно знаем, какое значение вернет эта функция, поскольку сами указали строковое представление типа в параметре.
Как проверить тип значения
Для того, чтобы проверить какой тип значения у той или иной переменой, достаточно использовать обе этих функции (Тип и ТипЗнч) вместе: сравнивая, что возвращает функция ТипЗнч, в параметре которой указано какое-либо значение, с функцией Тип, в параметре которой мы указали конкретный тип.
Рассмотрим пример: будем заполнять массив значениями разных типов, потом при помощи генератора случайных чисел выберем нужный элемент массива, и определим какого типа этот элемент массива. В этот массив поместим число, дату, строку и какой-нибудь список значений.
В этом коде я использовал условие, где обрабатывал сравнение значений, которые возвращают функции Тип и ТипЗнч.
Статьи о примитивных типах в 1С:
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Читайте также: