Подскажите есть такой JSON нужно перебрать данные и занести их в справочник контрагента, помогите с кодом.
вот сам JSON
{"error":"","errorMessage":"","result":[{"userType":1,"managerID":"1","managerExternalID":null,"managerLogin":
"Evgeniy","officeID":"1","officeExternalID":null,"officeName":"Дана-
Автогруп","officeMode":0,"customerID":"32565","customerExternalID":null,"categoryID":"2","categoryExternalID":null,"categoryName":
"ОПТ","name":"Олег","secondName":"Иванович ","surname":"Коломиец ","fullName":"Коломиец
Олег Иванович ","login":"Olepka","phone":"+380(97)906-19-44","mobilePhone":null,"email":"Olepka@ukr.net","icq":null,"skype":null,"country":
"Украина","region":"Николаевская область","city":"Николаев","organizationName":null,"businessID":null,"businessExternalID":null,"businessName":
null,"balance":"99.96","creditLimit":null,"managerComment":null,"contragentType":"1","organizationFormID":null,"
organizationFormExternalID":null,"organizationFormName":null,"groupID":null,"groupExternalID":null,"groupName":null,"preferredCurrencyID":null,"
preferredCurrencyExternalID":null,"preferredCurrencyISO":null,"aiBalanceOrdered":"0.00","
aiBalanceActiveOrdered":"0.00","aiBalanceTotal":"0.00","aiBalanceByReturn":"0.00","aiBalanceDelayed":"0.00","dateRegistered":"2020-10-19 19:50:24"}]}
в Гугле забанили ?
куча статей и примеров.
Кто хочет разбираться в куче текста Вашего файла ?
Обычно мне не очень импонируют ответы в стиле
В принципе ожидаемо!
burza @ Сегодня, 11:45
,
Если бы это была стандартная сериализация - тогда можно было бы получить ответ.
У Вас чем-то сформирован файл - читайте, разбирайте, вписывайте в Контрагенты
fullName в JSON один , а на выходе двоит файлы, сначала пишет Коломиец и второй строкой уже полное Коломиец Олег Иванович
как исправить? где втыкаю
FileName = "c:\1CData\test.json";
// Сообщить(FileName);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку("");
ЧтениеJSON.ОткрытьФайл(FileName);
Пока ЧтениеJSON.Прочитать() Цикл
//НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
TипJSON = ЧтениеJSON.ТипТекущегоЗначения;
Если TипJSON = ТипЗначенияJSON.Число ИЛИ TипJSON = ТипЗначенияJSON.Строка ИЛИ TипJSON = ТипЗначенияJSON.Булево ИЛИ TипJSON = ТипЗначенияJSON.Null Тогда
Значение = ЧтениеJSON.ТекущееЗначение;
ИначеЕсли TипJSON = ТипЗначенияJSON.Комментарий Тогда
Комментарий = ЧтениеJSON.ТекущееЗначение;
ИначеЕсли TипJSON = ТипЗначенияJSON.ИмяСвойства Тогда
ИмяСвойства = ЧтениеJSON.ТекущееЗначение;
КонецЕсли;
//НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
Если ИмяСвойства ="fullName" Тогда
Сообщить(Значение);
//НовыйЭлемент.Наименование = Значение;
//НовыйЭлемент.НаименованиеПолное = Значение;
// ИмяСотрудника=Значение;
// ИначеЕсли ИмяСвойства ="customerID" Тогда
// НовыйЭлемент.Код= Значение;
// ФамилияСотрудника=Значение;
//ИначеЕсли ИмяСвойства ="packaging" Тогда
// packaging=Значение;
//ИначеЕсли ИмяСвойства ="series" Тогда
// series=Значение;
//ИначеЕсли ИмяСвойства ="manufacturer_name" Тогда
// manufacturer_name=Значение;
//ИначеЕсли ИмяСвойства ="info_letter_fullname" Тогда
// info_letter_fullname=Значение;
//ИначеЕсли ИмяСвойства ="cert_num" Тогда
// cert_num=Значение;
// ИначеЕсли ИмяСвойства ="info_letter_url" Тогда
// info_letter_url=Значение;
//НовыйЭлемент.Наименование = "123";
//НовыйЭлемент.НаименованиеПолное ="123";
//НовыйЭлемент.ФормаСобственности= Перечисления.ФормыСобственности.ЧастноеЛицо;
//НовыйЭлемент.СогласиеНаОбработкуПерсональныхДанных = Перечисления.ВариантыОтветов.Да;
//НовыйЭлемент.ВидКонтрагента = Перечисления.ВидыКонтрагентов.Покупатель;
//
//НовыйЭлемент.Записать();
КонецЕсли;
//НовыйЭлемент.Записать();
КонецЦикла;
//ЧтениеJSON.Закрыть();
sava1 @ Сегодня, 13:27
,
как оставить только фулнейм? мне нужно что в фулнейме вписать в справочник. то есть мне нужно только одно значения.
тогда наверно Значение и ИмяСвойства надо заполнять в одном разделе Если
типо так
Если TипJSON = ТипЗначенияJSON.Число ИЛИ TипJSON = ТипЗначенияJSON.Строка ИЛИ TипJSON = ТипЗначенияJSON.Булево ИЛИ TипJSON = ТипЗначенияJSON.Null Тогда
ИмяСвойства = ЧтениеJSON.ТекущееЗначение;
Значение = ЧтениеJSON.ТекущееЗначение;
,,,
КонецЕсли;
sava1 @ Сегодня, 13:38
,
спс
Сообщить выводит все правильно а вот когда пытаюсь записать с справочник говорит что там пусто реквезит не заполнен?
НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
TипJSON = ЧтениеJSON.ТипТекущегоЗначения;
Если TипJSON = ТипЗначенияJSON.Число ИЛИ TипJSON = ТипЗначенияJSON.Строка ИЛИ TипJSON = ТипЗначенияJSON.Булево ИЛИ TипJSON = ТипЗначенияJSON.Null Тогда
Значение = ЧтениеJSON.ТекущееЗначение;
ИначеЕсли TипJSON = ТипЗначенияJSON.Комментарий Тогда
Комментарий = ЧтениеJSON.ТекущееЗначение;
ИначеЕсли TипJSON = ТипЗначенияJSON.ИмяСвойства Тогда
ИмяСвойства = ЧтениеJSON.ТекущееЗначение;
/////////////////////////////////////////////////////////////
Если ИмяСвойства ="login" Тогда
// Сообщить(Значение);
//НовыйЭлемент.Наименование = Значение;
//НовыйЭлемент.НаименованиеПолное = Значение;
ИначеЕсли ИмяСвойства ="customerExternalID" тогда
НовыйЭлемент.Код= Значение;
//Сообщить(Значение);
КонецЕсли;
//НовыйЭлемент.Записать();
КонецЕсли;
burza @ Сегодня, 15:03
,
Какой реквизит? "Наименование"? Установка "Наименование" закоментирована: //НовыйЭлемент.Наименование = Значение;
Те-же грабли - в Если ... КонецЕсли // Значение и ИмяСвойства заполняем попарно
А зачем в ручную свойства обходить? Есть же метод ПрочитатьJSON - на выходе будет структура. В ней массив структур results судя по входящим данным
daveal @ Сегодня, 15:38
,
ну вот дайте пример как это все обойти и в клиентов записать)
burza @ Сегодня, 16:45
,
Сделайте через прочитатьJson в отладчике и там все будет понятно
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(МойТекстJSON);
ПрочитанноеЗначениеКотороеНеобходимоПосмотретьВОтладчике = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьФайл("c:/test.json");
ПрочитанноеЗначениеКотороеНеобходимоПосмотретьВОтладчике = ПрочитатьJSON(ЧтениеJSON,Истина);
Для Каждого стр Из ПрочитанноеЗначениеКотороеНеобходимоПосмотретьВОтладчике["result"] Цикл
НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйЭлемент.Код=стр["customerID"];
НовыйЭлемент.Наименование=стр["login"];
НовыйЭлемент.Записать();
КонецЦикла;
Если из приведенного в начале примера JSON-а убрать символы перевода строк, он становится нормальным валидным джисоном, 1с его читает стандартными методами. В соответствие или структуру, как вам удобнее.
Текст после очистки:
{
"error": "",
"errorMessage": "",
"result": [{
"userType": 1,
"managerID": "1",
"managerExternalID": null,
"managerLogin": "Evgeniy",
"officeID": "1",
"officeExternalID": null,
"officeName": "Дана-Автогруп",
"officeMode": 0,
"customerID": "32565",
"customerExternalID": null,
"categoryID": "2",
"categoryExternalID": null,
"categoryName": "ОПТ",
"name": "Олег",
"secondName": "Иванович ",
"surname": "Коломиец ",
"fullName": "Коломиец Олег Иванович ",
"login": "Olepka",
"phone": "+380(97)906-19-44",
"mobilePhone": null,
"email": "Olepka@ukr.net",
"icq": null,
"skype": null,
"country": "Украина",
"region": "Николаевская область",
"city": "Николаев",
"organizationName": null,
"businessID": null,
"businessExternalID": null,
"businessName": null,
"balance": "99.96",
"creditLimit": null,
"managerComment": null,
"contragentType": "1",
"organizationFormID": null,
"organizationFormExternalID": null,
"organizationFormName": null,
"groupID": null,
"groupExternalID": null,
"groupName": null,
"preferredCurrencyID": null,
"preferredCurrencyExternalID": null,
"preferredCurrencyISO": null,
"aiBalanceOrdered": "0.00",
"aiBalanceActiveOrdered": "0.00",
"aiBalanceTotal": "0.00",
"aiBalanceByReturn": "0.00",
"aiBalanceDelayed": "0.00",
"dateRegistered": "2020-10-19 19:50:24"
}]
}
А зачем изобретать велосипед. Спасибо человеку, все делается в одну строку. https://pro1c.org.ua/redirect.php?https://github.com/vbondarevsky/Connector
Результат = КоннекторHTTP.GetJson("http://httpbin.org/get");
Petre, Судя по всему у автора проблемы с пониманием принципа работы с данными такого типа. Предоставил готовый вариант, который в одну строку распарсит его данные в удобный формат.
Anderson @ Сегодня, 9:34
,
Работа с json это не всегда http запрос куда-то.
Vofka, Да и такое встречается.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua