Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как прочитать и перебрать JSON , циклом для записи документа 2 страниц V   1 2 >          
burza Подменю пользователя
сообщение 11.11.20, 10:42
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Подскажите есть такой 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 @ Сегодня, 10:03 * ,
ну кто поможет незнающему)

sava1 Подменю пользователя
сообщение 11.11.20, 11:12
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

в Гугле забанили ?
куча статей и примеров.
Кто хочет разбираться в куче текста Вашего файла ?

Vofka Подменю пользователя
сообщение 11.11.20, 11:36
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Обычно мне не очень импонируют ответы в стиле
Цитата(sava1 @ 11.11.20, 11:12) *
в Гугле забанили ?

Но тут как бы да... Первая ссылка в гугле: [необходимо зарегистрироваться для просмотра ссылки]

burza Подменю пользователя
сообщение 11.11.20, 11:45
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

В принципе ожидаемо!

Vofka Подменю пользователя
сообщение 11.11.20, 11:50
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(burza @ 11.11.20, 11:45) *
В принципе ожидаемо!

А на что вы рассчитывали? Тривиальная задача с кучей информации вокруг как это делается. bn.gif
Готовый код могут написать, например, здесь. Но за деньги.

sava1 Подменю пользователя
сообщение 11.11.20, 12:23
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

burza @ Сегодня, 11:45 * ,
Если бы это была стандартная сериализация - тогда можно было бы получить ответ.
У Вас чем-то сформирован файл - читайте, разбирайте, вписывайте в Контрагенты

burza Подменю пользователя
сообщение 11.11.20, 13:09
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1



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 Подменю пользователя
сообщение 11.11.20, 13:27
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(burza @ 11.11.20, 10:42) *
,"surname":"Коломиец ","fullName":"Коломиец


Вы получаете ИмяСвойста ФуллНейм , при этом Значение - Коломиец, следующее - Имя свойства - ФуллНейм, а Значение - Полное наименование

burza Подменю пользователя
сообщение 11.11.20, 13:30
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

sava1 @ Сегодня, 13:27 * ,
как оставить только фулнейм? мне нужно что в фулнейме вписать в справочник. то есть мне нужно только одно значения.

sava1 Подменю пользователя
сообщение 11.11.20, 13:39
Сообщение #10

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

тогда наверно Значение и ИмяСвойства надо заполнять в одном разделе Если

типо так
Если TипJSON = ТипЗначенияJSON.Число ИЛИ TипJSON = ТипЗначенияJSON.Строка ИЛИ TипJSON = ТипЗначенияJSON.Булево ИЛИ TипJSON = ТипЗначенияJSON.Null Тогда
                     ИмяСвойства = ЧтениеJSON.ТекущееЗначение;                    
                     Значение = ЧтениеJSON.ТекущееЗначение;                
,,,                
              КонецЕсли;


вооще-то проще заполнить Соответствие - Ключ_Значение, а потом обрабатывать

Спасибо сказали: burza,

burza Подменю пользователя
сообщение 11.11.20, 14:03
Сообщение #11

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

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" тогда
                
                НовыйЭлемент.Код= Значение;                
                    //Сообщить(Значение);
              
                КонецЕсли;
                            
            //НовыйЭлемент.Записать();
        КонецЕсли;

Alegzander Подменю пользователя
сообщение 11.11.20, 14:11
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 28
Спасибо сказали: 9 раз
Рейтинг: 8

burza @ Сегодня, 15:03 * ,
Какой реквизит? "Наименование"? Установка "Наименование" закоментирована: //НовыйЭлемент.Наименование = Значение;

burza Подменю пользователя
сообщение 11.11.20, 14:22
Сообщение #13

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Alegzander @ Сегодня, 14:11 * ,
код

sava1 Подменю пользователя
сообщение 11.11.20, 14:32
Сообщение #14

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Те-же грабли - в Если ... КонецЕсли // Значение и ИмяСвойства заполняем попарно

burza Подменю пользователя
сообщение 11.11.20, 14:41
Сообщение #15

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

1

burza @ Сегодня, 14:33 * ,
запутался уже)

daveal Подменю пользователя
сообщение 11.11.20, 15:38
Сообщение #16

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Киев
Спасибо сказали: 25 раз
Рейтинг: 0

А зачем в ручную свойства обходить? Есть же метод ПрочитатьJSON - на выходе будет структура. В ней массив структур results судя по входящим данным

burza Подменю пользователя
сообщение 11.11.20, 15:45
Сообщение #17

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

daveal @ Сегодня, 15:38 * ,
ну вот дайте пример как это все обойти и в клиентов записать)

daveal Подменю пользователя
сообщение 11.11.20, 15:53
Сообщение #18

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Киев
Спасибо сказали: 25 раз
Рейтинг: 0

burza @ Сегодня, 16:45 * ,

Сделайте через прочитатьJson в отладчике и там все будет понятно

Petre Подменю пользователя
сообщение 11.11.20, 16:06
Сообщение #19

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

burza @ Today, 15:45 * ,
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(МойТекстJSON);
ПрочитанноеЗначениеКотороеНеобходимоПосмотретьВОтладчике = ПрочитатьJSON(ЧтениеJSON);


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Alegzander Подменю пользователя
сообщение 12.11.20, 7:47
Сообщение #20

Общительный
**
Группа: Пользователи
Сообщений: 28
Спасибо сказали: 9 раз
Рейтинг: 8

burza @ Вчера, 16:45 * ,
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.ОткрытьФайл("c:/test.json");
    ПрочитанноеЗначениеКотороеНеобходимоПосмотретьВОтладчике = ПрочитатьJSON(ЧтениеJSON,Истина);
    Для Каждого стр Из ПрочитанноеЗначениеКотороеНеобходимоПосмотретьВОтладчике["result"] Цикл
        НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();  
        НовыйЭлемент.Код=стр["customerID"];
        НовыйЭлемент.Наименование=стр["login"];
        НовыйЭлемент.Записать();
    КонецЦикла;

Спасибо сказали: burza,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 22:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!