Всем привет. Сложность вопроса в том что у меня массив из JSON документов. То есть с одним документом все хорошо читалось (правда код изменил не много). Сейчас поставили задачу несколько документов записать в файл и здесь появилась ошибка

```1c
    &НаСервере
    Процедура ЗагрузитьНаСервере(ДанныеJSON)
    // Создаю справочник
    СпрШтрихкодыУпаковокТоваров = Справочники.ШтрихкодыУпаковокТоваров;
    ДатУп = Неопределено;
    СсылкаНаименование = Неопределено;
    НомерПалета = Неопределено;
    КолВо = 0;
    ЕдИзм =";
    ШтрихКодGTIN =";

    Организация = Неопределено;
    ЕдИз_ссылка = Неопределено;
    ВидНомСсылка = Неопределено;
    НомГрупСсылка = Неопределено;
    Наимен = Неопределено;
    ШтрихКодПоиск = ";
    УровеньУпаковкиQR_кода = Неопределено;

    Для Каждого ДокументJSON Из ДанныеJSON Цикл
    Для Каждого КлючИЗначение Из ДокументJSON Цикл
    Сообщить(КлючИЗначение.Ключ + ": " + КлючИЗначение.Значение);

    Если КлючИЗначение.Ключ = "ДатаДокумента" Тогда
    ДатУп= Дата(КлючИЗначение.Значение);

    ИначеЕсли КлючИЗначение.Ключ = "ИНН_Организации" Тогда
    Организация=Справочники.Организации.НайтиПоРеквизиту("ИНН",КлючИЗначение.Значение);

    ИначеЕсли КлючИЗначение.Ключ = "НомерДокумента" Тогда

    ИначеЕсли КлючИЗначение.Ключ = "НомерПалета" Тогда
    СтруктураНомерПалета=РазборКодаМаркировкиИССлужебный.РазобратьКодМаркировки(КлючИЗначение.Значение, Неопределено, Неопределено,Неопределено, Неопределено);
    НомерПалета=СтруктураНомерПалета.НормализованныйКодМаркировки;;

    ИначеЕсли КлючИЗначение.Ключ = "НоменклатураЕдиницаИзмерения" Тогда
    ЕдИзм=КлючИЗначение.Значение;

    ИначеЕсли КлючИЗначение.Ключ = "ПродукцияGTIN" Тогда
    ШтрихКодGTIN=КлючИЗначение.Значение;

    ИначеЕсли КлючИЗначение.Ключ = "Наименование" Тогда
    // Находим номенклатуру по наименованию
    ШтрихКодБезПробелов = Формат(ШтрихКодGTIN,"ЧГ=");
    ШтрихКодПоиск=ШтрихКодБезПробелов;
    НоменкПоиск=ПолучитьНоменклатуруПоШтрихКоду(ШтрихКодБезПробелов);
    Если НоменкПоиск.Пустая() Тогда
    Сообщить("Номенклатура не найдена: " + КлючИЗначение.Значение);
    Возврат;

    Иначе

    СсылкаНаименование= НоменкПоиск; // Записываем ссылку на номенклатуру

    // Для документов записываю переменные

    ЕдИз_ссылка = СсылкаНаименование.ЕдиницаИзмерения;
    ВидНомСсылка = СсылкаНаименование.ВидНоменклатуры;
    НомГрупСсылка = СсылкаНаименование.НоменклатурнаяГруппа;
    Наимен = СсылкаНаименование.Наименование;

    КонецЕсли;

    ИначеЕсли КлючИЗначение.Ключ = "Количество" Тогда
    КолВо= Окр(Число(КлючИЗначение.Значение),3);

    ИначеЕсли КлючИЗначение.Ключ = "НоменклатураЕдиницаИзмерения" Тогда
    ЕдИзм=КлючИЗначение.Значение;

    ИначеЕсли КлючИЗначение.Ключ = "ПродукцияGTIN" Тогда

    ИначеЕсли КлючИЗначение.Ключ = "НоменклатураТНВЭД10" Тогда

    ИначеЕсли КлючИЗначение.Ключ = "УровеньУпаковки" Тогда
    Если КлючИЗначение.Значение="Упаковка" Тогда
    ДляЗаписиТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар;
    УровеньУпаковкиQR_кода = Перечисления.ТипыУпаковок.МаркированныйТовар;
    Иначе
    ДляЗаписиТипУпаковки = Перечисления.ТипыУпаковок.МонотоварнаяУпаковка; // МаркированныйТовар
    УровеньУпаковкиQR_кода = Перечисления.ТипыУпаковок.МонотоварнаяУпаковка;
    КонецЕсли;

    ИначеЕсли КлючИЗначение.Ключ = "Маркировка" Тогда
    Сообщить("Загружен массив с маркировкой QR кодов, элементов: " + КлючИЗначение.Значение.Количество());

    МассивQR_кодов = Новый Массив;
    ДляЗаписиТипШтрихКод = Неопределено;
    ДляЗаписиТипУпаковки = Неопределено;

    НовыйШтрихкодыУпаковокТоваров = СпрШтрихкодыУпаковокТоваров.СоздатьЭлемент();
    НовыйШтрихкодыУпаковокТоваров.ДатаУпаковки = ДатУп;
    //НовыйШтрихкодыУпаковокТоваров.ЗначениеШтрихкода = ШтрихКодПоиск; НомерПалета
    НовыйШтрихкодыУпаковокТоваров.ЗначениеШтрихкода = НомерПалета;
    НовыйШтрихкодыУпаковокТоваров.Номенклатура = СсылкаНаименование; // Записываем ссылку на номенклатуру

    //НовыйШтрихкодыУпаковокТоваров.Количество = 2.000; // Потому что в наборе всегда 2-ве позиции
    Индекс=0;
    Пока КлючИЗначение.Значение.Количество()>Индекс Цикл
    // Из массива QR кодов вытаскиваю данные и записываю в справочник
    QR_код=КлючИЗначение.Значение[Индекс];
    Сообщить(" QR код: " +QR_код);
    СтруктураШтрихКода=РазборКодаМаркировкиИССлужебный.РазобратьКодМаркировки(QR_код, Неопределено, Неопределено,Неопределено, Неопределено);

    //Заполняю тип штрих кода
    ДляЗаписиТипШтрихКод = СтруктураШтрихКода.ТипШтрихкода;
    //Заполняю ТипУпаковки
    //Если Число(КолВо)>1 Тогда
    // ДляЗаписиТипУпаковки = Перечисления.ТипыУпаковок.МонотоварнаяУпаковка; // МаркированныйТовар
    //Иначе
    // ДляЗаписиТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар;
    //КонецЕсли;

    QR_кодСпецСимволы = СтруктураШтрихКода.НормализованныйКодМаркировки;

    // Создаю справочники что бы туда записать QR коды
    НовыйQR_КодСпр = СпрШтрихкодыУпаковокТоваров.СоздатьЭлемент();
    НовыйQR_КодСпр.ДатаУпаковки = ДатУп;
    НовыйQR_КодСпр.ЗначениеШтрихкода = QR_кодСпецСимволы;
    НовыйQR_КодСпр.Номенклатура = СсылкаНаименование; // Записываем ссылку на номенклатуру = Перечисления.ТипыУпаковок.МаркированныйТовар;
    НовыйQR_КодСпр.ТипШтрихкода = ДляЗаписиТипШтрихКод;
    НовыйQR_КодСпр.ТипУпаковки = УровеньУпаковкиQR_кода;
    //НовыйQR_КодСпр.ТипУпаковки = ДляЗаписиТипУпаковки;
    НовыйQR_КодСпр.Записать();

    МассивQR_кодов.Добавить(QR_кодСпецСимволы);
    Индекс=Индекс+1;
    КонецЦикла;

    НовыйШтрихкодыУпаковокТоваров.ТипШтрихкода = ДляЗаписиТипШтрихКод;
    НовыйШтрихкодыУпаковокТоваров.ТипУпаковки = ДляЗаписиТипУпаковки;

    //// ТЧ Заполняю
    ИндексМасива=0;
    Пока ИндексМасива<МассивQR_кодов.Количество() Цикл
    QR_кодМасива=МассивQR_кодов[ИндексМасива];

    СсылкаСпрШтрихкодыУпаковокТоваров=Справочники.ШтрихкодыУпаковокТоваров.НайтиПоРеквизиту("ЗначениеШтрихкода",QR_кодМасива);

    НоваяСтрокаТЧ = НовыйШтрихкодыУпаковокТоваров.ВложенныеШтрихкоды.Добавить();
    НоваяСтрокаТЧ.Штрихкод = СсылкаСпрШтрихкодыУпаковокТоваров;
    ИндексМасива=ИндексМасива+1;
    КонецЦикла;

    КонецЕсли;
    КонецЦикла
    КонецЦикла;

    КонецПроцедуры
```
---
```1c
    Для Каждого ДокументJSON Из ДанныеJSON Цикл
    СтруктураДокумента = СтрокуJSONВСтруктуру(ДокументJSON )
    Для Каждого КлючИЗначение Из СтруктураДокумента Цикл ....

    Функция СтрокуJSONВСтруктуру(Значение)

    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Значение);

    Результат = ПрочитатьJSON(ЧтениеJSON);

    ЧтениеJSON.Закрыть();

    Возврат Результат;

    КонецФункции
```
---
Осталось определиться, в чем выражается ошибка...
---
А да вот ошибка

