Определить тип значения по имени в 1с. Использование определяемых типов. Создание обработчиков клиентских событий формы

Типы данных в 1С:Предприятие 8.х

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

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

Число. Под числами в 1С подразумеваются как целые, так и значения с плавающей запятой. Максимальная разрядность значения типа «число» может быть 32 знака, включая десятичную точку. Стоит также учитывать, что ограничение в 32 знака действует на числа, которые будут записываться в базу данных. Возможно объявлять переменную и присваивать в нее значение больше 32 знаков. Для числовых значений, которые хранятся в памяти, данное ограничение не действует. После объявления переменой типа «Число» ее значением будет 0.

Строка. Как в любом другом языке программирования, в 1С реализованы все необходимые функции для манипулирования строками. Значения данного типа представлены в юникоде (Unicode). Длина переменных типа строка – не ограничена.

Дата. Помимо самой даты значения данного типа содержат и время. Под временем подразумевается часы, минуты и секунды. Сразу после инициализации переменной типа «Дата» ей будет присвоено значение (дата) «01 января 0001 года 00 часов 00 минут 00 секунд».Это иногда вызывает раздражение, но со временем привыкаешь.

Булево. Это и понятно, что переменные данного типа могут принимать лишь два значения: Истина, Ложь.

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

Null. Общий смысл у Null почти такой же, как и у «неопределено». Значения данного типа применяются для обозначения отсутствующего значения в базе данных. Чаще всего, получить значения данного типа можно при использовании языка запросов. Например, запрос в котором используется объединение таблиц. Допустим в одной из таблиц отсутствует значение, удовлетворяющее условию. В таком случае, на месте отсутствующего значения будет значение типа Null.

Со значением типа Null возможно столкнуться не только при работе с запросами. Например, значение типа Null принимают реквизиты, которые не используются объектом. Представим, что у нас есть иерархический справочник с реквизитом «количество». При создании данного реквизита, ему установили свойство «Использование» в значение «Для элемента». Если попробовать обратится к данному реквизиту для элемента справочника типа «группа», то его значением как раз будет Null.

Тип. Данный тип применяется для определения имеющихся типов. Немного запутано звучит? Ok, попробую объяснить на примере. Представь, что перед тобой встала задача сравнить типы двух переменных. В коде это будет выглядеть примерно так:

Переменная1 = 123; //Поскольку мы присвоили число, значит тип переменной будет «число».
Переменная2 = «строка»; //Здесь мы присвоили строку, значит тип переменной будет строка.

Теперь тебе нужно на 100% убедиться, что переменная1 является числовой. Вот тут нам и пригодится тип «Тип» (забавно звучит), а также парочка вспомогательных функций. Пока не будет лезть в подробности. Просто взгляни и попробуй понять нижеприведенный пример:

Если (ТипЗнч(Переменная1) = Тип(«Число»)) Тогда

Сообщить(«Переменная1 является числовой!»);

Иначе

Сообщить(«Переменная1 НЕ является числовой:(»);

КонецЕсли;

В этом небольшом кусочке кода, я сначала получаю тип переменной при помощи функции «ТипЗнч()». Данная функция в качестве параметра принимает значение, тип которого требуется получить. В нашем случае это «Переменная1». Затем мне требуется получить значение типа «Тип», характеризующее тип «Число». Для этого во встроенном языке предусмотрена функция «Тип()». Она принимает всего лишь один аргумент – строковое представление имени типа. Раз нам требуется сравнить с типом «Число», то параметром для функции будет «Число».

Благодарю за помощь в написании статьи Игоря Антонова.

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

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

Внутренний язык программирования 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. Определяемые типы предназначены для определения типов данных, которые описывают часто используемые сущности или с высокой степенью вероятности могут изменяться при внедрении прикладного решения. Они позволяют многократно использовать описываемый тип или набор типов без уточнения состава в различных местах конфигурации (в реквизитах, свойствах объектах, форм и т.п.).

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

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

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

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

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

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

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 .

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то