Тип имя типа 1с. Использование определяемых типов. Свойство конфигурации “Основные роли”

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

Сегодня мы поговорим подробнее про типы объектов конфигурации 1С (тип документа 1С, тип справочника 1С и др.)

Так как в программном коде мы работаем со значениями, то периодически требуется знать их тип. Тип 1С всегда указывается в метаданных у реквизитов — в справочниках, документах.

Работа с типами 1С часто используется:

  • Условия в программе
    Разные действия в зависимости от типа значения 1С в конструкции «Если … Тогда …»
  • Ограничения при работе в интерфейсе
    Запрет или разрешение пользователю вводить в поле на форме значения определенных типов 1С.
  • Определение фактического параметра функции/процедуры
    Если параметр функции/процедуры может быть любого типа 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С».

Указать фильтр типов 1С

У многих объектов возможно указать фильтр типов значений 1С, возможных к использованию, например:

  • Список значений (.ДоступныеЗначения)
  • Поле формы управляемого клиента (.ДоступныеТипы)

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

Чтобы указать список типов 1С для фильтра – используется список типов 1С, как с ним работать – см. «Описание типов» в разделе «Язык 1С».

/
Создание и изменение объектов метаданных

Использование определяемых типов

Область применения: управляемое приложение, обычное приложение.

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

См. также статью на ИТС: «Объекты конфигурации – Определяемые типы»

2.1. Для определения простого типа и его квалификаторов, имеющего прикладной смысл, который используется в различных реквизитах, ресурсах, реквизитах форм, макетах и т.д. в рамках какой-либо подсистемы или во всем прикладном решении. Это гарантирует одинаковую длину, точность данных во всех местах использования , упрощает доработку в случае изменения требований.
Например:

  • НомерСчетаФактуры - Строка, длина 30. Регламентирует формат номера счета-фактуры в различных документах: ПоступлениеТоваровИУслуг , ЗаписьКнигиПокупок , ВозвратТоваровОтКлиента и др.
  • АдресДоставки - Строка, 500. Текстовое представление адреса доставки в документах ЗаказПоставщику , АдресДоставкиПеревозчика , в обработке ПомощникПродаж , в реквизите АдресДоставкиПеревозчика документа ЗаявкаНаВозвратТоваровОтКлиента и др.

2.2. Для определения составного типа, который массово используется в объектах какой-либо подсистемы или во всем прикладном решении. Определяемый тип гарантирует одинаковый состав (тип) данных во всех местах использования, а также упрощает доработку и внедрение подсистем в прикладные конфигурации.

Например, в конфигурацию внедрена подсистема Взаимодействия , которая предназначена для ведения переписки по электронной почте, регистрации звонков и встреч. При внедрении этой подсистемы разработчик принял решение о составе объектов метаданных, которые могут выступать в качестве «контактов взаимодействий» - это элементы справочников ФизическиеЛица , Партнеры , КонтактныеЛицаПартнеров , и задал этот состав типов в определяемом типе КонтактВзаимодействий , предусмотренном в подсистеме. В свою очередь, определяемый тип массово используется в реквизитах объектов и формах подсистемы (в документах Встреча , ЗапланированноеВзаимодействие - табличная часть Участники , в документе СообщениеSMS – табличная часть Адресаты , в документе ТелефонныйЗвонок - реквизит АбонентКонтакт , в общих формах АдреснаяКнига , ВыборКонтакта – реквизиты КонтактыПоПредмету ,в параметре макета ИерархияВзаимодействийКонтакт журнала документов Взаимодействия и т.д.) В противном случае, без использования определяемого типа КонтактВзаимодействий пришлось бы снимать объекты подсистемы с поддержки и задавать требуемый состав типов во всех перечисленных местах.

2.3. При разработке внедряемой подсистемы - для переопределения прикладного типа, который будет уточнен при внедрении.
Например, тип подсистемы Поставщики при внедрении может быть заменен на прикладной тип конфигурации Контрагенты .

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

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Внутренний язык программирования 1С 8.3 для начинающих программистов: типы данных в 1С

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

Типы данных

Одна из главных задач программирования - обработка данных, поэтому давайте разберемся какие основные типы данных есть в языке 1С:

  • Строка . Отличный пример таких данных - цитата из стихотворения "Буря мглою небо кроет," . Обратите внимание, что данные типа Строка всегда заключаются в двойные кавычки .
  • Число . Всем нам знакомый тип данных. С ним мы часто имеем дело в реальной жизни: на работе в день зарплаты, а затем в магазине. Числа, как вы, конечно, знаете, могут быть целые и дробные . Пример целого числа: 1000000, ну а дробного: 3.14. Дробная часть от целой отделяется точкой . Числа также имеют знак: плюс или минус .
  • Дата . Дата вашего рождения и есть пример данных такого типа. Она включает в себя год, месяц и день. Например, первый полет человека в космос состоялся 12 апреля 1961 года. На языке компьютера эти данные будут выглядеть так: "19610412 ". Попробуйте разобраться самостоятельно, почему именно так. Дата всегда заключается в одинарные кавычки ().

Задание №6. Запишите в формате компьютера (используя нужный тип данных) ответы на следующие вопросы:

  1. Когда был запущен первый искусственный спутник?
  2. Как звали первого космонавта?
  3. Сколько планет в солнечной системе?

Проверить себя

По результатам выполнения задания №7 можно сделать интересный вывод: в качестве параметра для команды Сообщить можно передавать не только строки, но и данные любого другого типа.

Обработка данных

Теперь, наконец, давайте обрабатывать эти данные! Какие операции мы можем совершать над данными? Это зависит от их типа.

Например, строки мы можем соединять одну с другой при помощи знака сложения:

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

