Как представлены примитивные типы данных в программном коде 1с
Во встроенном языке системы «1С:Предприятие» поддерживается набор примитивных типов данных. Для большинства примитивных типов данных предусмотрена возможность использования в тексте модуля литералов, то есть указание значения соответствующего типа непосредственно в модуле.
// Пример использования литерала типа Строка
А = “Моя строка”;
// Пример использования литерала типа Булево
Б = Истина ;
// Пример использования литерала типа Число
В = 12345.6789;
Описание:
Значения данного типа используются исключительно для определения отсутствующего значения при работе с базой данных, например, при соединении таблиц.
Литералы:
NULL
Булево (Boolean)
Описание:
Значения данного типа имеют два значения – Истина и Ложь , задаваемых соответствующими литералами. Значения данного типа возвращаются в качестве результата вычисления логических выражений.
Примечание:
В операциях сравнения встроенного языка используются логические выражения. Это означает, что в выражении сравнения не обязательно писать так:
Если МояПеременная = Истина Тогда
КонецЕсли;
Достаточно написать так:
Если МояПеременная Тогда
КонецЕсли;
Литералы:
● Истина (True) ,
● Ложь (False).
Дата (Date)
Описание:
Значения данного типа содержат дату от Рождества Христова (с 01 января 0001 года) и время с точностью до секунды.
Литералы:
Строка цифр, заключенная в одинарные кавычки вида ‘ГГГГММДДччммсс’, где:
● ГГГГ – четыре цифры года (включая тысячелетие и век);
● ММ – две цифры месяца;
● ДД – две цифры даты;
● чч – две цифры часа (в 24-часовом формате);
● мм – две цифры минут;
● сс – две цифры секунд.
Во встроенном языке в литерале типа Дата обязательно должно задаваться значение года, месяца и дня. Для задания даты, соответствующей началу отсчета, достаточно указать ‘00010101’. Допускается при указании литералов типа Дата опускать значение секунд. В этом случае секунды будут равны 0.
В литерале даты игнорируются все значения, отличные от цифр. Разделители в литерале можно указывать для упрощения ввода даты.
Пример:
Дата (‘2008.03.23 10:45:23’) = “23.03.2008 10:45:23”
Дата (‘2008\03\23-10~45~23’) = “23.03.2008 10:45:23”
Число (Number)
Описание:
Числовым типом может быть представлено любое десятичное число. Определены основные арифметические операции над данными числового типа: сложение, вычитание, умножение и деление.
ВНИМАНИЕ! Максимально допустимая разрядность числа – 32 знака.
Литералы:
Набор цифр, написанных непосредственно в тексте модуля вида:
[+|-]<0|1|2|3|4|5|6|7|8|9>[.<0|1|2|3|4|5|6|7|8|9>]
В качестве разделителя целой и дробной части используется точка.
Пример:
А = 15;
Б = -968.612;
Описание:
Значения данного типа содержат строку произвольной длины в формате Unicode . Строка закодирована в формате UTF-16. При необходимости указания в строке суррогатной пары, следует использовать два вызова функции Символ() с последовательным указанием значения каждого code unit из суррогатной пары.
Литералы:
Литералы строкового типа представляют собой набор символов, заключенных в кавычки. Для задания в строке символа “ (кавычка) необходимо записать две кавычки подряд ( “” ).
Кроме того, допускаются « многострочные » строковые константы. В исходном тексте многострочные константы могут задаваться двумя способами:
● Между фрагментами, представляющими отдельные строки многострочной строки, не должно встречаться никаких символов, за исключением
пробелов, переводов строки и строк комментариев.
● Каждая отдельная составляющая не замыкается кавычками, а на каждой последующей строке помещен символ переноса строки «|» (вертикальная черта). В этом варианте комментарии допускаются, если строка начинается с символа комментария «//».
Пример:
// Пример строки
МояСтрока = “Это правильная строка”;
// Пример 1 многострочной строки
МояМногострочнаяСтрока = “Это
|правильная
|многострочная
|строка”;
// Пример 2 многострочной строки
МояМногострочнаяСтрока = “Это тоже” //Это комментарий
“ правильная “
“многострочная”
“строка”;
// Пример 3 строки с кавычками
НазваниеФирмы = “ООО “”Василек”””;
// Пример 4 суррогатная пара
ТекстССуррогатнойПарой = “Иероглиф: ” + Символ(55401) + Символ(56997);
Результат вывода на экран или печать строки НазваниеФирмы (пример 3) будет выглядеть следующим образом: ООО “Василек”
Неопределено (Undefined)
Описание:
Значение данного типа применяется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Например, такое значение изначально имеют реквизиты с составным типом значения. Существует одно-единственное значение данного типа, задаваемое литералом.
Литералы:
Неопределено (Undefined)
Тип (Type)
Описание:
Значения данного типа используются для идентификации типов значений. Это необходимо для определения и сравнения типов. Данный тип не имеет
литералов и возвращается функциями встроенного языка ТипЗнч и Тип .
Система типов — это особая система, по которой организуются данные, используемые прикладными решениями. Система типов позволяет представить информацию реального мира в терминах, «понятных» для «1С:Предприятия 8».
Система типов предоставляет широкие возможности как для описания непосредственно бизнес-логики прикладных решений, так и для выполнения задач промежуточной обработки данных.
Описание системы типов содержится в синтакс-помощнике, во встроенной справке и в документации.
Основной особенностью системы типов является то, что есть типы, существующие в любом прикладном решении. Сами эти типы определены на уровне платформы и присутствуют всегда, независимо от действий разработчика. Наряду с ними в конкретном прикладном решении могут существовать различные типы данных, присущие именно этому конкретному прикладному решению. Для таких типов данных на уровне платформы определены лишь общие правила их создания, шаблоны. А конкретные типы данных создаются платформой уже исходя из того, каким образом разработчик формирует и модифицирует структуру прикладного решения.
Типы данных, определенные на уровне платформы
Набор типов, которыми могут оперировать прикладные решения, довольно разнообразен. Он позволяет решать как задачи обработки данных, так и задачи представления этих данных пользователю и интерактивной работы с ними. Можно выделить несколько основных категорий типов данных.
Примитивные типы
Примитивные типы данных — это такие типы как Строка, Число, Дата, Булево и другие. Эти типы не являются чем-то особенным для «1С:Предприятия 8». Как правило, такие типы данных существуют и в других программных системах.
Значения примитивных типов являются простыми неделимыми значениями, в которых нельзя выделить отдельные составляющие. Например, значениями типа Число могут быть 1, 8, 15 и др. Чтобы создать значение примитивного типа, в тексте программы нужно указать его литерал — символьный идентификатор значения.
Универсальные коллекции значений
Также, существуют более сложные типы данных. Например, платформа поддерживает целый ряд типов, которые представляют собой универсальные коллекции значений: Массив, Структура, СписокЗначений и другие.
Общие типы
Кроме этого в платформе реализованы специфические типы данных, реализующие ту или иную функциональность прикладных решений: ТекстовыйДокумент, ТабличныйДокумент, ХранилищеЗначения, ПостроительЗапроса и другие.
Общие типы называют также общими объектами. Значения этих типов, в отличие от значений примитивных типов, представляют собой совокупность значений отдельных свойств объекта. Поэтому их называют экземплярами объектов.
Экземпляры объектов создаются с помощью специального оператора встроенного языка — Новый.
Интерфейсные типы
Интерфейсные типы позволяют организовывать визуальное взаимодействие прикладного решения с пользователем. В основном это типы, связанные с работой форм и их элементов.
Типы данных, образуемые в прикладном решении
Однако, наряду с типами данных, которые определены на уровне платформы, конкретное прикладное решение может использовать уникальные типы данных, существующие только в этом конкретном прикладном решении. Причем платформа будет полностью поддерживать работу с этими типами данных точно так же, как и с типами, которые определены на уровне самой платформы.
Как правило, появление новых типов данных в прикладном решении связано с использованием прикладных объектов конфигурации. Поэтому такие типы называют еще прикладными типами или прикладными объектами.
На уровне платформы поддерживается несколько классов (шаблонов) прикладных объектов, которые сами по себе не могут быть использованы в конкретном прикладном решении. Например, можно перечислить такие классы прикладных объектов как Справочники, Документы, Регистры сведений, Планы видов характеристик и пр.
Для каждого класса прикладных объектов определена соответствующая ему базовая функциональность: типы таблиц базы данных, которые должны быть созданы для хранения данных, типовые формы, типовые объекты языка, наборы прав и пр.
Разработчик, создавая прикладное решение, не имеет возможности использовать эти классы напрямую, однако может добавить в свое прикладное решение новый объект конфигурации, наследующий всю функциональность того или иного класса:
Например, разработчик может добавить в свое прикладное решение новый справочник Номенклатура, который будет наследовать функциональность класса Справочники, или новый документ КассовыйОтчет, который будет наследовать функциональность класса Документы.
Сразу же после такого добавления разработчику становятся доступны новые типы данных, состав которых определяется принадлежностью объекта конфигурации к тому или иному классу прикладных объектов.
- СправочникМенеджер.Номенклатура;
- СправочникСсылка.Номенклатура;
- СправочникОбъект.Номенклатура;
- СправочникВыборка.Номенклатура;
- СправочникСписок.Номенклатура.
Система типов описывает лишь общую «структуру» такого типа, правила, по которым будут формироваться объекты этого типа. Конкретное имя типа, состав свойств и методов объекта будут зависеть от того, как разработчик назовет объект конфигурации и какие, например, реквизиты, табличные части он в него добавит.
В то же время, после создания нового регистра накопления ПродажиКомпании, состав новых типов данных будет уже другим:
- РегистрНакопленияМенеджер.ПродажиКомпании,
- РегистрНакопленияВыборка.ПродажиКомпании,
- РегистрНакопленияСписок.ПродажиКомпании,
- РегистрНакопленияНаборЗаписей.ПродажиКомпании,
- РегистрНакопленияЗапись.ПродажиКомпании,
- РегистрНакопленияКлючЗаписи.ПродажиКомпании.
Следует еще раз отметить, что эти типы данных не поддерживаются платформой изначально, и существуют только в конкретном прикладном решении.
Еще один момент, на котором следует акцентировать внимание, проще всего продемонстрировать на примере.
Допустим, в прикладном решении созданы два новых справочника: Номенклатура и Цены. Несмотря на то, что оба эти объекта унаследовали функциональность соответствующего класса Справочники, и для них в прикладном решении был создан один и тот же состав типов данных, «одноименные» типы данных будут являться различными типами данных. Например, СправочникОбъект.Номенклатура и СправочникОбъект.Цены — это различные типы данных.
Так происходит потому, что разработчик может дополнительно к базовой функциональности, унаследованной от соответствующего класса, добавить свою, особенную для каждого объекта конфигурации. Например, оба упомянутых выше справочника могут содержать табличные части (это унаследовано от класса Справочники). Однако для справочника Цены разработчик не создаст ни одной табличной части, в то время как для справочника Номенклатура он создаст, например, три табличные части. Очевидно, что структура хранения данных типа СправочникОбъект.Номенклатура будет значительно отличаться от структуры хранения данных типа СправочникОбъект.Цены.
Встроенный язык является важной частью технологической платформы «1С:Предприятия 8», поскольку позволяет разработчику описывать собственные алгоритмы функционирования прикладного решения.
Встроенный язык имеет много общих черт с другими языками, такими как Pascal, Java Script, Basic, что облегчает его освоение начинающими разработчиками. Однако он не является прямым аналогом какого-либо из перечисленных языков.
- предварительная компиляция — перед исполнением модули, содержащие текст на встроенном языке, преобразуются во внутренний код;
- кэширование скомпилированных модулей в памяти;
- мягкая типизация — тип переменной определяется типом значения, которое она содержит, и может изменяться в процессе работы;
- отсутствие программного описания объектов конфигурации — разработчик может использовать либо встроенные в платформу объекты, либо объекты, созданные системой в результате визуального конструирования прикладного решения.
Событийная ориентированность встроенного языка
Назначение встроенного языка в системе 1С:Предприятие определяется идеологией создания прикладных решений. Прикладные решения в 1С:Предприятии 8 не кодируются целиком. Большая часть прикладного решения создается разработчиком путем визуального конструирования — создания новых объектов конфигурации, задания их свойств, форм представления, взаимосвязей и пр. Встроенный язык используется лишь для того, чтобы определить поведение объектов прикладного решения, отличное от типового, и создать собственные алгоритмы обработки данных.
По этой причине модули, содержащие текст на встроенном языке, используются системой в конкретных, заранее известных ситуациях, которые могут возникнуть в процессе работы прикладного решения. Такие ситуации называются событиями. События могут быть связаны с функционированием объектов прикладного решения или с самим прикладным решением, как таковым.
Например, с функционированием объекта прикладного решения Справочник связан ряд событий, среди которых есть событие ПередЗаписью:
Это событие возникает непосредственно перед тем, как данные элемента справочника должны быть записаны в базу данных. Разработчик, используя встроенный язык, может описать алгоритм, который, например, будет проверять корректность данных, введенных пользователем. Разместив этот алгоритм в соответствующем модуле, разработчик обеспечит то, что каждый раз, как пользователь будет выполнять запись элемента справочника, система будет выполнять созданный разработчиком алгоритм и проверять, не забыл ли пользователь заполнить обязательные реквизиты справочника.
Таким образом можно сказать, что встроенный язык является скриптовым языком для программирования бизнес-логики, а использование модулей на встроенном языке является событийно-зависимым, т. е. выполнение модулей происходит при возникновении определенных событий в процессе функционирования прикладного решения.
Универсальные коллекции значений
Встроенный язык поддерживает работу с большим количеством разнообразных объектов. Безусловно, основную группу объектов составляют прикладные объекты, позволяющие описывать алгоритмы функционирования бизнес-логики.
Однако не менее важной группой являются объекты, предназначенные для хранения временных наборов данных в течение сеанса работы пользователя. Как правило, они служат для вспомогательного сбора, группировки, анализа и обработки информации:
Перечислим кратко их возможности:
Массив
Представляет собой пронумерованную коллекцию значений произвольного типа. К элементу массива можно обращаться по его индексу. В качестве элементов массива могут выступать, в частности, другие массивы. Это позволяет создавать многомерные массивы.
Структура
Представляет собой поименованную коллекцию, состоящую из пар ключ — значение. Ключ может быть только строковым, значение — произвольного типа. К элементу структуры можно обращаться по значению его ключа, т. е. по имени. Обычно используется для хранения небольшого количества значений, каждое из которых имеет некоторое уникальное имя.
Соответствие
Также как и структура, представляет собой коллекцию пар ключ — значение. Однако, в отличие от структуры, ключ может быть практически любого типа.
Список значений
Используется, как правило, для решения интерфейсных задач. Позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может содержать значения любого типа, кроме того, в одном списке типы хранимых значений могут быть разными.
Например, список значений может использоваться для выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.
Таблица значений
Таблица значений позволяет строить динамические наборы значений и манипулировать ими. Она может быть наполнена значениями любого типа, и в одной таблице типы хранимых значений могут быть разными.
Одним из примеров использования таблицы значений может служить организация представления в форме списка элементов справочника, отобранных по сложному алгоритму.
Дерево значений
Дерево значений представляет собой динамически формируемый набор значений любого типа, похожий на таблицу значений. В отличие от таблицы значений, строки дерева значений могут образовывать иерархические структуры: каждая строка дерева может иметь набор подчиненных строк, каждая из подчиненных строк, в свою очередь, также может иметь набор подчиненных строк и так далее. При этом поиск значений, сортировка, получение итогов могут осуществляться либо по текущему уровню иерархии, либо включая все подчиненные.
COMSafeArray
Представляет собой объектную оболочку над многомерным массивом SAFEARRAY из COM. Позволяет создавать и использовать SAFEARRAY для обмена данными между COM-объектами.
Фиксированный массив
Неизменяемый массив. Массив заполняется системой при инициализации объектов данного типа или разработчиком, с помощью конструктора.
Редактор текстов и модулей
Для создания и изменения текстов на встроенном языке разработчик может использовать редактор текста и модуля, обладающий удобными средствами создания, редактирования и синтаксической проверки модулей. Подробнее…
Примитивные типы данных 1с позволяют использовать “простые” не структурированные значения.
К примитивны типам данных в 1с относятся:
Базовые типы данных являются общими и не привязаны непосредственно к объектам конфигурации.
Существуют следующие базовые типы данных:
- числовой — любое десятичное число;
- строковый — любая последовательность символов, в том числе и пустая;
- дата — любая дата и время из допустимого диапазона;
- булево — принимает одно из двух возможных значений: Истина или Ложь;
- не определено — пустое значение, не принадлежащее ни к какому другому типу.
Базовые типы данных могут быть преобразованы друг в друга функциями преобразования.
Тип данных Число
По сравнению с другими языками программирования, в 1с не разделяются числа на дробные и целые и так далее. Все числа в 1с относятся к типу Число.
В значениях типа “Число”, имеющих дробную часть, в тексте программного целая
и дробная части разделяются точкой. Вот так: 5.25. Функции и операции работы с числами рассмотрены в статье “Математические функции 1с”.
&НаКлиенте Процедура Команда1(Команда) //Тип данных Число Перем Слагаемое1; Перем Слагаемое2; Перем Сумма; Слагаемое1=10; Слагаемое2=20; Сумма=Слагаемое1+Слагаемое2; Сообщить("Сумма wp-block-image size-full">
Тип данных Строка
Значения типа “Строка” в тексте программного модуля заключаются в двойные кавычки. Для типа Строка допускается операция сложения или конкатенации. Строковые функции также рассмотрены в отдельной статье “Строковые функции в 1с”.
&НаКлиенте Процедура Команда2(Команда) //Тип данных Строка Перем Фамилия; Перем Имя; Перем Отчество; Перем Фио; Имя="Барсик"; Фамилия="Пушковский"; Отчество="Чернышевич"; ФИО=Фамилия+Имя+Отчество; Сообщить("ФИО wp-block-image size-full">
Тип данных Дата
Значения типа “Дата” в тексте программного модуля заключаются в одинарные кавычки. Вот так: ‘20120310’ или ‘20120310195900’. Первый пример означает 10 марта 2012 года (2012 год, 03 месяц, 10 день), второй пример — 10 марта 2012 года 19 часов 59 минут 00 секунд (2012 год, 03 месяц, 10 день, 19 час, 59 минута, 00 секунд). Функции работы с Датой частично представлены в статье: “Тип дата примеры”.
Тип данных Булево
Значения типа Булево могут принимать только два значения:
В программном коде допускается использовать названия данных значений, как на русском так и на английском языках.
Тип данных Тип
Язык программирования в 1с : Предприятии не является типизированным. Это означает, что для работы с переменными и значениями не обязательно указывать тип. Этот тип применяется для проверки принадлежности переменной конкретному типу.
&НаКлиенте Процедура Команда3(Команда) Перем Сумма; Перем Проверка; Сумма=10; Если ТипЗнч(Сумма)=Тип("Число") тогда Проверка=Истина; иначе Проверка=Ложь; конецесли; Сообщить("Проверка entry-footer">
Типы данных в 1с являются одним из основных понятий. Тип данных определяет ту информацию, которую может содержать переменная или объект конфигурации.
В 1с выделяют три основные группы данных:
Группы типов данных
- простые (примитивные) типы
- типы-объекты и их подчиненные
- типы-объекты из метаданных (прикладные типы)
- интерфейсные типы
- прочие типы общего назначения
Во-первых Примитивные типы данных( в них входят базовые типы)
Примитивные типы данных 1с
Список примитивных типов 1с можно посмотреть в Синтакс-помощнике:
Окно синтакс-помошника.
К примитивны типам данных в 1с относятся:
- Число – целые или десятичные числа;
- Строка – строковые значения ограниченной или неограниченной длины;
- Дата-дата, время, дата+время;
- Булево-значения Истина или Ложь;
- Тип
- Неопределенно
- Null
Базовые типы данных являются общими и не привязаны непосредственно к объектам конфигурации.
Существуют следующие базовые типы данных:
- числовой — любое десятичное число;
- строковый — любая последовательность символов, в том числе и пустая;
- дата — любая дата и время из допустимого диапазона;
- булево — принимает одно из двух возможных значений: Истина или Ложь;
- не определено — пустое значение, не принадлежащее ни к какому другому типу.
Базовые типы данных могут быть преобразованы друг в друга функциями преобразования.
В статьях, посвященных математическим и строковым функциям они рассматриваются.
Типы-объекты данных 1с
- Коллекции значений (Массивы, Структуры, ТаблицыЗначений и другие)
- Интеграционные (Com, файлы, внешние объекты, zip, WS)
- Общего назначения
В-вторых типы-объекты. Они не относятся не к примитивным не к зависимым, но они имеются во встроенном языке 1с. К этим типам данных принято относить универсальные коллекции значений.
Типы-объекты из метаданных (прикладные типы)
В-третьих Типы данных, зависимые от метаданных. Данные типы появляются после задания в конфигурации объектов конфигурации. Различные объекты конфигурации определяют разное количество зависимых типов данных.
Типообразующие объекты 1с
Сразу же после такого добавления разработчику становятся доступны новые типы данных, состав которых определяется принадлежностью объекта к тому или иному классу прикладных объектов. Например, после создания нового справочника Номенклатура, становятся доступны следующие типы данных:
- СправочникМенеджер.Номенклатура;
- СправочникСсылка.Номенклатура;
- СправочникОбъект.Номенклатура;
- СправочникВыборка.Номенклатура;
- СправочникСписок.Номенклатура.
Еще один момент, на котором следует акцентировать внимание, проще всего продемонстрировать на примере. Допустим, в прикладном решении созданы два новых справочника: Номенклатура и Цены. Несмотря на то, что оба эти объекта унаследовали функциональность соответствующего класса Справочники, и для них в прикладном решении был создан один и тот же состав типов данных, одноименные типы данных будут являться различными типами данных. Например, СправочникОбъект.Номенклатура и СправочникОбъект.Цены – это различные типы данных.
Интерфейсные типы 1с
В-четвертых связанные с окнами, формами и элементами форм (полей, надписей, табличных данных и других)
Читайте также: