Как начать работать с 1С:Предприятие.Элемент
Примечание: при написании статьи использовалась технология 1С:Предприятие.Элемент 6.0.2
«1С:Предприятие.Элемент» — это современная технология разработки, представленная фирмой 1С в начале 2024 года.
Она обеспечивает возможность создания веб - и мобильных приложений непосредственно в браузере, без необходимости установки дополнительного программного обеспечения.
Технология активно развивается, и на момент написания статьи актуальной является версия 6.1.1-2.
Однако, несмотря на динамичное обновление, объем доступной информации для разработчиков в открытых источниках остается ограниченным
Для тех, кто интересуется разработкой «1С:Предприятие.Элемент» (далее «Элемент»), не будет секретом, что локальной версии для разработки пока что нет, но компания 1С предоставила возможность запросить доступ к песочнице на сайте 1cmycloud.com, так что все нижеописанное вполне можно попробовать руками.
- Цель данной статьи продемонстрировать работу со встроенным языком - в рамках статьи рассмотрим следующее:
- В проект добавлена подсистема «РаботаCXMLИJSON»
- В подсистему добавлены два справочника: «ВидыВыгрузки» и «ПримерВыгрузкиСправочника».
- Справочник «Виды выгрузки» без реквизитов, добавлены два элемента: «XML» и «JSON».
- В справочник «ПримерВыгрузкиСправочника» добавлены два реквизита: «ДатаВыгрузки» - ДатаВремя и «ВидВыгрузки» - ВидыВыгрузки.Ссылка
- Для справочника «ПримерВыгрузкиСправочника» добавлена форма, в которой добавлена обычная команда «Выгрузить в файл» и элемент «ВыборXMLJSON» (тип ВыборФайла).
Для реализации простого примера, этой информации достаточно, приступим:
XML
Для команды «Выгрузить в файл» опишем обработчик, он указывается в модуле формы справочника, точно также как в платформе
Обращение к реквизитам текущего объекта доступно также как в управляемых формах платформы через Объект.
Отличием же является то, что равенство в Элементе проверяется конструкцией «==», а символ «=» - это операция присваивания. Вышесказанное справедливо и для запроса.
Более подробно стоит остановиться на методе получения ссылки на вид выгрузки по наименованию. Аннотации окружения перечисляются через пробел, порядок не важен – можно написать как:«@НаСервере @ДоступноСКлиента», так и «@ДоступноСКлиента @НаСервере».
Так как запрос выполняется на стороне сервера, указываем «@НаСервере», так как, нам необходимо вызвать метод с клиента - «@ДоступноСКлиента». По умолчанию вызов не контекстный, чтобы передать контекст выполнения нужно добавить аннотацию «Контекстный», для безконтекстных вызовов доступных с клиента, следует перед методом указывать конструкцию «статический».
В скобках метода указываются параметры, в данном примере указано имя параметра и тип – Строка.
Функция от процедуры отличается указанием типа возвращаемого значения, в данном случае у нас функция, которая ожидает возврат переменной типа ВидыВыгрузки. Ссылка, поэтому указание конструкции «возврат» обязательно.
Кстати, проверка типа возвращаемой переменной ожидаемому типу функции выполняется автоматически 一 проект просто не получится опубликовать
Далее в функции определяется переменная «Запрос» посредством конструкции «знч» 一 это означает, что переменная доступна только для чтения.Текст запроса в данном примере аналогичен запросу из платформы, кроме проверки на равенство и подстановки параметра.
Указания в тексте запроса «%ИмяПеременной» достаточно, чтобы Элемент автоматом подставил в запрос параметр, присвоив значение из одноименной переменной.
Так как в запросе ожидается одна запись, то используется конструкция «Запрос.Выполнить().ЕдинственныйИлиУмолчание()» которая возвращает строку результата запроса, и из которой мы возьмем ссылку на вид выгрузки.
Определившись что текущий вариант выгрузки «XML», опишем алгоритм выгрузки.Самое время продемонстрировать, что собственно будем выгружать 一 файл будет формироваться на основе данных самого справочника.
Метод «НачатьВыгрузку» типа «ВыгрузкаФайлов» ожидает на вход ссылку на двоичные данные - это ссылка на Элемент в хранилище двоичных данных используемое Элементом, и данное хранилище мы будем использовать для передачи файла с сервера на клиент, соответственно метод «ВыгрузитьВXML» должен вернуть ссылку на эти самые двоичные данные.
Опишем функцию:
Так как нам нужны данные объекта для формирования файла, указываем аннотацию «Контекстный» и не указываем «статический». ЗаписьXML - это объект, который создается на основе объекта «ПотокЗаписи» - поток записи двоичных данных. Для потока записи конструктора не существует, поток может быть получен например как результат метода «ОткрытьПотокЗаписи()» объекта Файл, или же из тела сообщения интеграции 1С:Шина, но если запись XML нужно сформировать без какого либо источника, то существует тип «ВременныйПотокЗаписи()».
Переменная данного типа будет «Закрываемая», что означает использование системных ресурсов, и для того чтобы переменная не удерживала память ее нужно закрывать. Объявив такую переменную через «исп» мы обеспечим закрытие переменной при завершении метода. Создав запись XML на основе временного потока, выполняем запись данных справочника в поток.
Элемент позволяет выполнять вызов методов объекта через точку, не обращаясь к самой переменной метода, т.е. можно написать как:
«ЗаписьXML.ЗаписатьНачалоДокумента() ЗаписьXML.ЗаписатьКонецДокумента()»
так и:
«ЗаписьXML.ЗаписатьНачалоДокумента()
. ЗаписатьКонецДокумента()»
Далее обращаемся к методам работы с хранилищем двоичных данных, а именно «ОбъектноеХранилище.ЗагрузитьИзБайт», куда на вход нужно передать тип Байты – переменная типа ВременныйПотокЗаписи позволяет открыть поток для чтения и получить из него данные в виде байт. Как результат выполнения метода «ЗагрузитьИзБайт()», получаем ссылку на двоичные данные в хранилище, эту ссылку возможно передать на клиент.
Осталось пояснить что означает строчка «знчВременныеФайлы = новыйДвоичныйОбъект.Свойства ("temp") .Временные()».
Метод «ЗагрузитьИзБайт()» вторым параметром принимает на вход свойства загружаемого объекта, данные свойства и инициализируются вышеуказанной конструкцией, на основе этих свойств настраивается как объекты распределяются по различным хранилищам.
После публикации проекта и выполнения команды получаем результат:
Для демонстрации примера по загрузке данных из XML воспользуюсь этим же файлом. Для выбора файла на форме справочника используется элемент типа «ВыборФайлов» для которого описан обработчик «ПриИзменении».
В свойствах элемента формы указано, что множественный выбор запрещен, поэтому выбранный файл будет единственный в коллекции.
Далее используется метод «ЗагрузкаФайлов.НачатьЗагрузку()» куда передается выбранный файл, метод «ЗагрузкаФайла.ПолучитьРезультат()» позволяет получить ссылку на двоичные данные на основе выбранного файла.
Результатом выполнения алгоритма будет соответствие, где ключом будет наименование реквизита справочника, а значением значение данного реквизита.
Для того чтобы было куда присвоить результат выполнения алгоритма, нужно объявить соответствие доступное не только для чтения/ записи, такая переменная объявляется через «пер». В конце обработчика используется объект «Уведомление» который позволяет отобразить информацию пользователю.
Так как мы говорим о XML, опишем листинг функции «ПрочитатьXML».
Для создания объекта ЧтениеXML потребуется ПотокЧтения по аналогии с ПотокЗаписи. Так как метод передается ссылка на двоичные данные, то применим метод «Загрузить()» для получения объекта, который в свою очередь позволяет открыть поток для чтения двоичных данных.
Цикл в Элементе описывается более простой конструкцией чем в платформе, например не нужно указывать конструкцию «КонецЦикла».
Важный момент – если сперва вызвать метод «ПрочитатьСодержимоеКакСтроку()», то позиционирование перейдет сразу на конец элемента, и прочесть атрибуты уже не получится, поэтому данный метод вызывается после чтения атрибутов.
Элемент обладает развитой синтаксической подсказкой, поэтому достаточно просто понять какой метод применить в той или иной ситуации.
JSON
Комментариев к листингу кода формирования файла JSON потребуется гораздо меньше, поскольку основные нюансы описаны в примере с XML. Источником для выгрузки выступает второй элемент справочника «ПримерВыгрузкиСправочника»
Переменная типа «ЗаписьJson» в данном примере объявляется также основании временного потока записи, для примера указаны настройки формирования JSON. После записи данных, точно также, как и с XML формируется ссылка на двоичный объект, в хранилище который мы можем передать на клиент.
Хотелось бы привести еще один пример формирования файла JSON – вместо использования объекта «ЗаписьJson» есть возможность записи объекта через метод «СериализацияJson.ЗаписатьОбъект()».
Резюмируя
В статье рассмотрены ключевые принципы работы с «1С:Предприятие.Элемент», включая выгрузку и загрузку данных в XML и JSON, особенности синтаксиса встроенного языка и работу с двоичными данными.
Основные тезисы, которые мы выделяем:
✔ «1С:Предприятие.Элемент» позволяет разрабатывать веб- и мобильные приложения прямо в браузере.
✔Локальной версии пока нет, но доступ к песочнице можно получить через 1cmycloud.com.
✔ Работа с реквизитами, объектами и хранилищем двоичных данных схожа с платформой 1С:Предприятие, но имеет ряд особенностей.
✔ Выгрузка данных в XML и JSON выполняется через соответствующие объекты и методы, включая ЗаписьXML, ЗаписьJson и СериализацияJson.
✔ Загрузка данных требует корректной обработки потока чтения и использования методов ЗагрузкаФайлов.НачатьЗагрузку() и ПолучитьРезультат().
✔ Особое внимание стоит уделить аннотациям окружения и контекстному выполнению кода, которые влияют на доступность методов и выполнение запросов.
Эти знания помогут разработчикам быстрее освоить «1С:Предприятие.Элемент» и применять его для решения практических задач
Автор статьи
#1c #1c:Элемент #1CЭлемент #1cразработка #аутсорсинг #Разработка_на_1С #Доработка1С