Система типов
Система типов — это особая система, по которой организуются данные, используемые прикладными решениями. Система типов позволяет представить информацию реального мира в терминах, «понятных» для «1С:Предприятия 8».
Система типов предоставляет широкие возможности как для описания непосредственно бизнес-логики прикладных решений, так и для выполнения задач промежуточной обработки данных.
Описание системы типов содержится в синтакс-помощнике, во встроенной справке и в документации.
Основной особенностью системы типов является то, что есть типы, существующие в любом прикладном решении. Сами эти типы определены на уровне платформы и присутствуют всегда, независимо от действий разработчика. Наряду с ними в конкретном прикладном решении могут существовать различные типы данных, присущие именно этому конкретному прикладному решению. Для таких типов данных на уровне платформы определены лишь общие правила их создания, шаблоны. А конкретные типы данных создаются платформой уже исходя из того, каким образом разработчик формирует и модифицирует структуру прикладного решения.
Типы данных, определенные на уровне платформы
Набор типов, которыми могут оперировать прикладные решения, довольно разнообразен. Он позволяет решать как задачи обработки данных, так и задачи представления этих данных пользователю и интерактивной работы с ними. Можно выделить несколько основных категорий типов данных.
Примитивные типы
Примитивные типы данных — это такие типы как Строка, Число, Дата, Булево и другие. Эти типы не являются чем-то особенным для «1С:Предприятия 8». Как правило, такие типы данных существуют и в других программных системах.
Значения примитивных типов являются простыми неделимыми значениями, в которых нельзя выделить отдельные составляющие. Например, значениями типа Число могут быть 1, 8, 15 и др. Чтобы создать значение примитивного типа, в тексте программы нужно указать его литерал — символьный идентификатор значения.
Универсальные коллекции значений
Также, существуют более сложные типы данных. Например, платформа поддерживает целый ряд типов, которые представляют собой универсальные коллекции значений: Массив, Структура, СписокЗначений и другие.
Общие типы
Кроме этого в платформе реализованы специфические типы данных, реализующие ту или иную функциональность прикладных решений: ТекстовыйДокумент, ТабличныйДокумент, ХранилищеЗначения, ПостроительЗапроса и другие.
Общие типы называют также общими объектами. Значения этих типов, в отличие от значений примитивных типов, представляют собой совокупность значений отдельных свойств объекта. Поэтому их называют экземплярами объектов.
Экземпляры объектов создаются с помощью специального оператора встроенного языка — Новый.
Интерфейсные типы
Интерфейсные типы позволяют организовывать визуальное взаимодействие прикладного решения с пользователем. В основном это типы, связанные с работой форм и их элементов.
Типы данных, образуемые в прикладном решении
Однако, наряду с типами данных, которые определены на уровне платформы, конкретное прикладное решение может использовать уникальные типы данных, существующие только в этом конкретном прикладном решении. Причем платформа будет полностью поддерживать работу с этими типами данных точно так же, как и с типами, которые определены на уровне самой платформы.
Как правило, появление новых типов данных в прикладном решении связано с использованием прикладных объектов конфигурации. Поэтому такие типы называют еще прикладными типами или прикладными объектами.
На уровне платформы поддерживается несколько классов (шаблонов) прикладных объектов, которые сами по себе не могут быть использованы в конкретном прикладном решении. Например, можно перечислить такие классы прикладных объектов как Справочники, Документы, Регистры сведений, Планы видов характеристик и пр.
Для каждого класса прикладных объектов определена соответствующая ему базовая функциональность: типы таблиц базы данных, которые должны быть созданы для хранения данных, типовые формы, типовые объекты языка, наборы прав и пр.
Разработчик, создавая прикладное решение, не имеет возможности использовать эти классы напрямую, однако может добавить в свое прикладное решение новый объект конфигурации, наследующий всю функциональность того или иного класса:
Например, разработчик может добавить в свое прикладное решение новый справочник Номенклатура, который будет наследовать функциональность класса Справочники, или новый документ КассовыйОтчет, который будет наследовать функциональность класса Документы.
Сразу же после такого добавления разработчику становятся доступны новые типы данных, состав которых определяется принадлежностью объекта конфигурации к тому или иному классу прикладных объектов.
Система типов описывает лишь общую «структуру» такого типа, правила, по которым будут формироваться объекты этого типа. Конкретное имя типа, состав свойств и методов объекта будут зависеть от того, как разработчик назовет объект конфигурации и какие, например, реквизиты, табличные части он в него добавит.
Следует еще раз отметить, что эти типы данных не поддерживаются платформой изначально, и существуют только в конкретном прикладном решении.
Еще один момент, на котором следует акцентировать внимание, проще всего продемонстрировать на примере.
Допустим, в прикладном решении созданы два новых справочника: Номенклатура и Цены. Несмотря на то, что оба эти объекта унаследовали функциональность соответствующего класса Справочники, и для них в прикладном решении был создан один и тот же состав типов данных, «одноименные» типы данных будут являться различными типами данных. Например, СправочникОбъект.Номенклатура и СправочникОбъект.Цены — это различные типы данных.
Так происходит потому, что разработчик может дополнительно к базовой функциональности, унаследованной от соответствующего класса, добавить свою, особенную для каждого объекта конфигурации. Например, оба упомянутых выше справочника могут содержать табличные части (это унаследовано от класса Справочники). Однако для справочника Цены разработчик не создаст ни одной табличной части, в то время как для справочника Номенклатура он создаст, например, три табличные части. Очевидно, что структура хранения данных типа СправочникОбъект.Номенклатура будет значительно отличаться от структуры хранения данных типа СправочникОбъект.Цены.
Базовые типы значений
Базовые типы в 1С
Физически информация в памяти компьютера хранится в виде нулей и единиц (двоичном виде). Но двоичное представление данных и методы их обработки не очень удобны для восприятия, как для разработчиков, так и для пользователей. Поэтому в компьютерных системах существуют различные способы работы с данными и их представления.
Различие способов работы с данными определяется множеством программ (текстовые редакторы, табличные редакторы, графические редакторы и т.д.). В системе 1С:Предприятие 8 для обеспечения такого механизма программа хранит в памяти компьютера не только данные, но и информацию о том, как с этими данными работать.
Виды примитивных типов 1С (неделимых на другие типы):
В системе 1С можно работать с данными:
Типизация переменных во встроенном языке 1С:Предприятие не жесткая, так как:
Работа в 1С со строковыми значениями
Значения типа СТРОКА содержат строку произвольной длины с возможностью одновременного использования слов на разных языках, что реализуется форматом текста Unicode.
Правила определения значений типа СТРОКА:
Работа в 1С с числовыми значениями
Значением типа ЧИСЛО в 1С может быть представлено любое десятичное число.
Правила определения значений типа ЧИСЛО:
Работа в 1С с датой и временем
Значение типа ДАТА всегда содержит дату и время.
Правила определения значений типа ДАТА:
Для определения значения только для времени необходимо указывать значение даты в литерале 00010101 и необходимое время.
Квант значения типа ДАТА равен секунде, соответственно, если «Переменная1» имеет тип Дата и значение, равное 1 марта 2005 года, то значение выражения (Переменная1+20) будет равно 1 марта 2005 г 00 ч 00 мин 20 сек.
Работа в 1С со значениями типа БУЛЕВО
Значения типа БУЛЕВО могут иметь только значения «Истина» или «Ложь», задаваемые соответствующими литералами.
Значения данного типа часто являются результатом вычисления логических операций.
Правила определения значений типа БУЛЕВО:
Работа в 1С со значениями НЕОПРЕДЕЛЕНО, NULL И ТИП
Для значения НЕОПРЕДЕЛЕНО
Значение типа НЕОПРЕДЕЛЕНО означает пустое значение с незаданным типом в памяти компьютера. Интерактивно данное значение представлено пустой строкой.
Правила определения значений типа НЕОПРЕДЕЛЕНО:
Для значения NULL
Значение типа NULL означает пустое значение с незаданным типом в базе данных.
Используется исключительно для определения отсутствующего значения при работе с базой данных, например, при соединении таблиц.
Интерактивно данное значение представлено пустой строкой. На практике встречается в выборке результата запроса там, где не удалось подобрать подходящее значение:
Правила определения значений типа NULL:
Для значения ТИП
Значение типа ТИП используются для идентификации типов значений. Это необходимо для определения и сравнения типов.
Правила определения значений типа ТИП:
Данный тип не имеет литералов и возвращается функциями встроенного языка «ТипЗнч» и «Тип».
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Типы значений 1С
Типы значений 1С
В 1С очень много предопределенных типов значений, их можно подразделить на несколько групп.
Группы типов данных
Простые типы
Типы-объекты
Объекты из метаданных (прикладные)
Интерфейсные
Связанные с окнами, формами и элементами форм (полей, надписей, табличных данных и других)
Другие варианты подразделения значений
Задание типов значений
Значение может быть установлено:
Непосредственно
Через создание объекта
Через результат вызова системной функции
Через обращение к свойству объекта
Составные и простые типы
Если не указано специально, то тип значений не ограничивается.
В случае реквизитов объектов метаданных, тип значений задается на этапе конфигурирования из типов доступных к записи (примитивные, ссылки на объекты, хранилище значений), а так же от вида объекта и контекста(среды, места) исполнения. При этом доступно ограничение реквизита одним типом или несколькими. Например, нам необходимо записывать в одно поле, либо значение «строки», либо «числа».
Для других объектов, тип реквизитов может остаться не ограниченными (произвольного типа), либо ограничен через специальный тип «ОписаниеТипов«
Например, для простого случая
Данный объект также используется для ограничения выбора или внесения данных в диалоговых формах
Приведение значений
Производится автоматически при присвоении к реквизиту (свойству) объекта, если данный реквизит не может хранить данное значение
Также при операциях конкатенации, производится к сначала первому слагаемому, при вычитании, если допустимо, ко втором, а затем уже к результату.
Такие «сложные» преобразования требуется проводить с осторожностью.
Приведение значений через встроенные функции преобразования
Следует обратить внимание, что некоторые преобразования система не сможет сделать, и это вызовет ошибку исполнения, поэтому проверка должна производится разработчиком
Проверка типов
Сравнение производится через специальные функции ТипЗнч() и Тип().
Первая возвращает значение передаваемого типа, вторая задает тип для проверки
Сам объект «Тип» является вспомогательным и не может быть записан в реквизиты
Сравнение значений
Неверно что тип данных относится к базовым 1с
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: типы данных в 1С
Автор уроков и преподаватель школы: Владимир Милькин
Теперь мы знаем как заставить компьютер выполнять наши команды (на примере команды «Сообщить») и как передать командам определенные параметры (текст сообщения, который следует в скобках после «Сообщить»). Также мы уяснили, что все команды между собой разделяются точкой с запятой.
Замечательно. Давайте двигаться дальше. Возможности программирования гораздо шире, чем вы можете себе представить на данный момент. Наберитесь терпения!
Типы данных
Задание №6. Запишите в формате компьютера (используя нужный тип данных) ответы на следующие вопросы:
Запишите себе на сколько из трёх вопросов вы ответили верно.
Задание №7. Напишите программу, которая заставит компьютер вывести ваши ответы на экран. Отдельно обращаю ваше внимание, что не все ответы нужно выводить как строки. Каждый ответ должен быть выведен как данные своего типа.
По результатам выполнения задания №7 можно сделать интересный вывод: в качестве параметра для команды Сообщить можно передавать не только строки, но и данные любого другого типа.
Обработка данных
Теперь, наконец, давайте обрабатывать эти данные! Какие операции мы можем совершать над данными? Это зависит от их типа.
Например, строки мы можем соединять одну с другой при помощи знака сложения:
Над числами можно выполнять различные арифметические операции:
Для более сложных арифметических выражений используйте скобки:
К дате можно прибавлять и отнимать секунды:
Задание №8. Выполните указанные примеры на компьютере.
Задание №9. Запишите в формате компьютера следующую дату: 19 июля 1980 года. Напишите программу, которая прибавит к этой дате столько секунд, чтобы в результате получилось 20 июля 1980 года.
Преобразование данных
А что будет, если мы попытаемся обработать различные типы данных в одной команде? Напишем, например, вот так:
Какой ответ компьютер выведет на экран? Попытайтесь догадаться сами.
Операция умножения имеет более высокий приоритет, чем операция сложения. Поэтому сначала компьютер вычислит результат умножения друг на друга чисел 3 и 4. Получится число 12.
Далее компьютер попытается сложить два слагаемых: строку «3 * 4 = » и число 12, но так как первым идёт слагаемое с типом строка, то и второе слагаемое будет преобразовано в строку «12».
Результатом сложения строк «3 * 4 = » и «12» будет строка «3 * 4 = 12».
Убедитесь в этом, выполнив данную программу на компьютере.
Неверно что тип данных относится к базовым 1с
В предыдущей статье типы и значения 1С — мы начали обсуждать что такое типы значений 1С и преобразование типов 1С.
Сегодня мы поговорим подробнее про типы объектов конфигурации 1С (тип документа 1С, тип справочника 1С и др.)
Так как в программном коде мы работаем со значениями, то периодически требуется знать их тип. Тип 1С всегда указывается в метаданных у реквизитов — в справочниках, документах.
Работа с типами 1С часто используется:
Тип 1С можно получить:
Типы 1С можно разделить на три вида:
Определение типа 1С и сравнение типов 1С
Узнать тип значения 1С можно с помощью функции ТипЗнч(Переменная)
Чтобы понять какой тип 1С эта функция вернула – нужно указать нужный нам Тип(«ИмяТипа»)
Например, определение (сравнение) типа 1С переменной:
Если ТипЗнч(Переменная) = Тип(«ИмяТипа») Тогда
Какие типы писать в качестве ИмяТипа?
Базовые типы 1С — число, строка, дата, булево.
Например:
Знч = 12;
Если ТипЗнч(Знч) = Тип(«Число») Тогда
ИначеЕсли Знч = Тип(«Строка») Тогда
ИначеЕсли Знч = Тип(«Дата») Тогда
ИначеЕсли Знч = Тип(«Булево») Тогда
КонецЕсли;
1С хранит данные в базе данных, но не в виде отдельных записей, а в виде объектов.
Большинство сохраняемых объектов (в том числе: справочники, документы, перечисления, бизнес-процессы, задачи) доступны в виде Объекта (для изменения и записи) и в виде Ссылки (для чтения). Подробнее см. «Ссылки и объекты».
Например:
Знч = Справочники.Организации.ПустаяСсылка();
Если ТипЗнч(Знч) = Тип(«СправочникСсылка.Организации») Тогда
ИначеЕсли Знч = Тип(«СправочникОбъект.Организации») Тогда
ИначеЕсли ТипЗнч(Знч) = Тип(«ДокументСсылка.ПоступлениеТоваров») Тогда
ИначеЕсли Знч = Тип(«ДокументОбъект.ПоступлениеТоваров») Тогда
КонецЕсли;
Регистры могут быть представлены различными типами. Имя типа регистра составное:
РегистрТипрегистраТипдоступа.ИмяРегистра
Типов доступов к регистру несколько. Чаще всего используются:
Итого, пример:
Если ТипЗнч(Знч) = Тип(«РегистрСведенийСписок.ИмяРегистра») Тогда
ИначеЕсли Знч = Тип(«РегистрНакопленияНаборЗаписей.ИмяРегистра») Тогда
КонецЕсли;
Язык 1С позволяет работать со множеством объектов, создаваемых динамически в программе, например – массив, список значений, таблица значений, структура…
Такие типы 1С указываются по их названию (одним словом, без пробелов). Например:
Если ТипЗнч(Знч) = Тип(«Массив») Тогда
ИначеЕсли Знч = Тип(«СписокЗначений») Тогда
КонецЕсли;
Определение значения ссылочного типа 1С
Работа со всеми объектами базы данных (справочники, документы…) ведется через ссылки. Например, если мы хотим в документе сделать реквизит – справочник, то его тип 1С будет «СправочникСсылка.ИмяСправочника».
Мы можем определить является ли ссылка справочником или документом с помощью метода ТипВсеСсылки()
Например:
Значение = Справочники.Организации.ПустаяСсылка();
Если Справочники.ТипВсеСсылки().Содержит( ТипЗнч(Значение) ) Тогда
//это справочник
ИначеЕсли Документы.ТипВсеСсылки().Содержит( ТипЗнч(Значение)) Тогда
//это документ
КонецЕсли;
Работа с типами 1С в запросе
В запросе тип 1С можно проверить двумя способами.
Первый – аналогично описанному, но в имени типа 1С не указывается «Ссылка» или «Объект», то есть вместо «СправочникСсылка.Организации» пишем «Справочник.Организации»
Получение доступных типов 1С
Работа с типами 1С реквизитов в метаданных конфигурации
При добавлении и редактировании реквизитов в конфигураторе программист указывает тип(ы) 1С реквизита. В программном коде на языке 1С можно получить (узнать) тип(ы) 1С реквизита.
Подробнее про работу с метаданными см. далее «Работа с метаданными».
Как работать с этим списком типов 1С – см. «ОписаниеТипов» в разделе «Язык 1С».
Указать фильтр типов 1С
У многих объектов возможно указать фильтр типов значений 1С, возможных к использованию, например:
Чтобы указать список типов 1С для фильтра – используется список типов 1С, как с ним работать – см. «Описание типов» в разделе «Язык 1С».










