initial commit

This commit is contained in:
Dmitry Belyaev 2022-08-02 09:39:54 +03:00
commit ba1d8d6ab2
8 changed files with 2681 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/*.e[rp]f

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.14">
<Form uuid="ba8d10e7-eeb5-480c-82b0-b1a35bacd73a">
<Properties>
<Name>Форма</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
<ExtendedPresentation/>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,470 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.14">
<Group>AlwaysHorizontal</Group>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ПолучитьСписокЛицензий" id="71">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ПолучитьСписокЛицензий</CommandName>
<ExtendedTooltip name="ПолучитьСписокЛицензийРасширеннаяПодсказка" id="72"/>
</Button>
<Button name="ПолучитьПолнуюИнформациюОЛицензии" id="73">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ПолучитьПолнуюИнформациюОЛицензии</CommandName>
<ExtendedTooltip name="ПолучитьПолнуюИнформациюОЛицензииРасширеннаяПодсказка" id="74"/>
</Button>
<Button name="ПроверкаВалидностиЛицензий" id="75">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ПроверкаВалидностиЛицензий</CommandName>
<ExtendedTooltip name="ПроверкаВалидностиЛицензийРасширеннаяПодсказка" id="76"/>
</Button>
<Button name="ФормаАктивироватьЛицензию" id="159">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.АктивироватьЛицензию</CommandName>
<ExtendedTooltip name="ФормаАктивироватьЛицензиюРасширеннаяПодсказка" id="160"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnOpen">ПриОткрытии</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<Table name="СписокЛицензий" id="1">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<DataPath>Объект.СписокЛицензий</DataPath>
<CommandSet>
<ExcludedCommand>Change</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>Delete</ExcludedCommand>
</CommandSet>
<RowFilter xsi:nil="true"/>
<ContextMenu name="СписокЛицензийКонтекстноеМеню" id="2"/>
<AutoCommandBar name="СписокЛицензийКоманднаяПанель" id="3">
<ChildItems>
<Button name="СписокЛицензийПовторнаяАктивацияЛицензии" id="153">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ПовторнаяАктивацияЛицензии</CommandName>
<ExtendedTooltip name="СписокЛицензийПовторнаяАктивацияЛицензииРасширеннаяПодсказка" id="154"/>
</Button>
<Button name="СписокЛицензийУдалитьЛицензию" id="155">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.УдалитьЛицензию</CommandName>
<ExtendedTooltip name="СписокЛицензийУдалитьЛицензиюРасширеннаяПодсказка" id="156"/>
</Button>
</ChildItems>
</AutoCommandBar>
<ExtendedTooltip name="СписокЛицензийРасширеннаяПодсказка" id="4"/>
<SearchStringAddition name="СписокЛицензийСтрокаПоиска" id="5">
<AdditionSource>
<Item>СписокЛицензий</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="СписокЛицензийСтрокаПоискаКонтекстноеМеню" id="6"/>
<ExtendedTooltip name="СписокЛицензийСтрокаПоискаРасширеннаяПодсказка" id="7"/>
</SearchStringAddition>
<ViewStatusAddition name="СписокЛицензийСостояниеПросмотра" id="8">
<AdditionSource>
<Item>СписокЛицензий</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<HorizontalLocation>Left</HorizontalLocation>
<ContextMenu name="СписокЛицензийСостояниеПросмотраКонтекстноеМеню" id="9"/>
<ExtendedTooltip name="СписокЛицензийСостояниеПросмотраРасширеннаяПодсказка" id="10"/>
</ViewStatusAddition>
<SearchControlAddition name="СписокЛицензийУправлениеПоиском" id="11">
<AdditionSource>
<Item>СписокЛицензий</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="СписокЛицензийУправлениеПоискомКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="СписокЛицензийУправлениеПоискомРасширеннаяПодсказка" id="13"/>
</SearchControlAddition>
<Events>
<Event name="BeforeAddRow">СписокЛицензийПередНачаломДобавления</Event>
<Event name="OnActivateRow">СписокЛицензийПриАктивизацииСтроки</Event>
</Events>
<ChildItems>
<LabelField name="СписокЛицензийНомерСтроки" id="14">
<DataPath>Объект.СписокЛицензий.LineNumber</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СписокЛицензийНомерСтрокиКонтекстноеМеню" id="15"/>
<ExtendedTooltip name="СписокЛицензийНомерСтрокиРасширеннаяПодсказка" id="16"/>
</LabelField>
<InputField name="СписокЛицензийНомерЛицензии" id="17">
<DataPath>Объект.СписокЛицензий.НомерЛицензии</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СписокЛицензийНомерЛицензииКонтекстноеМеню" id="18"/>
<ExtendedTooltip name="СписокЛицензийНомерЛицензииРасширеннаяПодсказка" id="19"/>
</InputField>
<InputField name="СписокЛицензийОписание" id="20">
<DataPath>Объект.СписокЛицензий.Описание</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СписокЛицензийОписаниеКонтекстноеМеню" id="21"/>
<ExtendedTooltip name="СписокЛицензийОписаниеРасширеннаяПодсказка" id="22"/>
</InputField>
<InputField name="СписокЛицензийКоличествоЛицензий" id="80">
<DataPath>Объект.СписокЛицензий.КоличествоЛицензий</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СписокЛицензийКоличествоЛицензийКонтекстноеМеню" id="81"/>
<ExtendedTooltip name="СписокЛицензийКоличествоЛицензийРасширеннаяПодсказка" id="82"/>
</InputField>
<InputField name="СписокЛицензийПинКод" id="23">
<DataPath>Объект.СписокЛицензий.ПинКод</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СписокЛицензийПинКодКонтекстноеМеню" id="24"/>
<ExtendedTooltip name="СписокЛицензийПинКодРасширеннаяПодсказка" id="25"/>
</InputField>
<CheckBoxField name="СписокЛицензийАктивна" id="77">
<DataPath>Объект.СписокЛицензий.Активна</DataPath>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="СписокЛицензийАктивнаКонтекстноеМеню" id="78"/>
<ExtendedTooltip name="СписокЛицензийАктивнаРасширеннаяПодсказка" id="79"/>
</CheckBoxField>
<InputField name="СписокЛицензийДатаАктивации" id="56">
<DataPath>Объект.СписокЛицензий.ДатаАктивации</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СписокЛицензийДатаАктивацииКонтекстноеМеню" id="57"/>
<ExtendedTooltip name="СписокЛицензийДатаАктивацииРасширеннаяПодсказка" id="58"/>
</InputField>
<InputField name="СписокЛицензийРегистрационныйНомер" id="59">
<DataPath>Объект.СписокЛицензий.РегистрационныйНомер</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СписокЛицензийРегистрационныйНомерКонтекстноеМеню" id="60"/>
<ExtendedTooltip name="СписокЛицензийРегистрационныйНомерРасширеннаяПодсказка" id="61"/>
</InputField>
<InputField name="СписокЛицензийКодПродукта" id="62">
<DataPath>Объект.СписокЛицензий.КодПродукта</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СписокЛицензийКодПродуктаКонтекстноеМеню" id="63"/>
<ExtendedTooltip name="СписокЛицензийКодПродуктаРасширеннаяПодсказка" id="64"/>
</InputField>
<InputField name="СписокЛицензийИмяФайлаЛицензии" id="65">
<DataPath>Объект.СписокЛицензий.ИмяФайлаЛицензии</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СписокЛицензийИмяФайлаЛицензииКонтекстноеМеню" id="66"/>
<ExtendedTooltip name="СписокЛицензийИмяФайлаЛицензииРасширеннаяПодсказка" id="67"/>
</InputField>
</ChildItems>
</Table>
<UsualGroup name="ГруппаПодробно" id="83">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа подробно</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа подробно</v8:content>
</v8:item>
</ToolTip>
<HorizontalStretch>true</HorizontalStretch>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаПодробноРасширеннаяПодсказка" id="84"/>
<ChildItems>
<Pages name="ГруппаСтраницыИнформация" id="115">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа страницы информация</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа страницы информация</v8:content>
</v8:item>
</ToolTip>
<PagesRepresentation>TabsOnTop</PagesRepresentation>
<ExtendedTooltip name="ГруппаСтраницыИнформацияРасширеннаяПодсказка" id="116"/>
<ChildItems>
<Page name="ГруппаИнфо" id="122">
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Информация</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа инфо</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="ГруппаИнфоРасширеннаяПодсказка" id="123"/>
<ChildItems>
<InputField name="СписокЛицензийОписание1" id="142">
<DataPath>Items.СписокЛицензий.CurrentData.Описание</DataPath>
<ContextMenu name="СписокЛицензийОписание1КонтекстноеМеню" id="143"/>
<ExtendedTooltip name="СписокЛицензийОписание1РасширеннаяПодсказка" id="144"/>
</InputField>
<InputField name="СписокЛицензийКоличествоЛицензий1" id="124">
<DataPath>Items.СписокЛицензий.CurrentData.КоличествоЛицензий</DataPath>
<ContextMenu name="СписокЛицензийКоличествоЛицензий1КонтекстноеМеню" id="125"/>
<ExtendedTooltip name="СписокЛицензийКоличествоЛицензий1РасширеннаяПодсказка" id="126"/>
</InputField>
<InputField name="СписокЛицензийНомерЛицензии1" id="145">
<DataPath>Items.СписокЛицензий.CurrentData.НомерЛицензии</DataPath>
<ContextMenu name="СписокЛицензийНомерЛицензии1КонтекстноеМеню" id="146"/>
<ExtendedTooltip name="СписокЛицензийНомерЛицензии1РасширеннаяПодсказка" id="147"/>
</InputField>
<InputField name="СписокЛицензийПинКод1" id="139">
<DataPath>Items.СписокЛицензий.CurrentData.ПинКод</DataPath>
<ContextMenu name="СписокЛицензийПинКод1КонтекстноеМеню" id="140"/>
<ExtendedTooltip name="СписокЛицензийПинКод1РасширеннаяПодсказка" id="141"/>
</InputField>
<InputField name="СписокЛицензийКодПродукта1" id="133">
<DataPath>Items.СписокЛицензий.CurrentData.КодПродукта</DataPath>
<ContextMenu name="СписокЛицензийКодПродукта1КонтекстноеМеню" id="134"/>
<ExtendedTooltip name="СписокЛицензийКодПродукта1РасширеннаяПодсказка" id="135"/>
</InputField>
<CheckBoxField name="СписокЛицензийАктивна1" id="127">
<DataPath>Items.СписокЛицензий.CurrentData.Активна</DataPath>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="СписокЛицензийАктивна1КонтекстноеМеню" id="128"/>
<ExtendedTooltip name="СписокЛицензийАктивна1РасширеннаяПодсказка" id="129"/>
</CheckBoxField>
<InputField name="СписокЛицензийРегистрационныйНомер1" id="136">
<DataPath>Items.СписокЛицензий.CurrentData.РегистрационныйНомер</DataPath>
<ContextMenu name="СписокЛицензийРегистрационныйНомер1КонтекстноеМеню" id="137"/>
<ExtendedTooltip name="СписокЛицензийРегистрационныйНомер1РасширеннаяПодсказка" id="138"/>
</InputField>
<InputField name="СписокЛицензийИмяФайлаЛицензии1" id="130">
<DataPath>Items.СписокЛицензий.CurrentData.ИмяФайлаЛицензии</DataPath>
<ContextMenu name="СписокЛицензийИмяФайлаЛицензии1КонтекстноеМеню" id="131"/>
<ExtendedTooltip name="СписокЛицензийИмяФайлаЛицензии1РасширеннаяПодсказка" id="132"/>
</InputField>
</ChildItems>
</Page>
<Page name="ГруппаДанныеАктивации" id="117">
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Данные активации</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа данные активации</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="ГруппаДанныеАктивацииРасширеннаяПодсказка" id="118"/>
<ChildItems>
<InputField name="СписокЛицензийФамилия" id="85">
<DataPath>Items.СписокЛицензий.CurrentData.Фамилия</DataPath>
<ContextMenu name="СписокЛицензийФамилияКонтекстноеМеню" id="86"/>
<ExtendedTooltip name="СписокЛицензийФамилияРасширеннаяПодсказка" id="87"/>
</InputField>
<InputField name="СписокЛицензийИмя" id="88">
<DataPath>Items.СписокЛицензий.CurrentData.Имя</DataPath>
<ContextMenu name="СписокЛицензийИмяКонтекстноеМеню" id="89"/>
<ExtendedTooltip name="СписокЛицензийИмяРасширеннаяПодсказка" id="90"/>
</InputField>
<InputField name="СписокЛицензийОтчество" id="91">
<DataPath>Items.СписокЛицензий.CurrentData.Отчество</DataPath>
<ContextMenu name="СписокЛицензийОтчествоКонтекстноеМеню" id="92"/>
<ExtendedTooltip name="СписокЛицензийОтчествоРасширеннаяПодсказка" id="93"/>
</InputField>
<InputField name="СписокЛицензийEMail" id="94">
<DataPath>Items.СписокЛицензий.CurrentData.EMail</DataPath>
<ContextMenu name="СписокЛицензийEMailКонтекстноеМеню" id="95"/>
<ExtendedTooltip name="СписокЛицензийEMailРасширеннаяПодсказка" id="96"/>
</InputField>
<InputField name="СписокЛицензийКомпания" id="97">
<DataPath>Items.СписокЛицензий.CurrentData.Компания</DataPath>
<ContextMenu name="СписокЛицензийКомпанияКонтекстноеМеню" id="98"/>
<ExtendedTooltip name="СписокЛицензийКомпанияРасширеннаяПодсказка" id="99"/>
</InputField>
<InputField name="СписокЛицензийСтрана" id="100">
<DataPath>Items.СписокЛицензий.CurrentData.Страна</DataPath>
<ContextMenu name="СписокЛицензийСтранаКонтекстноеМеню" id="101"/>
<ExtendedTooltip name="СписокЛицензийСтранаРасширеннаяПодсказка" id="102"/>
</InputField>
<InputField name="СписокЛицензийРегион" id="161">
<DataPath>Items.СписокЛицензий.CurrentData.Регион</DataPath>
<ContextMenu name="СписокЛицензийРегионКонтекстноеМеню" id="162"/>
<ExtendedTooltip name="СписокЛицензийРегионРасширеннаяПодсказка" id="163"/>
</InputField>
<InputField name="СписокЛицензийИндекс" id="103">
<DataPath>Items.СписокЛицензий.CurrentData.Индекс</DataPath>
<ContextMenu name="СписокЛицензийИндексКонтекстноеМеню" id="104"/>
<ExtendedTooltip name="СписокЛицензийИндексРасширеннаяПодсказка" id="105"/>
</InputField>
<InputField name="СписокЛицензийРайон" id="164">
<DataPath>Items.СписокЛицензий.CurrentData.Район</DataPath>
<ContextMenu name="СписокЛицензийРайонКонтекстноеМеню" id="165"/>
<ExtendedTooltip name="СписокЛицензийРайонРасширеннаяПодсказка" id="166"/>
</InputField>
<InputField name="СписокЛицензийГород" id="106">
<DataPath>Items.СписокЛицензий.CurrentData.Город</DataPath>
<ContextMenu name="СписокЛицензийГородКонтекстноеМеню" id="107"/>
<ExtendedTooltip name="СписокЛицензийГородРасширеннаяПодсказка" id="108"/>
</InputField>
<InputField name="СписокЛицензийУлица" id="109">
<DataPath>Items.СписокЛицензий.CurrentData.Улица</DataPath>
<ContextMenu name="СписокЛицензийУлицаКонтекстноеМеню" id="110"/>
<ExtendedTooltip name="СписокЛицензийУлицаРасширеннаяПодсказка" id="111"/>
</InputField>
<InputField name="СписокЛицензийДом" id="112">
<DataPath>Items.СписокЛицензий.CurrentData.Дом</DataPath>
<ContextMenu name="СписокЛицензийДомКонтекстноеМеню" id="113"/>
<ExtendedTooltip name="СписокЛицензийДомРасширеннаяПодсказка" id="114"/>
</InputField>
<InputField name="СписокЛицензийСтроение" id="170">
<DataPath>Items.СписокЛицензий.CurrentData.Строение</DataPath>
<ContextMenu name="СписокЛицензийСтроениеКонтекстноеМеню" id="171"/>
<ExtendedTooltip name="СписокЛицензийСтроениеРасширеннаяПодсказка" id="172"/>
</InputField>
<InputField name="СписокЛицензийКвартира" id="167">
<DataPath>Items.СписокЛицензий.CurrentData.Квартира</DataPath>
<ContextMenu name="СписокЛицензийКвартираКонтекстноеМеню" id="168"/>
<ExtendedTooltip name="СписокЛицензийКвартираРасширеннаяПодсказка" id="169"/>
</InputField>
<InputField name="СписокЛицензийДатаАктивации1" id="119">
<DataPath>Items.СписокЛицензий.CurrentData.ДатаАктивации</DataPath>
<ContextMenu name="СписокЛицензийДатаАктивации1КонтекстноеМеню" id="120"/>
<ExtendedTooltip name="СписокЛицензийДатаАктивации1РасширеннаяПодсказка" id="121"/>
</InputField>
</ChildItems>
</Page>
<Page name="ГруппаДругое" id="148">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Другое</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа другое</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="ГруппаДругоеРасширеннаяПодсказка" id="149"/>
<ChildItems>
<InputField name="СписокЛицензийТекстоваяИнформация" id="150">
<DataPath>Items.СписокЛицензий.CurrentData.ТекстоваяИнформация</DataPath>
<ReadOnly>true</ReadOnly>
<MultiLine>true</MultiLine>
<ContextMenu name="СписокЛицензийТекстоваяИнформацияКонтекстноеМеню" id="151"/>
<ExtendedTooltip name="СписокЛицензийТекстоваяИнформацияРасширеннаяПодсказка" id="152"/>
</InputField>
</ChildItems>
</Page>
</ChildItems>
</Pages>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ИнформацияОЛицензиях1С</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
</Attributes>
<Commands>
<Command name="ПолучитьСписокЛицензий" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Получить список лицензий</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Получить список лицензий</v8:content>
</v8:item>
</ToolTip>
<Action>ПолучитьСписокЛицензий</Action>
</Command>
<Command name="ПолучитьПолнуюИнформациюОЛицензии" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Получить полную информацию о лицензиях</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Получить полную информацию о лицензии</v8:content>
</v8:item>
</ToolTip>
<Action>ПолучитьПолнуюИнформациюОЛицензии</Action>
</Command>
<Command name="ПроверкаВалидностиЛицензий" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Проверка валидности лицензий</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Проверка валидности лицензий</v8:content>
</v8:item>
</ToolTip>
<Action>ПроверкаВалидностиЛицензий</Action>
</Command>
<Command name="ПовторнаяАктивацияЛицензии" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Повторная активация лицензии</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Повторная активация лицензии</v8:content>
</v8:item>
</ToolTip>
<Action>ПовторнаяАктивацияЛицензии</Action>
</Command>
<Command name="УдалитьЛицензию" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Удалить лицензию</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Удалить лицензию</v8:content>
</v8:item>
</ToolTip>
<Action>УдалитьЛицензию</Action>
</Command>
<Command name="АктивироватьЛицензию" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Активировать лицензию</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Активировать лицензию</v8:content>
</v8:item>
</ToolTip>
<Action>АктивироватьЛицензию</Action>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,502 @@

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//УИ_ОбщегоНазначения.ФормаИнструментаПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Функция СтрокуВДату(СтрокаДата)
Попытка
СтрокаДата = Прав(СтрокаДата, 10);
МассивДата = Новый Массив;
МассивДата = РазложитьСтрокуВМассивПодстрок(СтрокаДата, ".");
Возврат Дата(Строка(МассивДата[2]) + Строка(МассивДата[1]) + Строка(МассивДата[0]));
Исключение
Возврат Дата(1899, 12, 30);
КонецПопытки;
КонецФункции
// Разбивает строку на несколько строк по разделителю. Разделитель может иметь любую длину.
//
// Параметры:
// Строка - Строка - текст с разделителями;
// Разделитель - Строка - разделитель строк текста, минимум 1 символ;
// ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк.
// Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:
// - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки
// включаются в результат.
// Е если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в
// случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а
// при других разделителях результатом функции будет пустой массив.
// СокращатьНепечатаемыеСимволы - Булево - сокращать непечатаемые символы по краям каждой из найденных подстрок.
//
// Возвращаемое значение:
// Массив - массив строк.
//
// Примеры:
// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",") - возвратит массив из 5 элементов, три из которых - пустые
// строки;
// РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина) - возвратит массив из двух элементов;
// РазложитьСтрокуВМассивПодстрок(" один два ", " ") - возвратит массив из двух элементов;
// РазложитьСтрокуВМассивПодстрок("") - возвратит пустой массив;
// РазложитьСтрокуВМассивПодстрок("",,Ложь) - возвратит массив с одним элементом "" (пустой строкой);
// РазложитьСтрокуВМассивПодстрок("", " ") - возвратит массив с одним элементом "" (пустой строкой);
//
&НаСервере
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено,
СокращатьНепечатаемыеСимволы = Ложь) Экспорт
Результат = Новый Массив;
// Для обеспечения обратной совместимости.
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(Строка) Тогда
Если Разделитель = " " Тогда
Результат.Добавить("");
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецЕсли;
//
Позиция = Найти(Строка, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Строка, Позиция - 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Подстрока));
Иначе
Результат.Добавить(Подстрока);
КонецЕсли;
КонецЕсли;
Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
Позиция = Найти(Строка, Разделитель);
КонецЦикла;
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Строка));
Иначе
Результат.Добавить(Строка);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Процедура ПолучитьСписокЛицензийНаСервере()
Объект.СписокЛицензий.Очистить();
ФайлОтвет = "";
ФайлОшибок = "";
ИмяВременногоФайлаCMD = SPS_СоздатьСистемныйСкрипт("ring license list", ФайлОтвет, ФайлОшибок);
SPS_ЗапуститьСистемныйСкрипт(ИмяВременногоФайлаCMD);
SPS_ВыводФайлаОшибок(ФайлОшибок);
фФайлОтвет = Новый Файл(ФайлОтвет);
Если НЕ фФайлОтвет.Существует() Тогда
ВызватьИсключение "Ошибка чтения результата";
КонецЕсли;
Текст = Новый ЧтениеТекста;
Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета());
стр = "";
Пока стр <> Неопределено Цикл
стр = Текст.ПрочитатьСтроку();
Сообщить(стр);
ПозицияИмениФайла = СтрНайти(стр, "(file name:");
Если ПозицияИмениФайла > 0 Тогда
ПинЛицензия = Лев(стр, ПозицияИмениФайла - 1);
Иначе
ПинЛицензия = стр;
КонецЕсли;
мПинЛицензия = РазложитьСтрокуВМассивПодстрок(ПинЛицензия, "-");
Если мПинЛицензия.Количество() < 2 Тогда
Продолжить;
КонецЕсли;
ИмяФайлаЛицензии = Сред(стр, ПозицияИмениФайла + 13, 99);
ИмяФайлаЛицензии = СтрЗаменить(ИмяФайлаЛицензии, """)", "");
нСтр = Объект.СписокЛицензий.Добавить();
нСтр.ПинКод = мПинЛицензия[0];
нСтр.НомерЛицензии = мПинЛицензия[1];
нСтр.ИмяФайлаЛицензии = ИмяФайлаЛицензии;
нСтр.РучнойВвод = Ложь;
//Сообщить(стр);
КонецЦикла;
Текст.Закрыть();
УдалитьФайлы(ФайлОтвет);
УдалитьФайлы(ИмяВременногоФайлаCMD);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьСписокЛицензий()
ПолучитьСписокЛицензийНаСервере();
КонецПроцедуры
&НаСервере
Функция ЗапросИнформацииОЛицезнии(ИмяЛицензии)
СтруктураОтвета = Новый Структура("Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Город, Регион, Район, Улица, Дом, Строение, Квартира, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий");
ФайлОтвет = "";
ФайлОшибок = "";
ИмяВременногоФайлаCMD = SPS_СоздатьСистемныйСкрипт(СтрШаблон("call ring license info --name %1", ИмяЛицензии), ФайлОтвет, ФайлОшибок);
SPS_ЗапуститьСистемныйСкрипт(ИмяВременногоФайлаCMD);
SPS_ВыводФайлаОшибок(ФайлОшибок);
фФайлОтвет = Новый Файл(ФайлОтвет);
Если НЕ фФайлОтвет.Существует() Тогда
ВызватьИсключение "Ошибка чтения результата";
КонецЕсли;
Текст = Новый ЧтениеТекста;
Текст.Открыть(ФайлОтвет, 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:"));
КонецЕсли;
КонецЦикла;
Текст.Закрыть();
УдалитьФайлы(ФайлОтвет);
УдалитьФайлы(ИмяВременногоФайлаCMD);
Возврат СтруктураОтвета;
КонецФункции
&НаСервере
Функция ЗапросВалидностиЛицезнии(ИмяЛицензии)
ФайлОтвет = "";
ФайлОшибок = "";
ИмяВременногоФайлаCMD = SPS_СоздатьСистемныйСкрипт("call ring license validate --name " + ИмяЛицензии, ФайлОтвет, ФайлОшибок);
SPS_ЗапуститьСистемныйСкрипт(ИмяВременногоФайлаCMD);
SPS_ВыводФайлаОшибок(ФайлОшибок);
фФайлОтвет = Новый Файл(ФайлОтвет);
Если НЕ фФайлОтвет.Существует() Тогда
ВызватьИсключение "Ошибка чтения результата";
КонецЕсли;
Текст = Новый ЧтениеТекста;
Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета());
стр = Текст.Прочитать();
СтруктураОтвета = Новый Структура("Активна, ТекстоваяИнформация");
Если СтрНайти(стр, "License check passed for the following license:") Тогда
СтруктураОтвета.Активна = Истина;
Иначе
СтруктураОтвета.Активна = Ложь;
КонецЕсли;
СтруктураОтвета.ТекстоваяИнформация = стр;
Текст.Закрыть();
УдалитьФайлы(ФайлОтвет);
УдалитьФайлы(ИмяВременногоФайлаCMD);
Возврат СтруктураОтвета;
КонецФункции
&НаКлиенте
Процедура ПолучитьПолнуюИнформациюОЛицензии()
КоличествоЛицензий = Объект.СписокЛицензий.Количество();
значениеИндикатора = 0;
Счетчик = 1;
Для Каждого стр Из Объект.СписокЛицензий Цикл
ТекстСообщения = "Получение информации о лицензиях (" + Строка(КоличествоЛицензий) + " шт.)";
Пояснение = "Запрос информации о лицензии " + стр.НомерЛицензии + ". Всего: " + КоличествоЛицензий;
Картинка = БиблиотекаКартинок.Провести;
значениеИндикатора = 100 / (КоличествоЛицензий / Счетчик);
Состояние(ТекстСообщения, значениеИндикатора, Пояснение, Картинка);
СтруктураЗн = ЗапросИнформацииОЛицезнии(стр.ПинКод + "-" + стр.НомерЛицензии);
ЗаполнитьЗначенияСвойств(стр, СтруктураЗн);
Счетчик = Счетчик + 1;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПроверкаВалидностиЛицензий()
КоличествоЛицензий = Объект.СписокЛицензий.Количество();
значениеИндикатора = 0;
Счетчик = 1;
Для Каждого стр Из Объект.СписокЛицензий Цикл
ТекстСообщения = "Получение информации о лицензиях (" + Строка(КоличествоЛицензий) + " шт.)";
Пояснение = "Запрос информации о лицензии " + стр.НомерЛицензии + ". Всего: " + КоличествоЛицензий;
Картинка = БиблиотекаКартинок.Провести;
значениеИндикатора = 100 / (КоличествоЛицензий / Счетчик);
Состояние(ТекстСообщения, значениеИндикатора, Пояснение, Картинка);
СтруктураЗн = ЗапросВалидностиЛицезнии(стр.ПинКод + "-" + стр.НомерЛицензии);
ЗаполнитьЗначенияСвойств(стр, СтруктураЗн);
Счетчик = Счетчик + 1;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПовторнаяАктивацияЛицензииНаСервере(ПереданныеПараметры)
СтруктураПараметров = Новый Структура(" НовыйПинКод,ПинКод, Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Город, Улица, Дом, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий");
ФайлОтвет = "";
ФайлОшибок = "";
ИмяВременногоФайла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", ФайлОтвет, ФайлОшибок
);
SPS_ЗапуститьСистемныйСкрипт(ИмяВременногоФайлаCMD);
SPS_ВыводФайлаОшибок(ФайлОшибок);
фФайлОтвет = Новый Файл(ФайлОтвет);
Если НЕ фФайлОтвет.Существует() Тогда
ВызватьИсключение "Ошибка чтения результата";
КонецЕсли;
Текст = Новый ЧтениеТекста;
Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета());
стр = Текст.Прочитать();
Сообщить(стр);
Текст.Закрыть();
УдалитьФайлы(ФайлОтвет);
УдалитьФайлы(ИмяВременногоФайлаCMD);
КонецПроцедуры
&НаСервере
Процедура ПослеВводаСтрокиПинкода(ПолученноеЗначение, ПереданныеПараметры) Экспорт
ВведенныйКод = ПолученноеЗначение;
Если ПустаяСтрока(ВведенныйКод) Тогда
Отказ = Истина;
Иначе
ПереданныеПараметры.НовыйПинКод = ВведенныйКод;
ПовторнаяАктивацияЛицензииНаСервере(ПереданныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПовторнаяАктивацияЛицензии(Команда)
ТекущаяСтрока = Элементы.СписокЛицензий.ТекущиеДанные;
СтруктураПараметров = Новый Структура(" НомерЛицензии,НовыйПинКод,ПинКод, Описание, Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Регион, Район,Город, Улица, Дом, Корпус, Квартира, Строение, ДатаАктивации, РегистрационныйНомер, КодПродукта, ТекстоваяИнформация, КоличествоЛицензий");
ЗаполнитьЗначенияСвойств(СтруктураПараметров, ТекущаяСтрока);
Оповещение = Новый ОписаниеОповещения("ПослеВводаСтрокиПинкода", ЭтотОбъект, СтруктураПараметров);
ПоказатьВводСтроки(
Оповещение, , // пропускаем начальное значение
"Введите пин-код для лицензии " + ТекущаяСтрока["НомерЛицензии"], 0, // (необ.) длина
Ложь // (необ.) многострочность
);
КонецПроцедуры
&НаСервере
Процедура УдалитьЛицензиюНаСервере(ИмяЛицензии)
ФайлОтвет = "";
ФайлОшибок = "";
ИмяВременногоФайлаCMD = SPS_СоздатьСистемныйСкрипт("call ring license remove --name " + ИмяЛицензии, ФайлОтвет, ФайлОшибок);
SPS_ЗапуститьСистемныйСкрипт(ИмяВременногоФайлаCMD);
SPS_ВыводФайлаОшибок(ФайлОшибок);
фФайлОтвет = Новый Файл(ФайлОтвет);
Если НЕ фФайлОтвет.Существует() Тогда
ВызватьИсключение "Ошибка чтения результата";
КонецЕсли;
Текст = Новый ЧтениеТекста;
Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета());
стр = Текст.Прочитать();
Сообщить(стр);
Текст.Закрыть();
УдалитьФайлы(ФайлОтвет);
УдалитьФайлы(ИмяВременногоФайлаCMD);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьЛицензию(Команда)
ТекущаяСтрока = Элементы.СписокЛицензий.ТекущиеДанные;
УдалитьЛицензиюНаСервере(ТекущаяСтрока["ПинКод"] + "-" + ТекущаяСтрока["НомерЛицензии"]);
Объект.СписокЛицензий.Удалить(Элементы.СписокЛицензий.ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("ЗагрузитьДанные", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанные()
ПолучитьСписокЛицензий();
ПолучитьПолнуюИнформациюОЛицензии();
//ПроверкаВалидностиЛицензий();
КонецПроцедуры
&НаКлиенте
Процедура СписокЛицензийПриАктивизацииСтроки(Элемент)
Попытка
Элементы.ГруппаДанныеАктивации.ТолькоПросмотр = Элементы.СписокЛицензий.ТекущиеДанные["Активна"];
Элементы.СписокЛицензийАктивироватьЛицензию.Доступность = Не Элементы.СписокЛицензий.ТекущиеДанные["Активна"];
Исключение
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура СписокЛицензийПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
// Вставить содержимое обработчика.
КонецПроцедуры
&НаКлиенте
Процедура АктивироватьЛицензию(Команда)
ПараметрыОткрытия = Новый Структура("Фамилия, Имя, Отчество, EMail, Компания, Страна, Индекс, Регион, Район,Город, Улица, Дом, Корпус, Квартира, Строение");
ТекущаяСтрока = Элементы.СписокЛицензий.ТекущиеДанные;
ЗаполнитьЗначенияСвойств(ПараметрыОткрытия, ТекущаяСтрока);
ОткрытьФорму("ВнешняяОбработка.ИнформацияОЛицензиях1С.Форма.ФормаАктивацииЛицензии", ПараметрыОткрытия);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция SPS_ЭтоWindows()
СистемнаяИнформация = Новый СистемнаяИнформация;
Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция SPS_КодировкаФайлаОтвета()
Возврат ?(SPS_ЭтоWindows(), Неопределено, КодировкаТекста.UTF8);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция SPS_СоздатьСистемныйСкрипт(Знач Команда, ФайлОтвет="", ФайлОшибок="")
Это_Windows = SPS_ЭтоWindows();
ИмяФайлаСкрипта = ПолучитьИмяВременногоФайла(?(Это_Windows, "cmd", "sh"));
Если ПустаяСтрока(ФайлОтвет) Тогда
ФайлОтвет = ПолучитьИмяВременногоФайла("txt");
КонецЕсли;
Если ПустаяСтрока(ФайлОшибок) Тогда
ФайлОшибок = ПолучитьИмяВременногоФайла("log");
КонецЕсли;
ТекстСкрипта = Новый ЗаписьТекста;
ТекстСкрипта.Открыть(ИмяФайлаСкрипта, ?(Это_Windows, КодировкаТекста.ANSI, КодировкаТекста.UTF8));
Если НЕ Это_Windows Тогда
// добавление Шебанг
ТекстСкрипта.ЗаписатьСтроку("#!/bin/sh");
ТекстСкрипта.ЗаписатьСтроку("");
// исправление кодировки вывода (для парсинга)
ТекстСкрипта.ЗаписатьСтроку("export LC_ALL=en_US.UTF8");
// избавляемся от call
Команда = СтрЗаменить(Команда, "call ring", "ring");
КонецЕсли;
// добавляем перенаправления вывода
Команда = СтрШаблон("%1 >%2 2>%3", Команда, ФайлОтвет, ФайлОшибок);
ТекстСкрипта.ЗаписатьСтроку(Команда);
ТекстСкрипта.Закрыть();
Возврат ИмяФайлаСкрипта;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура SPS_ЗапуститьСистемныйСкрипт(Знач ИмяФайлаСкрипта)
Это_Windows = SPS_ЭтоWindows();
// добавляем интерпретатор чтобы запускать скрипт без "chmod +x"
Если НЕ Это_Windows Тогда
ИмяФайлаСкрипта = СтрШаблон("/bin/sh %1", ИмяФайлаСкрипта);
КонецЕсли;
ЗапуститьПриложение(ИмяФайлаСкрипта, КаталогВременныхФайлов(), Истина);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура SPS_ВыводФайлаОшибок(Знач ИмяФайлаОшибок)
фФайл = Новый Файл(ИмяФайлаОшибок);
Если НЕ фФайл.Существует() Тогда
Возврат;
КонецЕсли;
Чтение = Новый ЧтениеТекста(ИмяФайлаОшибок, КодировкаТекста.ANSI);
Текст = Чтение.Прочитать();
Чтение.Закрыть();
Попытка
УдалитьФайлы(ИмяФайлаОшибок);
Исключение
;
КонецПопытки;
Если ПустаяСтрока(СокрЛП(Текст)) Тогда
Возврат;
КонецЕсли;
Сообщить(СтрШаблон("Ошибки: %1%2", Символы.ПС, Текст));
КонецПроцедуры

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.14">
<Form uuid="242b1c92-1c07-499b-9e42-502e24c55a37">
<Properties>
<Name>ФормаАктивацииЛицензии</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма активации лицензии</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
<ExtendedPresentation/>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,445 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.14">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Активация лицензии</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<CommandBarLocation>None</CommandBarLocation>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="ГруппаЛицензия" id="52">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа лицензия</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа лицензия</v8:content>
</v8:item>
</ToolTip>
<Behavior>Usual</Behavior>
<Representation>StrongSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаЛицензияРасширеннаяПодсказка" id="53"/>
<ChildItems>
<InputField name="НомерЛицензии" id="16">
<DataPath>НомерЛицензии</DataPath>
<ContextMenu name="НомерЛицензииКонтекстноеМеню" id="17"/>
<ExtendedTooltip name="НомерЛицензииРасширеннаяПодсказка" id="18"/>
</InputField>
<InputField name="ПинКод" id="28">
<DataPath>ПинКод</DataPath>
<ContextMenu name="ПинКодКонтекстноеМеню" id="29"/>
<ExtendedTooltip name="ПинКодРасширеннаяПодсказка" id="30"/>
</InputField>
<InputField name="ПредыдущийПинКод" id="25">
<DataPath>ПредыдущийПинКод</DataPath>
<ContextMenu name="ПредыдущийПинКодКонтекстноеМеню" id="26"/>
<ExtendedTooltip name="ПредыдущийПинКодРасширеннаяПодсказка" id="27"/>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаВладелецЛицензии" id="54">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Владелец лицензии</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа владелец лицензии</v8:content>
</v8:item>
</ToolTip>
<Behavior>Usual</Behavior>
<Representation>StrongSeparation</Representation>
<ExtendedTooltip name="ГруппаВладелецЛицензииРасширеннаяПодсказка" id="55"/>
<ChildItems>
<InputField name="Компания" id="34">
<DataPath>Компания</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Организация</v8:content>
</v8:item>
</Title>
<ContextMenu name="КомпанияКонтекстноеМеню" id="35"/>
<ExtendedTooltip name="КомпанияРасширеннаяПодсказка" id="36"/>
</InputField>
<InputField name="Фамилия" id="4">
<DataPath>Фамилия</DataPath>
<ContextMenu name="ФамилияКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ФамилияРасширеннаяПодсказка" id="6"/>
</InputField>
<InputField name="Имя" id="43">
<DataPath>Имя</DataPath>
<ContextMenu name="ИмяКонтекстноеМеню" id="44"/>
<ExtendedTooltip name="ИмяРасширеннаяПодсказка" id="45"/>
</InputField>
<InputField name="Отчество" id="31">
<DataPath>Отчество</DataPath>
<ContextMenu name="ОтчествоКонтекстноеМеню" id="32"/>
<ExtendedTooltip name="ОтчествоРасширеннаяПодсказка" id="33"/>
</InputField>
<InputField name="email" id="1">
<DataPath>email</DataPath>
<ContextMenu name="emailКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="emailРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Страна" id="13">
<DataPath>Страна</DataPath>
<ContextMenu name="СтранаКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="СтранаРасширеннаяПодсказка" id="15"/>
</InputField>
<InputField name="Регион" id="19">
<DataPath>Регион</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Регион/Область</v8:content>
</v8:item>
</Title>
<ContextMenu name="РегионКонтекстноеМеню" id="20"/>
<ExtendedTooltip name="РегионРасширеннаяПодсказка" id="21"/>
</InputField>
<InputField name="Индекс" id="40">
<DataPath>Индекс</DataPath>
<ContextMenu name="ИндексКонтекстноеМеню" id="41"/>
<ExtendedTooltip name="ИндексРасширеннаяПодсказка" id="42"/>
</InputField>
<InputField name="Район" id="22">
<DataPath>Район</DataPath>
<ContextMenu name="РайонКонтекстноеМеню" id="23"/>
<ExtendedTooltip name="РайонРасширеннаяПодсказка" id="24"/>
</InputField>
<InputField name="Город" id="49">
<DataPath>Город</DataPath>
<ContextMenu name="ГородКонтекстноеМеню" id="50"/>
<ExtendedTooltip name="ГородРасширеннаяПодсказка" id="51"/>
</InputField>
<InputField name="Улица" id="7">
<DataPath>Улица</DataPath>
<ContextMenu name="УлицаКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="УлицаРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="Дом" id="46">
<DataPath>Дом</DataPath>
<ContextMenu name="ДомКонтекстноеМеню" id="47"/>
<ExtendedTooltip name="ДомРасширеннаяПодсказка" id="48"/>
</InputField>
<InputField name="Строение" id="10">
<DataPath>Строение</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Строение/Корпус</v8:content>
</v8:item>
</Title>
<ContextMenu name="СтроениеКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="СтроениеРасширеннаяПодсказка" id="12"/>
</InputField>
<InputField name="Квартира" id="37">
<DataPath>Квартира</DataPath>
<ContextMenu name="КвартираКонтекстноеМеню" id="38"/>
<ExtendedTooltip name="КвартираРасширеннаяПодсказка" id="39"/>
</InputField>
</ChildItems>
</UsualGroup>
<Button name="Активировать" id="56">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.Активировать</CommandName>
<ExtendedTooltip name="АктивироватьРасширеннаяПодсказка" id="57"/>
</Button>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ИнформацияОЛицензиях1С</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
<Attribute name="Фамилия" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Фамилия</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Имя" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Имя</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Отчество" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Отчество</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="email" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Email</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Компания" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Компания</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Страна" id="7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Страна</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Индекс" id="8">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Индекс</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Регион" id="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Регион</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Район" id="10">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Район</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Город" id="11">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Город</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Улица" id="12">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Улица</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Дом" id="13">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дом</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Строение" id="14">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Строение</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Квартира" id="15">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Квартира</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="НомерЛицензии" id="16">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Номер лицензии</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ПинКод" id="17">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пин код</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ПредыдущийПинКод" id="18">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предыдущий пин код</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="Активировать" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Активировать</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Активировать</v8:content>
</v8:item>
</ToolTip>
<Action>Активировать</Action>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,142 @@
&НаСервере
Функция АктивироватьНаСервере()
ФайлОтвет = "";
ФайлОшибок = "";
ИмяВременногоФайла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);
SPS_ВыводФайлаОшибок(ФайлОшибок);
фФайлОтвет = Новый Файл(ФайлОтвет);
Если НЕ фФайлОтвет.Существует() Тогда
ВызватьИсключение "Ошибка чтения результата";
КонецЕсли;
Текст = Новый ЧтениеТекста;
Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета());
стр = Текст.Прочитать();
Сообщить(стр);
Текст.Закрыть();
УдалитьФайлы(ФайлОтвет);
УдалитьФайлы(ИмяВременногоФайлаCMD);
Возврат стр;
КонецФункции
&НаКлиенте
Процедура Активировать(Команда)
АктивироватьНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Фамилия = Параметры.Фамилия;
Имя = Параметры.Имя;
Отчество = Параметры.Отчество;
Компания = Параметры.Компания;
email = Параметры.email;
Страна = Параметры.Страна;
Индекс = Параметры.Индекс;
Регион = Параметры.Регион;
Район = Параметры.Район;
Город = Параметры.Город;
Улица = Параметры.Улица;
Дом = Параметры.Дом;
Строение = Параметры.Строение;
Квартира = Параметры.Квартира;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция SPS_ЭтоWindows()
СистемнаяИнформация = Новый СистемнаяИнформация;
Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция SPS_КодировкаФайлаОтвета()
Возврат ?(SPS_ЭтоWindows(), Неопределено, КодировкаТекста.UTF8);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция SPS_СоздатьСистемныйСкрипт(Знач Команда, ФайлОтвет="", ФайлОшибок="")
Это_Windows = SPS_ЭтоWindows();
ИмяФайлаСкрипта = ПолучитьИмяВременногоФайла(?(Это_Windows, "cmd", "sh"));
Если ПустаяСтрока(ФайлОтвет) Тогда
ФайлОтвет = ПолучитьИмяВременногоФайла("txt");
КонецЕсли;
Если ПустаяСтрока(ФайлОшибок) Тогда
ФайлОшибок = ПолучитьИмяВременногоФайла("log");
КонецЕсли;
ТекстСкрипта = Новый ЗаписьТекста;
ТекстСкрипта.Открыть(ИмяФайлаСкрипта, ?(Это_Windows, КодировкаТекста.ANSI, КодировкаТекста.UTF8));
Если НЕ Это_Windows Тогда
// добавление Шебанг
ТекстСкрипта.ЗаписатьСтроку("#!/bin/sh");
ТекстСкрипта.ЗаписатьСтроку("");
// исправление кодировки вывода (для парсинга)
ТекстСкрипта.ЗаписатьСтроку("export LC_ALL=en_US.UTF8");
// избавляемся от call
Команда = СтрЗаменить(Команда, "call ring", "ring");
КонецЕсли;
// добавляем перенаправления вывода
Команда = СтрШаблон("%1 >%2 2>%3", Команда, ФайлОтвет, ФайлОшибок);
ТекстСкрипта.ЗаписатьСтроку(Команда);
ТекстСкрипта.Закрыть();
Возврат ИмяФайлаСкрипта;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура SPS_ЗапуститьСистемныйСкрипт(Знач ИмяФайлаСкрипта)
Это_Windows = SPS_ЭтоWindows();
// добавляем интерпретатор чтобы запускать скрипт без "chmod +x"
Если НЕ Это_Windows Тогда
ИмяФайлаСкрипта = СтрШаблон("/bin/sh %1", ИмяФайлаСкрипта);
КонецЕсли;
ЗапуститьПриложение(ИмяФайлаСкрипта, КаталогВременныхФайлов(), Истина);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура SPS_ВыводФайлаОшибок(Знач ИмяФайлаОшибок)
фФайл = Новый Файл(ИмяФайлаОшибок);
Если НЕ фФайл.Существует() Тогда
Возврат;
КонецЕсли;
Чтение = Новый ЧтениеТекста(ИмяФайлаОшибок, КодировкаТекста.ANSI);
Текст = Чтение.Прочитать();
Чтение.Закрыть();
Попытка
УдалитьФайлы(ИмяФайлаОшибок);
Исключение
;
КонецПопытки;
Если ПустаяСтрока(СокрЛП(Текст)) Тогда
Возврат;
КонецЕсли;
Сообщить(СтрШаблон("Ошибки: %1%2", Символы.ПС, Текст));
КонецПроцедуры