|
Ошибка выгрузки документов В JSON. | ☑ | ||
---|---|---|---|---|
0
NaRaz
24.01.21
✎
18:42
|
Всем привет.
В общем задача: Есть список документов поступление на РС, которые надо выгрузить в JSON, но не получается. Как делаю: ИмяВременногоФайла = ПолучитьИмяВременногоФайла("json"); ЗаписиJSON = Новый ЗаписьJSON; ЗаписиJSON.ОткрытьФайл(ИмяВременногоФайла,,, Новый ПараметрыЗаписиJSON(, Символы.Таб)); НастройкиСериал = Новый НастройкиСериализацииJSON; НастройкиСериал.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДата; НастройкиСериал.ФорматСериализацииДаты = ФорматДатыJSON.ISO; Для Каждого СтрСписокДокументов Из СписокДокументов Цикл Если Не СтрСписокДокументов.Обрабатывать Тогда Продолжить; КонецЕсли; ЗаписиJSON.ЗаписатьНачалоОбъекта(); СтруктураДокумента = ПолучитьСтруктуру(СтрСписокДокументов.Ссылка); ЗаписатьJSON(ЗаписиJSON, СтруктураДокумента, НастройкиСериал); МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(СтрСписокДокументов.Ссылка.ПолучитьОбъект()); ЗаписиJSON.ЗаписатьКонецОбъекта(); КонецЦикла; СериализаторXDTO.ЗаписатьJSON(ЗаписиJSON, МассивОбъектов, НазначениеТипаXML.Неявное); ЗаписиJSON.Закрыть(); Ошибка: {ВнешняяОбработка.ВыгрузкаДокументовНаСайт.Форма.Форма.Форма(298)}: Ошибка при вызове метода контекста (ЗаписатьJSON) ЗаписатьJSON(ЗаписиJSON, СтруктураДокумента, НастройкиСериал); по причине: Неверный порядок записи JSON по причине: Неверный порядок записи JSON И да, получаю Структуру Так: Функция ПолучитьСтруктуру(знач Объект) Структура = Новый Структура(); /// реквизиты Для каждого Реквизит из Объект.Метаданные().СтандартныеРеквизиты Цикл Если ТипЗнч(Объект[Реквизит.Имя]) = тип("Число") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Дата") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Булево") тогда Структура.Вставить(Реквизит.Имя, Объект[Реквизит.Имя]); иначе Структура.Вставить(Реквизит.Имя, Строка(Объект[Реквизит.Имя])); КонецЕсли; КонецЦикла; Возврат Структура; КонецФункции |
|||
1
ДенисЧ
24.01.21
✎
19:10
|
||||
2
NaRaz
24.01.21
✎
19:12
|
(1) Ваши 15 секунд не просто потрачены зря, они просто выкинуты на помойку.
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("json"); ЗаписиJSON = Новый ЗаписьJSON; ЗаписиJSON.ОткрытьФайл(ИмяВременногоФайла,,, Новый ПараметрыЗаписиJSON(, Символы.Таб)); НастройкиСериал = Новый НастройкиСериализацииJSON; НастройкиСериал.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДата; НастройкиСериал.ФорматСериализацииДаты = ФорматДатыJSON.ISO; Для Каждого СтрСписокДокументов Из СписокДокументов Цикл Если Не СтрСписокДокументов.Обрабатывать Тогда Продолжить; КонецЕсли; СтруктураДокумента = ПолучитьСтруктуру(СтрСписокДокументов.Ссылка); //ЗаписатьJSON(ЗаписиJSON, СтруктураДокумента, НастройкиСериал); МассивОбъектов = Новый Массив; //МассивОбъектов.Добавить(СтрСписокДокументов.Ссылка.ПолучитьОбъект()); МассивОбъектов.Добавить(СтруктураДокумента); КонецЦикла; Попытка СериализаторXDTO.ЗаписатьJSON(ЗаписиJSON, МассивОбъектов, НазначениеТипаXML.Явное); ЗаписиJSON.Закрыть(); //ФайлJSON = Новый ЗаписьТекста(ИмяВременногоФайла, КодировкаТекста.UTF8); //ФайлJSON.Закрыть(); АдресДанных = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяВременногоФайла), Новый УникальныйИдентификатор); УдалитьФайлы(ИмяВременногоФайла); Возврат АдресДанных; Исключение ЗаписьЖурналаРегистрацииСервер("Web-обмен. Ошибка записи временного файла на сервере.","Ошибка",,, "Ошибка записи временного файла ("+ИмяВременногоФайла+"). Описание ошибки: " + ОписаниеОшибки()); КонецПопытки; |
|||
3
ДенисЧ
24.01.21
✎
19:14
|
И что, сработало?
И чем это _принципиально_ отличается от того, что по ссылке? Двойным циклом? |
|||
4
NaRaz
24.01.21
✎
19:15
|
(3) Ну ты не газуй в чате, а сравни, потрать еще минуту и мозг включи. Второй вариант из (2) работает)
|
|||
5
NaRaz
24.01.21
✎
19:16
|
Не рабочий вариант:
Для Каждого СтрСписокДокументов Из СписокДокументов Цикл Если Не СтрСписокДокументов.Обрабатывать Тогда Продолжить; КонецЕсли; ЗаписиJSON.ЗаписатьНачалоОбъекта(); СтруктураДокумента = ПолучитьСтруктуру(СтрСписокДокументов.Ссылка); ЗаписатьJSON(ЗаписиJSON, СтруктураДокумента, НастройкиСериал); МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(СтрСписокДокументов.Ссылка.ПолучитьОбъект()); ЗаписиJSON.ЗаписатьКонецОбъекта(); КонецЦикла; Рабочий вариант: Для Каждого СтрСписокДокументов Из СписокДокументов Цикл Если Не СтрСписокДокументов.Обрабатывать Тогда Продолжить; КонецЕсли; СтруктураДокумента = ПолучитьСтруктуру(СтрСписокДокументов.Ссылка); //ЗаписатьJSON(ЗаписиJSON, СтруктураДокумента, НастройкиСериал); МассивОбъектов = Новый Массив; //МассивОбъектов.Добавить(СтрСписокДокументов.Ссылка.ПолучитьОбъект()); МассивОбъектов.Добавить(СтруктураДокумента); КонецЦикла; |
|||
6
ДенисЧ
24.01.21
✎
19:18
|
А теперь так
ЗаписиJSON.ЗаписатьНачалоМассива(); Для Каждого СтрСписокДокументов Из СписокДокументов Цикл Если Не СтрСписокДокументов.Обрабатывать Тогда Продолжить; КонецЕсли; ЗаписиJSON.ЗаписатьНачалоОбъекта(); СтруктураДокумента = ПолучитьСтруктуру(СтрСписокДокументов.Ссылка); ЗаписатьJSON(ЗаписиJSON, СтруктураДокумента, НастройкиСериал); МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(СтрСписокДокументов.Ссылка.ПолучитьОбъект()); ЗаписиJSON.ЗаписатьКонецОбъекта(); КонецЦикла; ЗаписиJSON.ЗаписатьКонецМассива(); Тоже не работает? |
|||
7
NaRaz
24.01.21
✎
19:23
|
Нет, так не работает
|
|||
8
NaRaz
24.01.21
✎
19:24
|
(6) Неверный порядок записи JSON
{ВнешняяОбработка.ВыгрузкаДокументовНаСайт.Форма.Форма.Форма(299)}: ЗаписатьJSON(ЗаписиJSON, СтруктураДокумента, НастройкиСериал); {ВнешняяОбработка.ВыгрузкаДокументовНаСайт.Форма.Форма.Форма(163)}: АдресФайла = ВыгрузитьДокументыСервер(); по причине: Неверный порядок записи JSON |
|||
9
NaRaz
24.01.21
✎
19:30
|
Кто нибуждь может подсказать, если название тегов отстуствует, куда смотреть?
"#value": [ { "#type": "jv8:Structure", "#value": [ { "name": { "#type": "jxs:string", "#value": "GUID" }, "Value": { "#type": "jv8:UUID", "#value": "96c83bb0-a663-11ea-bc5e-00155d011002" } }, { "name": { "#type": "jxs:string", "#value": "Проведен" }, "Value": { "#type": "jxs:boolean", "#value": true } }, { "name": { "#type": "jxs:string", "#value": "Ссылка" }, "Value": { "#type": "jxs:string", "#value": "Поступление на расчетный счет АГ000000008 от 04.06.2020 17:31:52" } это пример файла |
|||
10
Йохохо
24.01.21
✎
19:34
|
(9) работает же
|
|||
11
NaRaz
24.01.21
✎
19:35
|
(10) Теперь я исправил работает, я теперь не понимаю, почему через структуру нет названия тега, нужно ссылку что ли добавить везде в структуру?
|
|||
12
Йохохо
24.01.21
✎
19:37
|
(11) есть оно
|
|||
13
NaRaz
24.01.21
✎
19:50
|
(12) Возможно, как теги сделать ?
|
|||
14
Fram
24.01.21
✎
19:51
|
(11) какого тэга? В json либо пара ключ:значение, либо массив
|
|||
15
Йохохо
24.01.21
✎
19:51
|
(13) перепиши код)
|
|||
16
NaRaz
24.01.21
✎
20:24
|
(14) А если я выгружаю массив, то нельзя выгрузить Ключ-Значение?
|
|||
17
acht
24.01.21
✎
20:40
|
(16) Ну ты не газуй в чате, а сравни, потрать еще минуту и мозг включи.
|
|||
18
Fram
24.01.21
✎
20:53
|
(16) я не понимаю твой вопрос
|
|||
19
NaRaz
24.01.21
✎
21:19
|
(17) А я и не газую, я спрашиваю:
Мне нужно получить вот такую структуру: Пример результата через получение структуры документа { "Проведен": true, "Ссылка": "Заказ клиента ТД00-000028 от 13.07.2017 18:46:57", "ПометкаУдаления": false, "Дата": "2017-07-13T18:46:57", "Номер": "ТД00-000028", "Партнер": "Альфа", "ПартнерКод": "ЦУ-00000002", Я сейчас получаю вот такую: { "#value": [ { "#type": "jv8:Structure", "#value": [ { "name": { "#type": "jxs:string", "#value": "GUID" }, "Value": { "#type": "jxs:string", "#value": "96c83bb0-a663-11ea-bc5e-00155d011002" } }, { "name": { "#type": "jxs:string", "#value": "Ссылка" }, "Value": { "#type": "jxs:string", "#value": "Поступление на расчетный счет АГ000000008 от 04.06.2020 17:31:52" } }, { "name": { "#type": "jxs:string", "#value": "Проведен" }, "Value": { "#type": "jxs:boolean", "#value": true |
|||
20
palsergeich
24.01.21
✎
21:24
|
(19) Не пользуйся платформенным сериализатором XDTO.
Собери структуру. А потом методом ЗаписатьJson получи то, что ты хочешь. для обработки несериализуемых типов (например ссылки), есть удобный обработчик. https://wonderland.v8.1c.ru/blog/sredstva-raboty-s-json/ Здесь очень хорошо описано |
|||
21
NaRaz
24.01.21
✎
21:38
|
(20) Спасибо за толковую ссыль
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |