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

Хранилище

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

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



> как ПрочитатьJSON(Чтение) массив объектов (выборку запроса)          
svetas_l Подменю пользователя
сообщение 18.09.20, 8:36
Сообщение #1

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

добрый день!
такой код выдаёт ошибку "по причине:
Недопустимое состояние потока записи 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, Массив_записи);

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

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


Сообщение отредактировал Vofka - 19.09.20, 16:02

volodya1122 Подменю пользователя
сообщение 18.09.20, 8:59
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 336
Из: Тернопіль
Спасибо сказали: 133 раз
Рейтинг: 135.7

svetas_l @ Сегодня, 9:36 * ,

Может это поможет. Там я какраз делал чтение данных JSON
https://pro1c.org.ua/topic/post-zapros-do-s...atkovojy-61187/

Сообщение отредактировал volodya1122 - 18.09.20, 9:10

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

svetas_l Подменю пользователя
сообщение 18.09.20, 9:25
Сообщение #3

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

у вас тоже идёт
 ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
    Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);


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


mut Подменю пользователя
сообщение 18.09.20, 9:37
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 199
Из: Новая Каховка
Спасибо сказали: 203 раз
Рейтинг: 237.5

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

Если хотите через УстановитьСтроку, откройте файл объектом с типом ТекстовыйДокумент, получите строку и передайте в Чтение. А если уже сделали ОткрытьФайл, то просто вызывайте ПрочитатьJSON.

volodya1122 Подменю пользователя
сообщение 18.09.20, 9:42
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 336
Из: Тернопіль
Спасибо сказали: 133 раз
Рейтинг: 135.7

Думаю проблема в этом
Цитата
Чтение.УстановитьСтроку("{}");


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

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

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

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


а у Вас в качестве строки пустой массив. А туда нужно засунуть весть текст из Вашего файла

svetas_l Подменю пользователя
сообщение 18.09.20, 14:09
Сообщение #6

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

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

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


в отладчике

volodya1122 Подменю пользователя
сообщение 18.09.20, 15:12
Сообщение #7

Оратор
Иконка группы
Группа: Местный
Сообщений: 336
Из: Тернопіль
Спасибо сказали: 133 раз
Рейтинг: 135.7

svetas_l @ Сегодня, 15:09 * ,

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


Ну или в файле есть какие-то недопустиміе символі

Сообщение отредактировал volodya1122 - 18.09.20, 15:19

mut Подменю пользователя
сообщение 18.09.20, 16:52
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 199
Из: Новая Каховка
Спасибо сказали: 203 раз
Рейтинг: 237.5

svetas_l @ Сегодня, 15:09 * ,
Ну пробуйте открыть текст как текстовый файл (ТекстовыйДокумент) и из него передать строку в Чтение. У меня нет опыта с пирсингом json через ОткрытьФайл smile.gif

svetas_l Подменю пользователя
сообщение 20.09.20, 8:12
Сообщение #9

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

mut @ 18.09.20, 17:52 * ,
файл существует

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

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

попробуйте убрать дату из файла

andr_andrey Подменю пользователя
сообщение 22.09.20, 20:06
Сообщение #11

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Зачем возиться с файлами, если ответ сервера можно преобразовать в поток?
Например,
    ОтветСервера = Соединение.Получить(ХТТПЗапрос);
    ... // здесь можно обрабатывать ОтветСервера, например заголовки
    Поток = ОтветСервера.ПолучитьТелоКакПоток();
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.ОткрытьПоток(Поток);
    ... // здесь можно парсить ЧтениеJSON
    Поток.Закрыть();


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

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


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

 

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