Skip to content

Commit

Permalink
Перенесена команда "ЗапуститьВРежимеПредприятия"
Browse files Browse the repository at this point in the history
Добавлен доп.параметры запуска в режиме Предприятия
Исправлена ошибка, возникающая в некоторых режимах запуска команды
  • Loading branch information
artbear committed Mar 25, 2017
1 parent c574824 commit 1972012
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 77 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Выполнение команды/действия в 1С:Предприятие в режиме тонкого/тонкого клиента с передачей запускаемых обработок и параметров
//
// TODO добавить фичи для проверки команды
//
// Служебный модуль с набором методов работы с командами приложения
//
// Структура модуля реализована в соответствии с рекомендациями
// oscript-app-template (C) EvilBeaver
//
///////////////////////////////////////////////////////////////////////////////////////////////////

#Использовать logos
#Использовать v8runner

Перем Лог;

///////////////////////////////////////////////////////////////////////////////////////////////////
// Прикладной интерфейс

Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ТекстОписания =
" Выполнение команды/действия в 1С:Предприятие в режиме тонкого/тонкого клиента с передачей запускаемых обработок и параметров
| ";

ОписаниеКоманды = Парсер.ОписаниеКоманды(ПараметрыСистемы.ВозможныеКоманды().ЗапуститьВРежимеПредприятия,
ТекстОписания);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--uccode", "Ключ разрешения запуска");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--command", "Строка, передаваемая в ПараметрыЗапуска /C''");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--execute", "Путь внешней обработки 1С для запуска в предприятии");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--additional",
"Дополнительные параметры для запуска предприятия.");

Парсер.ДобавитьКоманду(ОписаниеКоманды);

КонецПроцедуры // ЗарегистрироватьКоманду

// Выполняет логику команды
//
// Параметры:
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
// ДополнительныеПараметры (необязательно) - Соответствие - дополнительные параметры
//
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт

Лог = ДополнительныеПараметры.Лог;

// TODO отрефакторить получение ЗапускатьТолстыйКлиент
ЗапускатьТолстыйКлиент = ОбщиеМетоды.УказанПараметрТолстыйКлиент(ПараметрыКоманды["--ordinaryapp"], Лог);

ЗапуститьВРежимеПредприятия(ПараметрыКоманды["--ibname"], ПараметрыКоманды["--db-user"], ПараметрыКоманды["--db-pwd"],
ПараметрыКоманды["--uccode"], ПараметрыКоманды["--command"],
ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--execute"]),
ЗапускатьТолстыйКлиент, ПараметрыКоманды["--v8version"],
ПараметрыКоманды["--additional"]);

Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
КонецФункции // ВыполнитьКоманду

// Выполнить команду/действие в режиме 1С:Предприятия
//
// Параметры:
// СтрокаПодключения - <Строка> - Строка подключения к БД
// Пользователь - <Строка> - Пользователь
// Пароль - <Строка> - Пароль для пользователя
// КлючРазрешенияЗапуска - <Строка> - <описание параметра>
// ПараметрЗапуска - <Строка> - <описание параметра>
// ОбработкаДляЗапуска - <Строка> - <описание параметра>
// ТолстыйКлиент - <Булево> - признак запуска толстого клиента
// ВерсияПлатформы - <Строка> - <описание параметра>
// ДополнительныеКлючиЗапуска - <Строка> - <описание параметра>
//
Процедура ЗапуститьВРежимеПредприятия(Знач СтрокаПодключения, Знач Пользователь="", Знач Пароль="",
Знач КлючРазрешенияЗапуска = "", Знач ПараметрЗапуска="",
Знач ОбработкаДляЗапуска="", Знач ТолстыйКлиент = Ложь,
Знач ВерсияПлатформы="", Знач ДополнительныеКлючиЗапуска = "")

ТекущаяПроцедура = "ЗапуститьВРежимеПредприятия";

Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура+" не задана строка подключения").Заполнено();

Конфигуратор = Новый УправлениеКонфигуратором();

КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог();
Конфигуратор.КаталогСборки(КаталогВременнойИБ);

Конфигуратор.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль);
Если НЕ ПустаяСтрока(ВерсияПлатформы) Тогда
Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы);
КонецЕсли;

Если Не ТолстыйКлиент Тогда
ТонкийКлиент1С = Конфигуратор.ПутьКТонкомуКлиенту1С(Конфигуратор.ПутьКПлатформе1С());
Конфигуратор.ПутьКПлатформе1С(ТонкийКлиент1С);
КонецЕсли;

Если Не ПустаяСтрока(КлючРазрешенияЗапуска) Тогда
Конфигуратор.УстановитьКлючРазрешенияЗапуска(КлючРазрешенияЗапуска);
КонецЕсли;

