Форум Кладовочки АЛьФ`а

Общие вопросы => 7.7 => Тема начата: SnakePlisskin от 09 сентября 2025, 19:13

Название: Json в 1С 7.7
Отправлено: SnakePlisskin от 09 сентября 2025, 19:13
Господа доброго времени суток!
Давно использую класс КОП_JSON от господина trad.
До этого делал простенькие файлы для обмена, тут понадобилось сделать файл чуть сложнее, что-то не получается. Может кто тоже юзает этот класс, посдкажет.
Структура, примерно такая. Что-то я явно не так делаю, или он не получается или зависает при создании.
{
  "set_code": "001",
  "items": [
    {
      "marketplace": "W",
      "article": 1223423,
      "article_post": "3243243",
      "barcode": 3242354435
    }
   {
      "marketplace": "O",
      "article": 234324324,
      "article_post": "КОД-Н2",
      "barcode": 3243234
    } 
  ]

"set_code": "002",
  "items": [
    {
      "marketplace": "W",
      "article": 1223423,
      "article_post": "3243243",
      "barcode": 3242354435
    }
   {
      "marketplace": "O",
      "article": 234324324,
      "article_post": "КОД-Н2",
      "barcode": 3243234
    } 
  ]
}
Название: Re: Json в 1С 7.7
Отправлено: Злоп от 09 сентября 2025, 19:59
Я взял с инфостарта обработку с набором процедур для формирования стэтхема и получилось.
Pbuid 960486
Название: Re: Json в 1С 7.7
Отправлено: SnakePlisskin от 09 сентября 2025, 20:02
Цитата: Злоп от 09 сентября 2025, 19:59Я взял с инфостарта обработку с набором процедур для формирования стэтхема и получилось.

Я класс от Дмитрия уже юзаю много лет, формирую файлы размером более 100 мегабайт, никаких проблем. Но все файлы были так сказать "простой" структуру, а тут понадобилось с вложениями сдлелать, и что-то не получается.
Название: Re: Json в 1С 7.7
Отправлено: Злоп от 09 сентября 2025, 20:04
Делал выгрузку заказа поставщику с шапкой и ТЧ
Название: Re: Json в 1С 7.7
Отправлено: Злоп от 09 сентября 2025, 20:07
Ну тут по идее же аrray в items указан, вот и смотри в ту сторону.
Наверное.
Фиг его знает как там класс структуры Джейсона определяет и формирует.
Название: Re: Json в 1С 7.7
Отправлено: SnakePlisskin от 09 сентября 2025, 20:29
Цитата: Злоп от 09 сентября 2025, 20:07Ну тут по идее же аrray в items указан, вот и смотри в ту сторону.
Наверное.
Фиг его знает как там класс структуры Джейсона определяет и формирует.

Класс работает со структурой и списком значений. Типа - просто запись это структура, массив - список значений, но что-то ковырялся ковырялся, не получилось пока.
Название: Re: Json в 1С 7.7
Отправлено: Злоп от 09 сентября 2025, 22:15
Цитата: SnakePlisskin от 09 сентября 2025, 20:29Класс работает со структурой и списком значений. Типа - просто запись это структура, массив - список значений, но что-то ковырялся ковырялся, не получилось пока.
Ну, по идее делаешь запись структуры, где значение - список значений.
?
Название: Re: Json в 1С 7.7
Отправлено: alyuev от 09 сентября 2025, 22:23
Не совсем понял - нужно из списка на выходе получить файл JSON? Или наоборот из JSON - получить список?
Название: Re: Json в 1С 7.7
Отправлено: Харлампий Дымба от 09 сентября 2025, 23:11
Если речь про выгрузку в JSON, то по поводу "зависает" и "СписокЗначений" - а точно дело в КОП? Может просто список значений не очищается и пухнет с каждым последующим элементом?
Название: Re: Json в 1С 7.7
Отправлено: SnakePlisskin от 10 сентября 2025, 09:30
Госопда, суть задачи вообще, есть запрос к подчиненному справочнику, номенклатуры, вот его я и пытался уложить в json.
Где "set_code": "001" - тут код родителя, а дальше идут подчиненные элементы со значениями реквизитов.
Название: Re: Json в 1С 7.7
Отправлено: Злоп от 10 сентября 2025, 13:23
Навоз-вопрос.
Я в классах не шуруплю, поэтому по-староверски, по кондвому, процедурами и функциями обычными...
Название: Re: Json в 1С 7.7
Отправлено: leov-001 от 17 сентября 2025, 15:04
Запятых не хватает
Название: Re: Json в 1С 7.7
Отправлено: trad от 17 сентября 2025, 16:34
Запятые можно добавить и этот текст станет похожим на JSON, но он не будет соответствовать стандарту (имена членов структуры - не уникальны) и мой КОП такое не умеет

rfc8259 (https://datatracker.ietf.org/doc/html/rfc8259)

Цитата
4.  Objects

  An object structure is represented as a pair of curly brackets
  surrounding zero or more name/value pairs (or members).  A name is a
  string.  A single colon comes after each name, separating the name
  from the value.  A single comma separates a value from a following
  name.  The names within an object SHOULD be unique.
Название: Re: Json в 1С 7.7
Отправлено: Злоп от 17 сентября 2025, 17:03
То бишь setcode - должны быть массовом..?
Название: Re: Json в 1С 7.7
Отправлено: trad от 18 сентября 2025, 08:44
я бы предположил что должен быть массив структур
Название: Re: Json в 1С 7.7
Отправлено: trad от 18 сентября 2025, 08:46
[
    {
        "set_code": "001",
        "items": [
            {
                "marketplace": "W",
                "article": 1223423,
                "article_post": "3243243",
                "barcode": 3242354435
            },
            {
                "marketplace": "O",
                "article": 234324324,
                "article_post": "КОД-Н2",
                "barcode": 3243234
            }
        ]
    },
    {
        "set_code": "002",
        "items": [
            {
                "marketplace": "W",
                "article": 1223423,
                "article_post": "3243243",
                "barcode": 3242354435
            },
            {
                "marketplace": "O",
                "article": 234324324,
                "article_post": "КОД-Н2",
                "barcode": 3243234
            }
        ]
    }
]
Название: Re: Json в 1С 7.7
Отправлено: SnakePlisskin от 18 сентября 2025, 11:58
Цитата: trad от 18 сентября 2025, 08:46[
    {
        "set_code": "001",
        "items": [
            {
                "marketplace": "W",
                "article": 1223423,
                "article_post": "3243243",
                "barcode": 3242354435
            },
            {
                "marketplace": "O",
                "article": 234324324,
                "article_post": "КОД-Н2",
                "barcode": 3243234
            }
        ]
    },
    {
        "set_code": "002",
        "items": [
            {
                "marketplace": "W",
                "article": 1223423,
                "article_post": "3243243",
                "barcode": 3242354435
            },
            {
                "marketplace": "O",
                "article": 234324324,
                "article_post": "КОД-Н2",
                "barcode": 3243234
            }
        ]
    }
]


Да, именно то что хотел, но почему такой код тогда не срабатывает ?

   СЗ = СоздатьОбъект("СписокЗначений");       
    тзНоменклатур.ВыбратьСтроки();
    Пока тзНоменклатур.ПолучитьСтроку() = 1 Цикл
        текЗначКода = СокрП(тзНоменклатур.Код_Номенеклатуры);
        Данные = СоздатьОбъект("Структура");
        Данные.Вставить("Code",текЗначКода);
        Данные.Вставить("Items",СоздатьОбъект("СписокЗначений"));
        сзКлюч = СоздатьОбъект("СписокЗначений");
        сзКлюч.ДобавитьЗначение(текЗначКода);
        итзВыборка.Подмножество(сзКлюч,1,"ИндексПоле");
        итзВыборка.ВыбратьСтроки("ИндексПоле");
        Пока итзВыборка.ПолучитьСтроку("ИндексПоле") = 1 Цикл           
            Элемент = СоздатьОбъект("Структура");
            Элемент.Вставить("Маркетплейс",Строка(итзВыборка.Маркетплейс));
            Элемент.Вставить("Артикул",итзВыборка.Артикул);
            Элемент.Вставить("АртикулПОставщика",итзВыборка.АртикулПОставщика);
            Элемент.Вставить("Штрихкод",итзВыборка.Штрихкод);
            Данные.items.ДобавитьЗначение(Элемент);
        КонецЦикла;
        СЗ.ДобавитьЗначение(Данные);
    КонецЦикла;

Обошелся, пока "линейным файлом" но хотелось бы понять где ошибка ?
Название: Re: Json в 1С 7.7
Отправлено: trad от 18 сентября 2025, 15:59
Цитата: SnakePlisskin от 18 сентября 2025, 11:58но почему такой код тогда не срабатывает
подробнее про "не срабатывает"