Обработка позволяет проверить как кой статус у договора 1С:ИТС на текущий момент (Договор 1С:ИТС не оформлен, Срок действия договора 1С:ИТС завершился, Договор 1С:ИТС оформлен), а так же получить информацию о договорах 1С:ИТС по логину пользователя (Пользователь с таким логином не найден, Для данного пользователя проверка 1С:ИТС не предусмотрена, Срок действия договора 1С:ИТС завершился и т.д.)
Для получения информации достаточно просто указать рег.номер или логин ИТС. Для доступа к API вам потребуется Логин и Пароль- как их получить можно прочитать тут:
https://portal.1c.ru/partner/faq#subscription
В результате проверки выводится сообщение с информацией: какой рег.номер, статус, код статуса, описание статуса, описание ошибки (если были), дата начала и окончания договора получены с портала ИТС.
Весь код отработки открыт и так же прилагается ниже
Протестировано на платформе 1С:Предприятие 8.3 (8.3.16.1063) в файловом и клиент серверном режимах.
Наверное аналогия //infostart.ru/public/1104962/ (но проверить не могу- так как там нужно покупать).
&НаСервере
Процедура ПроверитьИТСПоРегНомеруНаСервере()
МестоположениеWSDL = "https://partner-api.1c.ru/api/ws/subscription/v2?wsdl";
URIПространстваИмен = "http://api.repository.onec.ru/v2";
ИмяСервиса = "PartnerSubscriptionApiV2ServiceImplService";
ИмяТочкиПодключения = "PartnerSubscriptionApiV2ServiceImplPort";
ОписаниеОшибки = "";
Прокси = ПроксиСервиса(МестоположениеWSDL, URIПространстваИмен, ИмяСервиса, ИмяТочкиПодключения, ОписаниеОшибки);
// Можно проверять по 100 рег номеров.
МассивРегистрационныхНомеров = Новый Массив;
МассивРегистрационныхНомеров.Добавить(РегистрационныйНомер);
Если ПустаяСтрока(ОписаниеОшибки) Тогда
ФабрикаXDTOСервиса = Прокси.ФабрикаXDTO;
ВходныеПараметры = ФабрикаXDTOСервиса.Создать(Прокси.ФабрикаXDTO.Тип(URIПространстваИмен, "checkItsByRegNum"));
// Передача списка рег.номеров.
ТипregNumList = ФабрикаXDTOСервиса.Тип(URIПространстваИмен, "regNumList");
ОбъектregNumList = ФабрикаXDTOСервиса.Создать(ТипregNumList);
Для Каждого РегНомер Из МассивРегистрационныхНомеров Цикл
ОбъектregNumList.regNumList.Добавить(РегНомер);
КонецЦикла;
ВходныеПараметры.regNumList = ОбъектregNumList;
Попытка
ОбъектXDTO = Прокси.checkItsByRegNum(ВходныеПараметры);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
КонецПопытки;
КонецЕсли;
ПараметрыОтвета = ПараметрыОтветаСервисаПроверкиИТС();
Если ПустаяСтрока(ОписаниеОшибки) Тогда
Для Каждого ОбъектXDTOreturn Из ОбъектXDTO.return Цикл
ПараметрыОтвета.РегНомер = ОбъектXDTOreturn.element;
// AgreementNotExists 101 Договор 1С:ИТС не оформлен
// OldContract 104 Срок действия договора 1С:ИТС завершился
// Success 1 Договор 1С:ИТС оформлен
ПараметрыОтвета.КодСтатуса = ОбъектXDTOreturn.code;
ПараметрыОтвета.Статус = ОбъектXDTOreturn.status;
ПараметрыОтвета.ОписаниеСтатуса = ОбъектXDTOreturn.description;
// Список ошибок.
Для Каждого ОбъектXDTOsubscriptionInfoList Из ОбъектXDTOreturn.subscriptionInfoList Цикл
ПараметрыОтвета.ОписаниеОшибки = ОбъектXDTOsubscriptionInfoList.description;
ПараметрыОтвета.ДатаНачала = ОбъектXDTOsubscriptionInfoList.startDate;
ПараметрыОтвета.ДатаОкончания = ОбъектXDTOsubscriptionInfoList.endDate;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Для Каждого Параметр Из ПараметрыОтвета Цикл
Сообщить(Параметр.Ключ + " / " + Параметр.Значение);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПроверитьИТСПоЛогинуНаСервере()
МестоположениеWSDL = "https://partner-api.1c.ru/api/ws/subscription/v2?wsdl";
URIПространстваИмен = "http://api.repository.onec.ru/v2";
ИмяСервиса = "PartnerSubscriptionApiV2ServiceImplService";
ИмяТочкиПодключения = "PartnerSubscriptionApiV2ServiceImplPort";
ОписаниеОшибки = "";
Прокси = ПроксиСервиса(МестоположениеWSDL, URIПространстваИмен, ИмяСервиса, ИмяТочкиПодключения, ОписаниеОшибки);
Если ПустаяСтрока(ОписаниеОшибки) Тогда
ФабрикаXDTOСервиса = Прокси.ФабрикаXDTO;
ВходныеПараметры = ФабрикаXDTOСервиса.Создать(Прокси.ФабрикаXDTO.Тип(URIПространстваИмен, "checkItsByLogin"));
// Передача списка логинов.
ТипloginList = ФабрикаXDTOСервиса.Тип(URIПространстваИмен, "loginList");
ОбъектloginList = ФабрикаXDTOСервиса.Создать(ТипloginList);
// Так же можно проверять и массив как сделано в ПроверитьИТСПоРегНомеруНаСервере
ОбъектloginList.loginList.Добавить(РегистрационныйНомер);
ВходныеПараметры.loginList = ОбъектloginList;
Попытка
ОбъектXDTO = Прокси.checkItsByLogin(ВходныеПараметры);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
КонецПопытки;
КонецЕсли;
ПараметрыОтвета = ПараметрыОтветаСервисаПроверкиИТС();
Если ПустаяСтрока(ОписаниеОшибки) Тогда
Для Каждого ОбъектXDTOreturn Из ОбъектXDTO.return Цикл
// LoginNotFound 102 Пользователь с таким логином не найден
// IsNotUser 103 Для данного пользователя проверка 1С:ИТС не предусмотрена
// OldContract 104 Срок действия договора 1С:ИТС завершился
// NoContract 105 У пользователя нет действующего договора 1С:ИТС
// Success 1 Договор 1С:ИТС оформлен
ПараметрыОтвета.КодСтатуса = ОбъектXDTOreturn.code;
ПараметрыОтвета.Статус = ОбъектXDTOreturn.status;
ПараметрыОтвета.ОписаниеСтатуса = ОбъектXDTOreturn.description;
// Список ошибок.
Для Каждого ОбъектXDTOsubscriptionInfoList Из ОбъектXDTOreturn.subscriptionInfoList Цикл
ПараметрыОтвета.ОписаниеОшибки = ОбъектXDTOsubscriptionInfoList.description;
ПараметрыОтвета.ДатаНачала = ОбъектXDTOsubscriptionInfoList.startDate;
ПараметрыОтвета.ДатаОкончания = ОбъектXDTOsubscriptionInfoList.endDate;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Для Каждого Параметр Из ПараметрыОтвета Цикл
Сообщить(Параметр.Ключ + " / " + Параметр.Значение);
КонецЦикла;
КонецПроцедуры
#Область СлужебныеПроцедурыИФункции
Функция ПроксиСервиса(URLМестоположенияWSDL, URIПространстваИмен, ИмяСервиса, ИмяТочкиПодключения, ОписаниеОшибки)
Прокси = Неопределено;
ПараметрыПодключения = ОбщегоНазначения.ПараметрыПодключенияWSПрокси();
ПараметрыПодключения.АдресWSDL = URLМестоположенияWSDL;
ПараметрыПодключения.URIПространстваИмен = URIПространстваИмен;
ПараметрыПодключения.ИмяСервиса = ИмяСервиса;
ПараметрыПодключения.ИмяТочкиПодключения = ИмяТочкиПодключения;
ПараметрыПодключения.ИмяПользователя = ЛогинAPI;
ПараметрыПодключения.Пароль = ПарольAPI;
ПараметрыПодключения.Таймаут = 60;
Попытка
Прокси = ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения);
Исключение
ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Возврат Прокси;
КонецФункции
Функция ПараметрыОтветаСервисаПроверкиИТС()
ПараметрыОтвета = Новый Структура;
ПараметрыОтвета.Вставить("РегНомер", "");
ПараметрыОтвета.Вставить("КодСтатуса", "");
ПараметрыОтвета.Вставить("Статус", "");
ПараметрыОтвета.Вставить("ОписаниеСтатуса", "");
ПараметрыОтвета.Вставить("ОписаниеОшибки", "");
ПараметрыОтвета.Вставить("ДатаНачала", "");
ПараметрыОтвета.Вставить("ДатаОкончания", "");
Возврат ПараметрыОтвета;
КонецФункции // ПараметрыОтветаСервисаПроверкиИТС()
#КонецОбласти