diff --git a/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl b/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl index 6ecf117..2389134 100644 --- a/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl +++ b/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl @@ -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:")); - Если СтрНайти(стр, " рабочих мест") Тогда - тСтр = Лев(стр, СтрНайти(стр, " рабочих мест")); - мСтр = РазложитьСтрокуВМассивПодстрок(тСтр, " "); - СтруктураОтвета.КоличествоЛицензий = Число(мСтр[мСтр.Количество() - 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:")); - КонецЕсли; - КонецЦикла; + + ДлинаСтроки = СтрДлина(стр); + + Для Каждого ТекРеквизит Из Реквизиты Цикл + Если Не Неопределено = РазобранныеРеквизиты.Получить(ТекРеквизит.Ключ) Тогда + Продолжить; + КонецЕсли; + + Позиция_ТекРеквизит = СтрНайти(стр, ТекРеквизит.Ключ); + Если 0 = Позиция_ТекРеквизит Тогда + Продолжить; + КонецЕсли; + + СтруктураОтвета[ТекРеквизит.Значение] = Прав(стр, ДлинаСтроки - Позиция_ТекРеквизит - СтрДлина(ТекРеквизит.Ключ)); + СтруктураОтвета[ТекРеквизит.Значение] = СокрЛП(СтруктураОтвета[ТекРеквизит.Значение]); + РазобранныеРеквизиты.Вставить(ТекРеквизит.Ключ, Истина); + + Прервать; + КонецЦикла; + КонецЦикла; + + Позиция_РабМест = СтрНайти(СтруктураОтвета.Описание, " рабочих мест"); + Если Позиция_РабМест > 0 Тогда + тСтр = Лев(СтруктураОтвета.Описание, Позиция_РабМест); + мСтр = РазложитьСтрокуВМассивПодстрок(тСтр, " "); + СтруктураОтвета.КоличествоЛицензий = Число(мСтр[мСтр.Количество() - 1]); + КонецЕсли; + + СтруктураОтвета.ДатаАктивации = СтрокуВДату(СтруктураОтвета.ДатаАктивации); + Текст.Закрыть(); УдалитьФайлы(ФайлОтвет); УдалитьФайлы(ИмяВременногоФайлаCMD); Возврат СтруктураОтвета; - КонецФункции &НаСервере