diff --git a/src/Configuration/Configuration.mdo b/src/Configuration/Configuration.mdo index 7fee588..b6a925c 100644 --- a/src/Configuration/Configuration.mdo +++ b/src/Configuration/Configuration.mdo @@ -1533,6 +1533,7 @@ DataProcessor.ЗаменаИОбъединениеЭлементов DataProcessor.ЗаполнениеГрафиковРаботы DataProcessor.ЗаполнениеКалендарныхГрафиков + DataProcessor.Запуск DataProcessor.КомандыПроцессов DataProcessor.КонструкторФормул DataProcessor.МенеджерРелизов @@ -1553,6 +1554,7 @@ DataProcessor.РезультатыОбновленияПрограммы DataProcessor.РекомендацияПоПовышениюСкоростиРаботы DataProcessor.Сканирование + DataProcessor.Терминал DataProcessor.УдалениеПомеченныхОбъектов DataProcessor.УправлениеЗадачами InformationRegister.БезопасноеХранилищеДанных diff --git a/src/DataProcessors/Запуск/Forms/Форма/Form.form b/src/DataProcessors/Запуск/Forms/Форма/Form.form new file mode 100644 index 0000000..bd16080 --- /dev/null +++ b/src/DataProcessors/Запуск/Forms/Форма/Form.form @@ -0,0 +1,2323 @@ + + + + <key>ru</key> + <value>Мастер настроек</value> + + + ГруппаШаги + 58 + + ГруппаСозданиеПользователя + 60 + + Декорация10 + 107 + + <key>ru</key> + <value><b>Добро пожаловать</> в <s>маин</> мастер настроек. +Важные ограничения. +1) База не предполагается к работе в web-клиенте +2) Каталоги создаются и должны быть доступны от пользователя от которого запускается 1с!</value> + + true + true + + true + + + Декорация10РасширеннаяПодсказка + 109 + Label + true + true + + Left + + + + Декорация10КонтекстноеМеню + 108 + true + + true + Label + true + true + + Left + + + + Декорация4 + 69 + true + true + + true + + + Декорация4РасширеннаяПодсказка + 71 + Label + true + true + + Left + + + + Декорация4КонтекстноеМеню + 70 + true + + Label + true + true + + Left + + + + ИмяПользователя + 130 + true + true + + true + + + ИмяПользователя + + + ИмяПользователяРасширеннаяПодсказка + 132 + Label + true + true + + Left + + + + ИмяПользователяКонтекстноеМеню + 131 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + + + ИмяПользователяGit + 41 + true + true + + true + + + ИмяПользователяGit + + + ИмяПользователяGitРасширеннаяПодсказка + 43 + Label + true + true + + Left + + + + ИмяПользователяGitКонтекстноеМеню + 42 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + + + ПочтаПользователяGit + 44 + true + true + + true + + + ПочтаПользователяGit + + + ПочтаПользователяGitРасширеннаяПодсказка + 46 + Label + true + true + + Left + + + + ПочтаПользователяGitКонтекстноеМеню + 45 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + + + ПарольGit + 62 + true + true + + true + + + ПарольGit + + + ПарольGitРасширеннаяПодсказка + 64 + Label + true + true + + Left + + + + ПарольGitКонтекстноеМеню + 63 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + + + ТокенGit + 47 + true + true + + true + + + ТокенGit + + + ТокенGitРасширеннаяПодсказка + 49 + Label + true + true + + Left + + + + ТокенGitКонтекстноеМеню + 48 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + + + СоздатьПользователя + 39 + true + true + + true + + + СоздатьПользователяРасширеннаяПодсказка + 40 + Label + true + true + + Left + + + UsualButton + Form.Command.СоздатьПользователя + PictureAndText + true + true + UserCmds + + 255 + 253 + 166 + + + StdPicture.Forward + + Auto + Always + Right + + + НовыйПользователь + 110 + + <key>ru</key> + <value>Пользователь</value> + + true + true + + true + + + НовыйПользователь + + + НовыйПользовательРасширеннаяПодсказка + 112 + Label + true + true + + Left + + + + НовыйПользовательКонтекстноеМеню + 111 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + НастройкиПользователя + 98 + true + true + + true + + + НастройкиПользователя + + + НастройкиПользователяРасширеннаяПодсказка + 100 + Label + true + true + + Left + + + + НастройкиПользователяКонтекстноеМеню + 99 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Создание пользователя</value> + + + ru + Группа создание пользователя + + + ГруппаСозданиеПользователяРасширеннаяПодсказка + 61 + Label + true + true + + Left + + + Page + + Vertical + true + + 0:9e082d71-175a-4e80-8cca-6b538d3240eb + + + + + ГруппаСозданиеПроекта + 65 + + Декорация5 + 72 + true + true + + true + + + Декорация5РасширеннаяПодсказка + 74 + Label + true + true + + Left + + + + Декорация5КонтекстноеМеню + 73 + true + + Label + true + true + + Left + + + + НазваниеПроекта + 55 + true + true + + true + + + НазваниеПроекта + + + НазваниеПроектаРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + + НазваниеПроектаКонтекстноеМеню + 56 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + ru + ERP + + + + + ТаскТрекер + 81 + true + true + + true + + + ТаскТрекер + + + ТаскТрекерРасширеннаяПодсказка + 83 + Label + true + true + + Left + + + + ТаскТрекерКонтекстноеМеню + 82 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + + + ТипРепозитория + 84 + true + true + + true + + + ТипРепозитория + + + ТипРепозиторияРасширеннаяПодсказка + 86 + Label + true + true + + Left + + + + ТипРепозиторияКонтекстноеМеню + 85 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + + + ПутьКGitCloneHTTP + 75 + true + true + + true + + + ПутьКGitCloneHTTP + + + ПутьКGitCloneHTTPРасширеннаяПодсказка + 77 + Label + true + true + + Left + + + + ПутьКGitCloneHTTPКонтекстноеМеню + 76 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + ru + https://github.com/user/example.git + + + + + Декорация9 + 104 + + <key>ru</key> + <value><fontsize 10><b>Структура каталога репозитория</></> +Структура должна быть создана по шаблону <link https://github.com/vanessa-opensource/vanessa-bootstrap>https://github.com/vanessa-opensource/vanessa-bootstrap</>, но erf должны лежать в epf</value> + + true + true + + true + + + Декорация9РасширеннаяПодсказка + 106 + Label + true + true + + Left + + + + Декорация9КонтекстноеМеню + 105 + true + + true + Label + true + true + + Left + + + + ОсновнаяПапка + 28 + true + true + + true + + + ОсновнаяПапка + + + ru + Основной путь к репозиториям + + + ОсновнаяПапкаРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + ОсновнаяПапкаКонтекстноеМеню + 29 + true + + InputField + Enter + true + Left + true + + + StartChoice + ОсновнаяПапкаНачалоВыбора + + true + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + ru + С/:devops/ + + + + + Декорация8 + 95 + + <key>ru</key> + <value><fontsize 10><b>Структура каталога</></> + +devops/ +├── Repositories/ +├──├── Base1/ +├──├── Base2/ +├── Releases/</value> + + true + true + + true + + + Декорация8РасширеннаяПодсказка + 97 + Label + true + true + + Left + + + + Декорация8КонтекстноеМеню + 96 + true + + true + Label + true + true + + Left + + + + ГруппаДляGitLab + 90 + + ИДПроектаРепозитория + 87 + true + true + + true + + + ИДПроектаРепозитория + + + ИДПроектаРепозиторияРасширеннаяПодсказка + 89 + Label + true + true + + Left + + + + ИДПроектаРепозиторияКонтекстноеМеню + 88 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 226 + 248 + 251 + + + + true + true + + true + + + <key>ru</key> + <value>Для git lab</value> + + + ru + Группа для git lab + + + ГруппаДляGitLabРасширеннаяПодсказка + 91 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Collapsible + true + WeakSeparation + true + true + true + Auto + Auto + + + + Декорация6 + 78 + + <key>ru</key> + <value>По умолчанию будет создан проект с режимом работы "Пакетный", для ibcmd надо переключить +По умолчанию конфигурация не будет собираться в релиз</value> + + true + true + + true + + + Декорация6РасширеннаяПодсказка + 80 + Label + true + true + + Left + + + + Декорация6КонтекстноеМеню + 79 + true + + Label + true + true + + Left + + + + СоздатьПроект + 53 + true + true + + true + + + СоздатьПроектРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + UsualButton + Form.Command.СоздатьПроект + Auto + true + true + UserCmds + + 255 + 253 + 166 + + Auto + Right + + + Проект + 101 + true + true + + true + + + Проект + + + ПроектРасширеннаяПодсказка + 103 + Label + true + true + + Left + + + + ПроектКонтекстноеМеню + 102 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Создание проекта</value> + + + ru + Группа создание проекта + + + ГруппаСозданиеПроектаРасширеннаяПодсказка + 66 + Label + true + true + + Left + + + Page + + Vertical + true + + 0:9e082d71-175a-4e80-8cca-6b538d3240eb + + + + + ДобавлениеБаз + 67 + + СчитатьСписокБаз + 1 + + <key>ru</key> + <value>Получить базы</value> + + true + true + + true + + + СчитатьСписокБазРасширеннаяПодсказка + 2 + Label + true + true + + Left + + + UsualButton + Form.Command.СчитатьСписокБаз + Auto + true + true + UserCmds + + 255 + 253 + 166 + + Auto + + + СписокБазДанных + 3 + true + true + + true + + + СписокБазДанных + + None + + СписокБазДанныхИмяБазы + 16 + true + true + + true + + + СписокБазДанных.ИмяБазы + + + СписокБазДанныхИмяБазыРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + СписокБазДанныхИмяБазыКонтекстноеМеню + 17 + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + + СписокБазДанныхПутьКБазе + 19 + true + true + + true + + + СписокБазДанных.ПутьКБазе + + + СписокБазДанныхПутьКБазеРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + СписокБазДанныхПутьКБазеКонтекстноеМеню + 20 + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + + СписокБазДанныхСервер + 22 + true + true + + true + + + СписокБазДанных.Сервер + + + СписокБазДанныхСерверРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + + СписокБазДанныхСерверКонтекстноеМеню + 23 + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + + СписокБазДанныхИмяНаСервере + 25 + true + true + + true + + + СписокБазДанных.ИмяНаСервере + + + СписокБазДанныхИмяНаСервереРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + + СписокБазДанныхИмяНаСервереКонтекстноеМеню + 26 + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + true + + + None + + СписокБазДанныхКоманднаяПанель + 5 + Left + true + + + СписокБазДанныхСтрокаПоиска + 7 + + СписокБазДанныхСтрокаПоискаРасширеннаяПодсказка + 9 + Label + true + true + + Left + + + + СписокБазДанныхСтрокаПоискаКонтекстноеМеню + 8 + true + + СписокБазДанных + + true + + + + СписокБазДанныхСостояниеПросмотра + 10 + + СписокБазДанныхСостояниеПросмотраРасширеннаяПодсказка + 12 + Label + true + true + + Left + + + + СписокБазДанныхСостояниеПросмотраКонтекстноеМеню + 11 + true + + ViewStatusAddition + СписокБазДанных + + true + + + + СписокБазДанныхУправлениеПоиском + 13 + + СписокБазДанныхУправлениеПоискомРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + + СписокБазДанныхУправлениеПоискомКонтекстноеМеню + 14 + true + + SearchControlAddition + СписокБазДанных + + true + + + + СписокБазДанныхРасширеннаяПодсказка + 6 + Label + true + true + + Left + + + + СписокБазДанныхКонтекстноеМеню + 4 + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + AsFileRef + + 209 + 252 + 218 + + +
+ + Декорация7 + 92 + + <key>ru</key> + <value>При создании базы у кластера будут заполнены настройки по умолчанию, при необходимости сменить. +Первоначальнонастройки заполняются исходя из того что у вас 1 сервер и все пути идентичны. +<fontsize 10><b>Убедитесь</></>, что у службы от которой запускается 1с есть права на папку + +После создания баз поменяйте у них имя и пароль</value> + + true + true + + true + + + Декорация7РасширеннаяПодсказка + 94 + Label + true + true + + Left + + + + Декорация7КонтекстноеМеню + 93 + true + + true + Label + true + + Left + + 0:9e082d71-175a-4e80-8cca-6b538d3240eb + + + + + ДобавитьБазы + 37 + true + true + + true + + + ДобавитьБазыРасширеннаяПодсказка + 38 + Label + true + true + + Left + + + UsualButton + Form.Command.ДобавитьБазы + Auto + true + true + UserCmds + + 255 + 253 + 166 + + Auto + Usual + + true + true + + true + + + <key>ru</key> + <value>Добавление баз</value> + + + ru + Добавление баз + + + ДобавлениеБазРасширеннаяПодсказка + 68 + Label + true + true + + Left + + + Page + + Vertical + true + + 200 + 240 + 207 + + +
+ + ГруппаДополнительныеШаги + 113 + + УстановитьОскрипт + 121 + true + true + + true + + + УстановитьОскриптРасширеннаяПодсказка + 122 + Label + true + true + + Left + + + UsualButton + Form.Command.УстановитьОскрипт + Auto + true + true + UserCmds + + 255 + 253 + 166 + + Auto + + + Декорация11 + 127 + + <key>ru</key> + <value>Возможно потребуется рестарт службы 1с</value> + + true + true + + true + + + Декорация11РасширеннаяПодсказка + 129 + Label + true + true + + Left + + + + Декорация11КонтекстноеМеню + 128 + true + + Label + true + true + + Left + + + + УстановитьКЛИ + 125 + true + true + + true + + + УстановитьКЛИРасширеннаяПодсказка + 126 + Label + true + true + + Left + + + UsualButton + Form.Command.УстановитьКЛИ + Auto + true + true + UserCmds + + 255 + 253 + 166 + + Auto + + + СоздатьРепозиторииКБазам + 123 + true + true + + true + + + СоздатьРепозиторииКБазамРасширеннаяПодсказка + 124 + Label + true + true + + Left + + + UsualButton + Form.Command.СоздатьРепозиторииКБазам + Auto + true + true + UserCmds + + 255 + 253 + 166 + + Auto + + true + true + + true + + + <key>ru</key> + <value>Дополнительные шаги</value> + + + ru + Группа дополнительные шаги + + + ГруппаДополнительныеШагиРасширеннаяПодсказка + 114 + Label + true + true + + Left + + + Page + + Vertical + true + + 200 + 240 + 207 + + + + true + true + + true + + + <key>ru</key> + <value>Группа шаги</value> + + + ru + Группа шаги + + + ГруппаШагиРасширеннаяПодсказка + 59 + Label + true + true + + Left + + + Pages + + Auto + Auto + +
+ + ФормаКоманднаяПанель + -1 + Left + + Use + UseList + true + true + true + Vertical + true + true + true + Normal + true + true + + Объект + 1 + + DataProcessorObject.Запуск + + + true + + + true + +
true
+
+ + СписокБазДанных + + <key>ru</key> + <value>Список баз данных</value> + + 2 + + ValueTable + + + true + + + true + + + СписокБазДанных + + + ИмяБазы + + <key>ru</key> + <value>Имя базы</value> + + 1 + + String + + + + true + + + true + + + + ПутьКБазе + + <key>ru</key> + <value>Путь к базе</value> + + 2 + + String + + + + true + + + true + + + + Сервер + + <key>ru</key> + <value>Сервер</value> + + 3 + + String + + + + true + + + true + + + + ИмяНаСервере + + <key>ru</key> + <value>Имя на сервере</value> + + 4 + + String + + + + true + + + true + + + + + ОсновнаяПапка + + <key>ru</key> + <value>Основная папка</value> + + 3 + + String + + + + true + + + true + + + ОсновнаяПапка + + + + ИмяПользователяGit + + <key>ru</key> + <value>Имя пользователя git</value> + + 4 + + String + + + + true + + + true + + + ИмяПользователяGit + + + + ПочтаПользователяGit + + <key>ru</key> + <value>Почта пользователя git</value> + + 5 + + String + + + + true + + + true + + + ПочтаПользователяGit + + + + НовыйПользователь + + <key>ru</key> + <value>Новый пользователь</value> + + 6 + + CatalogRef.Пользователи + + + true + + + true + + + НовыйПользователь + + + + ТокенGit + + <key>ru</key> + <value>Токен git</value> + + 7 + + String + + + + true + + + true + + + ТокенGit + + + + Проект + + <key>ru</key> + <value>Проект</value> + + 8 + + CatalogRef.Проекты + + + true + + + true + + + Проект + + + + НазваниеПроекта + + <key>ru</key> + <value>Название проекта</value> + + 9 + + String + + + + true + + + true + + + НазваниеПроекта + + + + ПарольGit + + <key>ru</key> + <value>Пароль git</value> + + 10 + + String + + + + true + + + true + + + ПарольGit + + + + ПутьКGitCloneHTTP + + <key>ru</key> + <value>Путь к git clone (HTT</value> + + 11 + + String + + + + true + + + true + + + ПутьКGitCloneHTTP + + + + ТаскТрекер + + <key>ru</key> + <value>Таск трекер</value> + + 12 + + CatalogRef.ТаскТрекеры + + + true + + + true + + + ТаскТрекер + + + + ТипРепозитория + + <key>ru</key> + <value>Тип репозитория</value> + + 13 + + EnumRef.ТипРепозитория + + + true + + + true + + + ТипРепозитория + + + + URLТаскТрекера + + <key>ru</key> + <value>URLТаск трекера</value> + + 14 + + String + + + + true + + + true + + + URLТаскТрекера + + + + ИДПроектаРепозитория + + <key>ru</key> + <value>ИДПроекта репозитория</value> + + 15 + + String + + + + true + + + true + + + ИДПроектаРепозитория + + + + НастройкиПользователя + + <key>ru</key> + <value>Настройки пользователя</value> + + 16 + + CatalogRef.НастройкиПользователей + + + true + + + true + + + НастройкиПользователя + + + + Реквизит1 + 17 + + String + + + + true + + + true + + + + База + + <key>ru</key> + <value>База</value> + + 18 + + CatalogRef.Базы + + + true + + + true + + + + Кластер + + <key>ru</key> + <value>Кластер</value> + + 19 + + CatalogRef.Кластеры + + + true + + + true + + + + ИмяПользователя + + <key>ru</key> + <value>Имя пользователя</value> + + 20 + + String + + + + true + + + true + + + ИмяПользователя + + + + СчитатьСписокБаз + + <key>ru</key> + <value>Считать список баз</value> + + 1 + + ru + Считать список баз + + + true + + + + СчитатьСписокБаз + + + Auto + + + ДобавитьБазы + + <key>ru</key> + <value>Добавить базы</value> + + 2 + + ru + Добавить базы + + + true + + + + ДобавитьБазы + + + Auto + + + СоздатьПользователя + + <key>ru</key> + <value>Создать пользователя</value> + + 3 + + ru + Создать пользователя + + + true + + + + СоздатьПользлователя + + + Auto + + + СоздатьПроект + + <key>ru</key> + <value>Создать проект</value> + + 4 + + ru + Создать проект + + + true + + + StdPicture.Forward + + + + СоздатьПроект + + + TextPicture + Auto + + + УстановитьОскрипт + + <key>ru</key> + <value>Установить Oscript</value> + + 5 + + ru + Установить оскрипт + + + true + + + + УстановитьОскрипт + + + Auto + + + СоздатьРепозиторииКБазам + + <key>ru</key> + <value>Создать репозитории к базам</value> + + 6 + + ru + Создать репозитории к базам + + + true + + + + СоздатьРепозиторииКБазам + + + Auto + + + УстановитьКЛИ + + <key>ru</key> + <value>Установить КЛИ</value> + + 7 + + ru + Установить КЛИ + + + true + + + + УстановитьКЛИ + + + Auto + + + + + + +
diff --git a/src/DataProcessors/Запуск/Forms/Форма/Module.bsl b/src/DataProcessors/Запуск/Forms/Форма/Module.bsl new file mode 100644 index 0000000..8c57b66 --- /dev/null +++ b/src/DataProcessors/Запуск/Forms/Форма/Module.bsl @@ -0,0 +1,486 @@ + +&НаКлиенте +Процедура ОсновнаяПапкаНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + ДиалогОткрытия = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); + ДиалогОткрытия.Каталог = ОсновнаяПапка; + ДиалогОткрытия.Заголовок = "Выберите каталог основной папки проекта"; + ДиалогОткрытия.Показать(Новый ОписаниеОповещения("ВыборКаталога_Завершение", ЭтотОбъект, "" )); + + Модифицированность = Истина; +КонецПроцедуры + + +&НаКлиенте +Процедура ВыборКаталога_Завершение(Результат, Параметр) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + ОсновнаяПапка = Результат[0]; + +КонецПроцедуры + +&НаКлиенте +Процедура СчитатьСписокБаз(Команда) + + СписокБазДанных.Очистить(); + Если ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая() Тогда + ВременныйКаталог = КаталогДокументов(); + ВременныйКаталог = СтрЗаменить(ВременныйКаталог, "\Documents\", "\AppData\Roaming\1C\1CEStart\"); + Иначе + ВременныйКаталог = КаталогВременныхФайлов(); + ВременныйКаталог = СтрЗаменить(ВременныйКаталог, "\Local\Temp\", "\Roaming\1C\1CEStart\"); + КонецЕсли; + + + ИмяФайла = "ibases.v8i"; + ФайлЗапуска1С = Новый Файл(ВременныйКаталог + ИмяФайла); + + Если ФайлЗапуска1С.Существует() Тогда + + ТекстовыйДокИзФайла = Новый ТекстовыйДокумент; + ТекстовыйДокИзФайла.Прочитать(ФайлЗапуска1С.ПолноеИмя); + + //Текст = ТекстовыйДокИзФайла.ПолучитьТекст(); + + СлБаза = Ложь; + Для НомерСтроки = 1 По ТекстовыйДокИзФайла.КоличествоСтрок() Цикл + + СтрокаТекста = ТекстовыйДокИзФайла.ПолучитьСтроку(НомерСтроки); + + Если Лев(СтрокаТекста, 1) = "[" Тогда //Это имя в списке + + СтруктураБазы = Новый Структура; + + СтруктураБазы.Вставить("ИмяБазы", Сред(СтрокаТекста, 2, СтрДлина(СтрокаТекста) - 2)); + + ИначеЕсли СтрЧислоВхождений(СтрокаТекста, "Connect=File=") > 0 Тогда + + Путь = СтрЗаменить(СтрокаТекста, "Connect=File=", ""); + + Путь = СтрЗаменить(Путь, ";", ""); + Путь = СтрЗаменить(Путь, """", ""); + + СтруктураБазы.Вставить("ПутьКБазе", Путь); + + //Проверяем добавляемую строку + Если СписокБазДанных.НайтиСтроки(Новый Структура("ИмяБазы", СтруктураБазы.ИмяБазы)).Количество() = 0 Тогда + СтрокаБазы = СписокБазДанных.Добавить(); + + ЗаполнитьЗначенияСвойств(СтрокаБазы, СтруктураБазы); + КонецЕсли; + ИначеЕсли СтрЧислоВхождений(СтрокаТекста, "Connect=Srvr=") > 0 Тогда + Путь = СтрЗаменить(СтрокаТекста, "Connect=Srvr=", ""); + Путь = СтрЗаменить(Путь, "Ref=", ""); + Путь = СтрЗаменить(Путь, """", ""); + + Пути = СтрРазделить(Путь, ";", Ложь); + СтруктураБазы.Вставить("Сервер", Пути[0]); + СтруктураБазы.Вставить("ИмяНаСервере", Пути[1]); + + Если СписокБазДанных.НайтиСтроки(Новый Структура("ИмяБазы", СтруктураБазы.ИмяБазы)).Количество() = 0 Тогда + СтрокаБазы = СписокБазДанных.Добавить(); + + ЗаполнитьЗначенияСвойств(СтрокаБазы, СтруктураБазы); + КонецЕсли; + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СоздатьПользлователяНаСервере() + + Пользователи.СоздатьАдминистратора(); + НовыйПользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя, Истина); + Если НовыйПользователь.Пустая() Тогда + НовыйПользователь = СоздатьАдминистратора(); + КонецЕсли; + НастройкиПользователя = НастройкаПоВладельцу(НовыйПользователь); + Если НастройкиПользователя.Пустая() Тогда + НастройкиПользователяОбъект = Справочники.НастройкиПользователей.СоздатьЭлемент(); + НастройкиПользователяОбъект.Заполнить(Неопределено); //TODO Реализовать автозаполнение настроек по умолчанию + НастройкиПользователяОбъект.Владелец = НовыйПользователь; + НастройкиПользователяОбъект.ИмяПользователяGit = ИмяПользователяGit; + НастройкиПользователяОбъект.ПочтаПользователяGit = ПочтаПользователяGit; + НастройкиПользователяОбъект.ТокенGit = ТокенGit; + НастройкиПользователяОбъект.Проект = Справочники.Проекты.Неопределен; + НастройкиПользователяОбъект.Записать(); + НастройкиПользователя = НастройкиПользователяОбъект.Ссылка; + КонецЕсли; + +КонецПроцедуры + +Функция НастройкаПоВладельцу(Владелец) + + Результат = Справочники.НастройкиПользователей.ПустаяСсылка(); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | НастройкиПользователей.Ссылка КАК Ссылка + |ИЗ + | Справочник.НастройкиПользователей КАК НастройкиПользователей + |ГДЕ + | НастройкиПользователей.Владелец = &Владелец"; + + Запрос.УстановитьПараметр("Владелец", Владелец); + + РезультатЗапроса = Запрос.Выполнить(); + + Выборка = РезультатЗапроса.Выбрать(); + + Пока Выборка.Следующий() Цикл + Результат = Выборка.Ссылка; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура СоздатьПользлователя(Команда) + СоздатьПользлователяНаСервере(); + ПоказатьЗначение(, НастройкиПользователя); +КонецПроцедуры + +&НаСервере +Процедура СоздатьПроектНаСервере() + + Проект = Справочники.Проекты.НайтиПоНаименованию(НазваниеПроекта); + Если НЕ Проект.Пустая() Тогда + Возврат; + КонецЕсли; + + ПроектОбъект = Справочники.Проекты.СоздатьЭлемент(); + ПроектОбъект.Заполнить(Неопределено); //TODO Реализовать автозаполнение настроек по умолчанию + ПроектОбъект.Наименование = НазваниеПроекта; + Если ТипРепозитория = Перечисления.ТипРепозитория.GitHub Тогда + Авторизация = СтрШаблон("://%1@%2", ИмяПользователяGit, ТокенGit);//TODO Безопасное хранилище паролей + ИначеЕсли ТипРепозитория = Перечисления.ТипРепозитория.GitLab Тогда + Авторизация = СтрШаблон("://%1@%2", ИмяПользователяGit, ТокенGit); + Иначе + //Не обработанные типы репозиториев + КонецЕсли; + ПроектОбъект.PathGitClone = СтрЗаменить(ПутьКGitCloneHTTP, "://", Авторизация); + ПроектОбъект.КаталогРепозиториевПроекта = ОсновнаяПапка; + ПроектОбъект.КаталогРепозиториевШара = ОсновнаяПапка; + ПроектОбъект.КаталогСборкиРелиза = ОсновнаяПапка + "\release"; + ПроектОбъект.ТаскТрекер =ТаскТрекер; + ПроектОбъект.ТипРепозитория = ТипРепозитория; + ПроектОбъект.ИДПроектаРепозитория = ИДПроектаРепозитория; + ПроектОбъект.РежимРаботыКонфигурации = Перечисления.РежимыРаботыКонфигурации.Пакетный; + ПроектОбъект.Записать(); + Проект = ПроектОбъект.Ссылка; + НастройкаОбъект = НастройкиПользователя.ПолучитьОбъект(); + НастройкаОбъект.Проект = Проект; + НастройкаОбъект.Записать(); + + СоздатьКаталог(ПроектОбъект.КаталогСборкиРелиза); + +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьПроект(Команда) + СоздатьПроектНаСервере(); + ПоказатьЗначение(, Проект); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьБазы(Команда) + + ВыделенныеСтроки = Элементы.СписокБазДанных.ВыделенныеСтроки; + МассивБаз = Новый Массив; + + Для Каждого СтрокаБазы Из ВыделенныеСтроки Цикл + ДанныеСтроки = Элементы.СписокБазДанных.ДанныеСтроки(СтрокаБазы); + Если Не ЗначениеЗаполнено(ДанныеСтроки.Сервер) Тогда + Сообщить("База не серверная созданна не будет" + ДанныеСтроки.ИмяБазы); + Продолжить; + КонецЕсли; + СтруктураСервернойБазы = СтруктураСервернойБазы(); + ЗаполнитьЗначенияСвойств(СтруктураСервернойБазы, ДанныеСтроки); + МассивБаз.Добавить(СтруктураСервернойБазы); + КонецЦикла; + + ДобавитьБазыНаСервере(МассивБаз); + ПоказатьЗначение(, Кластер); +КонецПроцедуры + + +&НаКлиенте +Функция СтруктураСервернойБазы() + Возврат Новый Структура("ИмяБазы, Сервер, ИмяНаСервере"); +КонецФункции + +&НаСервере +Процедура ДобавитьБазыНаСервере(МассивБаз) + + Для Каждого Элемент Из МассивБаз Цикл + + Кластер = Справочники.Кластеры.НайтиПоНаименованию(Элемент.Сервер, Истина); + Если Кластер.Пустая() Тогда + КластерОбъект = Справочники.Кластеры.СоздатьЭлемент(); + КластерОбъект.ИмяАгентаБазы = "GitAgent"; + КластерОбъект.КаталогRAS = "GitAgent"; + КластерОбъект.НомерВерсииПлатформы = "8.3"; //TODO + КластерОбъект.ПутьКПапкеДевопс = ОсновнаяПапка; + КластерОбъект.ПутьКШаре = ОсновнаяПапка; + КластерОбъект.ФайлЗапускаOscript = "";// + //КластерОбъект.ФайлЗапускаOscript = "";//Добавить путь к rac + КластерОбъект.Наименование = Элемент.Сервер; + КластерОбъект.СерверПубликации = Элемент.Сервер; + КластерОбъект.Записать(); + Кластер = КластерОбъект.Ссылка; + КонецЕсли; + База = Справочники.Базы.НайтиПоНаименованию(Элемент.ИмяНаСервере, Истина); + Если База.Пустая() Тогда + БазаОбъект = Справочники.Базы.СоздатьЭлемент(); + БазаОбъект.Владелец = Проект; + БазаОбъект.БазаПубликации = Элемент.ИмяНаСервере; + БазаОбъект.КластерСерверов = Кластер; + БазаОбъект.Наименование = Элемент.ИмяНаСервере; + БазаОбъект.ТипБазы = Перечисления.ТипыБаз.ТестоваяБаза; + БазаОбъект.Ответственный = НовыйПользователь; + БазаОбъект.ИмяИнформационнойБазы = Элемент.ИмяНаСервере; + БазаОбъект.ИмяПользователяИнформационнойБазы = "1с"; + БазаОбъект.ПарольПользователяИнформационнойБазы = "1с"; + БазаОбъект.Записать(); + + Сообщить("Создана база " + БазаОбъект.Ссылка); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьОскриптНаСервере() + + + ИмяФайла = ПолучитьИмяВременногоФайла("exe"); + АдресФайла = "https://github.com/oscript-library/ovm/releases/latest/download/ovm.exe"; + НовыеПараметры = КоннекторHTTP.НовыеПараметры(); + НовыеПараметры.Заголовки.Вставить("User-Agent", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); + НовыеПараметры.Таймаут = 90; + Ответ = КоннекторHTTP.Get(АдресФайла,,НовыеПараметры); + Данные = КоннекторHTTP.КакДвоичныеДанные(Ответ); + Данные.Записать(ИмяФайла); + + ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина; + + + Результат = ФайловаяСистема.ЗапуститьПрограмму(СтрШаблон("%1 install dev", ИмяФайла), ПараметрыЗапускаПрограммы); + ОбщегоНазначения.СообщитьПользователю(Результат.ПотокВывода); + Если ЗначениеЗаполнено(Результат.ПотокОшибок) Тогда + ОбщегоНазначения.СообщитьПользователю(Результат.ПотокОшибок); + КонецЕсли; + + Результат = ФайловаяСистема.ЗапуститьПрограмму(СтрШаблон("%1 use --install dev", ИмяФайла), ПараметрыЗапускаПрограммы); + ОбщегоНазначения.СообщитьПользователю(Результат.ПотокВывода); + Если ЗначениеЗаполнено(Результат.ПотокОшибок) Тогда + ОбщегоНазначения.СообщитьПользователю(Результат.ПотокОшибок); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьОскрипт(Команда) + УстановитьОскриптНаСервере(); +КонецПроцедуры + +&НаСервере +Процедура СоздатьРепозиторииКБазамНаСервере() + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Базы.Ссылка КАК Ссылка + |ИЗ + | Справочник.Базы КАК Базы"; + + РезультатЗапроса = Запрос.Выполнить(); + + Выборка = РезультатЗапроса.Выбрать(); + + Пока Выборка.Следующий() Цикл + + КаталогРепозиторияБазыШара = РаботаСGit.КаталогРепозиторияБазыШара(Выборка.Ссылка); + КаталогРепозиторияБазы = РаботаСGit.КаталогРепозиторияБазы(Выборка.Ссылка); + Если ПустаяСтрока(КаталогРепозиторияБазыШара) Тогда + Ошибка = "Ошибка: Не указан каталог репозиториев в проекте!"; + Сообщить(Ошибка); + Продолжить; + КонецЕсли; + Если Не РаботаСGit.КаталогРепозиторияСуществует(КаталогРепозиторияБазыШара) Тогда + Если Не РаботаСGit.СоздатьКаталогРепозитория(КаталогРепозиторияБазыШара) Тогда + Ошибка = СтрШаблон("Ошибка: Не удалось создать каталог репозитория базы: %1", КаталогРепозиторияБазыШара); + Сообщить(Ошибка); + Продолжить; + КонецЕсли; + КонецЕсли; + Если Не РаботаСGit.ПустойРепозиторий(КаталогРепозиторияБазыШара) Тогда + Ошибка = СтрШаблон("Ошибка! В каталоге есть файлы: %1%2Перед созданием репозитория каталог должен быть пустым.", КаталогРепозиторияБазы, Символы.ПС); + Сообщить(Ошибка); + Продолжить; + КонецЕсли; + + РаботаСGit.СоздатьНовыйРепозиторийВГИТ(Выборка.Ссылка, НовыйПользователь); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьРепозиторииКБазам(Команда) + СоздатьРепозиторииКБазамНаСервере(); +КонецПроцедуры + +&НаСервере +Процедура УстановитьКЛИНаСервере() + ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина; + + Результат = ФайловаяСистема.ЗапуститьПрограмму("opm install pivo-cli", ПараметрыЗапускаПрограммы); + ОбщегоНазначения.СообщитьПользователю(Результат.ПотокВывода); + Если ЗначениеЗаполнено(Результат.ПотокОшибок) Тогда + ОбщегоНазначения.СообщитьПользователю(Результат.ПотокОшибок); + КонецЕсли; + Результат = ФайловаяСистема.ЗапуститьПрограмму("pivo-cli", ПараметрыЗапускаПрограммы); + ОбщегоНазначения.СообщитьПользователю(Результат.ПотокВывода); + Если ЗначениеЗаполнено(Результат.ПотокОшибок) Тогда + ОбщегоНазначения.СообщитьПользователю(Результат.ПотокОшибок); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьКЛИ(Команда) + УстановитьКЛИНаСервере(); +КонецПроцедуры + + +// Используется при обновлении и начальном заполнении информационной базы. +// 1) Создает первого администратора и сопоставляет его с новым или существующим +// пользователем в справочнике Пользователи. +// 2) Сопоставляет администратора, указанного в параметре ПользовательИБ, с новым или +// существующим пользователем в справочнике Пользователи. +// +// Параметры: +// ПользовательИБ - Неопределено - создать первого администратора, если не существует. +// - ПользовательИнформационнойБазы - используется, когда нужно сопоставить +// существующего администратора с новым или существующим пользователем +// в справочнике Пользователи. +// +// Возвращаемое значение: +// Неопределено - первый администратор уже существует. +// СправочникСсылка.Пользователи - пользователь в справочнике, с которым сопоставлен созданный +// первый администратор или указанный существующий. +// +Функция СоздатьАдминистратора(ПользовательИБ = Неопределено) Экспорт + + Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + ТекстОшибки = НСтр("ru = 'Справочник Пользователи недоступен в неразделенном режиме.'"); + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + + // Добавление администратора. + Если ПользовательИБ = Неопределено Тогда + ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя(); + ПользовательИБ.Имя = ИмяПользователя; + ПользовательИБ.ПолноеИмя = ПользовательИБ.Имя; + ПользовательИБ.Роли.Очистить(); + ПользовательИБ.Роли.Добавить(Метаданные.Роли.ПолныеПрава); + РольАдминистратораСистемы = Метаданные.Роли.АдминистраторСистемы; + Если НЕ ПользовательИБ.Роли.Содержит(РольАдминистратораСистемы) Тогда + ПользовательИБ.Роли.Добавить(РольАдминистратораСистемы); + КонецЕсли; + ПользовательИБ.Записать(); + Иначе + Если Не ПользователиСлужебный.РолиАдминистратораДоступны(ПользовательИБ) Тогда + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Невозможно создать пользователя в справочнике для пользователя + |информационной базы ""%1"", + |так как у него нет ролей Полные права и Администратор системы. + | + |Вероятно, пользователь был создан в конфигураторе. + |Для автоматического создания пользователя в справочнике требуется + |назначить ему роли Полные права и Администратор системы.'"), + Строка(ПользовательИБ)); + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Пользователи.НайтиНеоднозначныхПользователейИБ(Неопределено, ПользовательИБ.УникальныйИдентификатор); + КонецЕсли; + + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.Пользователи"); + ЭлементБлокировки.УстановитьЗначение("ИдентификаторПользователяИБ", ПользовательИБ.УникальныйИдентификатор); + ЭлементБлокировки = Блокировка.Добавить("Справочник.ВнешниеПользователи"); + ЭлементБлокировки.УстановитьЗначение("ИдентификаторПользователяИБ", ПользовательИБ.УникальныйИдентификатор); + ЭлементБлокировки = Блокировка.Добавить("Справочник.Пользователи"); + ЭлементБлокировки.УстановитьЗначение("Наименование", ПользовательИБ.ПолноеИмя); + Блокировка.Заблокировать(); + + Пользователь = Неопределено; + ПользователиСлужебный.ПользовательПоИдентификаторуСуществует(ПользовательИБ.УникальныйИдентификатор,, Пользователь); + Если ТипЗнч(Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда + ВнешнийПользовательОбъект = Пользователь.ПолучитьОбъект(); + ВнешнийПользовательОбъект.ИдентификаторПользователяИБ = Неопределено; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВнешнийПользовательОбъект); + Пользователь = Неопределено; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Пользователь) Тогда + Пользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользовательИБ.ПолноеИмя); + + Если ЗначениеЗаполнено(Пользователь) + И ЗначениеЗаполнено(Пользователь.ИдентификаторПользователяИБ) + И Пользователь.ИдентификаторПользователяИБ <> ПользовательИБ.УникальныйИдентификатор + И ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору( + Пользователь.ИдентификаторПользователяИБ) <> Неопределено Тогда + + Пользователь = Неопределено; + КонецЕсли; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(Пользователь) Тогда + Пользователь = Справочники.Пользователи.СоздатьЭлемент(); + ПользовательСоздан = Истина; + Иначе + Пользователь = Пользователь.ПолучитьОбъект(); + ПользовательСоздан = Ложь; + КонецЕсли; + + Пользователь.Наименование = ПользовательИБ.ПолноеИмя; + + ОписаниеПользователяИБ = Новый Структура; + ОписаниеПользователяИБ.Вставить("Действие", "Записать"); + ОписаниеПользователяИБ.Вставить("УникальныйИдентификатор", ПользовательИБ.УникальныйИдентификатор); + Пользователь.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + Возврат Пользователь.Ссылка; + +КонецФункции + + + diff --git a/src/DataProcessors/Запуск/Запуск.mdo b/src/DataProcessors/Запуск/Запуск.mdo new file mode 100644 index 0000000..3de3455 --- /dev/null +++ b/src/DataProcessors/Запуск/Запуск.mdo @@ -0,0 +1,23 @@ + + + + + + + Запуск + + ru + Запуск + + true + DataProcessor.Запуск.Form.Форма + + Форма + + ru + Форма + + PersonalComputer + MobileDevice + + diff --git a/src/DataProcessors/Терминал/Forms/Форма/Form.form b/src/DataProcessors/Терминал/Forms/Форма/Form.form new file mode 100644 index 0000000..fa519ba --- /dev/null +++ b/src/DataProcessors/Терминал/Forms/Форма/Form.form @@ -0,0 +1,534 @@ + + + + Группа3 + 31 + + Группа1 + 11 + + Команда + 1 + true + true + + true + + + КомандаЗапуска + + + КомандаРасширеннаяПодсказка + 3 + Label + true + true + + Left + + + + КомандаКонтекстноеМеню + 2 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + + ФормаВыполнитьСервер + 9 + true + true + + true + + + ФормаВыполнитьСерверРасширеннаяПодсказка + 10 + Label + true + true + + Left + + + Hyperlink + Form.Command.ВыполнитьСервер + Auto + true + true + UserCmds + + CommonPicture.СтрелкаВправоЗеленая + + Auto + + + ФормаВыполнитьКлиент + 7 + true + true + + true + + + ФормаВыполнитьКлиентРасширеннаяПодсказка + 8 + Label + true + true + + Left + + + Hyperlink + Form.Command.ВыполнитьКлиент + Auto + true + true + UserCmds + Auto + + true + true + + true + + + Группа1РасширеннаяПодсказка + 12 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + + Вывод + 4 + true + true + + true + + + Вывод + + + ВыводРасширеннаяПодсказка + 6 + Label + true + true + + Left + + + + ВыводКонтекстноеМеню + 5 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Группа3</value> + + 70 + true + + Группа3РасширеннаяПодсказка + 32 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + Группа2 + 29 + + Команды + 13 + true + true + + true + + + Команды + + None + + КомандыЗначение + 26 + true + true + + true + + + Команды.Value + + + КомандыЗначениеРасширеннаяПодсказка + 28 + Label + true + true + + Left + + + + КомандыЗначениеКонтекстноеМеню + 27 + true + + InputField + EnterOnInput + true + Left + true + + true + true + true + true + true + true + + + None + + КомандыКоманднаяПанель + 14 + Left + true + + + КомандыСтрокаПоиска + 17 + + КомандыСтрокаПоискаРасширеннаяПодсказка + 19 + Label + true + true + + Left + + + + КомандыСтрокаПоискаКонтекстноеМеню + 18 + true + + Команды + + true + + + + КомандыСостояниеПросмотра + 23 + + КомандыСостояниеПросмотраРасширеннаяПодсказка + 25 + Label + true + true + + Left + + + + КомандыСостояниеПросмотраКонтекстноеМеню + 24 + true + + ViewStatusAddition + Команды + + true + + + + КомандыУправлениеПоиском + 20 + + КомандыУправлениеПоискомРасширеннаяПодсказка + 22 + Label + true + true + + Left + + + + КомандыУправлениеПоискомКонтекстноеМеню + 21 + true + + SearchControlAddition + Команды + + true + + + + КомандыРасширеннаяПодсказка + 16 + Label + true + true + + Left + + + + КомандыКонтекстноеМеню + 15 + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + AsFileRef +
+ true + true + + true + + + <key>ru</key> + <value>Группа2</value> + + + Группа2РасширеннаяПодсказка + 30 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + +
+ + ФормаКоманднаяПанель + -1 + Left + true + + true + true + true + AlwaysHorizontal + true + true + true + true + true + + Объект + 1 + + DataProcessorObject.Терминал + + + true + + + true + +
true
+
+ + КомандаЗапуска + + <key>ru</key> + <value>Команда запуска</value> + + 2 + + String + + + + true + + + true + + + + Вывод + + <key>ru</key> + <value>Вывод</value> + + 3 + + String + + + + true + + + true + + + + Команды + + <key>ru</key> + <value>Команды</value> + + 4 + + ValueList + + + true + + + true + + + + + + + ВыполнитьКлиент + + <key>ru</key> + <value>Клиент</value> + + 1 + + ru + Выполнить клиент + + + true + + + CommonPicture.СтрелкаВправоЗеленая + + + + ВыполнитьКлиент + + + Auto + + + ВыполнитьСервер + + <key>ru</key> + <value>Сервер</value> + + 2 + + ru + Выполнить сервер + + + true + + + + ВыполнитьСервер + + + Auto + + + + + + +
diff --git a/src/DataProcessors/Терминал/Forms/Форма/Module.bsl b/src/DataProcessors/Терминал/Forms/Форма/Module.bsl new file mode 100644 index 0000000..d6a2781 --- /dev/null +++ b/src/DataProcessors/Терминал/Forms/Форма/Module.bsl @@ -0,0 +1,44 @@ + +&НаКлиенте +Процедура ВыполнитьКлиент(Команда) + + ПараметрыЗапускаПрограммы = ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина; + ПараметрыЗапускаПрограммы.Оповещение = Новый ОписаниеОповещения("ПриПолученииРезультатаЗапускаПрограммы", ЭтотОбъект); + + ФайловаяСистемаКлиент.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриПолученииРезультатаЗапускаПрограммы(Результат, ДополнительныеПараметры) Экспорт + КодВозврата = Результат.КодВозврата; + ПотокВывода = Результат.ПотокВывода; + ПотокОшибок = Результат.ПотокОшибок; + Вывод = ПотокВывода + Символы.ПС + ПотокОшибок; + +КонецПроцедуры + + +&НаСервере +Процедура ВыполнитьСерверНаСервере() + + ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина; + ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина; + Результат = ФайловаяСистема.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы); + + ПотокВывода = Результат.ПотокВывода; + ПотокОшибок = Результат.ПотокОшибок; + Вывод = ПотокВывода + Символы.ПС + ПотокОшибок; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьСервер(Команда) + Команды.Вставить(0, КомандаЗапуска, КомандаЗапуска, , ); + ВыполнитьСерверНаСервере(); +КонецПроцедуры diff --git a/src/DataProcessors/Терминал/Терминал.mdo b/src/DataProcessors/Терминал/Терминал.mdo new file mode 100644 index 0000000..4647d7c --- /dev/null +++ b/src/DataProcessors/Терминал/Терминал.mdo @@ -0,0 +1,23 @@ + + + + + + + Терминал + + ru + Терминал + + true + DataProcessor.Терминал.Form.Форма + + Форма + + ru + Форма + + PersonalComputer + MobileDevice + + diff --git a/src/Subsystems/УправлениеРазработкой/УправлениеРазработкой.mdo b/src/Subsystems/УправлениеРазработкой/УправлениеРазработкой.mdo index cb1dd93..f7a2935 100644 --- a/src/Subsystems/УправлениеРазработкой/УправлениеРазработкой.mdo +++ b/src/Subsystems/УправлениеРазработкой/УправлениеРазработкой.mdo @@ -89,4 +89,6 @@ Catalog.Команды Catalog.УчетныеДанные Enum.ТипыУчетныхДанных + DataProcessor.Запуск + DataProcessor.Терминал