ДополнительныеКлючи = ДополнительныеКлючиЗапуска;
Если Не ПустаяСтрока(ОбработкаДляЗапуска) Тогда
ДополнительныеКлючи = "" + ДополнительныеКлючи + "/Execute"+ОбщиеМетоды.ОбернутьПутьВКавычки(ОбработкаДляЗапуска);
КонецЕсли;

Лог.Отладка("ДополнительныеКлючи:"+ДополнительныеКлючи);
Лог.Отладка("ПараметрЗапуска:"+ПараметрЗапуска);

Попытка
Конфигуратор.ЗапуститьВРежимеПредприятия(ПараметрЗапуска, Истина, ДополнительныеКлючи);
Текст = Конфигуратор.ВыводКоманды();
Если Не ПустаяСтрока(Текст) Тогда
Лог.Информация(Текст);
КонецЕсли;

Исключение
Лог.Ошибка(Конфигуратор.ВыводКоманды());
ВызватьИсключение ТекущаяПроцедура;
КонецПопытки;

КонецПроцедуры

4 changes: 4 additions & 0 deletions src/Модули/ПараметрыСистемы.os
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@
мВозможныеКоманды.Вставить("Тестирование_xUnitFor1C", "xunit");
мВозможныеКоманды.Вставить("ТестироватьПоведение", "vanessa");

мВозможныеКоманды.Вставить("ЗапуститьВРежимеПредприятия", "run");

мВозможныеКоманды.Вставить("Помощь", "--help");
мВозможныеКоманды.Вставить("ПоказатьВерсию", "version");
мВозможныеКоманды = Новый ФиксированнаяСтруктура(мВозможныеКоманды);
Expand All @@ -80,6 +82,8 @@

КлассыРеализацииКоманд[ВозможныеКоманды().Тестирование_xUnitFor1C] = "КомандаТестирование_xUnitFor1C";
КлассыРеализацииКоманд[ВозможныеКоманды().ТестироватьПоведение] = "КомандаТестированиеПоведения";

КлассыРеализацииКоманд[ВозможныеКоманды().ЗапуститьВРежимеПредприятия] = "КомандаЗапуститьВРежимеПредприятия";
//...
//КлассыРеализацииКоманд["<имя команды>"] = "<КлассРеализации>";

Expand Down
79 changes: 2 additions & 77 deletions tools/runner.os
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
// мВозможныеКоманды.Вставить("ДекомпилироватьEpf", "decompileepf");
мВозможныеКоманды.Вставить("СобратьEpf", "compileepf");
мВозможныеКоманды.Вставить("ОбновитьБазу", "updatedb");
мВозможныеКоманды.Вставить("ЗапуститьВРежимеПредприятия", "run");
// мВозможныеКоманды.Вставить("ЗапуститьВРежимеПредприятия", "run");

мВозможныеКоманды.Вставить("ОбновитьИзХранилища", "loadrepo");
мВозможныеКоманды.Вставить("Следить", "watch");
Expand Down Expand Up @@ -466,69 +466,6 @@

КонецПроцедуры

// Выполнить команду/действие в режиме 1С:Предприятия
//
// Параметры:
// СтрокаПодключения - <Строка> - Строка подключения к БД
// Пользователь - <Строка> - Пользователь
// Пароль - <Строка> - Пароль для пользователя
// КлючРазрешенияЗапуска - <Строка> - <описание параметра>
// ПараметрЗапуска - <Строка> - <описание параметра>
// ОбработкаДляЗапуска - <Строка> - <описание параметра>
// ТолстыйКлиент - <Булево> - признак запуска толстого клиента
// ВерсияПлатформы - <Строка> - <описание параметра>
// ДополнительныеКлючиЗапуска - <Строка> - <описание параметра>
//
Процедура ЗапуститьВРежимеПредприятия(Знач СтрокаПодключения, Знач Пользователь="", Знач Пароль="",
Знач КлючРазрешенияЗапуска = "", Знач ПараметрЗапуска="",
Знач ОбработкаДляЗапуска="", Знач ТолстыйКлиент = Ложь,
Знач ВерсияПлатформы="", Знач ДополнительныеКлючиЗапуска = "")

ТекущаяПроцедура = "ЗапуститьВРежимеПредприятия";

Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура+" не задана строка подключения").Заполнено();

Конфигуратор = Новый УправлениеКонфигуратором();

КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог();
Конфигуратор.КаталогСборки(КаталогВременнойИБ);

Конфигуратор.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль);
Если НЕ ПустаяСтрока(ВерсияПлатформы) Тогда
Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы);
КонецЕсли;

Если Не ТолстыйКлиент Тогда
ТонкийКлиент1С = Конфигуратор.ПутьКТонкомуКлиенту1С(Конфигуратор.ПутьКПлатформе1С());
Конфигуратор.ПутьКПлатформе1С(ТонкийКлиент1С);
КонецЕсли;

