Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавлен параметр для обновления расширения из хранилища #310

Open
wants to merge 29 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
aae9081
Обновление main.os для работы с расширением
Borisskin Aug 30, 2019
8d1f66f
Обновление КомандаОбновитьИзХранилища.os
Borisskin Aug 30, 2019
080bf75
Обновление МенеджерКонфигуратора.os
Borisskin Oct 21, 2019
097a2b9
Обновление КомандаОбновитьИзХранилища.os
Borisskin Oct 21, 2019
c6ac261
Обновление КомандаПодключитьсяКХранилищу.os
Borisskin Oct 21, 2019
542daa0
Обновление КомандаОтключитьсяОтХранилища.os
Borisskin Oct 21, 2019
9bc1ff5
Обновление main.os
Borisskin Oct 21, 2019
c9a8c85
Update КомандаОбновитьИзХранилища.os
Borisskin Oct 22, 2019
cf5f546
Update КомандаОтключитьсяОтХранилища.os
Borisskin Oct 22, 2019
eb121b4
Update КомандаПодключитьсяКХранилищу.os
Borisskin Oct 22, 2019
0a9c2f6
Update МенеджерКонфигуратора.os
Borisskin Oct 22, 2019
f7ea41a
Update МенеджерКонфигуратора.os
Borisskin Dec 18, 2019
9b601c6
Update КомандаОбновитьИзХранилища.os
Borisskin Dec 18, 2019
ea00993
Update КомандаОтключитьсяОтХранилища.os
Borisskin Dec 18, 2019
f71a85f
Update КомандаПодключитьсяКХранилищу.os
Borisskin Dec 18, 2019
bba6879
Update МенеджерКонфигуратора.os
Borisskin Dec 18, 2019
609c4bb
Update МенеджерКонфигуратора.os
Borisskin Dec 18, 2019
c9fe26a
Исправление ошибки
Borisskin Jan 24, 2020
2dcbbdf
попытка испрвления конфликта кода в ПР
Borisskin Feb 29, 2020
faf0245
Merge branch 'develop' of https://github.com/silverbulleters/vanessa-…
Borisskin Feb 29, 2020
b620602
Merge branch 'silverbulleters-develop' into develop
Borisskin Feb 29, 2020
00d0b07
Добавлено хранилище расширения для базы Ванесса-АДД (83Sync)
Borisskin Feb 29, 2020
6a4c806
Отключил от хранилища расширение
Borisskin Feb 29, 2020
f772bbe
Описание хранилища (пользователь-пароль)
Borisskin Feb 29, 2020
45eb22c
Удалены временные cfl-файлы
Borisskin Feb 29, 2020
b5693cb
Расширение в создании хранилища
Borisskin Jul 30, 2020
10ea207
Восстановил параметр расширения
Borisskin Jul 30, 2020
66fee34
Merge branch 'develop' into develop
Borisskin Oct 19, 2020
837c4f2
Merge branch 'vanessa-opensource:develop' into develop
Borisskin Nov 9, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/main.os
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
СоответствиеПеременных.Вставить("RUNNER_storage-pwd", "--storage-pwd");
СоответствиеПеременных.Вставить("RUNNER_storage-ver", "--storage-ver");
СоответствиеПеременных.Вставить("RUNNER_storage-name", "--storage-name");
СоответствиеПеременных.Вставить("RUNNER_extension", "--extension");
СоответствиеПеременных.Вставить("RUNNER_ROOT", "--root");
СоответствиеПеременных.Вставить("RUNNER_WORKSPACE", "--workspace");
СоответствиеПеременных.Вставить("RUNNER_PATHVANESSA", "--pathvanessa");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,17 @@
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ТекстОписания =
" Обновление конфигурации из хранилища 1С. Обновление БД не выполняется.";
" Обновление конфигурации из хранилища 1С. Обновление БД не выполняется.
| ";

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды,
ТекстОписания);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-name", "Строка подключения к хранилищу");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-user", "Пользователь хранилища");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-pwd", "Пароль");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-ver",
"Номер версии, по умолчанию берем последнюю");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-ver", "Номер версии, по умолчанию берем последнюю");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--extension", "Имя расширения, которое нужно обновить");

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

Expand All @@ -56,10 +57,16 @@
ДанныеПодключения.КодЯзыка
);

