Skip to content

Commit

Permalink
Добавлена команда копирования пользователей хранилища #261 (#263)
Browse files Browse the repository at this point in the history
* Добавлена команда копирования пользователей хранилища #261

* Исправил неверное обращение к переменным копии
  • Loading branch information
abirambul authored and artbear committed Oct 30, 2018
1 parent 20a9c10 commit 72114a1
Show file tree
Hide file tree
Showing 3 changed files with 142 additions and 0 deletions.
@@ -0,0 +1,106 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Подключение ИБ к хранилищу конфигурации 1С.
//
// TODO добавить фичи для проверки команды
//
// Служебный модуль с набором методов работы с командами приложения
//
// Структура модуля реализована в соответствии с рекомендациями
// oscript-app-template (C) EvilBeaver
//
///////////////////////////////////////////////////////////////////////////////////////////////////

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

Перем Лог;

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

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

ТекстОписания =
" Копирование пользователей хранилища из другого хранилища.
| ";

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды,
ТекстОписания);
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьПодключаемогоХранилища",
"Строка подключения к хранилищу
| (возможно указание как файлового пути, так и пути через http или tcp)");
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьПодключаемогоХранилищаДляКопирования",
"Строка подключения к хранилищу для копирования пользователей
| (возможно указание как файлового пути, так и пути через http или tcp)");

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-user", "Пользователь хранилища.
| Обязательный параметр");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-pwd", "Пароль.
| Обязательный параметр");

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-user-copy", "Пользователь хранилища.
| Обязательный параметр");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-pwd-copy", "Пароль.
| Обязательный параметр");

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

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

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

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

ПутьКХранилищу = ПараметрыКоманды["ПутьПодключаемогоХранилища"];
ЛогинПользователя = ПараметрыКоманды["--storage-user"];
ПарольПользователя = ПараметрыКоманды["--storage-pwd"];
ПутьКХранилищуКопии = ПараметрыКоманды["ПутьПодключаемогоХранилищаДляКопирования"];
ЛогинПользователяКопии = ПараметрыКоманды["--storage-user-copy"];
ПарольПользователяКопии = ПараметрыКоманды["--storage-pwd-copy"];

Ожидаем.Что(ПутьКХранилищу, " не задан путь к хранилищу").Заполнено();
Ожидаем.Что(ЛогинПользователя, " не задан логин пользователя хранилища").Заполнено();
Ожидаем.Что(ПарольПользователя, " не задан пароль пользователя хранилища").Заполнено();
Ожидаем.Что(ПутьКХранилищуКопии, " не задан путь к хранилищу для копирования").Заполнено();
Ожидаем.Что(ЛогинПользователяКопии, " не задан логин пользователя хранилища для копирования").Заполнено();
Ожидаем.Что(ПарольПользователяКопии, " не задан пароль пользователя хранилища для копирования").Заполнено();

ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"];
СтрокаПодключения = ДанныеПодключения.СтрокаПодключения;
Если Не ЗначениеЗаполнено(СтрокаПодключения) Тогда
СтрокаПодключения = "/F";
КонецЕсли;

МенеджерКонфигуратора = Новый МенеджерКонфигуратора;

МенеджерКонфигуратора.Инициализация(
СтрокаПодключения,
ДанныеПодключения.Пользователь,
ДанныеПодключения.Пароль,
ПараметрыКоманды["--v8version"],
ПараметрыКоманды["--uccode"],
ДанныеПодключения.КодЯзыка);

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

МенеджерКонфигуратора.Деструктор();

Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
КонецФункции // ВыполнитьКоманду
34 changes: 34 additions & 0 deletions src/Классы/МенеджерКонфигуратора.os
Expand Up @@ -613,6 +613,40 @@

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

Процедура КопироватьПользователейИзХранилища(Знач ПутьХранилища, Знач Логин, Знач Пароль,
Знач ПутьХранилищаКопия, Знач ЛогинКопия, Знач ПарольКопия,
Знач ВосстановитьУдаленного = Ложь) Экспорт

Лог.Информация("Выполняю копирование пользователей из хранилища конфигурации");

ТекущаяПроцедура = "КопироватьПользователейИзХранилища";

УправлениеКонфигуратором.СоздатьФайловуюБазу(КаталогВременнойИБ);
УправлениеКонфигуратором.УстановитьКонтекст("/F " + КаталогВременнойИБ, "", "");

ХранилищеКонфигурации = Новый МенеджерХранилищаКонфигурации();
ХранилищеКонфигурации.УстановитьУправлениеКонфигуратором(УправлениеКонфигуратором);
ХранилищеКонфигурации.УстановитьПараметрыАвторизации(Логин, Пароль);

ХранилищеКонфигурации.УстановитьПутьКХранилищу(ПутьХранилища);

Попытка
ХранилищеКонфигурации.КопироватьПользователейИзХранилища(
ПутьХранилищаКопия,
ЛогинКопия,
ПарольКопия,
ВосстановитьУдаленного);

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

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

// Выгрузить файл конфигурации определенной версии из хранилища 1С
//
// Параметры:
Expand Down
2 changes: 2 additions & 0 deletions src/Модули/ПараметрыСистемы.os
Expand Up @@ -72,6 +72,7 @@
мВозможныеКоманды.Вставить("СоздатьХранилище", "createrepo");
мВозможныеКоманды.Вставить("ПодключитьсяКХранилищу", "bindrepo");
мВозможныеКоманды.Вставить("СоздатьПользователейХранилища", "createrepouser");
мВозможныеКоманды.Вставить("КопироватьПользователейХранилища", "copyrepouser");
мВозможныеКоманды.Вставить("СохранитьВерсиюХранилищаВФайл", "unloadcfrepo");
мВозможныеКоманды.Вставить("ЗахватитьВХранилище", "lockrepo");
мВозможныеКоманды.Вставить("ПоместитьВХранилище", "commit");
Expand Down Expand Up @@ -131,6 +132,7 @@
КлассыРеализацииКоманд[ВозможныеКоманды().СоздатьХранилище] = "КомандаСоздатьХранилище";
КлассыРеализацииКоманд[ВозможныеКоманды().ПодключитьсяКХранилищу] = "КомандаПодключитьсяКХранилищу";
КлассыРеализацииКоманд[ВозможныеКоманды().СоздатьПользователейХранилища] = "КомандаСоздатьПользователейХранилища";
КлассыРеализацииКоманд[ВозможныеКоманды().КопироватьПользователейХранилища] = "КомандаКопироватьПользователейХранилища";
КлассыРеализацииКоманд[ВозможныеКоманды().СохранитьВерсиюХранилищаВФайл] = "КомандаСохранитьВерсиюХранилищаВФайл";
КлассыРеализацииКоманд[ВозможныеКоманды().ЗахватитьВХранилище] = "КомандаЗахватитьВХранилище";
КлассыРеализацииКоманд[ВозможныеКоманды().ПоместитьВХранилище] = "КомандаПоместитьВХранилище";
Expand Down

0 comments on commit 72114a1

Please sign in to comment.