Если Не ПустаяСтрока(КлючРазрешенияЗапуска) Тогда
Конфигуратор.УстановитьКлючРазрешенияЗапуска(КлючРазрешенияЗапуска);
КонецЕсли;

ДополнительныеКлючи = ДополнительныеКлючиЗапуска;
Если Не ПустаяСтрока(ОбработкаДляЗапуска) Тогда
ДополнительныеКлючи = ДополнительныеКлючи + "/Execute"+ОбщиеМетоды.ОбернутьПутьВКавычки(ОбработкаДляЗапуска);
КонецЕсли;

Лог.Отладка("ДополнительныеКлючи:"+ДополнительныеКлючи);
Лог.Отладка("ПараметрЗапуска:"+ПараметрЗапуска);

Попытка
Конфигуратор.ЗапуститьВРежимеПредприятия(ПараметрЗапуска, Истина, ДополнительныеКлючи);
Текст = Конфигуратор.ВыводКоманды();
Если Не ПустаяСтрока(Текст) Тогда
Лог.Информация(Текст);
КонецЕсли;

Исключение
Лог.Ошибка(Конфигуратор.ВыводКоманды());
ВызватьИсключение ТекущаяПроцедура;
КонецПопытки;

КонецПроцедуры

Процедура ЗапуститьОбновлениеКонфигурации(Знач СтрокаПодключения, Знач Пользователь="", Знач Пароль="",
Знач КлючРазрешенияЗапуска = "", Знач ВерсияПлатформы="", Знач ДополнительныеКлючиЗапуска = "") Экспорт

Expand Down Expand Up @@ -1454,7 +1391,6 @@
ДобавитьОписаниеКомандыСобратьEpf(Парсер);

ДобавитьОписаниеКомандыОбновитьБазу(Парсер);
ДобавитьОписаниеКомандыЗапуститьВРежимеПредприятия(Парсер);

ДобавитьОписаниеКомандыОбновитьИзХранилища(Парсер);
ДобавитьОписаниеКомандыСледить(Парсер);
Expand Down Expand Up @@ -1534,10 +1470,7 @@
ИначеЕсли Команда = ВозможныеКоманды().ОбновитьБазу Тогда
ЗапуститьОбновлениеКонфигурации(Аргументы.ЗначенияПараметров["--ibname"], Аргументы.ЗначенияПараметров["--db-user"], Аргументы.ЗначенияПараметров["--db-pwd"],
Аргументы.ЗначенияПараметров["--uccode"], Аргументы.ЗначенияПараметров["--v8version"]);
ИначеЕсли Команда = ВозможныеКоманды().ЗапуститьВРежимеПредприятия Тогда
ЗапуститьВРежимеПредприятия(Аргументы.ЗначенияПараметров["--ibname"], Аргументы.ЗначенияПараметров["--db-user"], Аргументы.ЗначенияПараметров["--db-pwd"],
Аргументы.ЗначенияПараметров["--uccode"], Аргументы.ЗначенияПараметров["--command"], ПолныйПуть(Аргументы.ЗначенияПараметров["--execute"]),
ЗапускатьТолстыйКлиент, Аргументы.ЗначенияПараметров["--v8version"]);

ИначеЕсли Команда = ВозможныеКоманды().ОбновитьИзХранилища Тогда
ЗапуститьОбновлениеИзХранилища(Аргументы.ЗначенияПараметров["--ibname"], Аргументы.ЗначенияПараметров["--db-user"], Аргументы.ЗначенияПараметров["--db-pwd"],
Аргументы.ЗначенияПараметров["--storage-name"], Аргументы.ЗначенияПараметров["--storage-user"], Аргументы.ЗначенияПараметров["--storage-pwd"], Аргументы.ЗначенияПараметров["--storage-ver"],
Expand Down Expand Up @@ -1614,14 +1547,6 @@
Парсер.ДобавитьКоманду(ОписаниеКоманды);
КонецПроцедуры

Процедура ДобавитьОписаниеКомандыЗапуститьВРежимеПредприятия(Знач Парсер)
ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().ЗапуститьВРежимеПредприятия);
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--uccode", "Ключ разрешения запуска");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--command", "Строка передаваемя в ПараметрыЗапуска, /C''");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--execute", "Путь обработки для запуска");
Парсер.ДобавитьКоманду(ОписаниеКоманды);
КонецПроцедуры

Процедура ДобавитьОписаниеКомандыОбновитьИзХранилища(Знач Парсер)
ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().ОбновитьИзХранилища);
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-name", "Строка подключения к хранилище");
Expand Down

0 comments on commit 1972012

Please sign in to comment.