1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-11-28 09:08:38 +02:00

CDEK: Создание заказов

This commit is contained in:
Anton Titovets 2024-10-09 16:27:34 +03:00
parent acef484801
commit b6af2b4a73
9 changed files with 5606 additions and 4902 deletions

File diff suppressed because it is too large Load Diff

View File

@ -75,6 +75,241 @@
#КонецОбласти
#Область РаботаСЗаказми
// Создать заказ
// Создает заказ по описанию полей
//
// Примечание:
// Метод в документации API: [Регистрация заказа](@api-docs.cdek.ru/29923926.html)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// ОписаниеЗаказа - Структура Из КлючИЗначение - Набор полей заказа. См. ПолучитьОписаниеЗаказа - order
// ИнтернетМагазин - Булево - Признак типа заказа Интернет магазин - ostore
// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK
Функция СоздатьЗаказ(Знач Токен, Знач ОписаниеЗаказа, Знач ИнтернетМагазин = Ложь, ТестовыйAPI = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаказа);
OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин);
URL = СформироватьURL("/orders", ТестовыйAPI);
Параметры = Новый Структура;
Для Каждого ПолеЗаказа Из ОписаниеЗаказа Цикл
OPI_Инструменты.ДобавитьПоле(ПолеЗаказа.Ключ, ПолеЗаказа.Значение, "Текущий", Параметры);
КонецЦикла;
OPI_Инструменты.ДобавитьПоле("type", ?(ИнтернетМагазин, 1, 2), "Число", Параметры);
Ответ = OPI_Инструменты.Post(URL, ОписаниеЗаказа, , Ложь);
Возврат Ответ;
КонецФункции
// Получить описание заказа
// Получает макет для создания заказа в функции СоздатьЗаказ
//
// Примечание:
// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK
// Описания полей в документации: [Регистрация заказа](@api-docs.cdek.ru/29923926.html)
//
// Параметры:
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
// ТолькоОбязательные - Булево - Истина > в макете будут только обязательные поля - required
// ИнтернетМагазин - Булево - Признак включения в макет полей исключительно для заказо Интернет магазина - ostore
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей
Функция ПолучитьОписаниеЗаказа(Знач Пустая = Ложь, Знач ТолькоОбязательные = Ложь, Знач ИнтернетМагазин = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
OPI_ПреобразованиеТипов.ПолучитьБулево(ТолькоОбязательные);
OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин);
СтруктураЗаказа = Новый Структура;
СтруктураЗаказа.Вставить("tariff_code" , "<Код тарифа (подробнее см. приложение 1)>");
СтруктураПолучателя = Новый Структура;
СтруктураПолучателя.Вставить("company" , "<Название компании>");
СтруктураПолучателя.Вставить("name" , "<ФИО контактного лица>");
СтруктураПолучателя.Вставить("passport_series" , "<Серия паспорта>");
СтруктураПолучателя.Вставить("passport_number" , "<Номер паспорта>");
СтруктураПолучателя.Вставить("passport_date_of_issue", "<Дата выдачи паспорта>");
СтруктураПолучателя.Вставить("passport_organization" , "<Орган выдачи паспорта>");
СтруктураПолучателя.Вставить("tin" , "<ИНН>");
СтруктураПолучателя.Вставить("passport_date_of_birth", "<Дата рождения>");
СтруктураПолучателя.Вставить("email" , "<Email как RFC 2822>");
СтруктураПолучателя.Вставить("contragent_type" , "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL >");
МассивТелефонов = Новый Массив;
СтруктураТелефона = Новый Структура;
СтруктураТелефона.Вставить("number" , "<Номер телефона>");
СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>");
МассивТелефонов.Добавить(СтруктураТелефона);
СтруктураПолучателя.Вставить("phones", МассивТелефонов);
СтруктураЗаказа.Вставить("recipient", СтруктураПолучателя);
МассивУпаковок = Новый Массив;
СтруктураУпаковки = Новый Структура;
СтруктураУпаковки.Вставить("number" , "<Номер упаковки>");
СтруктураУпаковки.Вставить("weight" , "<Общий вес (в граммах)>");
СтруктураУпаковки.Вставить("length" , "<Габариты упаковки. Длина (в сантиметрах)>");
СтруктураУпаковки.Вставить("width" , "<Габариты упаковки. Ширина (в сантиметрах)>");
СтруктураУпаковки.Вставить("height" , "<Габариты упаковки. Высота (в сантиметрах)>");
СтруктураУпаковки.Вставить("comment", "<Комментарий к упаковке>");
МассивПозиций = Новый Массив;
СтруктураПозиции = Новый Структура;
СтруктураПозиции.Вставить("name" , "<Наименование товара>");
СтруктураПозиции.Вставить("ware_key", "<Идентификатор/артикул товара>");
СтруктураПозиции.Вставить("marking" , "<Маркировка товара>");
СтруктураОплаты = Новый Структура;
СтруктураОплаты.Вставить("value" , "<Сумма наложенного платежа, в том числе и НДС>");
СтруктураОплаты.Вставить("vat_sum" , "<Сумма НДС>");
СтруктураОплаты.Вставить("vat_rate", "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>");
СтруктураПозиции.Вставить("payment" , СтруктураОплаты);
СтруктураПозиции.Вставить("cost" , "<Объявленная стоимость товара>");
СтруктураПозиции.Вставить("weight" , "<Вес (за единицу товара, в граммах)>");
СтруктураПозиции.Вставить("weight_gross", "<Вес брутто>");
СтруктураПозиции.Вставить("amount" , "<Количество единиц товара (в штуках)>");
СтруктураПозиции.Вставить("name_i18n" , "<Наименование на иностранном языке>");
СтруктураПозиции.Вставить("brand" , "<Бренд на иностранном языке>");
СтруктураПозиции.Вставить("country_code", "<Код страны производителя товара ISO_3166-1_alpha-2>");
СтруктураПозиции.Вставить("material" , "<Код материала>");
СтруктураПозиции.Вставить("wifi_gsm" , "<Содержит wifi или gsm>");
СтруктураПозиции.Вставить("url" , "<Ссылка на сайт интернет-магазина с описанием товара>");
МассивПозиций.Добавить(СтруктураПозиции);
СтруктураУпаковки.Вставить("items", МассивПозиций);
МассивУпаковок.Добавить(СтруктураУпаковки);
СтруктураЗаказа.Вставить("packages", МассивУпаковок);
Если Не ТолькоОбязательные Тогда
СтруктураЗаказа.Вставить("additional_order_types" , "<Дополнительный тип заказа>");
СтруктураЗаказа.Вставить("comment" , "<Комментарий к заказу>");
СтруктураЗаказа.Вставить("developer_key" , "<Ключ разработчика (для разработчиков модулей)>");
СтруктураЗаказа.Вставить("shipment_point" , "<Код ПВЗ СДЭК для самостоятельного привоза клиентом>");
СтруктураЗаказа.Вставить("delivery_point" , "<Код офиса СДЭК, на который будет доставлена посылка>");
СтруктураЗаказа.Вставить("date_invoice" , "<Дата инвойса>");
СтруктураЗаказа.Вставить("shipper_name" , "<Грузоотправитель>");
СтруктураЗаказа.Вставить("shipper_address" , "<Адрес грузоотправителя>");
СтруктураОтправителя = Новый Структура;
СтруктураОтправителя.Вставить("company" , "<Название компании>");
СтруктураОтправителя.Вставить("name" , "<ФИО контактного лица>");
СтруктураОтправителя.Вставить("email" , "<Email для оповещений RFC 2822>");
СтруктураОтправителя.Вставить("passport_series" , "<Серия паспорта>");
СтруктураОтправителя.Вставить("passport_number" , "<Номер паспорта>");
СтруктураОтправителя.Вставить("passport_date_of_issue" , "<Дата выдачи паспорта>");
СтруктураОтправителя.Вставить("passport_organization" , "<Орган выдачи паспорта>");
СтруктураОтправителя.Вставить("tin" , "<ИНН>");
СтруктураОтправителя.Вставить("passport_date_of_birth" , "<Дата рождения>");
СтруктураОтправителя.Вставить("contragent_type" , "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL >");
МассивТелефонов = Новый Массив;
СтруктураТелефона = Новый Структура;
СтруктураТелефона.Вставить("number" , "<Номер телефона>");
СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>");
МассивТелефонов.Добавить(СтруктураТелефона);
СтруктураОтправителя.Вставить("phones", МассивТелефонов);
СтруктураЗаказа.Вставить("sender", СтруктураОтправителя);
СтруктураАдреса = Новый Структура;
СтруктураАдреса.Вставить("code" , "<Код населенного пункта СДЭК>");
СтруктураАдреса.Вставить("fias_guid" , "<Уникальный идентификатор ФИАС>");
СтруктураАдреса.Вставить("postal_code" , "<Почтовый индекс>");
СтруктураАдреса.Вставить("longitude" , "<Долгота>");
СтруктураАдреса.Вставить("latitude" , "<Широта>");
СтруктураАдреса.Вставить("country_code", "<Код страны в формате ISO_3166-1_alpha-2>");
СтруктураАдреса.Вставить("region" , "<Название региона, уточняющий параметр для поля city>");
СтруктураАдреса.Вставить("region_code" , "<Код региона СДЭК, уточняющий параметр для поля city>");
СтруктураАдреса.Вставить("sub_region" , "<Название района региона, уточняющий параметр для поля region>");
СтруктураАдреса.Вставить("city" , "<Название города, уточняющий параметр для postal_code>");
СтруктураАдреса.Вставить("kladr_code" , "<Код КЛАДР>");
СтруктураАдреса.Вставить("address" , "<Строка адреса >");
СтруктураЗаказа.Вставить("from_location", СтруктураАдреса);
СтруктураЗаказа.Вставить("to_location" , СтруктураАдреса);
СтруктураУслуги = Новый Структура;
СтруктураУслуги.Вставить("code" , "<Тип дополнительной услуги>");
СтруктураУслуги.Вставить("parameter", "<Параметр дополнительной услуги>");
СтруктураЗаказа.Вставить("services" , СтруктураУслуги);
СтруктураЗаказа.Вставить("print" , "<Необходимость сформировать печатную форму>");
СтруктураЗаказа.Вставить("is_client_return" , "<Клиентский возврат>");
СтруктураЗаказа.Вставить("accompanying_number", "<Номер сопроводительной накладной>");
СтруктураЗаказа.Вставить("widget_token" , "<Токен, полученный от widget.cdek.ru>");
Если ИнтернетМагазин Тогда
СтруктураЗаказа.Вставить("number", "<Номер заказа в ИС Клиента (uuid, если не заполнено)>");
СтруктураСбора = Новый Структура;
СтруктураСбора.Вставить("value" , "<Сумма дополнительного сбора (в том числе и НДС)>");
СтруктураСбора.Вставить("vat_sum" , "<Сумма НДС>");
СтруктураСбора.Вставить("vat_rate", "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>");
СтруктураЗаказа.Вставить("delivery_recipient_cost", СтруктураСбора);
МассивПорогов = Новый Массив;
СтруктураПорога = Новый Структура;
СтруктураПорога.Вставить("threshold", "<Порог стоимости товара в целых единицах валюты>");
СтруктураПорога.Вставить("sum" , "<Доп. сбор за доставку товаров, общая стоимость которых в интервале>");
СтруктураПорога.Вставить("vat_sum" , "<Сумма НДС, включённая в доп. сбор за доставку>");
СтруктураПорога.Вставить("vat_rate" , "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>");
МассивПорогов.Добавить(СтруктураПорога);
СтруктураЗаказа.Вставить("delivery_recipient_cost_adv", МассивПорогов);
СтруктураПродавца = Новый Структура;
СтруктураПродавца.Вставить("name" , "<Наименование истинного продавца>");
СтруктураПродавца.Вставить("inn" , "<ИНН истинного продавца>");
СтруктураПродавца.Вставить("phone" , "<Телефон истинного продавца>");
СтруктураПродавца.Вставить("ownership_form", "<Код формы собственности>");
СтруктураПродавца.Вставить("address" , "<Адрес истинного продавца>");
СтруктураЗаказа.Вставить("seller", СтруктураПродавца);
КонецЕсли;
КонецЕсли;
Если Пустая Тогда
СтруктураЗаказа = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураЗаказа);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураЗаказа;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции

