1с тип данных произвольный это

Обновлено: 07.07.2024

Это именованное значение данных для хранения и последующего доступа.

Могут быть произвольного допустимого в рамках 1С и контекста типа.

Объявление переменных

Явное объявление переменных в 1с, в общем случае, не обязательно и может производится непосредственно перед использованием.

Примеры явного объявления переменной:

Пример объявления в функции:

В данном случае мы видим две переменные :

Именование переменных

Не могут начинаться на цифру, но могут ее содержать.

Не рекомендуется именовать переменные используя имена конструкций языка, свойств реквизитов объектов, в некоторых случаях система не даст этого сделать, в других может привести к неявным ошибкам.

Например, находясь в контексте формы, нельзя использовать имя переменной Заголовок, т.к. в этом случае будет происходить непосредственное изменение заголовка окна формы.

Имя должно быть понятным, запоминаемым. Допускается использование префиксов для удобства восприятия, например: лЛокальнаяПеременная, фПеременнаяФормы.

Обычно применяется выделение регистром для визуального осмысления: ВременнаяПеременнаяДляХраненияПромежуточныхРасчетов

Длина имени переменных не ограничена в разумных пределах, опирайтесь на удобство чтения кода.

Инициализация переменных

В момент объявления переменные явно присвоить значение возможно только, если это параметр функции

Также не является обязательным инициализация ранее объявленной переменной сразу, это может быть сделано непосредственно перед использование.

Видимость переменных

В версии 8 в отличии от 7.7. глобальных переменных не существует и их видимость определяется контекстом исполнения

Передача значений переменных

В случае, если вам все-таки требуется передать значение, необходимо:

  • подумать над тем, верный ли выбрали тип или место исполнения (возможно вы гоняете не те данные или не туда)
  • использовать более универсальный тип для передачи
  • преобразовывать тип в более простой перед транспортировкой, и обратно преобразовывать в месте получения

Конвертация значений будет рассмотрена в других разделах.

Реклама — величайшее искусство XX века.

— Маршалл Маклюэн

В 1С очень много предопределенных типов значений, их можно подразделить на несколько групп.

Группы типов данных

  • простые (примитивные) типы
  • типы-объекты и их подчиненные
  • типы-объекты из метаданных (прикладные типы)
  • интерфейсные типы
  • прочие типы общего назначения

Простые типы

Типы-объекты

  • Коллекции значений (Массивы, Структуры, ТаблицыЗначений и другие)
  • Интеграционные (Com, файлы, внешние объекты, zip, WS)
  • Общего назначения

Объекты из метаданных (прикладные)

Интерфейсные

Связанные с окнами, формами и элементами форм (полей, надписей, табличных данных и других)

Другие варианты подразделения значений

Задание типов значений

Значение может быть установлено:

Непосредственно

Через создание объекта

Через результат вызова системной функции

Через обращение к свойству объекта

Составные и простые типы

Если не указано специально, то тип значений не ограничивается.

Например, для простого случая

Данный объект также используется для ограничения выбора или внесения данных в диалоговых формах

Приведение значений

Производится автоматически при присвоении к реквизиту (свойству) объекта, если данный реквизит не может хранить данное значение

Также при операциях конкатенации, производится к сначала первому слагаемому, при вычитании, если допустимо, ко втором, а затем уже к результату.

Приведение значений через встроенные функции преобразования

Следует обратить внимание, что некоторые преобразования система не сможет сделать, и это вызовет ошибку исполнения, поэтому проверка должна производится разработчиком

Проверка типов

Сравнение производится через специальные функции ТипЗнч() и Тип().

Первая возвращает значение передаваемого типа, вторая задает тип для проверки

ЭтоЧисло = 15; //ответ на вопрос: тип значения переменной "ЭтоЧисло" является ли типом "Число" ЭтоБулево = ТипЗнч(ЭтоЧисло) = Тип("Число"); //Первый знак "=" - присвоение //Второй " i-11">Сравнение значений

  • при сравнении на равенство по четкому совпадению типа и значения, приведение не производится
  • сравнение на > или < (на больше-меньше) допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)

Более подробно на типах останавливаться не буду, лучше их прочувствовать в реальных задачах или узких примерах

Система типов — это особая система, по которой организуются данные, используемые прикладными решениями. Система типов позволяет представить информацию реального мира в терминах, «понятных» для «1С:Предприятия 8».

Система типов предоставляет широкие возможности как для описания непосредственно бизнес-логики прикладных решений, так и для выполнения задач промежуточной обработки данных.

Описание системы типов содержится в синтакс-помощнике, во встроенной справке и в документации.

Основной особенностью системы типов является то, что есть типы, существующие в любом прикладном решении. Сами эти типы определены на уровне платформы и присутствуют всегда, независимо от действий разработчика. Наряду с ними в конкретном прикладном решении могут существовать различные типы данных, присущие именно этому конкретному прикладному решению. Для таких типов данных на уровне платформы определены лишь общие правила их создания, шаблоны. А конкретные типы данных создаются платформой уже исходя из того, каким образом разработчик формирует и модифицирует структуру прикладного решения.

