Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
09 ноя 2025, 18:28

gtппырава

Автор sali, 21 окт 2025, 08:17

0 Пользователей и 1 гость просматривают эту тему.

sali

В базу передавались не все склады , решил сделать 2 массива, первый для добавления всех , второй для удаления дублей. на записи в JSON выдает ошибку "Передано значение недопустимого типа". В чем моя ошибка?
МассивСкладов = Новый Массив;

Пока Выборка.Следующий() Цикл

Данные_goods_strukt = Новый Структура;
Данные_goods_strukt.Вставить("name", Выборка.Наименование);
Данные_goods_strukt.Вставить("goodID", Строка(Выборка.Ссылка.УникальныйИдентификатор()));
Данные_goods_strukt.Вставить("stockID", Строка(Выборка.Склад.УникальныйИдентификатор()));
Данные_goods_strukt.Вставить("quantity", Выборка.Остаток);

Данные_goods.Добавить(Данные_goods_strukt);

МассивСкладов.Добавить(Выборка.Склад);
КонецЦикла; 

УникальныеЗначенияСкладов = Новый Массив;

Для Каждого Склад Из МассивСкладов Цикл
Если УникальныеЗначенияСкладов.Найти(Склад) = Неопределено Тогда
УникальныеЗначенияСкладов.Добавить(Склад);
Конецесли;
КонецЦикла;

Для Каждого УникальныйСклад Из УникальныеЗначенияСкладов Цикл
Данные_stocks_strukt = Новый Структура;
Данные_stocks_strukt.Вставить("name", УникальныйСклад);
Данные_stocks_strukt.Вставить("stockID",УникальныйСклад.УникальныйИдентификатор());
Данные_stocks.Добавить(Данные_stocks_strukt);
КонецЦикла;

Максим75

sali, где-то передается ссылочный тип, у джисона строгое ограничение на типы данных. Точкой станьте и посмотрите, что передаете.
Есть подозрение на вот это
Данные_stocks_strukt.Вставить("name", УникальныйСклад); посмотрите что там.

sali

Максим75,
Цитата: Максим75 от 21 окт 2025, 08:35Данные_stocks_strukt.Вставить("name", УникальныйСклад); посмотрите что там.
это скорее и да. присылается полностью информация о складе , ссылка
получается надо УникальныйСклад.Наименование

Максим75

sali, получается, что да

sali

Максим75, нет. все равно не то значение передается
Выборка = РезультатЗапроса.Выбрать();

МассивСкладов = Новый Массив;

Пока Выборка.Следующий() Цикл

Данные_goods_strukt = Новый Структура;
Данные_goods_strukt.Вставить("name", Выборка.Наименование);
Данные_goods_strukt.Вставить("goodID", Строка(Выборка.Ссылка.УникальныйИдентификатор()));
Данные_goods_strukt.Вставить("stockID", Строка(Выборка.Склад.УникальныйИдентификатор()));
Данные_goods_strukt.Вставить("quantity", Выборка.Остаток);

Данные_goods.Добавить(Данные_goods_strukt);

МассивСкладов.Добавить(Выборка.Склад);
КонецЦикла; 

УникальныеЗначенияСкладов = Новый Массив;

Для Каждого Склад Из МассивСкладов Цикл
Если УникальныеЗначенияСкладов.Найти(Склад) = Неопределено Тогда
УникальныеЗначенияСкладов.Добавить(Склад);
Конецесли;
КонецЦикла;

Для Каждого УникальныйСклад Из УникальныеЗначенияСкладов Цикл
Данные_stocks_strukt = Новый Структура;
Данные_stocks_strukt.Вставить("name", УникальныйСклад.Наименование);
Данные_stocks_strukt.Вставить("stockID", УникальныйСклад.УникальныйИдентификатор());     
Данные_stocks.Добавить(Данные_stocks_strukt);
КонецЦикла;

Данные_general = Новый Структура;
Данные_general.Вставить("method", "goods-quantity");
Данные_general.Вставить("goods", Данные_goods);
Данные_general.Вставить("stocks", Данные_stocks);

Структура_auth.Вставить("general", Данные_general);

ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина); 
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON, Структура_auth);
СтрокаJS = ЗаписьJSON.Закрыть(); // Данные Остатков
Сообщить("Выгрузка Остатков Номенклатуры");
ОтправитьВЭДО(СтрокаJS);
Сообщить("Выгрузка Остатков Номенклатуры Завершена");

sali


fruitella

Все что в структурах в строку приводи.
По записи так попробуй.


    ИмяФайла = "ПутьКФайлу"; //Или генерируешь новый временный файл на сервере или путь к сетевой папке, потом чистишь их
    ТекущийФайл = Новый Файл(ИмяФайла);

Если ТекущийФайл.Существует() Тогда
УдалитьФайлы(ИмяФайла);
КонецЕсли;


ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл(ИмяФайла);

ЗаписатьJSON(ЗаписьJSON, Структура_auth);
ЗаписьJSON.Закрыть();
 
    Сообщить("Выгрузка Остатков Номенклатуры");

    //Читаешь записанный файл json по указанному пути и дальше  делаешь отправку.
    ОтправитьВЭДО(ИмяФайла);
    Сообщить("Выгрузка Остатков Номенклатуры Завершена");


Теги: вав 
Рейтинг@Mail.ru

Поиск