Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 06:49

Выгрузка из 1С в JSON

Автор SEMEN-YU, 22 окт 2021, 16:57

0 Пользователей и 1 гость просматривают эту тему.

SEMEN-YU

Добрый день, коллеги. УПП , 8.3.10.2466
Подскажите, как в json перенести значение Число?
Есть такой код
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ПроверятьСтруктуру = Ложь;

ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON( , Символы.Таб);

ЗаписьJSON.ОткрытьФайл(ИмяФайла, КодировкаТекста.UTF8, , ПараметрыЗаписиJSON);

ЗаписьJSON.ЗаписатьНачалоМассива();

Для Каждого Стр Из тз_ Цикл
ЗаписьJSON.ЗаписатьНачалоОбъекта();
Для Каждого Колонка Из тз_.Колонки Цикл
ЗаписьJSON.ЗаписатьИмяСвойства(СокрЛП(Колонка.Имя));
ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Стр[Колонка.Имя]));             
КонецЦикла;
ЗаписьJSON.ЗаписатьКонецОбъекта();
КонецЦикла;
ЗаписьJSON.ЗаписатьКонецМассива();

ЗаписьJSON.Закрыть();

Запросом выгружаются данные. Есть с типом значения Число. Но в json записываюся как строка.
Вот так
        "ЦФО": "Э1",
      "Категория": "НМА",
      "Квартал": "3кв.2021г",
      "СрезНа": "703,1",           ------ должно быть число
      "СтоимостьДенег": "18,65",   ------ должно быть число
      "ИНВНомер": "00061"


Заранее спасибо за ответы.

LexaK

SEMEN-YU, а зачем вы ТАК выводите (циклы в циклах)? Джисон как-то сериализуется
создайте массив структур и одной командой сразу все выгружайте!
если помогло нажмите: Спасибо!

SEMEN-YU

LexaK, скажите это поможет решить вопрос с числами?
И вы иметет в виду массив нужно создавать по типу Массив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Колона");? Для каждой колонки

LexaK

SEMEN-YU, да, должно помочь, Джинсон понимает просты типы данных!
там что одной командой выгрузил, то тоже одной командой и читаешь
выгруженные и загруженные данные будут совпадать
если помогло нажмите: Спасибо!

LexaK

SEMEN-YU, вот пример, посмотрите

//Джинс

ОбъектСериализации = Новый Массив;
ОбъектСериализации.Добавить(10000);
ОбъектСериализации.Добавить(ТекущаяДата());
ОбъектСериализации.Добавить("тест");

ЗаписиJSON = Новый ЗаписьJSON;
ЗаписиJSON.УстановитьСтроку();
НастройкиСериал = Новый НастройкиСериализацииJSON;
НастройкиСериал.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДата;
НастройкиСериал.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
СериализаторXDTO.ЗаписатьJSON(ЗаписиJSON, ОбъектСериализации, НазначениеТипаXML.Явное);
результат = ЗаписиJSON.Закрыть();
Сообщить(результат);


//результат
{
"#type": "jv8:Array",
"#value": [
{
"#type": "jxs:decimal",
"#value": 10000
},
{
"#type": "jxs:dateTime",
"#value": "2021-10-22T17:46:51"
},
{
"#type": "jxs:string",
"#value": "тест"
}
]
}
если помогло нажмите: Спасибо!

SEMEN-YU

LexaK, с массивом на вашем примере вроде понятно.
Но как всё таки обработать Результат запроса?
В массив добавить все колонки нет возможности насколько я понимаю

LexaK

SEMEN-YU,
ЦитироватьВ массив добавить все колонки нет возможности насколько я понимаю
Есть возможность. Вам написали выше! Внимательнее читайте ответы!  :befhbt:
если помогло нажмите: Спасибо!

SEMEN-YU

LexaK, Возможно для вас всё кристально понятно. Для меня это не так.
Спасибо за ответы, но если хотите действительно помочь приведите по возможности пример. Если нет, то спасибо и на этом.

LexaK

SEMEN-YU, пожалуйста! обращайтесь еще!  :D
а совет был такой
Цитироватьсоздайте массив структур и одной командой сразу все выгружайте!
тут вроде все элементарно, массив, структуры - что сложного в этом?
если помогло нажмите: Спасибо!

antoneus

СокрЛП вообще-то преобразует значение в строку.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск