#Область ПолныйОтчет Функция ПолныйОтчет(Покупка, НачалоПериода, КонецПериода, Мегаордера = Неопределено, Статус = Неопределено) Экспорт Ответ = Импорт_ПолныйОтчет(Покупка,НачалоПериода,КонецПериода); Тело = Ответ.ПолучитьТелоКакСтроку(); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(Тело); стрРезультат = ЗаполнитьСтруктуруИзОтветаJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); тз = ПолныйОтчетВТЗ(стрРезультат.data); Возврат тз КонецФункции Функция Импорт_ПолныйОтчет(Покупка, НачалоПериода, КонецПериода, Мегаордера = Неопределено, Статус = Неопределено) //ДанныеАвторизации = ПолучитьДанныеАвторизации(Покупка.Организация); ДатаНачала = Формат(НачалоПериода, "ДФ=yyyy-MM-dd"); ДатаОкончания = Формат(КонецПериода, "ДФ=yyyy-MM-dd"); Параметры = "purchase="+ Формат(Покупка.Код, "ЧГ=0") +"&dateFrom="+ ДатаНачала +"&dateTo="+ДатаОкончания; //Сервер = "www.100sp.ru"; ИмяСкрипта = "ПолныйОтчет"; Ответ = ПолучитьГетЗапросом(Параметры, ИмяСкрипта, ,Покупка.Организация); Если Ответ <> Неопределено Тогда // Тело = Ответ.ПолучитьТелоКакСтроку(); // ЧтениеJSON = Новый ЧтениеJSON; // ЧтениеJSON.УстановитьСтроку(Тело); // стрРезультат = ЗаполнитьСтруктуруИзОтветаJSON(ЧтениеJSON); // ЧтениеJSON.Закрыть(); // Если стрРезультат.errors.Количество() > 0 Тогда // Для каждого элем из стрРезультат.errors Цикл // ТекстОшибки = Элем; // ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки); // КонецЦикла; // КонецЕсли; // // Если стрРезультат.result = Истина Тогда // тзПолныйОтчет = ПолныйОтчетВТЗ(стрРезультат.data); // КонецЕсли; КонецЕсли ; Возврат Ответ; КонецФункции Функция ПолныйОтчетВТЗ(data) Если data = Неопределено Тогда Возврат Неопределено КонецЕсли; тз = ПолучитьТЗПолногоОтчета(); Для Каждого элем из data Цикл стрТЗ = тз.Добавить(); стрТЗ.ДатаПодтвержденияЗаказа = сп_Справочники.ДатаИзСтроки(элем.confirmed); стрТЗ.ДатаСозданияЗаказа = сп_Справочники.ДатаИзСтроки(элем.created); стрТЗ.ДатаЗавершенияЗаказа = сп_Справочники.ДатаИзСтроки(элем.finished); стрТЗ.СтатусЗавершенияЗаказа = сп_Справочники.ПолучитьСтатусЗавершенияЗаказа(элем.is_finished); стрТЗ.СуммаПлатежа = элем.payment_sum; стрТЗ.СКУ = элем.sku;//?????? стрТЗ.СтатусЗаказа = сп_Справочники.ПолучитьСтатусЗаказа(элем.status); стрТЗ.КомментарийОргаКУчастнику = элем.user_org_comment; стрТЗ.Остаток = элем.count; стрТЗ.Цена = элем.price; стрТЗ.Размер = элем.size; //Товар ПараметрыТовара = Новый Структура; ПараметрыТовара.Вставить("Артикул", элем.articul); //АртикулТовара ПараметрыТовара.Вставить("Код", элем.gid); //ИдТовара ПараметрыТовара.Вставить("ОписаниеТовара", элем.good_description); //ОписаниеТовара ПараметрыТовара.Вставить("Наименование", элем.name); //НазваниеТовара стрТЗ.Товар = сп_Справочники.ПолучитьТовар(ПараметрыТовара); ИсточникТовара = элем.source; //ИсточникТовара //Коллекция НазваниеКоллекции = элем.collection; стрТЗ.Колекция = сп_Справочники.ПолучитьКоллекцию(НазваниеКоллекции); //ПунктВыдачи ПараметрыПунктаВыдачи = Новый Структура; ПараметрыПунктаВыдачи.Вставить("Ид", элем.distributor_id); //ИдПунктаВыдачи ПараметрыПунктаВыдачи.Вставить("Наименование", элем.distributor_name); //НазваниеИдПунктаВыдачи стрТЗ.ПунктВыдачи = сп_Справочники.ПолучитьПунктВыдачи(ПараметрыПунктаВыдачи); //Покупка ПараметрыПокупки = Новый Структура; ПараметрыПокупки.Вставить("Наименование", элем.purchase); //НазваниеПокупки ПараметрыПокупки.Вставить("Код", элем.purchaseId); //ИдПокупки стрТЗ.Покупка = сп_Справочники.ПолучитьПокупку(ПараметрыПокупки); ///Участнк ПараметрыУчатника = Новый Структура; ПараметрыУчатника.Вставить("Код", элем.user_id); //ИдПользователя ПараметрыУчатника.Вставить("Наименование", элем.user_name); //ИмяПользователя ПараметрыУчатника.Вставить("Телефон", элем.user_phone); //ТелефонПользователя ПараметрыУчатника.Вставить("Райтинг", элем.user_rating); //РейтингПользователя стрТЗ.Участник = сп_Справочники.ПолучитьУчастника(ПараметрыУчатника); ///Мегазаказ ПараметрыМегазаказа = Новый Структура; ПараметрыМегазаказа.Вставить("Код", элем.megaorder_id); //Идентификатор мегазаказа ПараметрыМегазаказа.Вставить("Участник", стрТЗ.Участник); //Примечания к мегазаказу ПараметрыМегазаказа.Вставить("ПримечанияКМегаЗаказу", элем.megaorder_org_comment); //Примечания к мегазаказу стрТЗ.Мегазаказ = сп_Справочники.ПолучитьМегазаказ(ПараметрыМегазаказа); Комментарий = "Участник: """ +элем.order_comment +""". "; Комментарий = Комментарий + "Организатор: """ + элем.order_org_comment +"""."; //Заказ ПараметрыЗаказа = Новый Структура; ПараметрыЗаказа.Вставить("Код", элем.oid); //Идентификатор мегазаказа ПараметрыЗаказа.Вставить("Участник", стрТЗ.Участник); //Примечания к мегазаказу ПараметрыЗаказа.Вставить("Покупка", стрТЗ.Покупка); //Примечания к мегазаказу ПараметрыЗаказа.Вставить("Мегазаказ", стрТЗ.Мегазаказ); //Примечания к мегазаказу ПараметрыЗаказа.Вставить("ПримечанияКЗаказу", Комментарий); //Примечания к мегазаказу стрТЗ.Заказ = сп_Справочники.ПолучитьЗаказ(ПараметрыЗаказа); КонецЦикла; Возврат тз; КонецФункции Функция ПолучитьТЗПолногоОтчета() об = Документы.спПолныйОтчет.СоздатьДокумент(); Возврат об.ПолныйОтчет.ВыгрузитьКолонки(); КонецФункции #КонецОбласти #Область ПолучитьЗаказыУчастников Функция ЗаказыУчастников(Покупка, НачалоПериода, КонецПериода) Экспорт Ответ = Импорт_ЗаказыУчастников(Покупка, НачалоПериода, КонецПериода); Тело = Ответ.ПолучитьТелоКакСтроку(); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(Тело); стрРезультат = ЗаполнитьСтруктуруИзОтветаJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); тз = ЗаказыУчастниковВТЗ(стрРезультат.data); Возврат тз; КонецФункции Функция Импорт_ЗаказыУчастников(Покупка, НачалоПериода, КонецПериода, Мегаордера = Неопределено, Статус = Неопределено) //ДанныеАвторизации = ПолучитьДанныеАвторизации(Покупка.Организация); ДатаНачала = Формат(НачалоПериода, "ДФ=yyyy-MM-dd"); ДатаОкончания = Формат(КонецПериода, "ДФ=yyyy-MM-dd"); Параметры = "pid="+ Формат(Покупка.Код, "ЧГ=0") +"&dateFrom="+ ДатаНачала +"&dateTo="+ДатаОкончания; //Сервер = "www.100sp.ru"; ИмяСкрипта = "ЗаказыУчастников"; Ответ = ПолучитьГетЗапросом(Параметры, ИмяСкрипта,,Покупка.Организация); Возврат Ответ; КонецФункции Функция ЗаказыУчастниковВТЗ(data) Если data = Неопределено Тогда Возврат Неопределено КонецЕсли; тз = ПолучитьТЗЗаказыУчастников(); Для Каждого элем из data Цикл стрТЗ = тз.Добавить(); стрТЗ.Размер = элем.size_name; //Название размера стрТЗ.СКУ = элем.sku; //Код складской единицы стрТЗ.Цена = элем.goods_price; //Цена стрТЗ.ПримечанияКЗаказам = элем.orders_descriptions; //Примечания к заказам //Количество стрТЗ.ПодтвержденныхЗаказов = элем.confirmed_orders_count; // Количество подтвержденных заказов стрТЗ.ЗавершенныхЗаказов = элем.finished_orders_count; //Количество завершенных заказов стрТЗ.НеДоПоставелныхЗаказоы= элем.not_delivered_orders_count; // Количество недопоставленных заказов стрТЗ.ВсегоЗаказов = элем.orders_count; //Общее количество заказов. //Обратите внимание, что если используются фильтры //isConfirmedStatusFilter или isFinishedStatusFilter, //здесь будет указано количество заказов, //попадающих под этот фильтр. Например, //если вы выбрали показ только подтвержденных заказов, // orders_count будет равно confirmed_orders_count. //Коллекция НазваниеКоллекции = элем.collection_name; стрТЗ.Колекция = сп_Справочники.ПолучитьКоллекцию(НазваниеКоллекции); //ПунктВыдачи ПараметрыПунктаВыдачи = Новый Структура; ПараметрыПунктаВыдачи.Вставить("Наименование", элем.distributor_name); //НазваниеИдПунктаВыдачи стрТЗ.ПунктВыдачи = сп_Справочники.ПолучитьПунктВыдачи(ПараметрыПунктаВыдачи); //Товар ПараметрыТовара = Новый Структура; ПараметрыТовара.Вставить("Артикул", элем.goods_articul); //Артикул товара ПараметрыТовара.Вставить("Код", элем.gid); //Идентификатор товара на 100sp ПараметрыТовара.Вставить("ОписаниеТовара", элем.goods_description); //Описание товара ПараметрыТовара.Вставить("Наименование", элем.goods_name); //Название товара ПараметрыТовара.Вставить("СылкаНаКартинку", элем.goods_picture); //Ссылка на изображение товара стрТЗ.Товар = сп_Справочники.ПолучитьТовар(ПараметрыТовара); //Покупка ПараметрыПокупки = Новый Структура; ПараметрыПокупки.Вставить("Код", элем.purchase_id); //ИдПокупки стрТЗ.Покупка = сп_Справочники.ПолучитьПокупку(ПараметрыПокупки); ///Участнк ПараметрыУчатника = Новый Структура; ПараметрыУчатника.Вставить("Код", элем.user_id); //Идентификатор пользователя на 100sp ПараметрыУчатника.Вставить("Наименование", элем.user_name); //ИмяПользователя стрТЗ.Участник = сп_Справочники.ПолучитьУчастника(ПараметрыУчатника); ///Мегазаказ ПараметрыМегазаказа = Новый Структура; ПараметрыМегазаказа.Вставить("Код", элем.megaorder_id); //Идентификатор мегазаказа ПараметрыМегазаказа.Вставить("Участник", стрТЗ.Участник); //Примечания к мегазаказу ПараметрыМегазаказа.Вставить("ПримечанияКМегаЗаказу", элем.megaorder_comment); //Примечания к мегазаказу стрТЗ.Мегазаказ = сп_Справочники.ПолучитьМегазаказ(ПараметрыМегазаказа); //Заказ ПараметрыЗаказа = Новый Структура; ПараметрыЗаказа.Вставить("Код", элем.order_id); //Идентификатор мегазаказа ПараметрыЗаказа.Вставить("Участник", стрТЗ.Участник); //Примечания к мегазаказу ПараметрыЗаказа.Вставить("Покупка", стрТЗ.Покупка); //Примечания к мегазаказу ПараметрыЗаказа.Вставить("Мегазаказ", стрТЗ.Мегазаказ); //Примечания к мегазаказу ПараметрыЗаказа.Вставить("ПримечанияКЗаказу", элем.comment); //Примечания к мегазаказу стрТЗ.Заказ = сп_Справочники.ПолучитьЗаказ(ПараметрыЗаказа); КонецЦикла; Возврат тз; КонецФункции Функция ПолучитьТЗЗаказыУчастников() об = Документы.спЗаказыУчастников.СоздатьДокумент(); Возврат об.ЗаказыУчастников.ВыгрузитьКолонки(); КонецФункции #КонецОбласти #Область ДанныеПокупки Функция ДанныеПокупки(Покупка) Экспорт Ответ = Импорт_ДанныеПокупки(Покупка); Тело = Ответ.ПолучитьТелоКакСтроку(); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(Тело); стрРезультат = ЗаполнитьСтруктуруИзОтветаJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); покупка = ДанныеПокупкиВПокупку (стрРезультат.data); Возврат покупка.ВидНоменклатуры; КонецФункции Функция Импорт_ДанныеПокупки(Покупка) //ДанныеАвторизации = ПолучитьДанныеАвторизации(Покупка.Организация); Параметры = "purchase="+ Формат(Покупка.Код , "ЧГ=0") ; ИмяСкрипта = "ДанныеПокупки"; Ответ = ПолучитьГетЗапросом(Параметры, ИмяСкрипта, ,Покупка.Организация); Если Ответ <> Неопределено Тогда // Тело = Ответ.ПолучитьТелоКакСтроку(); // ЧтениеJSON = Новый ЧтениеJSON; // ЧтениеJSON.УстановитьСтроку(Тело); // стрРезультат = ЗаполнитьСтруктуруИзОтветаJSON(ЧтениеJSON); // ЧтениеJSON.Закрыть(); // Если стрРезультат.errors.Количество() > 0 Тогда // Для каждого элем из стрРезультат.errors Цикл // ТекстОшибки = Элем; // ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки); // КонецЦикла; // КонецЕсли; // // Если стрРезультат.result = Истина Тогда // тзПолныйОтчет = ПолныйОтчетВТЗ(стрРезультат.data); // КонецЕсли; КонецЕсли ; Возврат Ответ; КонецФункции Функция ДанныеПокупкиВПокупку(data) Если data = Неопределено Тогда Возврат Неопределено КонецЕсли; //Массив объектов - коллекций в покупке массивКоллекций = новый Массив; Для каждого элем из data.purchase.collections Цикл // Категория колекции ПараметрыКатегории = Новый Структура; ПараметрыКатегории.Вставить("Наименование", элем.category.name); // Название категории ПараметрыКатегории.Вставить("Код", элем.category.id); //Идентификатор категории Категория = сп_Справочники.ПолучитьКатегорию(ПараметрыКатегории); ПараметрыКолекции = Новый Структура; ПараметрыКолекции.Вставить("Наименование", элем.name); //Название коллекции ПараметрыКолекции.Вставить("Ид", элем.id); //Ид коллекции ПараметрыКолекции.Вставить("Категория", Категория); //Категория коллекции Колекция = сп_Справочники.ПолучитьКоллекциюПоПараметрам(ПараметрыКолекции); массивКоллекций.Добавить(Колекция); КонецЦикла; массивКоллекций = ОбщегоНазначенияКлиентСервер.СвернутьМассив(массивКоллекций); //Мегапокупка, к которой привязана покупка ПараметрыМегапокупки = Новый Структура; ПараметрыМегапокупки.Вставить("Наименование", data.purchase.megapurchase.name); //Названиемегапокупки ПараметрыМегапокупки.Вставить("Код", data.purchase.megapurchase.id); //Идмегапокупки Мегапокупка = сп_Справочники.ПолучитьМегапокупку(ПараметрыМегапокупки); //Покупка ПараметрыПокупки = Новый Структура; ПараметрыПокупки.Вставить("Наименование", data.purchase.name); //НазваниеПокупки ПараметрыПокупки.Вставить("Мегапокупка", Мегапокупка); //Мегапокупка ПараметрыПокупки.Вставить("Код", data.purchase.id); //ИдПокупки ПараметрыПокупки.Вставить("ТипПокупки", Перечисления.сп_ТипПокупки[data.purchase.duration_type]); // Тип покупки: ПараметрыПокупки.Вставить("Видимость", Перечисления.сп_ВидимостьПокупки[data.purchase.visibility]); //Видимость покупки: //all - видна всем //vip - видна только пользователям с достаточным рейтингом //url - видна только по ссылке //hidden - скрыта Покупка = сп_Справочники.ПолучитьПокупку(ПараметрыПокупки); //ВидНоменклатурв Если ЗначениеЗаполнено(Покупка.ВидНоменклатуры) Тогда НаименованиеВида = "("+data.purchase.id+") "+data.purchase.name; сп_Справочники.ИзменитВидНоменклатуры(Покупка.ВидНоменклатуры,НаименованиеВида); КонецЕсли; сп_Справочники.ОбновитьКолекцииПокупки(Покупка,массивКоллекций); Возврат Покупка КонецФункции Функция ПолучитьТЗДанныеПокупки() тз = новый ТаблицаЗначений(); Колонки = тз.Колонки; Колонки.Добавить("Покупка", новый описаниеТипов("СправочникСсылка.спПокупки")); Колонки.Добавить("Мегапокупка", новый описаниеТипов("Строка")); //Название покупки Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); Колонки.Добавить("result", новый описаниеТипов("Строка")); КонецФункции #КонецОбласти #Область ЭкспортПокупки Функция ЭкспортПокупки(Док) Экспорт ПараметрыЭкспорта = Новый Структура; имяФайла = ПолучитьИмяВременногоФайла("csv"); файлЦСВ = Новый ТекстовыйДокумент; файлЦСВ.УстановитьТипФайла(КодировкаТекста.UTF8); файлЦСВ.УстановитьТекст(Док.CSV); файлЦСВ.Записать(имяФайла,КодировкаТекста.UTF8); //ЧД = новый ЧтениеДанных(имяФайла,КодировкаТекста.UTF8); //рчд = ЧД.Прочитать(); //дд = рчд.ПолучитьДвоичныеДанные(); //Base64Строка( СодержимоеФайла = Новый ДвоичныеДанные(ИмяФайла); массЗамещения = СтрРазделить(Док.ПараметрыЗамещенияКлючи,","); ПараметрыЭкспорта.Вставить("purchase", Формат(Док.Покупка.Код,"ЧГ=0")); ПараметрыЭкспорта.Вставить("duplicate", Док.ПараметрСоответствие); ПараметрыЭкспорта.Вставить("photos", Док.ПараметрФото); ПараметрыЭкспорта.Вставить("missing", Док.ПараметрОбработкаТоавров); ПараметрыЭкспорта.Вставить("remains", Док.ПараметрОбработкаОстатков); ПараметрыЭкспорта.Вставить("collections", Док.ПараметрОбработкаКолекций); ПараметрыЭкспорта.Вставить("delimiter", ";"); ПараметрыЭкспорта.Вставить("overwrite", массЗамещения); //ПараметрыЭкспорта.Вставить("mergeDuplicated", ); //ПараметрыЭкспорта.Вставить("overwrite", стрПараметрыЗамещенияКлючи); //ПараметрыЭкспорта.Вставить("collectionsIds", "all"); //ПараметрыЭкспорта.Вставить("email",); ДанныеАвторизации = ПолучитьДанныеАвторизации(Док.Покупка.Организация); Сервер = ДанныеАвторизации.Сервер; access_token = ДанныеАвторизации.access_token; Скрипт = ДанныеАвторизации.Скрипты["ЭкспортПокупки"]; Заголовки = Новый Соответствие; Заголовки.Вставить("x-api-key", access_token); Файлы = Новый Массив; Файлы.Добавить(Новый Структура("Имя,Данные,ИмяФайла", "file", СодержимоеФайла, "file.csv")); ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("Заголовки", Заголовки); ДополнительныеПараметры.Вставить("Файлы", Файлы); ДополнительныеПараметры.Вставить("Данные", ПараметрыЭкспорта); //ОтправитьPost("ЭкспортПокупки", ДополнительныеПараметры, Док.Покупка.Организация); ответ = сп_Коннектор.Post("https://"+Сервер +"/" +Скрипт,Неопределено,ДополнительныеПараметры); //имяф = ПолучитьИмяВременногоФайла("ansv"); //зд = новый ЗаписьДанных(имяф,КодировкаТекста.UTF8); //зд.Записать(Ответ.Тело); //зд.Закрыть(); // // Возврат Ответ; КонецФункции #КонецОбласти #Область ПечтьСтикеров Функция ПолучитьСтикеры(Покупка,СписокМегаордеров, Количество,Формат) Экспорт ответ = Импорт_Стикеры(Покупка, СписокМегаордеров, Количество,Формат); Если Формат = "pdf" Тогда ДД = ответ.ПолучитьТелоКакДвоичныеДанные(); Адрес = ПоместитьВоВременноеХранилище(ДД); Возврат Адрес; Иначе Возврат Неопределено; КонецЕсли; КонецФункции Функция Импорт_Стикеры(Покупка, СписокМегаордеров, Количество,Формат) ПараметрыМегаордера = ""; ПараметрыКоличество = ""; Разделитель = ""; Для каждого элем из СписокМегаордеров Цикл ид = формат(элем.значение.Код, "ЧГ=0"); ПараметрыМегаордера = ПараметрыМегаордера + Разделитель +"megaorderIds[]="+ид; ПараметрыКоличество = ПараметрыКоличество + Разделитель +"count["+ид+"]="+Формат(Количество,"ЧГ=0"); Разделитель = "&"; КонецЦикла; Параметры = ПараметрыМегаордера + Разделитель + ПараметрыКоличество + Разделитель + "format="+Формат ; ИмяСкрипта = "ПечатьСтикеров"; Ответ = ПолучитьГетЗапросом(Параметры, ИмяСкрипта, ,Покупка.Организация); Возврат ответ; КонецФункции #КонецОбласти #Область Запросы Функция ПолучитьГетЗапросом(Параметры, ИмяСкрипта,ДвоичныеД = Ложь, Организация) ДанныеАвторизации = ПолучитьДанныеАвторизации(Организация); Сервер = ДанныеАвторизации.Сервер; access_token = ДанныеАвторизации.access_token; Скрипт = ДанныеАвторизации.Скрипты[ИмяСкрипта]; ЗаголовокHTTP = Новый Соответствие(); // ЗаголовокHTTP.Вставить("Content-Type", "application/json; charset=UTF-8"); ЗаголовокHTTP.Вставить("Content-Type", "application/json"); ЗаголовокHTTP.Вставить("x-api-key", access_token); ССЛ = Новый ЗащищенноеСоединениеOpenSSL; НТТР = Новый HTTPСоединение(Сервер,,,,,60,ССЛ); HTTPЗапрос = Новый HTTPЗапрос(Скрипт+?(Параметры="","","?" + Параметры),ЗаголовокHTTP); Попытка Ответ = НТТР.Получить(HTTPЗапрос); Если ответ.КодСостояния = 200 Тогда Возврат Ответ; Иначе Тело = Ответ.ПолучитьТелоКакСтроку(); ТекстСообщения = "Ошибка: "+ Символы.ПС + " Код состояния: " + ответ.КодСостояния +Символы.ПС+ " тело : " + тело; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); возврат Неопределено; КонецЕсли Исключение ТекстСообщения = "Неудачная попытка соединения: " + ОписаниеОшибки(); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); Возврат Неопределено; КонецПопытки; КонецФункции Функция ОтправитьПостЗапросом_Ответ(Параметры,ИмяСкрипта, Организация) Экспорт ДанныеАвторизации = ПолучитьДанныеАвторизации(Организация); Сервер = ДанныеАвторизации.Сервер; access_token = ДанныеАвторизации.access_token; Скрипт = ДанныеАвторизации.Скрипты[ИмяСкрипта]; Разделитель = ""; СтрокаПараметров = ""; Для каждого стр из Параметры Цикл СтрокаПараметров = СтрокаПараметров+ Разделитель +стр.Ключ+"="+стр.Значение; Разделитель = "&"; КонецЦикла; СтрокаСоединения = СтрокаСоединенияИнформационнойБазы(); СерверИсточник = НСтр(СтрокаСоединения, "Srvr") + НСтр(СтрокаСоединения, "Ref"); ЗаголовокHTTP = Новый Соответствие(); //ЗаголовокHTTP.Вставить("Referer", СерверИсточник); ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data"); ЗаголовокHTTP.Вставить("x-api-key", access_token); HTTPЗапрос = Новый HTTPЗапрос(Скрипт, ЗаголовокHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаПараметров, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ССЛ = Новый ЗащищенноеСоединениеOpenSSL; НТТР = Новый HTTPСоединение(Сервер,,,,,,ССЛ); Попытка ответ = НТТР.ОтправитьДляОбработки(HTTPЗапрос); тело = ответ.ПолучитьТелоКакСтроку(); Если ответ.КодСостояния = 200 Тогда Возврат Тело; Иначе ТекстСообщения = "Ошибка: "+ Символы.ПС + " Код состояния: " + ответ.КодСостояния +Символы.ПС+ " тело : " + тело; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); возврат Неопределено; КонецЕсли Исключение ТекстСообщения = "Неудачная попытка соединения: " + ОписаниеОшибки(); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); Возврат Неопределено; КонецПопытки; КонецФункции функция ПолучитьДанныеАвторизации(Организация) Скрипты = Новый Структура(); Скрипты.Вставить("ПолныйОтчет", "org/default/apiExportFullReport"); Скрипты.Вставить("ДанныеПокупки", "purchase/apiExportMeta"); Скрипты.Вставить("ЗаказыУчастников", "org/purchase/processOrders/api"); Скрипты.Вставить("ЭкспортПокупки", "org/purchase/importExport/apiImport"); Скрипты.Вставить("ПечатьСтикеров", "org/sticker/apiPrint"); Токен = сп_НастройкиОбъектов.Получить(Организация, ПланыВидовХарактеристик.сп_СвойстваОбъектов.Токен); ДанныеАвторизации = Новый Структура; ДанныеАвторизации.Вставить("access_token", Токен); ДанныеАвторизации.Вставить("Сервер", "www.100sp.ru"); ДанныеАвторизации.Вставить("Скрипты", Скрипты); Возврат ДанныеАвторизации; КонецФункции #КонецОбласти #Область JsonВСтруктуру Функция ЗаполнитьСтруктуруИзОтветаJSON(Знач Чтение) Экспорт Результат = Новый Структура; ПоследнееИмяРеквизита = Неопределено; Пока Чтение.Прочитать() Цикл Тип = Чтение.ТипТекущегоЗначения; Если Тип = ТипЗначенияJSON.НачалоОбъекта И ПоследнееИмяРеквизита<>Неопределено Тогда Результат[ПоследнееИмяРеквизита] = ЗаполнитьСтруктуруИзОтветаJSON(Чтение); ИначеЕсли Тип = ТипЗначенияJSON.КонецОбъекта Тогда Возврат Результат; ПоследнееИмяРеквизита = Неопределено; ИначеЕсли Тип = ТипЗначенияJSON.ИмяСвойства Тогда Результат.Вставить(Чтение.ТекущееЗначение, Неопределено); ПоследнееИмяРеквизита = Чтение.ТекущееЗначение; ИначеЕсли Тип = ТипЗначенияJSON.Булево или Тип = ТипЗначенияJSON.Строка или Тип = ТипЗначенияJSON.Число или Тип = ТипЗначенияJSON.Null Тогда Результат[ПоследнееИмяРеквизита] = Чтение.ТекущееЗначение; ИначеЕсли Тип = ТипЗначенияJSON.НачалоМассива Тогда Результат[ПоследнееИмяРеквизита] = ЗаполнитьМассивИзОтветаJSON(Чтение); КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции Функция ЗаполнитьСоответствиеИзОтветаJSON(Знач Чтение) Экспорт Результат = Новый Структура; ПоследнееИмяРеквизита = Неопределено; Пока Чтение.Прочитать() Цикл Тип = Чтение.ТипТекущегоЗначения; Если Тип = ТипЗначенияJSON.НачалоОбъекта И ПоследнееИмяРеквизита<>Неопределено Тогда Результат[ПоследнееИмяРеквизита] = ЗаполнитьСтруктуруИзОтветаJSON(Чтение); ИначеЕсли Тип = ТипЗначенияJSON.КонецОбъекта Тогда Возврат Результат; ПоследнееИмяРеквизита = Неопределено; ИначеЕсли Тип = ТипЗначенияJSON.ИмяСвойства Тогда Результат.Вставить(Чтение.ТекущееЗначение, Неопределено); ПоследнееИмяРеквизита = Чтение.ТекущееЗначение; ИначеЕсли Тип = ТипЗначенияJSON.Булево или Тип = ТипЗначенияJSON.Строка или Тип = ТипЗначенияJSON.Число или Тип = ТипЗначенияJSON.Null Тогда Результат[ПоследнееИмяРеквизита] = Чтение.ТекущееЗначение; ИначеЕсли Тип = ТипЗначенияJSON.НачалоМассива Тогда Результат[ПоследнееИмяРеквизита] = ЗаполнитьМассивИзОтветаJSON(Чтение); КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции Функция ЗаполнитьМассивИзОтветаJSON(Знач Чтение) Результат = Новый Массив; Пока Чтение.Прочитать() Цикл Тип = Чтение.ТипТекущегоЗначения; Если Тип = ТипЗначенияJSON.НачалоОбъекта Тогда Результат.Добавить(ЗаполнитьСтруктуруИзОтветаJSON(Чтение)); ИначеЕсли Тип = ТипЗначенияJSON.КонецМассива Тогда Возврат Результат; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции #КонецОбласти