View File

@ -1996,6 +1996,15 @@
КонецПроцедуры
Процедура СдэкАПИ_РаботаСЗаказами() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token" , ПараметрыТеста);
CDEK_ПолучитьОписаниеЗаказа(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@ -13626,6 +13635,22 @@
КонецПроцедуры
Процедура CDEK_ПолучитьОписаниеЗаказа(ПараметрыФункции)
Результат = OPI_CDEK.ПолучитьОписаниеЗаказа();
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьОписаниеЗаказа", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
Результат = OPI_CDEK.ПолучитьОписаниеЗаказа(Истина);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьОписаниеЗаказа (Пустая)", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -213,7 +213,8 @@
НовыйТест(ТаблицаТестов, "ОзонАПИ_РаботаСоСкладами" , "Работа со складами" , Озон);
НовыйТест(ТаблицаТестов, "НС_РаботаСФайлами" , "Работа с файлами" , Неоситиз);
НовыйТест(ТаблицаТестов, "НС_ПолучениеДанных" , "Получение данных" , Неоситиз);
НовыйТест(ТаблицаТестов, "СдэкАПИ_ОбщиеМетоды" , "ОбщиеМетоды" , Сдэк);
НовыйТест(ТаблицаТестов, "СдэкАПИ_ОбщиеМетоды" , "Общие методы" , Сдэк);
НовыйТест(ТаблицаТестов, "СдэкАПИ_РаботаСЗаказами" , "Работа с заказами" , Сдэк);
Возврат ТаблицаТестов;
@ -1800,9 +1801,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@ -425,6 +425,43 @@
КонецФункции
Функция ОчиститьКоллекциюРекурсивно(Знач Коллекция) Экспорт
ТипЗначения = ТипЗнч(Коллекция);
Если ТипЗначения = Тип("Структура") Или ТипЗначения = Тип("Соответствие") Тогда
Для Каждого ЭлементКоллекции Из Коллекция Цикл
ОчищенноеПоле = ОчиститьКоллекциюРекурсивно(ЭлементКоллекции.Значение);
ЭлементКоллекции.Значение = ОчищенноеПоле;
КонецЦикла;
ИначеЕсли ТипЗначения = Тип("Массив") Тогда
Коллекция_ = Новый Массив;
Для Каждого ЭлементКоллекции Из Коллекция Цикл
ОчищенноеПоле = ОчиститьКоллекциюРекурсивно(ЭлементКоллекции);
Коллекция_.Добавить(ОчищенноеПоле);
КонецЦикла;
Коллекция = Коллекция_;
Иначе
Коллекция = "";
КонецЕсли;
Возврат Коллекция;
КонецФункции
Процедура ЗначениеВМассив(Значение) Экспорт
Значение_ = Новый Массив;

View File

@ -75,6 +75,241 @@
#КонецОбласти
#Область РаботаСЗаказми
// Создать заказ
// Создает заказ по описанию полей
//
// Примечание:
// Метод в документации API: [Регистрация заказа](@api-docs.cdek.ru/29923926.html)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// ОписаниеЗаказа - Структура Из КлючИЗначение - Набор полей заказа. См. ПолучитьОписаниеЗаказа - order
// ИнтернетМагазин - Булево - Признак типа заказа Интернет магазин - ostore
// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK
Функция СоздатьЗаказ(Знач Токен, Знач ОписаниеЗаказа, Знач ИнтернетМагазин = Ложь, ТестовыйAPI = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаказа);
OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин);
URL = СформироватьURL("/orders", ТестовыйAPI);
Параметры = Новый Структура;
Для Каждого ПолеЗаказа Из ОписаниеЗаказа Цикл
OPI_Инструменты.ДобавитьПоле(ПолеЗаказа.Ключ, ПолеЗаказа.Значение, "Текущий", Параметры);
КонецЦикла;
OPI_Инструменты.ДобавитьПоле("type", ?(ИнтернетМагазин, 1, 2), "Число", Параметры);
Ответ = OPI_Инструменты.Post(URL, ОписаниеЗаказа, , Ложь);
Возврат Ответ;
КонецФункции
// Получить описание заказа
// Получает макет для создания заказа в функции СоздатьЗаказ
//
// Примечание:
// Обязательность реквизитов может зависить от типа зказа или вложенности. Обязательно ознакомьтесь с документацией CDEK
// Описания полей в документации: [Регистрация заказа](@api-docs.cdek.ru/29923926.html)
//
// Параметры:
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
// ТолькоОбязательные - Булево - Истина > в макете будут только обязательные поля - required
// ИнтернетМагазин - Булево - Признак включения в макет полей исключительно для заказо Интернет магазина - ostore
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей
Функция ПолучитьОписаниеЗаказа(Знач Пустая = Ложь, Знач ТолькоОбязательные = Ложь, Знач ИнтернетМагазин = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
OPI_ПреобразованиеТипов.ПолучитьБулево(ТолькоОбязательные);
OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин);
СтруктураЗаказа = Новый Структура;
СтруктураЗаказа.Вставить("tariff_code" , "<Код тарифа (подробнее см. приложение 1)>");
СтруктураПолучателя = Новый Структура;
СтруктураПолучателя.Вставить("company" , "<Название компании>");
СтруктураПолучателя.Вставить("name" , "<ФИО контактного лица>");
СтруктураПолучателя.Вставить("passport_series" , "<Серия паспорта>");
СтруктураПолучателя.Вставить("passport_number" , "<Номер паспорта>");
СтруктураПолучателя.Вставить("passport_date_of_issue", "<Дата выдачи паспорта>");
СтруктураПолучателя.Вставить("passport_organization" , "<Орган выдачи паспорта>");
СтруктураПолучателя.Вставить("tin" , "<ИНН>");
СтруктураПолучателя.Вставить("passport_date_of_birth", "<Дата рождения>");
СтруктураПолучателя.Вставить("email" , "<Email как RFC 2822>");
СтруктураПолучателя.Вставить("contragent_type" , "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL >");
МассивТелефонов = Новый Массив;
СтруктураТелефона = Новый Структура;
СтруктураТелефона.Вставить("number" , "<Номер телефона>");
СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>");
МассивТелефонов.Добавить(СтруктураТелефона);
СтруктураПолучателя.Вставить("phones", МассивТелефонов);
СтруктураЗаказа.Вставить("recipient", СтруктураПолучателя);
МассивУпаковок = Новый Массив;
СтруктураУпаковки = Новый Структура;
СтруктураУпаковки.Вставить("number" , "<Номер упаковки>");
СтруктураУпаковки.Вставить("weight" , "<Общий вес (в граммах)>");
СтруктураУпаковки.Вставить("length" , "<Габариты упаковки. Длина (в сантиметрах)>");
СтруктураУпаковки.Вставить("width" , "<Габариты упаковки. Ширина (в сантиметрах)>");
СтруктураУпаковки.Вставить("height" , "<Габариты упаковки. Высота (в сантиметрах)>");
СтруктураУпаковки.Вставить("comment", "<Комментарий к упаковке>");
МассивПозиций = Новый Массив;
СтруктураПозиции = Новый Структура;
СтруктураПозиции.Вставить("name" , "<Наименование товара>");
СтруктураПозиции.Вставить("ware_key", "<Идентификатор/артикул товара>");
СтруктураПозиции.Вставить("marking" , "<Маркировка товара>");
СтруктураОплаты = Новый Структура;
СтруктураОплаты.Вставить("value" , "<Сумма наложенного платежа, в том числе и НДС>");
СтруктураОплаты.Вставить("vat_sum" , "<Сумма НДС>");
СтруктураОплаты.Вставить("vat_rate", "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>");
СтруктураПозиции.Вставить("payment" , СтруктураОплаты);
СтруктураПозиции.Вставить("cost" , "<Объявленная стоимость товара>");
СтруктураПозиции.Вставить("weight" , "<Вес (за единицу товара, в граммах)>");
СтруктураПозиции.Вставить("weight_gross", "<Вес брутто>");
СтруктураПозиции.Вставить("amount" , "<Количество единиц товара (в штуках)>");
СтруктураПозиции.Вставить("name_i18n" , "<Наименование на иностранном языке>");
СтруктураПозиции.Вставить("brand" , "<Бренд на иностранном языке>");
СтруктураПозиции.Вставить("country_code", "<Код страны производителя товара ISO_3166-1_alpha-2>");
СтруктураПозиции.Вставить("material" , "<Код материала>");
СтруктураПозиции.Вставить("wifi_gsm" , "<Содержит wifi или gsm>");
СтруктураПозиции.Вставить("url" , "<Ссылка на сайт интернет-магазина с описанием товара>");
МассивПозиций.Добавить(СтруктураПозиции);
СтруктураУпаковки.Вставить("items", МассивПозиций);
МассивУпаковок.Добавить(СтруктураУпаковки);
СтруктураЗаказа.Вставить("packages", МассивУпаковок);
Если Не ТолькоОбязательные Тогда
СтруктураЗаказа.Вставить("additional_order_types" , "<Дополнительный тип заказа>");
СтруктураЗаказа.Вставить("comment" , "<Комментарий к заказу>");
СтруктураЗаказа.Вставить("developer_key" , "<Ключ разработчика (для разработчиков модулей)>");
СтруктураЗаказа.Вставить("shipment_point" , "<Код ПВЗ СДЭК для самостоятельного привоза клиентом>");
СтруктураЗаказа.Вставить("delivery_point" , "<Код офиса СДЭК, на который будет доставлена посылка>");
СтруктураЗаказа.Вставить("date_invoice" , "<Дата инвойса>");
СтруктураЗаказа.Вставить("shipper_name" , "<Грузоотправитель>");
СтруктураЗаказа.Вставить("shipper_address" , "<Адрес грузоотправителя>");
СтруктураОтправителя = Новый Структура;
СтруктураОтправителя.Вставить("company" , "<Название компании>");
СтруктураОтправителя.Вставить("name" , "<ФИО контактного лица>");
СтруктураОтправителя.Вставить("email" , "<Email для оповещений RFC 2822>");
СтруктураОтправителя.Вставить("passport_series" , "<Серия паспорта>");
СтруктураОтправителя.Вставить("passport_number" , "<Номер паспорта>");
СтруктураОтправителя.Вставить("passport_date_of_issue" , "<Дата выдачи паспорта>");
СтруктураОтправителя.Вставить("passport_organization" , "<Орган выдачи паспорта>");
СтруктураОтправителя.Вставить("tin" , "<ИНН>");
СтруктураОтправителя.Вставить("passport_date_of_birth" , "<Дата рождения>");
СтруктураОтправителя.Вставить("contragent_type" , "<Тип отправителя: LEGAL_ENTITY, INDIVIDUAL >");
МассивТелефонов = Новый Массив;
СтруктураТелефона = Новый Структура;
СтруктураТелефона.Вставить("number" , "<Номер телефона>");
СтруктураТелефона.Вставить("additional", "<Дополнительная информация (добавочный номер)>");
МассивТелефонов.Добавить(СтруктураТелефона);
СтруктураОтправителя.Вставить("phones", МассивТелефонов);
СтруктураЗаказа.Вставить("sender", СтруктураОтправителя);
СтруктураАдреса = Новый Структура;
СтруктураАдреса.Вставить("code" , "<Код населенного пункта СДЭК>");
СтруктураАдреса.Вставить("fias_guid" , "<Уникальный идентификатор ФИАС>");
СтруктураАдреса.Вставить("postal_code" , "<Почтовый индекс>");
СтруктураАдреса.Вставить("longitude" , "<Долгота>");
СтруктураАдреса.Вставить("latitude" , "<Широта>");
СтруктураАдреса.Вставить("country_code", "<Код страны в формате ISO_3166-1_alpha-2>");
СтруктураАдреса.Вставить("region" , "<Название региона, уточняющий параметр для поля city>");
СтруктураАдреса.Вставить("region_code" , "<Код региона СДЭК, уточняющий параметр для поля city>");
СтруктураАдреса.Вставить("sub_region" , "<Название района региона, уточняющий параметр для поля region>");
СтруктураАдреса.Вставить("city" , "<Название города, уточняющий параметр для postal_code>");
СтруктураАдреса.Вставить("kladr_code" , "<Код КЛАДР>");
СтруктураАдреса.Вставить("address" , "<Строка адреса >");
СтруктураЗаказа.Вставить("from_location", СтруктураАдреса);
СтруктураЗаказа.Вставить("to_location" , СтруктураАдреса);
СтруктураУслуги = Новый Структура;
СтруктураУслуги.Вставить("code" , "<Тип дополнительной услуги>");
СтруктураУслуги.Вставить("parameter", "<Параметр дополнительной услуги>");
СтруктураЗаказа.Вставить("services" , СтруктураУслуги);
СтруктураЗаказа.Вставить("print" , "<Необходимость сформировать печатную форму>");
СтруктураЗаказа.Вставить("is_client_return" , "<Клиентский возврат>");
СтруктураЗаказа.Вставить("accompanying_number", "<Номер сопроводительной накладной>");
СтруктураЗаказа.Вставить("widget_token" , "<Токен, полученный от widget.cdek.ru>");
Если ИнтернетМагазин Тогда
СтруктураЗаказа.Вставить("number", "<Номер заказа в ИС Клиента (uuid, если не заполнено)>");
СтруктураСбора = Новый Структура;
СтруктураСбора.Вставить("value" , "<Сумма дополнительного сбора (в том числе и НДС)>");
СтруктураСбора.Вставить("vat_sum" , "<Сумма НДС>");
СтруктураСбора.Вставить("vat_rate", "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>");
СтруктураЗаказа.Вставить("delivery_recipient_cost", СтруктураСбора);
МассивПорогов = Новый Массив;
СтруктураПорога = Новый Структура;
СтруктураПорога.Вставить("threshold", "<Порог стоимости товара в целых единицах валюты>");
СтруктураПорога.Вставить("sum" , "<Доп. сбор за доставку товаров, общая стоимость которых в интервале>");
СтруктураПорога.Вставить("vat_sum" , "<Сумма НДС, включённая в доп. сбор за доставку>");
СтруктураПорога.Вставить("vat_rate" , "<Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС)>");
МассивПорогов.Добавить(СтруктураПорога);
СтруктураЗаказа.Вставить("delivery_recipient_cost_adv", МассивПорогов);
СтруктураПродавца = Новый Структура;
СтруктураПродавца.Вставить("name" , "<Наименование истинного продавца>");
СтруктураПродавца.Вставить("inn" , "<ИНН истинного продавца>");
СтруктураПродавца.Вставить("phone" , "<Телефон истинного продавца>");
СтруктураПродавца.Вставить("ownership_form", "<Код формы собственности>");
СтруктураПродавца.Вставить("address" , "<Адрес истинного продавца>");
СтруктураЗаказа.Вставить("seller", СтруктураПродавца);
КонецЕсли;
КонецЕсли;
Если Пустая Тогда
СтруктураЗаказа = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураЗаказа);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураЗаказа;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции

