Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как ПрочитатьJSON(Чтение) массив объектов (выборку запроса)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
svetas_l
добрый день!
такой код выдаёт ошибку "по причине:
Недопустимое состояние потока записи JSON"

  
    Чтение         =    Новый ЧтениеJSON;
    Чтение.ОткрытьФайл(Этаформа.ПутьЧтения+".json");
    Чтение.УстановитьСтроку("{}");
    Джисон = ПрочитатьJSON(Чтение);
    Чтение.Закрыть();

в чем ошибка?
файл
[
{
"Ссылка": "ТОВ \"ДИРЕКТОРІЯ ЗАТИШКУ\"",
"Код": "000000006",
"Наименование": "ТОВ \"ДИРЕКТОРІЯ ЗАТИШКУ\"",
"Префикс": "ДЗ",
"ИНН": "",
"НомерСвидетельства": "",
"КодПоЕДРПОУ": "40769228",
"ФизическоеЛицо": "",
"НаименованиеПолное": "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ \"ДИРЕКТОРІЯ ЗАТИШКУ\"",
"СвидетельствоСерияНомер": "",
"СвидетельствоДатаВыдачи": "01.01.0001 0:00:00",
"БанковскийСчетПоУмолчанию": "UA653287040000026009054334936 ТОВ \"ДИРЕКТОРІЯ ЗАТИШКУ\"",
"ЮрФизЛицо": "Юр. лицо",
"ТекущийРуководитель": "БЕЗРАДНА СВІТЛАНА ВІКТОРІВНА",
"ТекущаяДолжностьРуководителя": "Директор",
"ТекущийГлавныйБухгалтер": "",
"ТекущийКассир": "",
"ТекущийПаспортист": "",
"ТипОрганизации": "ТОВ",
"УчетнаяЗаписьЭлектроннойПочты": "",
"НазваниеДляСвернутыхУслуг": "",
"ИнформацияПредупреждениеНовойКвитанции": ""
},
{
"Ссылка": "ОК \" ЖБК Морський 1\"",
"Код": "000000001",
"Наименование": "ОК \" ЖБК Морський 1\"",
"Префикс": "МК",
"ИНН": "",
"НомерСвидетельства": "",
"КодПоЕДРПОУ": "39789906",
"ФизическоеЛицо": "",
"НаименованиеПолное": "   Обслуговуючий  Кооператив   \" ЖБК Морський 1\"",
"СвидетельствоСерияНомер": "",
"СвидетельствоДатаВыдачи": "01.01.0001 0:00:00",
"БанковскийСчетПоУмолчанию": "UA583281680000000026003180694",
"ЮрФизЛицо": "Юр. лицо",
"ТекущийРуководитель": "Хапонен Валерий Сергеевич",
"ТекущаяДолжностьРуководителя": "",
"ТекущийГлавныйБухгалтер": "",
"ТекущийКассир": "",
"ТекущийПаспортист": "",
"ТипОрганизации": "Кооператив",
"УчетнаяЗаписьЭлектроннойПочты": "Морской",
"НазваниеДляСвернутыхУслуг": "",
"ИнформацияПредупреждениеНовойКвитанции": ""
},


запись делаю
  ЗаписатьJSON(ЗаписьJSON, Массив_записи);

где Массив_записи
Запрос = Новый Запрос;
    Запрос.Текст =
                "ВЫБРАТЬ *
                 |ИЗ
                | Справочник.Организации КАК Организации
                |";
          Выборка = Запрос.Выполнить().Выбрать();
         Массив_записи =Новый массив;
                                  
     Пока Выборка.Следующий() Цикл

        ОписаниеОбъекта = Новый Структура("Ссылка, Код, Наименование, Префикс,ИНН,НомерСвидетельства,КодПоЕДРПОУ,
ФизическоеЛицо,НаименованиеПолное,СвидетельствоСерияНомер,СвидетельствоДатаВыдачи,
БанковскийСчетПоУмолчанию,ЮрФизЛицо,ТекущийРуководитель,ТекущаяДолжностьРуководителя,
ТекущийГлавныйБухгалтер,ТекущийКассир,ТекущийПаспортист,ТипОрганизации,
УчетнаяЗаписьЭлектроннойПочты,НазваниеДляСвернутыхУслуг,ИнформацияПредупреждениеНовойКвитанции");
        ОписаниеОбъекта.Ссылка = Строка(Выборка.Ссылка);
        ОписаниеОбъекта.Код=Строка(Выборка.Код);
        ОписаниеОбъекта.Наименование=Строка(Выборка.Наименование);
        ОписаниеОбъекта.Префикс=Строка(Выборка.Префикс);
        ОписаниеОбъекта.ИНН=Строка(Выборка.ИНН);
        ОписаниеОбъекта.НомерСвидетельства=Строка(Выборка.НомерСвидетельства);
        ОписаниеОбъекта.КодПоЕДРПОУ=Строка(Выборка.КодПоЕДРПОУ);
        ОписаниеОбъекта.ФизическоеЛицо=Строка(Выборка.ФизическоеЛицо);
        ОписаниеОбъекта.НаименованиеПолное=Строка(Выборка.НаименованиеПолное);
        ОписаниеОбъекта.СвидетельствоСерияНомер=Строка(Выборка.СвидетельствоСерияНомер);
        ОписаниеОбъекта.СвидетельствоДатаВыдачи=Строка(Выборка.СвидетельствоДатаВыдачи);
        ОписаниеОбъекта.БанковскийСчетПоУмолчанию=Строка(Выборка.БанковскийСчетПоУмолчанию);
        ОписаниеОбъекта.ЮрФизЛицо=Строка(Выборка.ЮрФизЛицо);
        ОписаниеОбъекта.ТекущийРуководитель=Строка(Выборка.ТекущийРуководитель);
        ОписаниеОбъекта.ТекущаяДолжностьРуководителя=Строка(Выборка.ТекущаяДолжностьРуководителя);
        ОписаниеОбъекта.ТекущийГлавныйБухгалтер=Строка(Выборка.ТекущийГлавныйБухгалтер);
        ОписаниеОбъекта.ТекущийКассир=Строка(Выборка.ТекущийКассир);
        ОписаниеОбъекта.ТекущийПаспортист=Строка(Выборка.ТекущийПаспортист);
        ОписаниеОбъекта.ТипОрганизации=Строка(Выборка.ТипОрганизации);
        ОписаниеОбъекта.УчетнаяЗаписьЭлектроннойПочты=Строка(Выборка.УчетнаяЗаписьЭлектроннойПочты);
        ОписаниеОбъекта.НазваниеДляСвернутыхУслуг=Строка(Выборка.НазваниеДляСвернутыхУслуг);
        ОписаниеОбъекта.ИнформацияПредупреждениеНовойКвитанции=Строка(Выборка.ИнформацияПредупреждениеНовойКвитанции);
        Массив_записи.Добавить(ОписаниеОбъекта);
      
  КонецЦикла;
volodya1122
svetas_l @ Сегодня, 9:36 необходимо зарегистрироваться для просмотра ссылки ,

Может это поможет. Там я какраз делал чтение данных JSON
необходимо зарегистрироваться для просмотра ссылки
svetas_l
у вас тоже идёт
 ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
    Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);


только уже с сайтом
мне бы сначала понять что не так и даёт ошибку в 3 строчках ,
а затем уже буду разбираться с сайтом.
В любом случае спасибо .

mut
Если объект Чтение уже открыл файл, зачем вызывать УстановитьСтроку?

Если хотите через УстановитьСтроку, откройте файл объектом с типом ТекстовыйДокумент, получите строку и передайте в Чтение. А если уже сделали ОткрытьФайл, то просто вызывайте ПрочитатьJSON.
volodya1122
Думаю проблема в этом
Цитата
Чтение.УстановитьСтроку("{}");


Цитата
УстановитьСтроку (SetString)
Синтаксис:

УстановитьСтроку(<СтрокаJSON>)
Параметры:

<СтрокаJSON> (обязательный)

Тип: Строка.
Строка, содержащая текст в формате JSON.


а у Вас в качестве строки пустой массив. А туда нужно засунуть весть текст из Вашего файла
svetas_l
убрала установить строку - пишет недопустимое состояние потока
      
    Чтение         =    Новый ЧтениеJSON;
    Чтение.ОткрытьФайл(Этаформа.ПутьЧтения+".json");

  //  Чтение.УстановитьСтроку("{}");
    Джисон = ПрочитатьJSON(Чтение);
    
    Чтение.Закрыть();


в отладчике
volodya1122
svetas_l @ Сегодня, 15:09 необходимо зарегистрироваться для просмотра ссылки ,

а точно файл такой есть?
Проверте
    ВыбФайл = Новый Файл(Этаформа.ПутьЧтения+".json");
    Если НЕ ВыбФайл.Существует() Тогда
        Сообщить("Файл не существует!");
    КонецЕсли;


Ну или в файле есть какие-то недопустиміе символі
mut
svetas_l @ Сегодня, 15:09 необходимо зарегистрироваться для просмотра ссылки ,
Ну пробуйте открыть текст как текстовый файл (ТекстовыйДокумент) и из него передать строку в Чтение. У меня нет опыта с пирсингом json через ОткрытьФайл smile.gif
svetas_l
mut @ 18.09.20, 17:52 необходимо зарегистрироваться для просмотра ссылки ,
файл существует
sava1
попробуйте убрать дату из файла
andr_andrey
Зачем возиться с файлами, если ответ сервера можно преобразовать в поток?
Например,
    ОтветСервера = Соединение.Получить(ХТТПЗапрос);
    ... // здесь можно обрабатывать ОтветСервера, например заголовки
    Поток = ОтветСервера.ПолучитьТелоКакПоток();
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.ОткрытьПоток(Поток);
    ... // здесь можно парсить ЧтениеJSON
    Поток.Закрыть();
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.