edit
This commit is contained in:
parent
6bf00d3da5
commit
7b08c1d18e
@ -25,18 +25,18 @@ slug: общие-обмен-данными/сериализация-xml
|
||||
&НаСервере
|
||||
Процедура СериализоватьНаСервере()
|
||||
|
||||
Таблица = ТаблицаДанных.Выгрузить(); // Какой-то объект
|
||||
Таблица = ТаблицаДанных.Выгрузить(); // Какой-то объект
|
||||
|
||||
ЗаписьXML = Новый ЗаписьXML;
|
||||
ЗаписьXML.УстановитьСтроку();
|
||||
ЗаписьXML = Новый ЗаписьXML;
|
||||
ЗаписьXML.УстановитьСтроку();
|
||||
|
||||
// Преобразование: ТаблицаЗначений - ОбъектXDTO
|
||||
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(Таблица);
|
||||
// Преобразование: ТаблицаЗначений - ОбъектXDTO
|
||||
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(Таблица);
|
||||
|
||||
// Преобразование: ОбъектXDTO - XML
|
||||
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
|
||||
// Преобразование: ОбъектXDTO - XML
|
||||
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
|
||||
|
||||
ДанныеXML = ЗаписьXML.Закрыть();
|
||||
ДанныеXML = ЗаписьXML.Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -49,19 +49,19 @@ slug: общие-обмен-данными/сериализация-xml
|
||||
&НаСервере
|
||||
Процедура ДесериализоватьНаСервере()
|
||||
|
||||
ЧтениеXML = Новый ЧтениеXML;
|
||||
ЧтениеXML.УстановитьСтроку(ДанныеXML);
|
||||
ЧтениеXML = Новый ЧтениеXML;
|
||||
ЧтениеXML.УстановитьСтроку(ДанныеXML);
|
||||
|
||||
// Преобразование: XML - ОбъектXDTO
|
||||
ТипОбъекта = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "ValueTable");
|
||||
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипОбъекта);
|
||||
// Преобразование: XML - ОбъектXDTO
|
||||
ТипОбъекта = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "ValueTable");
|
||||
Объект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)
|
||||
[Источник 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", "Наименование");
|
||||
СоответствиеПолей.Вставить("fullname", "НаименованиеПолное");
|
||||
СоответствиеПолей.Вставить("partner_type", "ВидКонтрагента");
|
||||
СоответствиеПолей.Вставить("inn", "ИНН");
|
||||
СоответствиеПолей.Вставить("kpp", "КПП");
|
||||
СоответствиеПолей.Вставить("phone", "Телефон");
|
||||
СоответствиеПолей.Вставить("email", "ЭлектроннаяПочта");
|
||||
СоответствиеПолей.Вставить("is_customer", "Покупатель");
|
||||
СоответствиеПолей.Вставить("is_supplier", "Поставщик");
|
||||
СоответствиеПолей = Новый Соответствие;
|
||||
СоответствиеПолей.Вставить("name", "Наименование");
|
||||
СоответствиеПолей.Вставить("fullname", "НаименованиеПолное");
|
||||
СоответствиеПолей.Вставить("partner_type", "ВидКонтрагента");
|
||||
СоответствиеПолей.Вставить("inn", "ИНН");
|
||||
СоответствиеПолей.Вставить("kpp", "КПП");
|
||||
СоответствиеПолей.Вставить("phone", "Телефон");
|
||||
СоответствиеПолей.Вставить("email", "ЭлектроннаяПочта");
|
||||
СоответствиеПолей.Вставить("is_customer", "Покупатель");
|
||||
СоответствиеПолей.Вставить("is_supplier", "Поставщик");
|
||||
|
||||
ЧтениеXML = Новый ЧтениеXML;
|
||||
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
|
||||
ЧтениеXML = Новый ЧтениеXML;
|
||||
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
|
||||
|
||||
ДанныеXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
|
||||
ДанныеXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
|
||||
|
||||
// Если элемент в коллекции один, то тип будет "ОбъектXDTO", который в цикле не обойти
|
||||
// Создаем в таком случае принудительно массив
|
||||
Если ТипЗнч(ДанныеXDTO.Partner) = Тип("ОбъектXDTO") Тогда
|
||||
МассивКонтрагентовXDTO = Новый Массив;
|
||||
МассивКонтрагентовXDTO.Добавить(ДанныеXDTO.Partner);
|
||||
Иначе
|
||||
МассивКонтрагентовXDTO = ДанныеXDTO.Partner;
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(ДанныеXDTO.Partner) = Тип("ОбъектXDTO") Тогда
|
||||
МассивКонтрагентовXDTO = Новый Массив;
|
||||
МассивКонтрагентов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