edit
This commit is contained in:
parent
6bf00d3da5
commit
7b08c1d18e
@ -24,20 +24,20 @@ slug: общие-обмен-данными/сериализация-xml
|
|||||||
```bsl
|
```bsl
|
||||||
&НаСервере
|
&НаСервере
|
||||||
Процедура СериализоватьНаСервере()
|
Процедура СериализоватьНаСервере()
|
||||||
|
|
||||||
Таблица = ТаблицаДанных.Выгрузить(); // Какой-то объект
|
Таблица = ТаблицаДанных.Выгрузить(); // Какой-то объект
|
||||||
|
|
||||||
ЗаписьXML = Новый ЗаписьXML;
|
ЗаписьXML = Новый ЗаписьXML;
|
||||||
ЗаписьXML.УстановитьСтроку();
|
ЗаписьXML.УстановитьСтроку();
|
||||||
|
|
||||||
// Преобразование: ТаблицаЗначений - ОбъектXDTO
|
// Преобразование: ТаблицаЗначений - ОбъектXDTO
|
||||||
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(Таблица);
|
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(Таблица);
|
||||||
|
|
||||||
// Преобразование: ОбъектXDTO - XML
|
// Преобразование: ОбъектXDTO - XML
|
||||||
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
|
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
|
||||||
|
|
||||||
ДанныеXML = ЗаписьXML.Закрыть();
|
ДанныеXML = ЗаписьXML.Закрыть();
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -48,21 +48,21 @@ slug: общие-обмен-данными/сериализация-xml
|
|||||||
|
|
||||||
&НаСервере
|
&НаСервере
|
||||||
Процедура ДесериализоватьНаСервере()
|
Процедура ДесериализоватьНаСервере()
|
||||||
|
|
||||||
ЧтениеXML = Новый ЧтениеXML;
|
ЧтениеXML = Новый ЧтениеXML;
|
||||||
ЧтениеXML.УстановитьСтроку(ДанныеXML);
|
ЧтениеXML.УстановитьСтроку(ДанныеXML);
|
||||||
|
|
||||||
// Преобразование: XML - ОбъектXDTO
|
// Преобразование: XML - ОбъектXDTO
|
||||||
ТипОбъекта = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "ValueTable");
|
ТипОбъекта = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "ValueTable");
|
||||||
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипОбъекта);
|
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипОбъекта);
|
||||||
|
|
||||||
// Преобразование: ОбъектXDTO - ТаблицаЗначений
|
// Преобразование: ОбъектXDTO - ТаблицаЗначений
|
||||||
Таблица = СериализаторXDTO.ПрочитатьXDTO(ОбъектXDTO);
|
Таблица = СериализаторXDTO.ПрочитатьXDTO(ОбъектXDTO);
|
||||||
|
|
||||||
ТаблицаДанных.Загрузить(Таблица);
|
ТаблицаДанных.Загрузить(Таблица);
|
||||||
|
|
||||||
ЧтениеXML.Закрыть();
|
ЧтениеXML.Закрыть();
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
```
|
```
|
@ -21,6 +21,39 @@ slug: общие-обмен-данными/табличный-документ-
|
|||||||
Построитель.Вывести(ТабДокумент);
|
Построитель.Вывести(ТабДокумент);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Вариант с собственной функцией
|
||||||
|
```bsl
|
||||||
|
&НаСервере
|
||||||
|
Функция ТабличныйДокументИзТаблицыЗначений(ТаблицаЗначений)
|
||||||
|
|
||||||
|
ТабДок = Новый ТабличныйДокумент;
|
||||||
|
|
||||||
|
// Формируем заголовки
|
||||||
|
ОбластьЗаголовок = ТабДок.ПолучитьОбласть(1, 1, 1, ТаблицаЗначений.Колонки.Количество() + 1);
|
||||||
|
ОбластьЗаголовок.Область(1, 1).Текст = "№ п/п";
|
||||||
|
|
||||||
|
Для НомерКолонки = 1 По ТаблицаЗначений.Колонки.Количество() Цикл
|
||||||
|
ОбластьЗаголовок.Область(1, НомерКолонки + 1).Текст = ТаблицаЗначений.Колонки[НомерКолонки - 1].Имя;
|
||||||
|
КонецЦикла;
|
||||||
|
ТабДок.Вывести(ОбластьЗаголовок);
|
||||||
|
|
||||||
|
// Заполняем данными
|
||||||
|
Для НомерСтроки = 1 По ТаблицаЗначений.Количество() Цикл
|
||||||
|
ОбластьСтрока = ТабДок.ПолучитьОбласть(НомерСтроки + 1, 1, НомерСтроки + 1, ТаблицаЗначений.Колонки.Количество() + 1);
|
||||||
|
ОбластьСтрока.Область(1, 1).Текст = Формат(НомерСтроки, "ЧГ=");
|
||||||
|
|
||||||
|
Для НомерКолонки = 1 По ТаблицаЗначений.Колонки.Количество() Цикл
|
||||||
|
ОбластьСтрока.Область(1, НомерКолонки + 1).Текст = Строка(ТаблицаЗначений[НомерСтроки - 1][НомерКолонки - 1]);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ТабДок.Вывести(ОбластьСтрока);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Возврат ТабДок;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
[Источник 1](https://infostart.ru/1c/articles/2110771)
|
[Источник 1](https://infostart.ru/1c/articles/2110771)
|
||||||
[Источник 2](https://helpf.pro/faq/view/1373.html)
|
[Источник 2](https://helpf.pro/faq/view/1373.html)
|
@ -31,31 +31,31 @@ slug: общие-обмен-данными-чтение-файлов-приме
|
|||||||
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
||||||
|
|
||||||
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
|
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
|
||||||
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
||||||
ДанныеФайла.Записать(ПутьКФайлу);
|
ДанныеФайла.Записать(ПутьКФайлу);
|
||||||
|
|
||||||
ЧтениеJSON = Новый ЧтениеJSON;
|
ЧтениеJSON = Новый ЧтениеJSON;
|
||||||
ЧтениеJSON.ОткрытьФайл(ПутьКФайлу);
|
ЧтениеJSON.ОткрытьФайл(ПутьКФайлу);
|
||||||
|
|
||||||
ДанныеJSON = ПрочитатьJSON(ЧтениеJSON);
|
ДанныеJSON = ПрочитатьJSON(ЧтениеJSON);
|
||||||
|
|
||||||
// Получаем массив структур
|
// Получаем массив структур
|
||||||
Если ТипЗнч(ДанныеJSON) = Тип("Структура") Тогда
|
Если ТипЗнч(ДанныеJSON) = Тип("Структура") Тогда
|
||||||
МассивДанных = Новый Массив;
|
МассивДанных = Новый Массив;
|
||||||
МассивДанных.Добавить(ДанныеJSON);
|
МассивДанных.Добавить(ДанныеJSON);
|
||||||
ИначеЕсли ТипЗнч(ДанныеJSON) = Тип("Массив") Тогда
|
ИначеЕсли ТипЗнч(ДанныеJSON) = Тип("Массив") Тогда
|
||||||
МассивДанных = ДанныеJSON;
|
МассивДанных = ДанныеJSON;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Для каждого ДанныеКонтрагента Из МассивДанных Цикл
|
Для каждого ДанныеКонтрагента Из МассивДанных Цикл
|
||||||
|
|
||||||
// обрабатываем
|
// обрабатываем
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ЧтениеJSON.Закрыть();
|
ЧтениеJSON.Закрыть();
|
||||||
|
|
||||||
УдалитьФайлы(ПутьКФайлу);
|
УдалитьФайлы(ПутьКФайлу);
|
||||||
|
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
@ -34,59 +34,59 @@ slug: общие-обмен-данными-чтение-файлов-приме
|
|||||||
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
|
||||||
|
|
||||||
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
|
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
|
||||||
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
|
||||||
ДанныеФайла.Записать(ПутьКФайлу);
|
ДанныеФайла.Записать(ПутьКФайлу);
|
||||||
|
|
||||||
СоответствиеПолей = Новый Соответствие;
|
СоответствиеПолей = Новый Соответствие;
|
||||||
СоответствиеПолей.Вставить("name", "Наименование");
|
СоответствиеПолей.Вставить("name", "Наименование");
|
||||||
СоответствиеПолей.Вставить("fullname", "НаименованиеПолное");
|
СоответствиеПолей.Вставить("fullname", "НаименованиеПолное");
|
||||||
СоответствиеПолей.Вставить("partner_type", "ВидКонтрагента");
|
СоответствиеПолей.Вставить("partner_type", "ВидКонтрагента");
|
||||||
СоответствиеПолей.Вставить("inn", "ИНН");
|
СоответствиеПолей.Вставить("inn", "ИНН");
|
||||||
СоответствиеПолей.Вставить("kpp", "КПП");
|
СоответствиеПолей.Вставить("kpp", "КПП");
|
||||||
СоответствиеПолей.Вставить("phone", "Телефон");
|
СоответствиеПолей.Вставить("phone", "Телефон");
|
||||||
СоответствиеПолей.Вставить("email", "ЭлектроннаяПочта");
|
СоответствиеПолей.Вставить("email", "ЭлектроннаяПочта");
|
||||||
СоответствиеПолей.Вставить("is_customer", "Покупатель");
|
СоответствиеПолей.Вставить("is_customer", "Покупатель");
|
||||||
СоответствиеПолей.Вставить("is_supplier", "Поставщик");
|
СоответствиеПолей.Вставить("is_supplier", "Поставщик");
|
||||||
|
|
||||||
ЧтениеXML = Новый ЧтениеXML;
|
ЧтениеXML = Новый ЧтениеXML;
|
||||||
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
|
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
|
||||||
|
|
||||||
ДанныеXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
|
ДанныеXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
|
||||||
|
|
||||||
// Если элемент в коллекции один, то тип будет "ОбъектXDTO", который в цикле не обойти
|
// Если элемент в коллекции один, то тип будет "ОбъектXDTO", который в цикле не обойти
|
||||||
// Создаем в таком случае принудительно массив
|
// Создаем в таком случае принудительно массив
|
||||||
Если ТипЗнч(ДанныеXDTO.Partner) = Тип("ОбъектXDTO") Тогда
|
Если ТипЗнч(ДанныеXDTO.Partner) = Тип("ОбъектXDTO") Тогда
|
||||||
МассивКонтрагентовXDTO = Новый Массив;
|
МассивКонтрагентовXDTO = Новый Массив;
|
||||||
МассивКонтрагентовXDTO.Добавить(ДанныеXDTO.Partner);
|
МассивКонтрагентовXDTO.Добавить(ДанныеXDTO.Partner);
|
||||||
Иначе
|
Иначе
|
||||||
МассивКонтрагентовXDTO = ДанныеXDTO.Partner;
|
МассивКонтрагентовXDTO = ДанныеXDTO.Partner;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Для каждого ОбъектXDTO Из МассивКонтрагентовXDTO Цикл
|
Для каждого ОбъектXDTO Из МассивКонтрагентовXDTO Цикл
|
||||||
|
|
||||||
НоваяСтрока = Объект.ДанныеФайла.Добавить();
|
НоваяСтрока = Объект.ДанныеФайла.Добавить();
|
||||||
СвойстваXDTO = ОбъектXDTO.Свойства();
|
СвойстваXDTO = ОбъектXDTO.Свойства();
|
||||||
|
|
||||||
Для каждого СвойствоXDTO Из СвойстваXDTO Цикл
|
Для каждого СвойствоXDTO Из СвойстваXDTO Цикл
|
||||||
|
|
||||||
ИмяСвойства = СвойствоXDTO.Имя;
|
ИмяСвойства = СвойствоXDTO.Имя;
|
||||||
|
|
||||||
Если ТипЗнч(ОбъектXDTO[ИмяСвойства]) = Тип("ОбъектXDTO") Тогда
|
Если ТипЗнч(ОбъектXDTO[ИмяСвойства]) = Тип("ОбъектXDTO") Тогда
|
||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ИмяРеквизита = СоответствиеПолей.Получить(ИмяСвойства);
|
ИмяРеквизита = СоответствиеПолей.Получить(ИмяСвойства);
|
||||||
Если ИмяРеквизита <> Неопределено Тогда
|
Если ИмяРеквизита <> Неопределено Тогда
|
||||||
НоваяСтрока[ИмяРеквизита] = ОбъектXDTO[ИмяСвойства];
|
НоваяСтрока[ИмяРеквизита] = ОбъектXDTO[ИмяСвойства];
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ЧтениеXML.Закрыть();
|
ЧтениеXML.Закрыть();
|
||||||
|
|
||||||
УдалитьФайлы(ПутьКФайлу);
|
УдалитьФайлы(ПутьКФайлу);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
```
|
```
|
Loading…
x
Reference in New Issue
Block a user