```1c
    Итератор для значения не определен
    {ВнешняяОбработка.ЗагрузкаБД.Форма.Форма.Форма(53)}: Для Каждого КлючИЗначение Из ДокументJSON Цикл
    {ВнешняяОбработка.ЗагрузкаБД.Форма.Форма.Форма(28)}: ЗагрузитьНаСервере(ДанныеJSON);
```
---
Преобразовать строку ясона в дерево значений или структуру не предлагать?
---
```1c
    Для Каждого ДокументJSON Из ДанныеJSON Цикл
    СтруктураДокумента = СтрокуJSONВСтруктуру(ДокументJSON )
    Для Каждого КлючИЗначение Из СтруктураДокумента Цикл ....

    Функция СтрокуJSONВСтруктуру(Значение)

    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Значение);

    Результат = ПрочитатьJSON(ЧтениеJSON);

    ЧтениеJSON.Закрыть();

    Возврат Результат;

    КонецФункции
```
---
СтруктураДокумента = СтрокуJSONВСтруктуру(ДокументJSON )

Спасибо
---
```1c
    Джисон = Новый ЧтениеДжисон;
    Джисон.УстановитьСтроку(ДанныеДжисон);
    Данные = ПрочитатьДжисон(ЧтениеДжисон);
    Для Каждого Документ ИЗ Данные Цикл
    Для Каждого ПолеДокумента ИЗ Документ Цикл
    //...
```
Если есть моск, исправить код самостоятельно, если нет - попросить дипсик.
---
Или проще, что в новых версиях платформы появилось )

```1c
    СтруктураДокумента = ПрочитатьЗначениеJSON(ДокументJSON );
```