View File

@ -425,6 +425,43 @@
КонецФункции
Функция ОчиститьКоллекциюРекурсивно(Знач Коллекция) Экспорт
ТипЗначения = ТипЗнч(Коллекция);
Если ТипЗначения = Тип("Структура") Или ТипЗначения = Тип("Соответствие") Тогда
Для Каждого ЭлементКоллекции Из Коллекция Цикл
ОчищенноеПоле = ОчиститьКоллекциюРекурсивно(ЭлементКоллекции.Значение);
Коллекция[ЭлементКоллекции.Ключ] = ОчищенноеПоле;
КонецЦикла;
ИначеЕсли ТипЗначения = Тип("Массив") Тогда
Коллекция_ = Новый Массив;
Для Каждого ЭлементКоллекции Из Коллекция Цикл
ОчищенноеПоле = ОчиститьКоллекциюРекурсивно(ЭлементКоллекции);
Коллекция_.Добавить(ОчищенноеПоле);
КонецЦикла;
Коллекция = Коллекция_;
Иначе
Коллекция = "";
КонецЕсли;
Возврат Коллекция;
КонецФункции
Процедура ЗначениеВМассив(Значение) Экспорт
Значение_ = Новый Массив;

View File

@ -213,7 +213,8 @@
НовыйТест(ТаблицаТестов, "ОзонАПИ_РаботаСоСкладами" , "Работа со складами" , Озон);
НовыйТест(ТаблицаТестов, "НС_РаботаСФайлами" , "Работа с файлами" , Неоситиз);
НовыйТест(ТаблицаТестов, "НС_ПолучениеДанных" , "Получение данных" , Неоситиз);
НовыйТест(ТаблицаТестов, "СдэкАПИ_ОбщиеМетоды" , "ОбщиеМетоды" , Сдэк);
НовыйТест(ТаблицаТестов, "СдэкАПИ_ОбщиеМетоды" , "Общие методы" , Сдэк);
НовыйТест(ТаблицаТестов, "СдэкАПИ_РаботаСЗаказами" , "Работа с заказами" , Сдэк);
Возврат ТаблицаТестов;

View File

@ -1996,6 +1996,15 @@
КонецПроцедуры
Процедура СдэкАПИ_РаботаСЗаказами() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token" , ПараметрыТеста);
CDEK_ПолучитьОписаниеЗаказа(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@ -13626,6 +13635,22 @@
КонецПроцедуры
Процедура CDEK_ПолучитьОписаниеЗаказа(ПараметрыФункции)
Результат = OPI_CDEK.ПолучитьОписаниеЗаказа();
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьОписаниеЗаказа", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
Результат = OPI_CDEK.ПолучитьОписаниеЗаказа(Истина);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьОписаниеЗаказа (Пустая)", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти