доп исправления

This commit is contained in:
Dmitry Belyaev 2022-08-02 10:59:26 +03:00
parent bb635b5074
commit f85ff1df02

View File

@ -1,93 +1,18 @@
&НаСервере &НаСервере
Перем Кеш; Перем Кеш;
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//УИ_ОбщегоНазначения.ФормаИнструментаПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере &НаСервере
Функция СтрокуВДату(СтрокаДата) Функция СтрокуВДату(СтрокаДата)
Попытка Попытка
СтрокаДата = Прав(СтрокаДата, 10); СтрокаДата = Прав(СтрокаДата, 10);
МассивДата = Новый Массив; МассивДата = Новый Массив;
МассивДата = РазложитьСтрокуВМассивПодстрок(СтрокаДата, "."); МассивДата = СтрРазделить(СтрокаДата, ".");
Возврат Дата(Строка(МассивДата[2]) + Строка(МассивДата[1]) + Строка(МассивДата[0])); Возврат Дата(Строка(МассивДата[2]) + Строка(МассивДата[1]) + Строка(МассивДата[0]));
Исключение Исключение
Возврат Дата(1899, 12, 30); Возврат Дата(1899, 12, 30);
КонецПопытки; КонецПопытки;
КонецФункции КонецФункции
// Разбивает строку на несколько строк по разделителю. Разделитель может иметь любую длину.
//
// Параметры:
// Строка - Строка - текст с разделителями;
// Разделитель - Строка - разделитель строк текста, минимум 1 символ;
// ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк.
// Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:
// - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки
// включаются в результат.
// Е если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в
// случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а
// при других разделителях результатом функции будет пустой массив.
// СокращатьНепечатаемыеСимволы - Булево - сокращать непечатаемые символы по краям каждой из найденных подстрок.
//
// Возвращаемое значение:
// Массив - массив строк.
//
// Примеры:
// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",") - возвратит массив из 5 элементов, три из которых - пустые
// строки;
// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина) - возвратит массив из двух элементов;
// РазложитьСтрокуВМассивПодстрок(" один два ", " ") - возвратит массив из двух элементов;
// РазложитьСтрокуВМассивПодстрок("") - возвратит пустой массив;
// РазложитьСтрокуВМассивПодстрок("",,Ложь) - возвратит массив с одним элементом "" (пустой строкой);
// РазложитьСтрокуВМассивПодстрок("", " ") - возвратит массив с одним элементом "" (пустой строкой);
//
&НаСервере
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено,
СокращатьНепечатаемыеСимволы = Ложь) Экспорт
Результат = Новый Массив;
// Для обеспечения обратной совместимости.
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(Строка) Тогда
Если Разделитель = " " Тогда
Результат.Добавить("");
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецЕсли;
//
Позиция = Найти(Строка, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Строка, Позиция - 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Подстрока));
Иначе
Результат.Добавить(Подстрока);
КонецЕсли;
КонецЕсли;
Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
Позиция = Найти(Строка, Разделитель);
КонецЦикла;
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Строка));
Иначе
Результат.Добавить(Строка);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере &НаСервере
Процедура ПолучитьСписокЛицензийНаСервере() Процедура ПолучитьСписокЛицензийНаСервере()
Объект.СписокЛицензий.Очистить(); Объект.СписокЛицензий.Очистить();
@ -109,15 +34,20 @@
стр = ""; стр = "";
Пока стр <> Неопределено Цикл Пока стр <> Неопределено Цикл
стр = Текст.ПрочитатьСтроку(); стр = Текст.ПрочитатьСтроку();
Сообщить(стр);
ПозицияИмениФайла = СтрНайти(стр, "(file name:"); ПозицияИмениФайла = СтрНайти(стр, "(file name:");
Если ПозицияИмениФайла > 0 Тогда
ПинЛицензия = Лев(стр, ПозицияИмениФайла - 1);
Иначе
ПозицияИмениФайла = СтрНайти(стр, "(имя файла:");
Если ПозицияИмениФайла > 0 Тогда Если ПозицияИмениФайла > 0 Тогда
ПинЛицензия = Лев(стр, ПозицияИмениФайла - 1); ПинЛицензия = Лев(стр, ПозицияИмениФайла - 1);
Иначе Иначе
ПинЛицензия = стр; ПинЛицензия = стр;
КонецЕсли;
КонецЕсли; КонецЕсли;
мПинЛицензия = РазложитьСтрокуВМассивПодстрок(ПинЛицензия, "-"); мПинЛицензия = СтрРазделить(ПинЛицензия, "-");
Если мПинЛицензия.Количество() < 2 Тогда Если мПинЛицензия.Количество() < 2 Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@ -128,13 +58,10 @@
нСтр.НомерЛицензии = мПинЛицензия[1]; нСтр.НомерЛицензии = мПинЛицензия[1];
нСтр.ИмяФайлаЛицензии = ИмяФайлаЛицензии; нСтр.ИмяФайлаЛицензии = ИмяФайлаЛицензии;
нСтр.РучнойВвод = Ложь; нСтр.РучнойВвод = Ложь;
//Сообщить(стр);
КонецЦикла; КонецЦикла;
Текст.Закрыть(); Текст.Закрыть();
УдалитьФайлы(ФайлОтвет); УдалитьФайлы(ФайлОтвет);
УдалитьФайлы(ИмяВременногоФайлаCMD); УдалитьФайлы(ИмяВременногоФайлаCMD);
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@ -186,7 +113,6 @@
Возврат Новый ФиксированноеСоответствие(Р); Возврат Новый ФиксированноеСоответствие(Р);
КонецФункции КонецФункции
&НаСервере &НаСервере
Функция ЗапросИнформацииОЛицезнии(ИмяЛицензии) Функция ЗапросИнформацииОЛицезнии(ИмяЛицензии)
СтруктураОтвета = Новый Структура("Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Город, Регион, Район, Улица, Дом, Строение, Квартира, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий"); СтруктураОтвета = Новый Структура("Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Город, Регион, Район, Улица, Дом, Строение, Квартира, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий");
@ -234,7 +160,7 @@
Позиция_РабМест = СтрНайти(СтруктураОтвета.Описание, " рабочих мест"); Позиция_РабМест = СтрНайти(СтруктураОтвета.Описание, " рабочих мест");
Если Позиция_РабМест > 0 Тогда Если Позиция_РабМест > 0 Тогда
тСтр = Лев(СтруктураОтвета.Описание, Позиция_РабМест); тСтр = Лев(СтруктураОтвета.Описание, Позиция_РабМест);
мСтр = РазложитьСтрокуВМассивПодстрок(тСтр, " "); мСтр = СтрРазделить(тСтр, " ");
СтруктураОтвета.КоличествоЛицензий = Число(мСтр[мСтр.Количество() - 1]); СтруктураОтвета.КоличествоЛицензий = Число(мСтр[мСтр.Количество() - 1]);
КонецЕсли; КонецЕсли;
@ -263,7 +189,7 @@
Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета()); Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета());
стр = Текст.Прочитать(); стр = Текст.Прочитать();
СтруктураОтвета = Новый Структура("Активна, ТекстоваяИнформация"); СтруктураОтвета = Новый Структура("Активна, ТекстоваяИнформация");
Если СтрНайти(стр, "License check passed for the following license:") Тогда Если СтрНайти(стр, "License check passed for the following license:") > 0 ИЛИ СтрНайти(стр, "выполнена успешно") > 0 Тогда
СтруктураОтвета.Активна = Истина; СтруктураОтвета.Активна = Истина;
Иначе Иначе
СтруктураОтвета.Активна = Ложь; СтруктураОтвета.Активна = Ложь;