From f85ff1df02c6861d5064e8a5372834ad2fec5e7c Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 2 Aug 2022 10:59:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=BF=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Forms/Форма/Ext/Form/Module.bsl | 98 +++---------------- 1 file changed, 12 insertions(+), 86 deletions(-) diff --git a/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl b/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl index 909d94e..68ffeeb 100644 --- a/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl +++ b/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl @@ -1,93 +1,18 @@ &НаСервере Перем Кеш; -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - //УИ_ОбщегоНазначения.ФормаИнструментаПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка); -КонецПроцедуры - &НаСервере Функция СтрокуВДату(СтрокаДата) Попытка СтрокаДата = Прав(СтрокаДата, 10); МассивДата = Новый Массив; - МассивДата = РазложитьСтрокуВМассивПодстрок(СтрокаДата, "."); + МассивДата = СтрРазделить(СтрокаДата, "."); Возврат Дата(Строка(МассивДата[2]) + Строка(МассивДата[1]) + Строка(МассивДата[0])); Исключение Возврат Дата(1899, 12, 30); КонецПопытки; КонецФункции -// Разбивает строку на несколько строк по разделителю. Разделитель может иметь любую длину. -// -// Параметры: -// Строка - Строка - текст с разделителями; -// Разделитель - Строка - разделитель строк текста, минимум 1 символ; -// ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк. -// Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией: -// - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки -// включаются в результат. -// Е если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в -// случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а -// при других разделителях результатом функции будет пустой массив. -// СокращатьНепечатаемыеСимволы - Булево - сокращать непечатаемые символы по краям каждой из найденных подстрок. -// -// Возвращаемое значение: -// Массив - массив строк. -// -// Примеры: -// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",") - возвратит массив из 5 элементов, три из которых - пустые -// строки; -// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина) - возвратит массив из двух элементов; -// РазложитьСтрокуВМассивПодстрок(" один два ", " ") - возвратит массив из двух элементов; -// РазложитьСтрокуВМассивПодстрок("") - возвратит пустой массив; -// РазложитьСтрокуВМассивПодстрок("",,Ложь) - возвратит массив с одним элементом "" (пустой строкой); -// РазложитьСтрокуВМассивПодстрок("", " ") - возвратит массив с одним элементом "" (пустой строкой); -// -&НаСервере -Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, - СокращатьНепечатаемыеСимволы = Ложь) Экспорт - - Результат = Новый Массив; - - // Для обеспечения обратной совместимости. - Если ПропускатьПустыеСтроки = Неопределено Тогда - ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь); - Если ПустаяСтрока(Строка) Тогда - Если Разделитель = " " Тогда - Результат.Добавить(""); - КонецЕсли; - Возврат Результат; - КонецЕсли; - КонецЕсли; - // - - Позиция = Найти(Строка, Разделитель); - Пока Позиция > 0 Цикл - Подстрока = Лев(Строка, Позиция - 1); - Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда - Если СокращатьНепечатаемыеСимволы Тогда - Результат.Добавить(СокрЛП(Подстрока)); - Иначе - Результат.Добавить(Подстрока); - КонецЕсли; - КонецЕсли; - Строка = Сред(Строка, Позиция + СтрДлина(Разделитель)); - Позиция = Найти(Строка, Разделитель); - КонецЦикла; - - Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда - Если СокращатьНепечатаемыеСимволы Тогда - Результат.Добавить(СокрЛП(Строка)); - Иначе - Результат.Добавить(Строка); - КонецЕсли; - КонецЕсли; - - Возврат Результат; - -КонецФункции - &НаСервере Процедура ПолучитьСписокЛицензийНаСервере() Объект.СписокЛицензий.Очистить(); @@ -109,15 +34,20 @@ стр = ""; Пока стр <> Неопределено Цикл стр = Текст.ПрочитатьСтроку(); - Сообщить(стр); - ПозицияИмениФайла = СтрНайти(стр, "(file name:"); + + ПозицияИмениФайла = СтрНайти(стр, "(file name:"); Если ПозицияИмениФайла > 0 Тогда ПинЛицензия = Лев(стр, ПозицияИмениФайла - 1); Иначе - ПинЛицензия = стр; + ПозицияИмениФайла = СтрНайти(стр, "(имя файла:"); + Если ПозицияИмениФайла > 0 Тогда + ПинЛицензия = Лев(стр, ПозицияИмениФайла - 1); + Иначе + ПинЛицензия = стр; + КонецЕсли; КонецЕсли; - мПинЛицензия = РазложитьСтрокуВМассивПодстрок(ПинЛицензия, "-"); + мПинЛицензия = СтрРазделить(ПинЛицензия, "-"); Если мПинЛицензия.Количество() < 2 Тогда Продолжить; КонецЕсли; @@ -128,13 +58,10 @@ нСтр.НомерЛицензии = мПинЛицензия[1]; нСтр.ИмяФайлаЛицензии = ИмяФайлаЛицензии; нСтр.РучнойВвод = Ложь; - - //Сообщить(стр); КонецЦикла; Текст.Закрыть(); УдалитьФайлы(ФайлОтвет); УдалитьФайлы(ИмяВременногоФайлаCMD); - КонецПроцедуры &НаКлиенте @@ -186,7 +113,6 @@ Возврат Новый ФиксированноеСоответствие(Р); КонецФункции - &НаСервере Функция ЗапросИнформацииОЛицезнии(ИмяЛицензии) СтруктураОтвета = Новый Структура("Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Город, Регион, Район, Улица, Дом, Строение, Квартира, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий"); @@ -234,7 +160,7 @@ Позиция_РабМест = СтрНайти(СтруктураОтвета.Описание, " рабочих мест"); Если Позиция_РабМест > 0 Тогда тСтр = Лев(СтруктураОтвета.Описание, Позиция_РабМест); - мСтр = РазложитьСтрокуВМассивПодстрок(тСтр, " "); + мСтр = СтрРазделить(тСтр, " "); СтруктураОтвета.КоличествоЛицензий = Число(мСтр[мСтр.Количество() - 1]); КонецЕсли; @@ -263,7 +189,7 @@ Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета()); стр = Текст.Прочитать(); СтруктураОтвета = Новый Структура("Активна, ТекстоваяИнформация"); - Если СтрНайти(стр, "License check passed for the following license:") Тогда + Если СтрНайти(стр, "License check passed for the following license:") > 0 ИЛИ СтрНайти(стр, "выполнена успешно") > 0 Тогда СтруктураОтвета.Активна = Истина; Иначе СтруктураОтвета.Активна = Ложь;