Сообщения

Показаны сообщения с ярлыком "xml"

СКД. Программное чтение/запись СКД в/из XML.

Сериализация объектов в XML Объект типа СхемаКомпоновкиДанных не имеет в своем арсенале метода записи/чтения себя в/из XML. Но все исправимо благодаря возможности сериализации схемы компоновки данных в объект XDTO. // Запись СКД в XML-файл. ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяФайлаСКД); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, СхемаКомпоновкиДанных); ЗаписьXML.Закрыть(); Сериализация объектов 1С выполняется с помощью объекта глобального контекста СериализацияXDTO - это сериализатор XDTO, соответствующий глобальной фабрики XDTO.

Сериализация объектов в XML

СКД. Программное чтение/запись СКД в/из XML. Наверняка, каждый начинающий программист сталкивался с заданием выгрузки объектов в XML, но из-за плохого знания механизмов платформы 1С, выполнял задание в лоб. Алгоритм выгрузки заключался в написании кода по записи значения каждого реквизита в XML-файл. Наиболее простой способ выгрузки объектов в XML - воспользоваться глобальным методом ЗаписатьXML() , который предназначен для сериализации объектов/значений в формат XML. Функция ПолучитьXML(Значение) ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписатьXML(ЗаписьXML, Значение); Возврат ЗаписьXML.Закрыть(); КонецФункции Важно! Значения не всех типов могут быть записаны в формате XML данным методом. В XML могут быть записаны значения следующих типов: Неопределено, Null, Булево, Число, Строка, Дата, Тип, УникальныйИдентификатор, ДвоичныеДанные, ХранилищеЗначения, ОписаниеТипов, а также ссылки объектов данных и сами объекты данных, наборы записей регистров, менед...

Супер-пупер быстрая конкатенация(сложение) строк

Изображение
Определение пересечения периодов (числовых множеств) Разность дат, а как быстрее? И снова сложно о простом. Что бы присоединить одну строку к другой, в платформу 1С заложена операция конкатенации ("+"). При выполнении конкатенации: длина результирующей строки равна сумме длин соединяемых строк; в случае несовпадения типа данных второго или последующих операндов со строковым типом, их значение преобразуется к строковому типу в соответствии с правилами преобразования типов. Пример: ФИО = Фамилия + " " + Имя + " " + Отчество; Выполним операцию конкатенации 100000 раз по алгоритму: ИтоговаяСтрока = ""; Для Счетчик = 1 По Объект.КоличествоИтераций Цикл ИтоговаяСтрока = ИтоговаяСтрока + Объект.РеквизитСтрока; КонецЦикла; Переменные содержат следующие значения: Объект.КоличествоИтераций = 100000; Объект.РеквизитСтрока = "ПроизвольнаяСтрока". Произведем замер длительности выполнения алгоритма (см. рисунок 1).

Грабли метода ПрочитатьXML() объекта ФабрикаXDTO

Изображение
Что таит в себе окно редактирования XDTO-пакета Фабрика XDTO - это библиотека типов, которая описывает определенные структуры XML. В языке программирования платформы 1С имеется объект ФабрикаXDTO , который содержит все пакеты XDTO, имеющиеся в конфигурации, а также предопределенные пакеты (например, пакет типов XML схемы). У данного объекта метод ПрочитатьXML() , позволяет читать элементы данных XDTO указанного типа из объекта чтения XML: ФайлXML = Новый ЧтениеXML; ФайлXML.УстановитьСтроку(СтрокаXML); Пока ФайлXML.Прочитать() Цикл Если ФайлXML.ЛокальноеИмя = "Message" И ФайлXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ФайлXML); КонецЕсли; КонецЦикла; ФайлXML.Закрыть(); Первый параметр метода является обязательным, в который передается объект чтения XML. Второй параметр метода необязательный, в который передается тип элемента данных XDTO. Если тип не указан, то будет сделана попытка определить тип данных по текущему сос...

Что таит в себе окно редактирования XDTO-пакета

