From 7dd339b37cd11cea3656ebcf57c4d2c73034078e Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 2 Aug 2022 11:55:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D1=80=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=B0=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BF=D0=B8=D0=BD=D0=BA=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D1=81=D0=BE?= =?UTF-8?q?=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Forms/Форма/Ext/Form/Module.bsl | 84 +++++++++++++------ .../Forms/ФормаАктивацииЛицензии/Ext/Form/Module.bsl | 76 ++++++++++++----- 2 files changed, 111 insertions(+), 49 deletions(-) diff --git a/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl b/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl index 68ffeeb..f1b3f41 100644 --- a/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl +++ b/src/ИнформацияОЛицензиях1С/Forms/Форма/Ext/Form/Module.bsl @@ -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_ВыводФайлаОшибок(ФайлОшибок); diff --git a/src/ИнформацияОЛицензиях1С/Forms/ФормаАктивацииЛицензии/Ext/Form/Module.bsl b/src/ИнформацияОЛицензиях1С/Forms/ФормаАктивацииЛицензии/Ext/Form/Module.bsl index ac897a8..3a81972 100644 --- a/src/ИнформацияОЛицензиях1С/Forms/ФормаАктивацииЛицензии/Ext/Form/Module.bsl +++ b/src/ИнформацияОЛицензиях1С/Forms/ФормаАктивацииЛицензии/Ext/Form/Module.bsl @@ -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"), ИмяФайлаСкрипта); ЗапуститьПриложение(ИмяФайлаСкрипта, КаталогВременныхФайлов(), Истина); КонецПроцедуры