Типы данных, определенные на уровне платформы

Набор типов, которыми могут оперировать прикладные решения, довольно разнообразен. Он позволяет решать как задачи обработки данных, так и задачи представления этих данных пользователю и интерактивной работы с ними. Можно выделить несколько основных категорий типов данных.

Примитивные типы

Примитивные типы данных — это такие типы как Строка, Число, Дата, Булево и другие. Эти типы не являются чем-то особенным для «1С:Предприятия 8». Как правило, такие типы данных существуют и в других программных системах.

Система типов

Значения примитивных типов являются простыми неделимыми значениями, в которых нельзя выделить отдельные составляющие. Например, значениями типа Число могут быть 1, 8, 15 и др. Чтобы создать значение примитивного типа, в тексте программы нужно указать его литерал — символьный идентификатор значения.

Универсальные коллекции значений

Также, существуют более сложные типы данных. Например, платформа поддерживает целый ряд типов, которые представляют собой универсальные коллекции значений: Массив, Структура, СписокЗначений и другие.

Система типов

Общие типы

Кроме этого в платформе реализованы специфические типы данных, реализующие ту или иную функциональность прикладных решений: ТекстовыйДокумент, ТабличныйДокумент, ХранилищеЗначения, ПостроительЗапроса и другие.

Система типов

Общие типы называют также общими объектами. Значения этих типов, в отличие от значений примитивных типов, представляют собой совокупность значений отдельных свойств объекта. Поэтому их называют экземплярами объектов.

Экземпляры объектов создаются с помощью специального оператора встроенного языка — Новый.

Интерфейсные типы

Интерфейсные типы позволяют организовывать визуальное взаимодействие прикладного решения с пользователем. В основном это типы, связанные с работой форм и их элементов.

Система типов

Типы данных, образуемые в прикладном решении

Однако, наряду с типами данных, которые определены на уровне платформы, конкретное прикладное решение может использовать уникальные типы данных, существующие только в этом конкретном прикладном решении. Причем платформа будет полностью поддерживать работу с этими типами данных точно так же, как и с типами, которые определены на уровне самой платформы.

Как правило, появление новых типов данных в прикладном решении связано с использованием прикладных объектов конфигурации. Поэтому такие типы называют еще прикладными типами или прикладными объектами.

Система типов

На уровне платформы поддерживается несколько классов (шаблонов) прикладных объектов, которые сами по себе не могут быть использованы в конкретном прикладном решении. Например, можно перечислить такие классы прикладных объектов как Справочники, Документы, Регистры сведений, Планы видов характеристик и пр.

Для каждого класса прикладных объектов определена соответствующая ему базовая функциональность: типы таблиц базы данных, которые должны быть созданы для хранения данных, типовые формы, типовые объекты языка, наборы прав и пр.

Разработчик, создавая прикладное решение, не имеет возможности использовать эти классы напрямую, однако может добавить в свое прикладное решение новый объект конфигурации, наследующий всю функциональность того или иного класса:

Система типов

Например, разработчик может добавить в свое прикладное решение новый справочник Номенклатура, который будет наследовать функциональность класса Справочники, или новый документ КассовыйОтчет, который будет наследовать функциональность класса Документы.

Сразу же после такого добавления разработчику становятся доступны новые типы данных, состав которых определяется принадлежностью объекта конфигурации к тому или иному классу прикладных объектов.

Например, после создания нового справочника Номенклатура, становятся доступны следующие типы данных:
  • СправочникМенеджер.Номенклатура;
  • СправочникСсылка.Номенклатура;
  • СправочникОбъект.Номенклатура;
  • СправочникВыборка.Номенклатура;
  • СправочникСписок.Номенклатура.

Система типов описывает лишь общую «структуру» такого типа, правила, по которым будут формироваться объекты этого типа. Конкретное имя типа, состав свойств и методов объекта будут зависеть от того, как разработчик назовет объект конфигурации и какие, например, реквизиты, табличные части он в него добавит.

Система типов

В то же время, после создания нового регистра накопления ПродажиКомпании, состав новых типов данных будет уже другим:
  • РегистрНакопленияМенеджер.ПродажиКомпании,
  • РегистрНакопленияВыборка.ПродажиКомпании,
  • РегистрНакопленияСписок.ПродажиКомпании,
  • РегистрНакопленияНаборЗаписей.ПродажиКомпании,
  • РегистрНакопленияЗапись.ПродажиКомпании,
  • РегистрНакопленияКлючЗаписи.ПродажиКомпании.

Следует еще раз отметить, что эти типы данных не поддерживаются платформой изначально, и существуют только в конкретном прикладном решении.

Еще один момент, на котором следует акцентировать внимание, проще всего продемонстрировать на примере.