ДопПараметры = "";
ИмяРасширения = ПараметрыКоманды["--extension"];
Если Не ПустаяСтрока(ИмяРасширения) Тогда
ДопПараметры = "-Extension """+ИмяРасширения+"""";
КонецЕсли;

Попытка
МенеджерКонфигуратора.ЗапуститьОбновлениеИзХранилища(
ПараметрыКоманды["--storage-name"], ПараметрыКоманды["--storage-user"], ПараметрыКоманды["--storage-pwd"],
ПараметрыКоманды["--storage-ver"]);
ПараметрыКоманды["--storage-ver"], ДопПараметры);
Исключение
МенеджерКонфигуратора.Деструктор();
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,13 @@
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ТекстОписания =
" Отключение ИБ от хранилища конфигурации 1С.
|";
" Отключение ИБ от хранилища конфигурации 1С.";

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды,
ТекстОписания);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--extension", "Имя расширения, которое нужно отключить");

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

КонецПроцедуры // ЗарегистрироватьКоманду
Expand Down Expand Up @@ -61,8 +62,14 @@
ДанныеПодключения.КодЯзыка
);

ДопПараметры = "";
ИмяРасширения = ПараметрыКоманды["--extension"];
Если Не ПустаяСтрока(ИмяРасширения) Тогда
ДопПараметры = "-Extension """+ИмяРасширения+"""";
КонецЕсли;

Попытка
МенеджерКонфигуратора.ОтключитьсяОтХранилища();
МенеджерКонфигуратора.ОтключитьсяОтХранилища(ДопПараметры);
Исключение
МенеджерКонфигуратора.Деструктор();
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,17 @@

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды,
ТекстОписания);

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


Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-name", "Строка подключения к хранилищу");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вот эти изменения поломают существующие команды и CI (

т.к. уходим от позиционных параметров к указанию имен.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

пока предлагаю параметры логина и пароля оставить позиционными, а имя расширения указать как именованный параметр.

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

Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--BindAlreadyBindedUser",
" Флаг игнорирования наличия уже у пользователя уже подключенной базы данных.");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--NotReplaceCfg",
"Флаг запрета замены конфигурации БД на конфигурацию хранилища.");

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

КонецПроцедуры // ЗарегистрироватьКоманду
Expand Down Expand Up @@ -67,12 +66,17 @@

ИгнорироватьНаличиеПодключеннойБД = ПараметрыКоманды["--BindAlreadyBindedUser"];
ЗаменитьКонфигурациюБД = Не ПараметрыКоманды["--NotReplaceCfg"];

ДопПараметры = "";
ИмяРасширения = ПараметрыКоманды["--extension"];
Если Не ПустаяСтрока(ИмяРасширения) Тогда
ДопПараметры = "-Extension """+ИмяРасширения+"""";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

использование спрятанных доп.параметров в виде строки считаю нехорошим кодом для передачи в АПИ-функции МенеджераКонфигуратора.

Предлагаю к методам

  • МенеджерКонфигуратора.ПодключитьсяКХранилищу
  • МенеджерКонфигуратора.ОтключитьсяОтХранилища
    либо
  • добавить по одному параметру ИмяРасширения
  • либо сделать спец.методы - это лучшее
  • МенеджерКонфигуратора.ПодключитьсяКХранилищуРасширения
  • МенеджерКонфигуратора.ОтключитьсяОтХранилищаРасширения

это же АПИ, его удобнее разделять.

Copy link
Contributor Author

@Borisskin Borisskin Dec 18, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Т.к. не сильно разбираюсь, то и не понимаю полезности разделения методов, т.к. из-за одного параметра добавленного, потом поддерживать надо уже 2 метода одного направления.
Пока (лично) выбираю добавление параметра ИмяРасширения к методам:

  • МенеджерКонфигуратора.ОтключитьсяОтХранилища
  • МенеджерКонфигуратора.ПодключитьсяКХранилищу
  • МенеджерКонфигуратора.ЗапуститьОбновлениеИзХранилища

Либо, когда в командах встречается параметр ИмяРасширения, то можно вызывать в МенеджерКонфигуратора метод для Расширения. Ты это имел в виду?

КонецЕсли;

Попытка
МенеджерКонфигуратора.ПодключитьсяКХранилищу(
ПараметрыКоманды["ПутьПодключаемогоХранилища"], ПараметрыКоманды["Логин"],
ПараметрыКоманды["Пароль"],
ИгнорироватьНаличиеПодключеннойБД, ЗаменитьКонфигурациюБД);
ПараметрыКоманды["--storage-name"], ПараметрыКоманды["--storage-user"], ПараметрыКоманды["--storage-pwd"],
ИгнорироватьНаличиеПодключеннойБД, ЗаменитьКонфигурациюБД, ДопПараметры);
Исключение
МенеджерКонфигуратора.Деструктор();
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Expand Down
66 changes: 42 additions & 24 deletions src/Классы/МенеджерКонфигуратора.os
Original file line number Diff line number Diff line change
Expand Up @@ -502,36 +502,52 @@
// Создать хранилище 1С
//
// Параметры:
// ПутьХранилища - <Строка> - <описание параметра>
// ЛогинАдминистратора - <Строка> - <описание параметра>
// ПарольАдминистратора - <Строка> - <описание параметра>
// СтрокаПодключенияХранилище - <Строка> - <описание параметра>
// ПользовательХранилища - <Строка> - <описание параметра>
// ПарольХранилища - <Строка> - <описание параметра>
// ДополнительныеКлючиЗапуска (необязательно) - Строка - дополнительные ключи запуска Конфигуратора
//
Процедура ПодключитьсяКХранилищу(Знач ПутьХранилища, Знач Логин, Знач Пароль,
Знач ИгнорироватьНаличиеПодключеннойБД = Ложь,
Знач ЗаменитьКонфигурациюБД = Истина) Экспорт
Процедура ПодключитьсяКХранилищу(
Знач СтрокаПодключенияХранилище = "", Знач ПользовательХранилища="", Знач ПарольХранилища="",
Знач ИгнорироватьНаличиеПодключеннойБД = Ложь, Знач ЗаменитьКонфигурациюБД = Истина, Знач ДополнительныеКлючиЗапуска = "") Экспорт

Лог.Информация("Выполняю подключение к хранилищу конфигурации");

ТекущаяПроцедура = "ПодключитьсяКХранилищу";

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

Параметры = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска();

КонтекстБД = УправлениеКонфигуратором.ПолучитьКонтекст();
Если Не ЗначениеЗаполнено(КонтекстБД.КлючСоединенияСБазой) Тогда
Лог.Предупреждение("При подключении к хранилищу не определена БД, подключаем временную БД");
УправлениеКонфигуратором.СоздатьФайловуюБазу(КаталогВременнойИБ);
УправлениеКонфигуратором.УстановитьКонтекст("/F " + КаталогВременнойИБ, "", "");
КонецЕсли;
Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаПодключенияХранилище+"""");
Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+"""");

ХранилищеКонфигурации = Новый МенеджерХранилищаКонфигурации();
ХранилищеКонфигурации.УстановитьУправлениеКонфигуратором(УправлениеКонфигуратором);
ХранилищеКонфигурации.УстановитьПараметрыАвторизации(Логин, Пароль);
Если Не ПустаяСтрока(ПарольХранилища) Тогда
Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+"""");
КонецЕсли;

