Расширение содержит ряд запросов, которые далее парсятся на записи регистра. Записи регистра содержат данные начала и окончания лицензии и сертификата. Это основа, далее можно расписать дополнительный функционал (автоматические рассылки данных по продлениям клиентам, дописать функционал по выполнению одобрений заявлений прям из программы, проверка состава заявления и т.д.).
Написал эту обработку, чтобы контролировать продления в своём френче) Буду рад, если кому-то тоже поможет.
Для подключения обработки рекомендуется использовать платформу не ниже 8.3.23.1739, так как обработка содержит некоторые функции по конвертации JSON. Для использования необходимо нажать кнопку "Получить данные" в регистре сведений "Астрал Отчетность Сведения", после получения данных рекомендуется воспользоваться отчетом, встроенным в обработку для проверки полученных сведений.
Для авторизации в Web-регистраторе требуется Запрос1 и Запрос2 (в Запрос 2 передаются логин и пароль):
Логин = ЛогинКалуга;
Пароль = ПарольКалуга;
СоединениеАстрал = Новый HTTPСоединение("reg.astralnalog.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Запрос1 = Новый HTTPЗапрос("/Authorisation.aspx");
Запрос1.Заголовки.Вставить("accept","*/*");
Запрос1.Заголовки.Вставить("User-Agent","PostmanRuntime/7.42.0");
Запрос1.Заголовки.Вставить("cookie","");
Запрос1.Заголовки.Вставить("Accept-Encoding","gzip, deflate, br");
Запрос1.Заголовки.Вставить("keep-alive","keep-alive");
Результат1 = СоединениеАстрал.Получить(Запрос1);
Куки1 = Результат1.Заголовки.Получить("Set-Cookie");
Куки1 = СтрЗаменить(Куки1, ",", ";");
Запрос2 = Новый HTTPЗапрос("POST");
Запрос2.АдресРесурса = "Authorisation.aspx/LogOn";
ТЕЛО = "{""login"": """ + Логин + """, ""password"": """ +Пароль+ """,""base64SignedData"": null}";
Запрос2.Заголовки.Вставить("HOST", "reg.astralnalog.ru");
Запрос2.Заголовки.Вставить("Content-type", "application/json");
Запрос2.Заголовки.Вставить("Cookie", (Куки1));
Запрос2.Заголовки.Вставить("Origin", "https://reg.astralnalog.ru");
//Запрос2.Заголовки.Вставить("referer", "https://reg.astralnalog.ru/Authorisation.aspx?ReturnUrl=%2FHomePage");
Запрос2.УстановитьТелоИзСтроки(ТЕЛО);
Результат2 = СоединениеАстрал.ВызватьHTTPМетод("POST", Запрос2);
Куки2 = Результат2.Заголовки.Получить("Set-Cookie");
Куки2 = СтрЗаменить(Куки2, ",", ";");
//ДатаФильтраНачало = Формат(ЭтаФорма.Отчет.Период.ДатаНачала, "ДФ=dd.MM.yyyy");
//ДатаФильтраКонец = Формат(ЭтаФорма.Отчет.Период.ДатаОкончания, "ДФ=dd.MM.yyyy");
ДатаФильтраНачало = Формат(ДатаНачала, "ДФ=dd.MM.yyyy");
ДатаФильтраКонец = Формат(ДатаОкончания, "ДФ=dd.MM.yyyy");
СтраницаТекущая = 1;
ВсегоСтраниц = 2;
//ТекстПроверки = "ВЫБРАТЬ
// | АстралОтчетностьСведенияДатыЗапроса.Период КАК Период,
// | АстралОтчетностьСведенияДатыЗапроса.УспешностьЗапроса КАК УспешностьЗапроса
// |ИЗ
// | РегистрСведений.АстралОтчетностьСведенияДатыЗапроса КАК АстралОтчетностьСведенияДатыЗапроса
// |ГДЕ
// | АстралОтчетностьСведенияДатыЗапроса.Период = &Период";
//ЗапросПроверки = Новый Запрос(ТекстПроверки);
//ЗапросПроверки.УстановитьПараметр("Период", Дата(ДатаФильтраНачало));
//РезультатПроверки = ЗапросПроверки.Выполнить();
//ВыборкаПроверки = РезультатПроверки.Выбрать().Следующий();
Если Истина Тогда
Пока СтраницаТекущая < ВсегоСтраниц Цикл
ЗапросЗаписей = "{""_search"":false,""nd"":1732556914754,""rows"":10,""page"":" + Строка(СтраницаТекущая) +",""sidx"":""AbonentName"",""sord"":""asc"",""filterContext"":{""currentPageIndex"":" + Строка(СтраницаТекущая) + ",""productTypeFilter"":""4"",""dateFilterType"":""tariffActual"",""beginDate"":""" + ДатаФильтраНачало + """,""endDate"":""" + ДатаФильтраКонец + """,""PartnerNameFilter"":null,""SortOrder"":""asc"",""SortColumn"":""AbonentName""}}";
//Сообщить(Куки2);
Запрос3 = Новый HTTPЗапрос("/ReportModule/GetTariffValidityPeriodReportData");
Запрос3.АдресРесурса = "/ReportModule/GetTariffValidityPeriodReportData";
Запрос3.Заголовки.Вставить("HOST", "reg.astralnalog.ru");
Запрос3.Заголовки.Вставить("Content-type", "application/json");
Запрос3.Заголовки.Вставить("Cookie", (Куки2));
Запрос3.Заголовки.Вставить("accept", "application/json, text/javascript, */*; q=0.01");
Запрос3.УстановитьТелоИзСтроки(ЗапросЗаписей);
//Результат2 = СоединениеАстрал.Получить(Запрос2);
Результат3 = СоединениеАстрал.ВызватьHTTPМетод("POST", Запрос3);
ЭлементыСтрока = Результат3.ПолучитьТелоКакСтроку();
МассивЭлементов = ПрочитатьЗначениеJSON(ЭлементыСтрока);
ВсегоСтраниц = МассивЭлементов.total;
СписокАбонентов = МассивЭлементов.rows;
Для Каждого С1 из СписокАбонентов Цикл
с = С1.cell;
НоваяЗапись = РегистрыСведений.АстралОтчетностьСведения.СоздатьМенеджерЗаписи();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.ДатаНачалаД = (с[4] + " 00:00:00");
НоваяЗапись.ДатаНачалаДействияСертификата = Дата(с[7]+ " 00:00:00");
НоваяЗапись.ДатаОкончанияДействияСертификата = Дата(с[8]+ " 00:00:00");
НоваяЗапись.ДатаНачалаДействияТарифа = Дата(с[5]+ " 00:00:00");
НоваяЗапись.ДатаОкончанияДействияТарифа = Дата(с[6]+ " 00:00:00");
НоваяЗапись.ИНН = с[1];
НоваяЗапись.КПП = с[2];
ПроверкаКлиентаПоИННИКПП = "ВЫБРАТЬ
| Клиенты.Ссылка КАК Ссылка,
| Клиенты.ИНН КАК ИНН,
| Клиенты.КПП КАК КПП
|ИЗ
| Справочник.Клиенты КАК Клиенты
|ГДЕ
| Клиенты.ИНН = &ИНН
| И Клиенты.КПП = &КПП";
ЗапросПроверки = Новый Запрос(ПроверкаКлиентаПоИННИКПП);
ЗапросПроверки.УстановитьПараметр("ИНН", с[1]);
ЗапросПроверки.УстановитьПараметр("КПП", с[2]);
РезультатПроверки = ЗапросПроверки.Выполнить();
Если РезультатПроверки.Пустой() Тогда
новыйЭлемент = Справочники.Клиенты.СоздатьЭлемент();
новыйЭлемент.Наименование = с[0];
новыйЭлемент.ИНН = с[1];
новыйЭлемент.КПП = с[2];
новыйЭлемент.Записать();
НоваяЗапись.Клиент = новыйЭлемент.Ссылка;
НоваяЗапись.НаименованиеТарифа = с[9];
НоваяЗапись.Записать(Истина);
Иначе
РезультатВыборки = РезультатПроверки.Выбрать();
РезультатВыборки.Следующий();
НоваяЗапись.Клиент = РезультатВыборки.Ссылка;
НоваяЗапись.НаименованиеТарифа = с[9];
НоваяЗапись.Записать(Истина);
КонецЕсли;
КонецЦикла;
СтраницаТекущая = СтраницаТекущая + 1;
КонецЦикла;
//Запись = РегистрыСведений.АстралОтчетностьСведенияДатыЗапроса.СоздатьМенеджерЗаписи();
//Запись.Период = Дата(ДатаНачала);
//Запись.Записать();
КонецЕсли;
Тестирование проводилось на платформе 8.3.27.1508, но использование обработки доступно с платформы начиная с версии 8.3.23.1739.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.23.66
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.181.10
Вступайте в нашу телеграмм-группу Инфостарт