разбор информации о лицензии с помощью соответствия

This commit is contained in:
Dmitry Belyaev 2022-08-02 10:12:10 +03:00
parent ba1d8d6ab2
commit b849ece67d

View File

@ -142,6 +142,51 @@
ПолучитьСписокЛицензийНаСервере();
КонецПроцедуры
&НаСервереБезКонтекста
Функция Соответствие_РазборИнформацииОЛицензии()
Р = Новый Соответствие;
// англ
Р.Вставить("First name:", "Имя");
Р.Вставить("Middle name:", "Отчество");
Р.Вставить("Last name:", "Фамилия");
Р.Вставить("Email:", "Email");
Р.Вставить("Company:", "Компания");
Р.Вставить("Country:", "Страна");
Р.Вставить("ZIP code:", "Индекс");
Р.Вставить("Region:", "Регион");
Р.Вставить("Town:", "Город");
Р.Вставить("District:", "Район");
Р.Вставить("Building:", "Строение");
Р.Вставить("Apartment:", "Квартира");
Р.Вставить("Street:", "Улица");
Р.Вставить("House:", "Дом");
Р.Вставить("Description:", "Описание");
// рус
Р.Вставить("Имя:", "Имя");
Р.Вставить("Отчество:", "Отчество");
Р.Вставить("Фамилия:", "Фамилия");
Р.Вставить("e-mail:", "Email");
Р.Вставить("Компания:", "Компания");
Р.Вставить("Страна:", "Страна");
Р.Вставить("Индекс:", "Индекс");
Р.Вставить("Регион/область:", "Регион");
Р.Вставить("Район:", "Район");
Р.Вставить("Город:", "Город");
Р.Вставить("Улица:", "Улица");
Р.Вставить("Дом:", "Дом");
Р.Вставить("Описание:", "Описание");
// общ
Р.Вставить("License generation date:", "ДатаАктивации");
Р.Вставить("Distribution kit registration number:", "РегистрационныйНомер");
Р.Вставить("Product code:", "КодПродукта");
Возврат Новый ФиксированноеСоответствие(Р);
КонецФункции
&НаСервере
Функция ЗапросИнформацииОЛицезнии(ИмяЛицензии)
СтруктураОтвета = Новый Структура("Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Город, Регион, Район, Улица, Дом, Строение, Квартира, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий");
@ -156,64 +201,49 @@
ВызватьИсключение "Ошибка чтения результата";
КонецЕсли;
Реквизиты = Соответствие_РазборИнформацииОЛицензии();
РазобранныеРеквизиты = Новый Соответствие;
Текст = Новый ЧтениеТекста;
Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета());
стр = "";
Пока стр <> Неопределено Цикл
стр = Текст.ПрочитатьСтроку();
Если СтрНайти(стр, "First name:") > 0 Тогда
СтруктураОтвета.Имя = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "First name:") - СтрДлина("First name:"));
ИначеЕсли СтрНайти(стр, "Middle name:") > 0 Тогда
СтруктураОтвета.Отчество = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Middle name:") - СтрДлина(
"Middle name:"));
ИначеЕсли СтрНайти(стр, "Last name:") > 0 Тогда
СтруктураОтвета.Фамилия = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Last name:") - СтрДлина("Last name:"));
ИначеЕсли СтрНайти(стр, "Email:") > 0 Тогда
СтруктураОтвета.Email = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Email:") - СтрДлина("Email:"));
ИначеЕсли СтрНайти(стр, "Company:") > 0 Тогда
СтруктураОтвета.Компания = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Company:") - СтрДлина("Company:"));
ИначеЕсли СтрНайти(стр, "Country:") > 0 Тогда
СтруктураОтвета.Страна = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Country:") - СтрДлина("Country:"));
ИначеЕсли СтрНайти(стр, "ZIP code:") > 0 Тогда
СтруктураОтвета.Индекс = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "ZIP code:") - СтрДлина("ZIP code:"));
ИначеЕсли СтрНайти(стр, "Town:") > 0 Тогда
СтруктураОтвета.Город = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Town:") - СтрДлина("Town:"));
ИначеЕсли СтрНайти(стр, "Region:") > 0 Тогда
СтруктураОтвета.Регион = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Region:") - СтрДлина("Region:"));
ИначеЕсли СтрНайти(стр, "District:") > 0 Тогда
СтруктураОтвета.Район = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "District:") - СтрДлина("District:"));
ИначеЕсли СтрНайти(стр, "Building:") > 0 Тогда
СтруктураОтвета.Строение = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Building:") - СтрДлина("Building:"));
ИначеЕсли СтрНайти(стр, "Apartment:") > 0 Тогда
СтруктураОтвета.Квартира = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Apartment:") - СтрДлина("Apartment:"));
ИначеЕсли СтрНайти(стр, "Street:") > 0 Тогда
СтруктураОтвета.Улица = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Street:") - СтрДлина("Street:"));
ИначеЕсли СтрНайти(стр, "House:") > 0 Тогда
СтруктураОтвета.Дом = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "House:") - СтрДлина("House:"));
ИначеЕсли СтрНайти(стр, "Description:") > 0 Тогда
СтруктураОтвета.Описание = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Description:") - СтрДлина(
"Description:"));
Если СтрНайти(стр, " рабочих мест") Тогда
тСтр = Лев(стр, СтрНайти(стр, " рабочих мест"));
ДлинаСтроки = СтрДлина(стр);
Для Каждого ТекРеквизит Из Реквизиты Цикл
Если Не Неопределено = РазобранныеРеквизиты.Получить(ТекРеквизит.Ключ) Тогда
Продолжить;
КонецЕсли;
Позиция_ТекРеквизит = СтрНайти(стр, ТекРеквизит.Ключ);
Если 0 = Позиция_ТекРеквизит Тогда
Продолжить;
КонецЕсли;
СтруктураОтвета[ТекРеквизит.Значение] = Прав(стр, ДлинаСтроки - Позиция_ТекРеквизит - СтрДлина(ТекРеквизит.Ключ));
СтруктураОтвета[ТекРеквизит.Значение] = СокрЛП(СтруктураОтвета[ТекРеквизит.Значение]);
РазобранныеРеквизиты.Вставить(ТекРеквизит.Ключ, Истина);
Прервать;
КонецЦикла;
КонецЦикла;
Позиция_РабМест = СтрНайти(СтруктураОтвета.Описание, " рабочих мест");
Если Позиция_РабМест > 0 Тогда
тСтр = Лев(СтруктураОтвета.Описание, Позиция_РабМест);
мСтр = РазложитьСтрокуВМассивПодстрок(тСтр, " ");
СтруктураОтвета.КоличествоЛицензий = Число(мСтр[мСтр.Количество() - 1]);
КонецЕсли;
ИначеЕсли СтрНайти(стр, "License generation date:") > 0 Тогда
СтруктураОтвета.ДатаАктивации = СтрокуВДату(Прав(стр, СтрДлина(стр) - СтрНайти(стр,
"License generation date:") - СтрДлина("License generation date:")));
ИначеЕсли СтрНайти(стр, "Distribution kit registration number:") > 0 Тогда
СтруктураОтвета.РегистрационныйНомер = Прав(стр, СтрДлина(стр) - СтрНайти(стр,
"Distribution kit registration number:") - СтрДлина("Distribution kit registration number:"));
ИначеЕсли СтрНайти(стр, "Product code:") > 0 Тогда
СтруктураОтвета.КодПродукта = Прав(стр, СтрДлина(стр) - СтрНайти(стр, "Product code:") - СтрДлина(
"Product code:"));
КонецЕсли;
КонецЦикла;
СтруктураОтвета.ДатаАктивации = СтрокуВДату(СтруктураОтвета.ДатаАктивации);
Текст.Закрыть();
УдалитьФайлы(ФайлОтвет);
УдалитьФайлы(ИмяВременногоФайлаCMD);
Возврат СтруктураОтвета;
КонецФункции
&НаСервере