Задание №8. Выполните указанные примеры на компьютере.

Определяемые типы — новый объект метаданных 1С, который появился в платформе версии 8.3. Объект имеет вспомогательный характер. Рассмотрим, что представляют собой определяемые типы и задачи, которые умеет решать данный объект.

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

Получите 267 видеоуроков по 1С бесплатно:

Настройка

Настроек у данного объекта не так уж и много:

Т.е. помимо имени и синонима в 1С определяемые типы имеют только набор типов объектов.

Пример применения определяемых типов в 1С 8.3

Применений данному объекта можно найти великое множество.

Примеры использования:

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

и многое другое.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте

Продолжаем знакомство с новым функционалом «1С:Предприятие», начатое в предыдущей статье цикла. Изучив материалы этой статьи, вы узнаете:

  • Что такое определяемые типы и как их использовать?
  • Для чего используется свойство конфигурации “Основные роли”?
  • Как использовать помощник создания обработчиков клиентских событий формы?
  • Как и для чего используются выгрузка конфигурации в файлы XML?

Применимость

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

Как облегчить разработку в «1С:Предприятие 8.3»

Продолжаем рассматривать нововведения в платформе «1С:Предприятие 8», направленные на облегчение конфигурирования.

Определяемые типы

В платформу 8.3 добавлен новый объект в ветку конфигурации “Общие” – Определяемые типы.

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

Например, рассмотрим составной тип, в который входит ссылка на справочники “Контрагенты” и “Физические лица”.

И этот тип в некоторой разрабатываемой конфигурации часто используется, как измерение в регистре сведений, описывающем контактную информацию, как реквизит в документе “Расходный кассовый ордер” и т.п.

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

Если вместо нашего нового “определяемого типа” использовать составной тип в каждом месте, где используется такая сущность, то придется везде изменять состав типов. Это долго, сложно, трудозатратно, существует возможность забыть о каком-нибудь реквизите.

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

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

Приведем другой пример использования определяемого типа.

Для части реквизитов существует стандарт типизации внутри конфигурации. Например, количество мы определяем, как число длины 15 с точностью 3, а сумму, как число длины 15 с точностью 2.

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

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

Это несложная задача, но весьма трудоемкая и требующая большой внимательности и усидчивости разработчика.

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

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

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

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

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

Более никаких изменений вплоть до актуальных версий платформы 8.3.10/8.3.11 в работе с определяемым типом не происходило.

Свойство конфигурации “Основные роли”

В платформе 8.2 корневой элемент конфигурации имел свойство “Основная роль”, в котором разработчик определял роль, которая будет использоваться, если в информационной базе не заведены пользователи.

В платформе 8.3 появилась возможность указывать несколько ролей, которые будут использоваться при определении прав доступа при пустом списке пользователей. Соответственно, и свойство было переименовано в “Основные роли”.

Для увеличения нажмите на изображение.

Создание обработчиков клиентских событий формы

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

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

В платформе 8.3 появился помощник создания обработчиков клиентских событий формы.

Для увеличения нажмите на изображение.

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

Выгрузка конфигурации в файлы

Еще одно новшество платформы 8.3 – возможность выгрузить весь состав конфигурации на диск в виде набора файлов определенной структуры.

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

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

Объекты конфигурации выгружаются в виде набора файлов формата XML. Модули и текстовые макеты сохраняются в виде файлов TXT. Картинки из конфигурации сохраняются в виде файлов изображений (BMP, PNG и т.д.). Справочная информация выгружается в файлы HTML.

Для увеличения нажмите на изображение.

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

Также можно пользоваться сторонними системами контроля версий. Они позволяют хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение.

Отредактированные файлы можно загрузить обратно в конфигурацию при помощи пункта меню Конфигурация – Загрузить конфигурацию из файлов.

Работа с новым функционалом загрузки/выгрузки доступна также и при помощи параметров командной строки LoadConfigFromFiles и DumpConfigToFiles. Например, так:

“c:\Program Files (x86)\1cv8\8.3.4.437\bin\1cv8.exe” DESIGNER /F “X:\Platform8Demo” /N “Администратор” /DumpConfigToFiles “X:\1\”

Ранее, еще в платформе 8.2, существовал механизм выгрузки/загрузки файлов конфигурации, который позволял осуществлять выборочную выгрузку/загрузку некоторых свойств объектов конфигурации (модулей, макетов и справочной информации).

Было замечено, что по умолчанию из конфигуратора в платформе 8.3 исключены команды “Выгрузить файлы конфигурации” и “Загрузить файлы конфигурации”.

Однако, с помощью настройки главного меню можно отобразить эти команды в меню и пользоваться ими.

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

Обычные формы и интерфейсы выгружаются в бинарном виде (внутреннем) и не подлежат редактированию. Конфигурация поставщика также не предназначена для редактирования.

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

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

Также теперь конфигурацию можно редактировать внешними программными средствами благодаря использованию, например, формата XML.

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

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

Заметим, что с редакции 8.3.7 появился новый формат выгрузки, который получил название «иерархический». Старый формат стал называться «линейным». Выбор формата доступен в окне выгрузки в файлы:

Начиная с версии 8.3.11 «иерархический» формат стал единственным доступным для выбора при интерактивной выгрузке:

Если вы будете пользоваться данной функциональностью, то рекомендуем:

  • во-первых, использовать «иерархический» формат выгрузки;
  • во-вторых, использовать платформу не ниже версии 8.3.8+, т.к. начиная с нее существенно увеличена скорость загрузки/выгрузки в файлы XML.

В редакции 8.3.10 стала поддерживаться частичная выгрузка конфигурации в файлы XML. В результате этого стало возможным использоваться выгрузку конфигурации в XML совместно с Git .