Допустим, в прикладном решении созданы два новых справочника: Номенклатура и Цены. Несмотря на то, что оба эти объекта унаследовали функциональность соответствующего класса Справочники, и для них в прикладном решении был создан один и тот же состав типов данных, «одноименные» типы данных будут являться различными типами данных. Например, СправочникОбъект.Номенклатура и СправочникОбъект.Цены — это различные типы данных.

Так происходит потому, что разработчик может дополнительно к базовой функциональности, унаследованной от соответствующего класса, добавить свою, особенную для каждого объекта конфигурации. Например, оба упомянутых выше справочника могут содержать табличные части (это унаследовано от класса Справочники). Однако для справочника Цены разработчик не создаст ни одной табличной части, в то время как для справочника Номенклатура он создаст, например, три табличные части. Очевидно, что структура хранения данных типа СправочникОбъект.Номенклатура будет значительно отличаться от структуры хранения данных типа СправочникОбъект.Цены.

Очень часто возникает необходимость где-то задать перечисление типов. Например, это может быть колонка таблицы значений, в которой могут содержаться значения разных типов. Для создания списка типов используется общий объект Описание типов 1С.

Как правило, объект описание типов 1С сам по себе нигде не используется, в основном он нужен в качестве параметра разных объектов, например, таблицы значений 1С. На примере таблицы значений и покажем, как работать с описанием типов. Описание типов можно создать только для одного типа, например, для типа Число будет следующее описание типа.

Это примитивные типы, для ссылочных типов можно создать такое же описание, указав в двойных кавычках название типа.

Чтобы получить быстро полное название нужной ссылки, можно воспользоваться контекстной подсказкой метода Тип.

Описание типа 1С

После того, как мы создали описание типов, этот объект можно использовать, например, при создании таблицы значений.

Выше показано самое простое использование описания типов. Для числа, строки и даты мы можем использовать Квалификаторы. Это общие объекты – КвалификаторыЧисла, КвалификаторыСтроки, КвалификаторыДаты. Они также задаются при помощи конструктора Новый и имеют следующие синтаксисы.

Квалификатор числа 1С

Для числа будет следующий синтаксис квалификатора.

Новый КвалификаторыЧисла(<ЧислоРазрядов>, <ЧислоРазрядовДробнойЧасти>, <ДопустимыйЗнак>)

Где: ЧислоРазрядов – общее число разрядов;

ЧислоРазрядовДробнойЧасти – число разрядов после запятой;

ДопустимыйЗнак – системное перечисления (значения Любой, Неотрицательный).

Например, задать неотрицательно число с 6 разрядами и 2 дробными разрядами будет так:

Квалификатор строки 1С

Для строки будет следующий синтаксис квалификатора.

Новый КвалификаторыСтроки(<ДлинаСтроки>, <ДопустимаяДлина>)

Где: ДлинаСтроки – длина задаваемой строки

ДопустимаяДлина – системное перечисление ДопустимаяДлина, которое определяет, будет строка переменная или фиксированная.

Например, задать строку длинной 10 символов фиксированной длины нужно так:

Обратите внимание, что КвалификаторСтроки задаем третьим параметром.

Квалификатор даты 1С

Для даты будет следующий синтаксис квалификатора.

Где ЧастиДаты – системное перечисление, с тремя значениями Время, Дата, ДатаВремя.

Например, задать дату, которая будет иметь формат времени нужно так:

Обратите внимание, что КвалификаторДаты задаем третьим параметром.

Общий вариант синтаксиса с использование типов выглядит так:

Новый ОписаниеТипов(<Типы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)

Массив типов в описание типов

Кроме использования одного типа в синтаксисе описания типов, можно использовать массив типов, например, сделаем колонку таблицы значений, у которая может принимать значения примитивных типов Строка, Число, Дата, Булево. Для этого нужно все типы перечислить в массиве, причём типы должны быть не в виде строк, как мы делали ранее, а в виде значений типа Тип.

Также можно «собрать» массив из ссылочных типов, например из справочников:

Описание типов на основании описания типов

Выше был рассмотрен один вариант синтаксиса описания типов, на основания какого-то типа (или перечисления типов), но также можно создать описание типа на основании другого описания типов, т.е. дополнить имеющееся описание.

Например, мы создали описание типов для чисел, строк и булево.

Теперь нам нужно новое описание типов, в котором будут такие типы как Число, Строка и Дата (тип Булево нам не нужно).

Для этого мы можем использовать следующий конструктор описания типов:

Новый ОписаниеТипов(<ИсходноеОписаниеТипов>, <ДобавляемыеТипы>, <ВычитаемыеТипы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)

Где, в качестве первого параметра указывается описание типов, на основании которого создается это описание, а в качестве второго и третьего параметра – добавляемые и вычитаемые типы (могут быть как в виде массивов, так и в виде строк).

Давайте продолжим код выше:

В этом код в новое описание типов, мы добавили тип Дата, и вычли тип Булево.



Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

Читайте также: