параметры для активации пинкода через соответствие

This commit is contained in:
Dmitry Belyaev 2022-08-02 11:55:56 +03:00
parent f85ff1df02
commit 7dd339b37c
2 changed files with 111 additions and 49 deletions

View File

@ -6,7 +6,7 @@
Попытка
СтрокаДата = Прав(СтрокаДата, 10);
МассивДата = Новый Массив;
МассивДата = СтрРазделить(СтрокаДата, ".");
МассивДата = СтрРазделить(СтрокаДата, ".", Ложь);
Возврат Дата(Строка(МассивДата[2]) + Строка(МассивДата[1]) + Строка(МассивДата[0]));
Исключение
Возврат Дата(1899, 12, 30);
@ -47,7 +47,7 @@
КонецЕсли;
КонецЕсли;
мПинЛицензия = СтрРазделить(ПинЛицензия, "-");
мПинЛицензия = СтрРазделить(ПинЛицензия, "-", Ложь);
Если мПинЛицензия.Количество() < 2 Тогда
Продолжить;
КонецЕсли;
@ -108,11 +108,36 @@
// общ
Р.Вставить("License generation date:", "ДатаАктивации");
Р.Вставить("Distribution kit registration number:", "РегистрационныйНомер");
Р.Вставить("DistributionKitRegistrationNumber:", "РегистрационныйНомер");
Р.Вставить("Product code:", "КодПродукта");
Р.Вставить("ProductCode:", "КодПродукта");
Возврат Новый ФиксированноеСоответствие(Р);
КонецФункции
&НаСервереБезКонтекста
Функция Соответсвие_АктивацияПинКода()
Р = Новый Соответствие;
Р.Вставить("Имя", "--first-name");
Р.Вставить("Отчество", "--middle-name");
Р.Вставить("Фамилия", "--last-name");
Р.Вставить("EMail", "--email");
Р.Вставить("Компания", "--company");
Р.Вставить("Страна", "--country");
Р.Вставить("Индекс", "--zip-code");
Р.Вставить("Город", "--town");
Р.Вставить("Регион", "--region");
Р.Вставить("Район", "--district");
Р.Вставить("Улица", "--street");
Р.Вставить("Дом", "--house");
Р.Вставить("Строение", "--building");
Р.Вставить("Квартира", "--apartment");
Р.Вставить("НомерЛицензии", "--serial");
Р.Вставить("НовыйПинКод", "--pin");
Р.Вставить("ПинКод", "--previous-pin");
Возврат Новый ФиксированноеСоответствие(Р);
КонецФункции
&НаСервере
Функция ЗапросИнформацииОЛицезнии(ИмяЛицензии)
СтруктураОтвета = Новый Структура("Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Город, Регион, Район, Улица, Дом, Строение, Квартира, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий");
@ -160,8 +185,8 @@
Позиция_РабМест = СтрНайти(СтруктураОтвета.Описание, " рабочих мест");
Если Позиция_РабМест > 0 Тогда
тСтр = Лев(СтруктураОтвета.Описание, Позиция_РабМест);
мСтр = СтрРазделить(тСтр, " ");
СтруктураОтвета.КоличествоЛицензий = Число(мСтр[мСтр.Количество() - 1]);
мСтр = СтрРазделить(СокрЛП(тСтр), " ", Ложь);
СтруктураОтвета.КоличествоЛицензий = Число(СокрЛП(мСтр[мСтр.Количество() - 1]));
КонецЕсли;
СтруктураОтвета.ДатаАктивации = СтрокуВДату(СтруктураОтвета.ДатаАктивации);
@ -240,31 +265,36 @@
&НаСервере
Процедура ПовторнаяАктивацияЛицензииНаСервере(ПереданныеПараметры)
СтруктураПараметров = Новый Структура(" НовыйПинКод,ПинКод, Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Город, Улица, Дом, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий");
СтруктураПараметров = Новый Структура("НовыйПинКод, ПинКод, Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Город, Улица, Дом, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий");
Кавычка = Символ(34);
Реквизиты = Соответсвие_АктивацияПинКода();
ОбязательныеРеквизиты = СтрРазделить("НомерЛицензии,ПинКод,НовыйПинКод", ",");
СтрокаПараметров = "";
Для Каждого ТекРеквизит Из Реквизиты Цикл
ЭтоОбязательный = Не Неопределено = ОбязательныеРеквизиты.Найти(ТекРеквизит.Ключ);
ЗначениеРеквизита = ПереданныеПараметры[ТекРеквизит.Ключ];
РеквизитЗаполнен = ЗначениеЗаполнено(ЗначениеРеквизита);
ВыводитьРеквизит = ЭтоОбязательный ИЛИ РеквизитЗаполнен;
Если НЕ ВыводитьРеквизит Тогда
Продолжить;
КонецЕсли;
Если НЕ ЭтоОбязательный Тогда
ЗначениеРеквизита = СтрШаблон("%1%2%1", Кавычка, ЗначениеРеквизита);
КонецЕсли;
СтрокаПараметров = СтрокаПараметров + СтрШаблон(" %1 %2", ТекРеквизит.Значение, ЗначениеРеквизита);
КонецЦикла;
ФайлОтвет = "";
ФайлОшибок = "";
ИмяВременногоФайлаCMD = SPS_СоздатьСистемныйСкрипт(
"call ring license activate" + ?(ЗначениеЗаполнено(
ПереданныеПараметры.Имя), " --first-name " + ПереданныеПараметры.Имя, "") + ?(ЗначениеЗаполнено(
ПереданныеПараметры.Отчество), " --middle-name " + ПереданныеПараметры.Отчество, "") + ?(ЗначениеЗаполнено(
ПереданныеПараметры.Фамилия), " --last-name " + ПереданныеПараметры.Фамилия, "") + ?(ЗначениеЗаполнено(
ПереданныеПараметры.EMail), " --email " + ПереданныеПараметры.EMail, "") + ?(ЗначениеЗаполнено(
ПереданныеПараметры.Компания), " --company " + Символ(34) + СтрЗаменить(ПереданныеПараметры.Компания, Символ(
34), "") + Символ(34), "") + ?(ЗначениеЗаполнено(ПереданныеПараметры.Страна), " --country " + Символ(34)
+ ПереданныеПараметры.Страна + Символ(34), "") + ?(ЗначениеЗаполнено(ПереданныеПараметры.Индекс),
" --zip-code " + ПереданныеПараметры.Индекс, "") + ?(ЗначениеЗаполнено(ПереданныеПараметры.Город), " --town "
+ Символ(34) + ПереданныеПараметры.Город + Символ(34), "") + ?(ЗначениеЗаполнено(ПереданныеПараметры.Регион),
" --region " + Символ(34) + ПереданныеПараметры.Регион + Символ(34), "") + ?(ЗначениеЗаполнено(
ПереданныеПараметры.Район), " --district " + Символ(34) + ПереданныеПараметры.Район + Символ(34), "") + ?(
ЗначениеЗаполнено(ПереданныеПараметры.Улица), " --street " + Символ(34) + ПереданныеПараметры.Улица + Символ(
34), "") + ?(ЗначениеЗаполнено(ПереданныеПараметры.Дом), " --house " + Символ(34) + ПереданныеПараметры.Дом
+ Символ(34), "") + ?(ЗначениеЗаполнено(ПереданныеПараметры.Строение), " --building " + Символ(34)
+ ПереданныеПараметры.Строение + Символ(34), "") + ?(ЗначениеЗаполнено(ПереданныеПараметры.Квартира),
" --apartment " + Символ(34) + ПереданныеПараметры.Квартира + Символ(34), "") + " --serial "
+ ПереданныеПараметры.НомерЛицензии + " --pin " + ПереданныеПараметры.НовыйПинКод + " --previous-pin "
+ ПереданныеПараметры.ПинКод + " --validate", ФайлОтвет, ФайлОшибок
);
ИмяВременногоФайлаCMD = SPS_СоздатьСистемныйСкрипт(СтрШаблон("call ring license activate %1 --validate", СтрокаПараметров), ФайлОтвет, ФайлОшибок);
SPS_ЗапуститьСистемныйСкрипт(ИмяВременногоФайлаCMD);
SPS_ВыводФайлаОшибок(ФайлОшибок);

View File

@ -1,22 +1,56 @@
&НаСервере
Функция АктивироватьНаСервере()
&НаСервереБезКонтекста
Функция Соответсвие_АктивацияПинКода()
Р = Новый Соответствие;
Р.Вставить("Имя", "--first-name");
Р.Вставить("Отчество", "--middle-name");
Р.Вставить("Фамилия", "--last-name");
Р.Вставить("EMail", "--email");
Р.Вставить("Компания", "--company");
Р.Вставить("Страна", "--country");
Р.Вставить("Индекс", "--zip-code");
Р.Вставить("Город", "--town");
Р.Вставить("Регион", "--region");
Р.Вставить("Район", "--district");
Р.Вставить("Улица", "--street");
Р.Вставить("Дом", "--house");
Р.Вставить("Строение", "--building");
Р.Вставить("Квартира", "--apartment");
Р.Вставить("НомерЛицензии", "--serial");
Р.Вставить("НовыйПинКод", "--pin");
Р.Вставить("ПинКод", "--previous-pin");
Возврат Новый ФиксированноеСоответствие(Р);
КонецФункции
&НаСервере
Функция АктивироватьНаСервере()
Кавычка = Символ(34);
Реквизиты = Соответсвие_АктивацияПинКода();
ОбязательныеРеквизиты = СтрРазделить("НомерЛицензии,ПинКод,НовыйПинКод", ",");
СтрокаПараметров = "";
Для Каждого ТекРеквизит Из Реквизиты Цикл
ЭтоОбязательный = Не Неопределено = ОбязательныеРеквизиты.Найти(ТекРеквизит.Ключ);
ЗначениеРеквизита = ЭтаФорма[ТекРеквизит.Ключ];
РеквизитЗаполнен = ЗначениеЗаполнено(ЗначениеРеквизита);
ВыводитьРеквизит = ЭтоОбязательный ИЛИ РеквизитЗаполнен;
Если НЕ ВыводитьРеквизит Тогда
Продолжить;
КонецЕсли;
Если НЕ ЭтоОбязательный Тогда
ЗначениеРеквизита = СтрШаблон("%1%2%1", Кавычка, ЗначениеРеквизита);
КонецЕсли;
СтрокаПараметров = СтрокаПараметров + СтрШаблон(" %1 %2", ТекРеквизит.Значение, ЗначениеРеквизита);
КонецЦикла;
ФайлОтвет = "";
ФайлОшибок = "";
ИмяВременногоФайлаCMD = SPS_СоздатьСистемныйСкрипт(
"call ring license activate" + ?(ЗначениеЗаполнено(Имя),
" --first-name " + Имя, "") + ?(ЗначениеЗаполнено(Отчество), " --middle-name " + Отчество, "") + ?(
ЗначениеЗаполнено(Фамилия), " --last-name " + Фамилия, "") + " --email " + EMail + ?(ЗначениеЗаполнено(
Компания), " --company " + Символ(34) + СтрЗаменить(Компания, Символ(34), "") + Символ(34), "") + " --country "
+ Символ(34) + Страна + Символ(34) + " --zip-code " + Индекс + " --town " + Символ(34) + Город + Символ(34) + ?(
ЗначениеЗаполнено(Регион), " --region " + Символ(34) + Регион + Символ(34), "") + ?(ЗначениеЗаполнено(Район),
" --district " + Символ(34) + Район + Символ(34), "") + ?(ЗначениеЗаполнено(Улица), " --street " + Символ(34)
+ Улица + Символ(34), "") + ?(ЗначениеЗаполнено(Дом), " --house " + Символ(34) + Дом + Символ(34), "") + ?(
ЗначениеЗаполнено(Строение), " --building " + Символ(34) + Строение + Символ(34), "") + ?(ЗначениеЗаполнено(
Квартира), " --apartment " + Символ(34) + Квартира + Символ(34), "") + " --serial " + НомерЛицензии + " --pin "
+ ПинКод + ?(ЗначениеЗаполнено(ПредыдущийПинКод), " --previous-pin " + ПредыдущийПинКод, "") + " --validate", ФайлОтвет, ФайлОшибок
);
SPS_ЗапуститьСистемныйСкрипт(ИмяВременногоФайлаCMD);
ИмяВременногоФайлаCMD = SPS_СоздатьСистемныйСкрипт(СтрШаблон("call ring license activate %1 --validate", СтрокаПараметров), ФайлОтвет, ФайлОшибок);
SPS_ВыводФайлаОшибок(ФайлОшибок);
фФайлОтвет = Новый Файл(ФайлОтвет);
@ -86,10 +120,10 @@
Если НЕ Это_Windows Тогда
// добавление Шебанг
ТекстСкрипта.ЗаписатьСтроку("#!/bin/sh");
ТекстСкрипта.ЗаписатьСтроку("");
//ТекстСкрипта.ЗаписатьСтроку("#!/bin/sh");
//ТекстСкрипта.ЗаписатьСтроку("");
// исправление кодировки вывода (для парсинга)
// выбор языка вывода (для парсинга)
ТекстСкрипта.ЗаписатьСтроку("export LC_ALL=en_US.UTF8");
// избавляемся от call
@ -110,9 +144,7 @@
Это_Windows = SPS_ЭтоWindows();
// добавляем интерпретатор чтобы запускать скрипт без "chmod +x"
Если НЕ Это_Windows Тогда
ИмяФайлаСкрипта = СтрШаблон("/bin/sh %1", ИмяФайлаСкрипта);
КонецЕсли;
ИмяФайлаСкрипта = СтрШаблон(?(Это_Windows, "cmd.exe /c %1", "/bin/sh %1"), ИмяФайлаСкрипта);
ЗапуститьПриложение(ИмяФайлаСкрипта, КаталогВременныхФайлов(), Истина);
КонецПроцедуры