add
This commit is contained in:
parent
e93304ed06
commit
6bf00d3da5
@ -4,47 +4,11 @@ slug: общие-обмен-данными/сериализация-json
|
||||
---
|
||||
|
||||
# Сериализация
|
||||
## Описание
|
||||
```bsl
|
||||
// Преобразует значение в строку JSON при помощи метода глобального контекста ЗаписатьJSON.
|
||||
// Допускаются не все типы значений, подробности см. в синтакс-помощнике.
|
||||
// Даты преобразуются в формат ISO (YYYY-MM-DDThh:mm:ssZ).
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ЗначениеВJSON(Знач Значение) Экспорт
|
||||
```
|
||||
## Пример вызова
|
||||
```bsl
|
||||
Результат = ОбщегоНазначения.ЗначениеВJSON(Значение);
|
||||
```
|
||||
|
||||
# Десериализация
|
||||
## Описание
|
||||
```bsl
|
||||
// Преобразует строку в формате JSON в значение при помощи метода глобального контекста ПрочитатьJSON.
|
||||
// См. ограничения в синтакс-помощнике.
|
||||
// Объекты JSON по умолчанию преобразует в значения типа Соответствие.
|
||||
// Имена свойств со значением типа Дата необходимо явно указывать, чтобы было выполнено преобразование.
|
||||
// Ожидаемый формат дат - ISO (YYYY-MM-DDThh:mm:ssZ).
|
||||
//
|
||||
// Параметры:
|
||||
// Строка - Строка - значение в формате JSON.
|
||||
// ИменаСвойствСоЗначениямиДата - Строка - имя свойства, содержащее значение типа Дата. Допустимо указывать несколько
|
||||
// свойств через запятую.
|
||||
// - Массив из Строка
|
||||
// ПрочитатьВСоответствие - Булево - если Ложь, то объекты JSON будут преобразованы в значение типа Структура.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный
|
||||
//
|
||||
Функция JSONВЗначение(Знач Строка, Знач ИменаСвойствСоЗначениямиДата = Неопределено, Знач ПрочитатьВСоответствие = Истина) Экспорт
|
||||
```
|
||||
## Пример вызова
|
||||
```bsl
|
||||
Результат = ОбщегоНазначения.JSONВЗначение(Строка, ИменаСвойствСоЗначениямиДата, ПрочитатьВСоответствие);
|
||||
```
|
@ -3,42 +3,66 @@ title: Сериализация XML
|
||||
slug: общие-обмен-данными/сериализация-xml
|
||||
---
|
||||
|
||||
# Библиотека стандартных подсистем
|
||||
|
||||
## Сериализация (БСП)
|
||||
|
||||
# Сериализация
|
||||
## Описание
|
||||
```bsl
|
||||
// Преобразует (сериализует) любое значение в XML-строку.
|
||||
// Преобразованы в могут быть только те объекты, для которых в синтакс-помощнике указано, что они сериализуются.
|
||||
// См. также ЗначениеИзСтрокиXML.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Произвольный - значение, которое необходимо сериализовать в XML-строку.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - XML-строка.
|
||||
//
|
||||
Функция ЗначениеВСтрокуXML(Значение) Экспорт
|
||||
```
|
||||
## Пример вызова
|
||||
```bsl
|
||||
Результат = ОбщегоНазначения.ЗначениеВСтрокуXML(Значение)
|
||||
```
|
||||
|
||||
# Десериализация
|
||||
## Описание
|
||||
```bsl
|
||||
// Выполняет преобразование (десериализацию) XML-строки в значение.
|
||||
// См. также ЗначениеВСтрокуXML.
|
||||
//
|
||||
// Параметры:
|
||||
// СтрокаXML - Строка - XML-строка, с сериализованным объектом.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - значение, полученное из переданной XML-строки.
|
||||
//
|
||||
Функция ЗначениеИзСтрокиXML(СтрокаXML) Экспорт
|
||||
```
|
||||
## Пример вызова
|
||||
## Десериализация (БСП)
|
||||
|
||||
```bsl
|
||||
Результат = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтрокаXML)
|
||||
```
|
||||
|
||||
# Без библиотеки стандартных подсистем
|
||||
|
||||
## Сериализация (XDTO)
|
||||
|
||||
```bsl
|
||||
&НаСервере
|
||||
Процедура СериализоватьНаСервере()
|
||||
|
||||
Таблица = ТаблицаДанных.Выгрузить(); // Какой-то объект
|
||||
|
||||
ЗаписьXML = Новый ЗаписьXML;
|
||||
ЗаписьXML.УстановитьСтроку();
|
||||
|
||||
// Преобразование: ТаблицаЗначений - ОбъектXDTO
|
||||
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(Таблица);
|
||||
|
||||
// Преобразование: ОбъектXDTO - XML
|
||||
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
|
||||
|
||||
ДанныеXML = ЗаписьXML.Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
||||
|
||||
## Десериализация (XDTO)
|
||||
|
||||
```bsl
|
||||
|
||||
&НаСервере
|
||||
Процедура ДесериализоватьНаСервере()
|
||||
|
||||
ЧтениеXML = Новый ЧтениеXML;
|
||||
ЧтениеXML.УстановитьСтроку(ДанныеXML);
|
||||
|
||||
// Преобразование: XML - ОбъектXDTO
|
||||
ТипОбъекта = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "ValueTable");
|
||||
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипОбъекта);
|
||||
|
||||
// Преобразование: ОбъектXDTO - ТаблицаЗначений
|
||||
Таблица = СериализаторXDTO.ПрочитатьXDTO(ОбъектXDTO);
|
||||
|
||||
ТаблицаДанных.Загрузить(Таблица);
|
||||
|
||||
ЧтениеXML.Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Табличный документ в ТЗ и обратно
|
||||
slug: общие-работа-с-коллекциями-таблицы-значений/табличный-документ-в-тз-и-обратно
|
||||
slug: общие-обмен-данными/табличный-документ-в-тз-и-обратно
|
||||
---
|
||||
|
||||
# Табличный документ в таблицу значений (табдок в ТЗ)
|
@ -0,0 +1,72 @@
|
||||
---
|
||||
title: Чтение DBF
|
||||
slug: общие-обмен-данными-чтение-файлов-примеры/чтение-dbf
|
||||
---
|
||||
|
||||
> Длина имени файла DBF без расширения не должна быть больше **8 символов**
|
||||
|
||||
```bsl
|
||||
|
||||
&НаКлиенте
|
||||
Асинх Процедура ПрочитатьФайл(Команда)
|
||||
|
||||
Расширение = "dbf";
|
||||
|
||||
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
|
||||
ПараметрыДиалога.Заголовок = "Выберите файл";
|
||||
ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
|
||||
|
||||
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
|
||||
Если ОписаниеФайла = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
АдресДанных = ОписаниеФайла.Адрес;
|
||||
|
||||
Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;
|
||||
|
||||
ПрочитатьФайлНаСервере(АдресДанных, Расширение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
||||
|
||||
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
||||
|
||||
//Длина имени файла DBF без расширения не должна быть больше **8 символов**
|
||||
Файл = Новый Файл(ПутьКФайлу);
|
||||
ИмяБезРасширения = Файл.ИмяБезРасширения;
|
||||
Если СтрДлина(ИмяБезРасширения) > 8 Тогда
|
||||
ИмяБезРасширения = Лев(ИмяБезРасширения, 8);
|
||||
КонецЕсли;
|
||||
|
||||
ПутьКФайлу = СтрЗаменить(ПутьКФайлу, Файл.ИмяБезРасширения, ИмяБезРасширения);
|
||||
|
||||
ДанныеФайла = ПолучитьИзВременногоХранилища(Объект.АдресДанных);
|
||||
ДанныеФайла.Записать(ПутьКФайлу);
|
||||
|
||||
ФайлДБФ = Новый XBase;
|
||||
ФайлДБФ.ОткрытьФайл(ПутьКФайлу);
|
||||
|
||||
Если НЕ ФайлДБФ.Первая() Тогда
|
||||
Сообщение = Новый СообщениеПользователю;
|
||||
Сообщение.Текст = "Файл пустой";
|
||||
Сообщение.Сообщить();
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Пока НЕ ФайлДБФ.ВКонце() Цикл
|
||||
|
||||
СтрокаТаблицы = Объект.ДанныеФайла.Добавить();
|
||||
СтрокаТаблицы.Наименование = ФайлДБФ.NAME;
|
||||
// обработка
|
||||
|
||||
ФайлДБФ.Следующая();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ФайлДБФ.ЗакрытьФайл();
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
@ -0,0 +1,111 @@
|
||||
---
|
||||
title: Чтение Excel
|
||||
slug: общие-обмен-данными-чтение-файлов-примеры/чтение-excel
|
||||
---
|
||||
|
||||
## Обычное чтение
|
||||
|
||||
```bsl
|
||||
|
||||
&НаКлиенте
|
||||
Асинх Процедура ПрочитатьФайл(Команда)
|
||||
|
||||
Расширение = "xlsx";
|
||||
|
||||
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
|
||||
ПараметрыДиалога.Заголовок = "Выберите файл";
|
||||
ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
|
||||
|
||||
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
|
||||
Если ОписаниеФайла = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
АдресДанных = ОписаниеФайла.Адрес;
|
||||
|
||||
Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;
|
||||
|
||||
ПрочитатьФайлНаСервере(АдресДанных, Расширение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
||||
|
||||
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
||||
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
|
||||
|
||||
ДанныеФайла.Записать(ПутьКФайлу);
|
||||
|
||||
ТабДок = Новый ТабличныйДокумент;
|
||||
ТабДок.Прочитать(ПутьКФайлу);
|
||||
|
||||
КоличествоСтрок = ТабДок.ВысотаТаблицы;
|
||||
КоличествоКолонок = ТабДок.ШиринаТаблицы;
|
||||
|
||||
// Обработка
|
||||
|
||||
УдалитьФайлы(ПутьКФайлу);
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
## Построитель запроса
|
||||
```bsl
|
||||
|
||||
&НаКлиенте
|
||||
Асинх Процедура ПрочитатьФайл(Команда)
|
||||
|
||||
Расширение = "xlsx";
|
||||
|
||||
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
|
||||
ПараметрыДиалога.Заголовок = "Выберите файл";
|
||||
ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
|
||||
|
||||
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
|
||||
Если ОписаниеФайла = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
АдресДанных = ОписаниеФайла.Адрес;
|
||||
|
||||
Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;
|
||||
|
||||
ПрочитатьФайлНаСервере(АдресДанных, Расширение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
||||
|
||||
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
||||
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
|
||||
|
||||
ДанныеФайла.Записать(ПутьКФайлу);
|
||||
|
||||
ТабДок = Новый ТабличныйДокумент;
|
||||
ТабДок.Прочитать(ПутьКФайлу);
|
||||
|
||||
КоличествоСтрок = ТабДок.ВысотаТаблицы;
|
||||
КоличествоКолонок = ТабДок.ШиринаТаблицы;
|
||||
|
||||
// Вариант 1, Произвольная область
|
||||
ОбластьЯчеек = ТабДок.Область(1, 1, КоличествоСтрок, КоличествоКолонок);
|
||||
|
||||
Построитель = Новый ПостроительЗапроса;
|
||||
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);
|
||||
Построитель.Выполнить();
|
||||
|
||||
ТаблицаДанных = Построитель.Результат.Выгрузить();
|
||||
|
||||
// Вариант 2, Область = вся таблица
|
||||
Построитель = Новый ПостроительЗапроса;
|
||||
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
|
||||
ТаблицаДанных = Построитель.Результат.Выгрузить();
|
||||
|
||||
// Обработка
|
||||
|
||||
УдалитьФайлы(ПутьКФайлу);
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
@ -0,0 +1,62 @@
|
||||
---
|
||||
title: Чтение JSON
|
||||
slug: общие-обмен-данными-чтение-файлов-примеры/чтение-json
|
||||
---
|
||||
|
||||
```bsl
|
||||
|
||||
&НаКлиенте
|
||||
Асинх Процедура ПрочитатьФайл(Команда)
|
||||
|
||||
Расширение = "json";
|
||||
|
||||
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
|
||||
ПараметрыДиалога.Заголовок = "Выберите файл";
|
||||
ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
|
||||
|
||||
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
|
||||
Если ОписаниеФайла = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
АдресДанных = ОписаниеФайла.Адрес;
|
||||
|
||||
Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;
|
||||
|
||||
ПрочитатьФайлНаСервере(АдресДанных, Расширение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
||||
|
||||
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
|
||||
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
||||
ДанныеФайла.Записать(ПутьКФайлу);
|
||||
|
||||
ЧтениеJSON = Новый ЧтениеJSON;
|
||||
ЧтениеJSON.ОткрытьФайл(ПутьКФайлу);
|
||||
|
||||
ДанныеJSON = ПрочитатьJSON(ЧтениеJSON);
|
||||
|
||||
// Получаем массив структур
|
||||
Если ТипЗнч(ДанныеJSON) = Тип("Структура") Тогда
|
||||
МассивДанных = Новый Массив;
|
||||
МассивДанных.Добавить(ДанныеJSON);
|
||||
ИначеЕсли ТипЗнч(ДанныеJSON) = Тип("Массив") Тогда
|
||||
МассивДанных = ДанныеJSON;
|
||||
КонецЕсли;
|
||||
|
||||
Для каждого ДанныеКонтрагента Из МассивДанных Цикл
|
||||
|
||||
// обрабатываем
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЧтениеJSON.Закрыть();
|
||||
|
||||
УдалитьФайлы(ПутьКФайлу);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
@ -0,0 +1,89 @@
|
||||
---
|
||||
title: Чтение TXT, CSV
|
||||
slug: общие-обмен-данными-чтение-файлов-примеры/чтение-txt-csv
|
||||
---
|
||||
|
||||
## Вариант с ЧтениеТекста
|
||||
|
||||
```bsl
|
||||
|
||||
&НаКлиенте
|
||||
Асинх Процедура ПрочитатьФайл(Команда)
|
||||
|
||||
Расширение = "txt";
|
||||
|
||||
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
|
||||
ПараметрыДиалога.Заголовок = "Выберите файл";
|
||||
ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
|
||||
|
||||
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
|
||||
Если ОписаниеФайла = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
АдресДанных = ОписаниеФайла.Адрес;
|
||||
|
||||
Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;
|
||||
|
||||
ПрочитатьФайлНаСервере(АдресДанных, Расширение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
||||
|
||||
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
||||
|
||||
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
|
||||
ДанныеФайла.Записать(ПутьКФайлу);
|
||||
|
||||
Текст = Новый ЧтениеТекста;
|
||||
Текст.Открыть(ПутьКФайлу, КодировкаТекста.UTF8);
|
||||
|
||||
ТекСтрока = Текст.ПрочитатьСтроку();
|
||||
|
||||
НомерСтроки = 1;
|
||||
|
||||
Пока ТекСтрока <> Неопределено Цикл
|
||||
|
||||
// обработка
|
||||
|
||||
ТекСтрока = Текст.ПрочитатьСтроку();
|
||||
НомерСтроки = НомерСтроки + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Текст.Закрыть();
|
||||
|
||||
УдалитьФайлы(ПутьКФайлу);
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
## Вариант с ТекстовыйДокумент
|
||||
|
||||
```bsl
|
||||
&НаКлиенте
|
||||
Асинх Процедура ПрочитатьФайл(Команда)
|
||||
Текст = Новый ТекстовыйДокумент;
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ПрочитатьФайлЗавершение", ЭтотОбъект, Текст);
|
||||
Текст.НачатьЧтение(Оповещение, Объект.ПутьКФайлу, КодировкаТекста.UTF8);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПрочитатьФайлЗавершение(Текст) Экспорт
|
||||
|
||||
КоличествоСтрок = Текст.КоличествоСтрок();
|
||||
|
||||
Для НомерСтроки = 1 По КоличествоСтрок Цикл
|
||||
|
||||
ТекСтрока = Текст.ПолучитьСтроку(НомерСтроки);
|
||||
|
||||
// Обработка
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
```
|
@ -0,0 +1,92 @@
|
||||
---
|
||||
title: Чтение XML
|
||||
slug: общие-обмен-данными-чтение-файлов-примеры/чтение-xml
|
||||
---
|
||||
|
||||
## С помощью XDTO
|
||||
|
||||
```bsl
|
||||
|
||||
&НаКлиенте
|
||||
Асинх Процедура ПрочитатьФайл(Команда)
|
||||
|
||||
Расширение = "xml";
|
||||
|
||||
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
|
||||
ПараметрыДиалога.Заголовок = "Выберите файл";
|
||||
ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
|
||||
|
||||
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
|
||||
Если ОписаниеФайла = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
АдресДанных = ОписаниеФайла.Адрес;
|
||||
|
||||
Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;
|
||||
|
||||
ПрочитатьФайлНаСервере(АдресДанных, Расширение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
&НаСервере
|
||||
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
||||
|
||||
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
|
||||
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
||||
ДанныеФайла.Записать(ПутьКФайлу);
|
||||
|
||||
СоответствиеПолей = Новый Соответствие;
|
||||
СоответствиеПолей.Вставить("name", "Наименование");
|
||||
СоответствиеПолей.Вставить("fullname", "НаименованиеПолное");
|
||||
СоответствиеПолей.Вставить("partner_type", "ВидКонтрагента");
|
||||
СоответствиеПолей.Вставить("inn", "ИНН");
|
||||
СоответствиеПолей.Вставить("kpp", "КПП");
|
||||
СоответствиеПолей.Вставить("phone", "Телефон");
|
||||
СоответствиеПолей.Вставить("email", "ЭлектроннаяПочта");
|
||||
СоответствиеПолей.Вставить("is_customer", "Покупатель");
|
||||
СоответствиеПолей.Вставить("is_supplier", "Поставщик");
|
||||
|
||||
ЧтениеXML = Новый ЧтениеXML;
|
||||
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
|
||||
|
||||
ДанныеXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
|
||||
|
||||
// Если элемент в коллекции один, то тип будет "ОбъектXDTO", который в цикле не обойти
|
||||
// Создаем в таком случае принудительно массив
|
||||
Если ТипЗнч(ДанныеXDTO.Partner) = Тип("ОбъектXDTO") Тогда
|
||||
МассивКонтрагентовXDTO = Новый Массив;
|
||||
МассивКонтрагентовXDTO.Добавить(ДанныеXDTO.Partner);
|
||||
Иначе
|
||||
МассивКонтрагентовXDTO = ДанныеXDTO.Partner;
|
||||
КонецЕсли;
|
||||
|
||||
Для каждого ОбъектXDTO Из МассивКонтрагентовXDTO Цикл
|
||||
|
||||
НоваяСтрока = Объект.ДанныеФайла.Добавить();
|
||||
СвойстваXDTO = ОбъектXDTO.Свойства();
|
||||
|
||||
Для каждого СвойствоXDTO Из СвойстваXDTO Цикл
|
||||
|
||||
ИмяСвойства = СвойствоXDTO.Имя;
|
||||
|
||||
Если ТипЗнч(ОбъектXDTO[ИмяСвойства]) = Тип("ОбъектXDTO") Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяРеквизита = СоответствиеПолей.Получить(ИмяСвойства);
|
||||
Если ИмяРеквизита <> Неопределено Тогда
|
||||
НоваяСтрока[ИмяРеквизита] = ОбъектXDTO[ИмяСвойства];
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЧтениеXML.Закрыть();
|
||||
|
||||
УдалитьФайлы(ПутьКФайлу);
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
Loading…
x
Reference in New Issue
Block a user