Добрый день! Необходимо записать массив JSON формата { [<Number>,<Number>,<Number>,<Number>] }.
Делаю так:

```1c
    Массив = Новый Массив;
    Массив.Вставить("114973");
    Массив.Вставить("114974");
    Массив.Вставить("114975");
    Массив.Вставить("114976");

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

Получаю:[
null,
null,
null,
....

Подскажите, что делаю не так. Заранее спасибо!
---
1С не понимает множество основных контейнеров. Основной контейнер должен быть только один. А тут массив. Оберните массив в структуру.
---
Нужно
```1c
    Массив.Добавить()
```
---
Мне именно массив надо возвращать.
Есть еще такой вариант:

```1c
    [{"договор1": {"1": 1}},{"договор2": {"2": 2}},{"договор3": {"3": 3}}]
```

Соответственно такой код:

```1c
    ИтоговыеДанные = Новый Массив;
    Для каждого Договор из JSON Цикл
    Детали = Новый Структура;
    Детали.Вставить("policy_no",Номер);
    Детали.Вставить("insuranced_at",Формат(Дата, "ДФ=dd.MM.yyyy"));
    ДанныеДоговоров = Новый Соответствие;
    ДанныеДоговоров.Вставить(Договор,Детали);
    ИтоговыеДанные.Добавить(ДанныеДоговоров);
    КонецЦикла;

    ЗаписатьJSON(ЗаписьJSON, ИтоговыеДанные);
    СтрокаЗапроса = ЗаписьJSON.Закрыть();
```
---
Нужно
```1c
    Массив.Добавить()
```
---
Я и не обратил внимания) Ништяк, в СП индекс должен быть числовым, а тут строку хавает и не давится.
---
Спасибо, теперь прочесть не могу(

```1c
    СтрокаЗапроса = ЗаписьJSON.Закрыть();
    ЧтениеJSON=Новый ЧтениеJSON;

    ЧтениеJSON.УстановитьСтроку(СтрокаЗапроса);
    JSON=ПрочитатьJSON(ЧтениеJSON);
```

Ошибка при вызове метода контекста (ПрочитатьJSON)
  JSON=ПрочитатьJSON(ЧтениеJSON);
по причине:
Недопустимое состояние потока записи JSON
---
1С не понимает множество основных контейнеров. Основной контейнер должен быть только один. А тут массив. Оберните массив в структуру.
---
Спасибо!
---
Он в структуру пытается читать. Надо структуру с массивом тогда записывать.
---
Да, спасибо, уже допер)
---
Подскажите, как убрать запятую, не понимаю, где она рисуется...

```1c
    ЗаписьJSON.ЗаписатьНачалоМассива();

    Для каждого Договор из JSON Цикл
    ЗаписьJSON.ЗаписатьИмяСвойства(Договор);
    ЗаписьJSON.ЗаписатьНачалоОбъекта();
    ЗаписьJSON.ЗаписатьИмяСвойства("policy_no");
    ЗаписьJSON.ЗаписатьЗначение(Номер);
    ЗаписьJSON.ЗаписатьИмяСвойства("insuranced_at");
    ЗаписьJSON.ЗаписатьЗначение(Формат(Дата, "ДФ=dd.MM.yyyy"));
    ЗаписьJSON.ЗаписатьКонецОбъекта();
    КонецЦикла;

    ЗаписьJSON.ЗаписатьКонецМассива();
    СтрокаЗапроса = ЗаписьJSON.Закрыть();
```
---
э... какую запятую? Разделитель элементов структуры? Так это стандарт формата json. Не надо ее убирать.
---
а почему после первого имени свойства ("114973") она не ставится?
---
тот кто принимает джсон попросил убрать эти запятые, а я не понимаю, почему они формируются...Это как бы называние объекта, по логике там не должно быть запятой
---
а, эта запятая. не сразу увидел. Да это лишняя.
Где-то что-то не так открываете или закрываете.
Первое ЗаписьJSON.ЗаписатьИмяСвойства(Договор); Там нет открытия и закрытия объекта.

И все это можно сделать через ЗаписьJSON (загрузкой подготовленной коллекции). Зачем формировать вручную?
---
Свойство договор: {открываю объект - свойство policy_no, свойство insuranced_at - закрываю объект}
"Первое ЗаписьJSON.ЗаписатьИмяСвойства(Договор); Там нет открытия и закрытия объекта." - а как надо, подскажите ?
---
У элемента массива нет имен свойств. Он содержит только значения. Имена свойств есть у Структуры. Соответственно сначала необходимо создать ее и закрыть. Как сделано на следующей строке кода для вложенного объекта.
---
Вы про ЗаписатьИмяСвойства ЗаписатьЗначениеСвойства ? Но мне необходимо, чтобы формат был такой
[ договор1:{ }, договор2:{ }, договор3:{ } ]
---
Но мне необходимо, чтобы формат был такой
[ договор1:{ }, договор2:{ }, договор3:{ } ]
Глупости. Это прямое нарушение формата json. Это все что угодно, но не json. Да попробуйте на онлайн валидаторах такое проверить.
---
(16)
Но, если не использовать массив, то вот такой формат:

```1c
    {"договор1": {"1": 1},"договор2": {"2": 2},"договор3": {"3": 3}}
```

будет валидным.
И делается просто (в первом приближении на коленке):

```1c
    ДанныеДоговоров = Новый Соответствие;
    Для каждого Договор из JSON Цикл
    Детали = Новый Структура;
    Детали.Вставить("policy_no",Номер);
    Детали.Вставить("insuranced_at",Формат(Дата, "ДФ=dd.MM.yyyy"));
    ДанныеДоговоров.Вставить(Договор,Детали);
    КонецЦикла;

    ЗаписатьJSON(ЗаписьJSON, ДанныеДоговоров);
    СтрокаЗапроса = ЗаписьJSON.Закрыть();
```
---
Мне именно массив надо возвращать. Вы правы, что неверный формат джсон, спасибо большое!
---
Мне именно массив надо возвращать.
Есть еще такой вариант:

```1c
    [{"договор1": {"1": 1}},{"договор2": {"2": 2}},{"договор3": {"3": 3}}]
```

Соответственно такой код:

```1c
    ИтоговыеДанные = Новый Массив;
    Для каждого Договор из JSON Цикл
    Детали = Новый Структура;
    Детали.Вставить("policy_no",Номер);
    Детали.Вставить("insuranced_at",Формат(Дата, "ДФ=dd.MM.yyyy"));
    ДанныеДоговоров = Новый Соответствие;
    ДанныеДоговоров.Вставить(Договор,Детали);
    ИтоговыеДанные.Добавить(ДанныеДоговоров);
    КонецЦикла;

    ЗаписатьJSON(ЗаписьJSON, ИтоговыеДанные);
    СтрокаЗапроса = ЗаписьJSON.Закрыть();
```
---
Это то, что нужно, спасибо!!!
---
Вот приличный человек в мое бы время просто бы создал текстовую переменную безо всех этих джисонов, сгенерировав текст кодом с конкатенацией строк. Но нет, народ мучается и кушает кактус, теряя десятки часов )))
Не, я не против джисона - тем более тут задача свелась к массиву соответствий и структур и там все примитивно. Но если вдруг затыки, то вспоминайте про простой текст. Тот же XBRL достаточно непросто писать с помощью объектов 1С, а с помощью записи текста - фигня вопрос.