Изображение
Грабли метода ПрочитатьXML() объекта ФабрикаXDTO Термин XDTO (XML Data Transfer Objects) - это не какой-то всемирно принятый стандарт, поддерживаемый платформой 1С, а наоборот, стандарт рожденный в недрах фирмы 1С, хотя очень похож на XML Schema, на недоделанный XML Schema. При добавлении пакета XDTO в дерево конфигурации окно редактирования пакета открывается автоматически. 1. Окно редактирования XDTO-пакета Для того, чтобы открыть окно редактирования пакета XDTO, следует выбрать нужный пакет и выполнить команду "Открыть пакет". 2. Контекстное меню XDTO-пакета Окно редактирования пакета XDTO содержит иерархическую структуру, которая отображается в виде дерева. В корневом элементе расположен идентификатор пакета XDTO, который содержит URI пространства имен данного пакета.

Подготовка SOAP-сообщения перед созданием подписи XMLDSIG на примере СМЭВ

Изображение
Проверка подписи органа власти с помощью сервиса СМЭВ Проверка подписи XMLDSIG на примере СМЭВ Для создания электронной подписи SOAP-сообщения используется WS-Security – это протокол передачи подписанных SOAP-сообщений. Основная его особенность заключается в том, что он работает на транспортном уровне. При разработке Web-сервисов и передаче их WSDL-документов сторонним разработчикам, в большинстве случаев описывается только тело входящего и исходящего SOAP-сообщения, в котором описана вся бизнес-структура передаваемых данных в формате XML. При применении стандарта WS-Security, электронная подпись передается в заголовке SOAP-сообщения, таким образом, в заголовок добавляется XML-структура, в которой содержится электронная подпись, подписывающая данные, находящиеся в теле SOAP-сообщения. Структура электронной подписи SOAP-сообщения

Вызов веб-сервиса выполнением POST-запроса

Изображение
Выполнение POST-запроса на примере Yandex.API Вызов Web-сервиса с помощью динамической ссылки SOAP расширяет HTTP для возможности передачи XML-сообщений, используемых для удалённого взаимодействия и для передачи целых XML-документов. Поэтому, что бы вызвать Web-сервис, необязательно использовать специальные объекты встроенного языка для работы с SOAP, достаточно сгенерировать SOAP-сообщение и выполнить HTTP-запрос методом POST. Формирование SOAP-сообщения Структура SOAP-сообщения выглядит следующим образом: 1. Структура SOAP-сообщения Заголовок <soap:Header> является необязательным и служит для передачи информации, такой как: аутентификация, информация о защите, информация о транзакция и т.д. Платформа 1С не поддерживает работу с заголовком средствами встроенного языка и так же веб-сервисы, реализованные на этой платформе.

Вызов Web-сервиса с помощью динамической ссылки

Изображение
Вызов веб-сервиса выполнением POST-запроса Механизм Web-сервисов позволяет использовать систему, написанную на платформе 1С, как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать ее с другими информационными системами с использованием сервис-ориентированной архитектуры (SOA). Платформа 1С позволяет разработчику вызывать Web-сервисы, предоставляемые другими поставщиками, двумя способами: с помощью статических ссылок, создаваемых в дереве объектов конфигурации; с помощью динамических ссылок, создаваемых средствами встроенного языка. При использовании статической ссылки платформа 1С получает описание Web-сервиса поставщика только один раз, при создании ссылки. За счет этого достигается большая скорость работы. 1. Объект конфигурации WS-ссылки для использования механизма статических ссылок При использовании динамической ссылки, описание Web-сервиса получается каждый раз при вызове Web-сервиса. Скорость работы при этом уменьшаетс...

Как я победил свойство Возможно пустое значение у параметра операции Веб-сервиса

Изображение
Создавая операцию consGetQuestions  у веб-сервиса OnlineConsultant , мне потребовалось, что бы у этой операции параметры могли принимать пустое значение. Такое условие позволяет накладывать различные отборы в запросе в зависимости от значений параметров. То есть, если значение параметра пустое, то отбор не делаем, если не пустое, то накладываем отбор. Операция параметра в конфигураторе выглядит следующим образом: Операция веб-сервиса У неё три параметра ConsultantCode, FromDate и ShowClosed, которые могу принимать пустое значение (свойство Возможно пусто значение = Истина). Например: Свойство - Возможно пустое значение

Создание канонической XML

Перед формированием подписи (XMLDSIG) сообщение XML должно иметь канонический вид. Канонизация XML - это приведение XML к определенному формату по строгим правилам форматирования и требованиям к содержанию. На платформе 1С создание канонической XML можно выполнить двумя способами: Новый КаноническаяЗаписьXML ; Новый КаноническийDOM . Рассмотрим подробнее каждый из методов.