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

Продолжаем знакомство с новым функционалом «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 .

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

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

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

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

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

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

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

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

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

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

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

Общие типы

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

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

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

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

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

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

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

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

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

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

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

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

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

Например, после создания нового справочника Номенклатура , становятся доступны следующие типы данных:

  • СправочникМенеджер.Номенклатура,
  • СправочникСсылка.Номенклатура,
  • СправочникОбъект.Номенклатура,
  • СправочникВыборка.Номенклатура,
  • СправочникСписок.Номенклатура.

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

В то же время, после создания нового регистра накопления ПродажиКомпании , состав новых типов данных будет уже другим:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Настройка

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

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

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

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

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

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

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

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