Параметры.Добавить("/ConfigurationRepositoryBindCfg ");

ХранилищеКонфигурации.УстановитьПутьКХранилищу(ПутьХранилища);
Если ИгнорироватьНаличиеПодключеннойБД Тогда
Параметры.Добавить("-forceBindAlreadyBindedUser ");
КонецЕсли;
Если ЗаменитьКонфигурациюБД Тогда
Параметры.Добавить("-forceReplaceCfg ");
КонецЕсли;

Если Не ПустаяСтрока(ДополнительныеКлючиЗапуска) Тогда
Параметры.Добавить(ДополнительныеКлючиЗапуска);
Лог.Информация("Выполняю подключение к хранилищу расширения");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

и здесь считаю неверной проверку на хранилище расширения выполнять через
Если Не ПустаяСтрока(ДополнительныеКлючиЗапуска)

закладываем мину на будущее.
если в будущем добавятся другие доп.ключи, это условие будет неверным.

Иначе
Лог.Информация("Выполняю подключение к хранилищу конфигурации");
КонецЕсли;

Попытка
ХранилищеКонфигурации.ПодключитьсяКХранилищу(ИгнорироватьНаличиеПодключеннойБД, ЗаменитьКонфигурациюБД);

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

Лог.Информация("Подключение к хранилищу конфигурации завершено");
Исключение
Expand All @@ -551,15 +567,17 @@
Процедура ОтключитьсяОтХранилища(Знач ДополнительныеКлючиЗапуска = "") Экспорт

ТекущаяПроцедура = "ОтключитьсяОтХранилища";
Лог.Информация("Выполняю отключение от хранилища конфигурации");

Параметры = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска();

Параметры.Добавить("/ConfigurationRepositoryUnbindCfg");
Параметры.Добавить("-force");
Параметры.Добавить("/ConfigurationRepositoryUnbindCfg ");
Параметры.Добавить("-force ");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

зачем нужны доп.пробелы в конце 2х ключей ??

  • "/ConfigurationRepositoryUnbindCfg "
  • "-force "

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут перемудрил и пробелы, действительно, лишние

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему в МенеджерКонфигуратора.ПодключитьсяКХранилищу для подключения используется МенеджерХранилищаКонфигурации, а не сразу УправлениеКонфигуратором?
Первый не принимает имя расширения, его дописывать надо. Во второй же просто добавить параметр на выполнение.
Как раз из-за CI?


Если Не ПустаяСтрока(ДополнительныеКлючиЗапуска) Тогда
Параметры.Добавить(ДополнительныеКлючиЗапуска);
Лог.Информация("Выполняю отключение от хранилища расширения");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

считаю неверной проверку на хранилище расширения выполнять через
Если Не ПустаяСтрока(ДополнительныеКлючиЗапуска)

закладываем мину на будущее.
если в будущем добавятся другие доп.ключи, это условие будет неверным.

Иначе
Лог.Информация("Выполняю отключение от хранилища конфигурации");
КонецЕсли;

Попытка
Expand Down