Версия для печати темы (https://pro1c.org.ua/index.php?s=29e944326f67259df366a6a5d3755448&showtopic=61625)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Запись элементов справочника без СериализаторXDTO в формат json под старую платформу 8.3.12

Автор: svetas_l 17.09.20, 16:25

есть код работает
но нужно его переделать под старую платформу 8.3.12 т.е. без "СериализаторXDTO."
помогите пожалуйста

Код

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

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

   КонецПроцедуры

Автор: kihor 17.09.20, 16:50

svetas_l @ Сегодня, 17:25 * ,

Попробуйте для формирования JSON такой фрагмент кода.

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();  
ЗаписатьJSON(ЗаписьJSON, Массив_записи);            
Результат = ЗаписьJSON.Закрыть();


В конце в переменной Результат будет текст JSON.

Автор: svetas_l 18.09.20, 7:58

kihor, спасибо

        ЗаписьJSON.ОткрытьФайл(Этаформа.ПутьЗаписи+имя_файла+".json");       // , , , ПараметрыJSON                        
    //ЗаписьJSON.УстановитьСтроку();  
        ЗаписатьJSON(ЗаписьJSON, Массив_записи);            
    ЗаписьJSON.Закрыть();

спасибо, без строки "УстановитьСтроку(); " вроде работает, а как прочитать этим способом строку, когда массив объектов?

Автор: kihor 18.09.20, 17:08

svetas_l @ Сегодня, 8:58 * ,

Прочитать JSON можно при помощи такого кода:

    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ЗдесьСтрокаJSON);
    ЭлементыСписка = ПрочитатьJSON(ЧтениеJSON, Истина);
    ЧтениеJSON.Закрыть();

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua