Skip to content

v1.9.0 - Поддержка параллельной загрузки из dt, ПроверкаКонфигурации и т.д. #144

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

Merged
merged 14 commits into from
Jun 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ test-reports/*
*.ospx
tests.xml
.scannerwork/
oscript_modules/
24 changes: 22 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,36 @@

Каждая команда конфигуратора может выполняться только для конкретной информационной базы. База, для которой выполняется команда называется контекстом команды.

Контекст указывается в формате **параметра командной строки конфигуратора** - так, как в Конфигураторе задается нужная информационная база. Например, для формата строки соединения:
Контекст указывается в формате **параметра командной строки конфигуратора** (так, как в Конфигураторе задается нужная информационная база) или в виде специальной структуры. Например, для формата строки соединения:

```bsl
Конфигуратор.УстановитьКонтекст("/IBConnectionString""Srvr=someserver:2041; Ref='database'""","Admin", "passw0rd");
```

ИЛИ

```bsl
ПараметрыСтрокиСоединения = Конфигуратор.ПараметрыСтрокиСоединения();
ПараметрыСтрокиСоединения.Сервер = "someserver";
ПараметрыСтрокиСоединения.Порт = 2041;
ПараметрыСтрокиСоединения.ИмяБазы = "database";

Конфигуратор.УстановитьКонтекст(ПараметрыСтрокиСоединения, "Admin", "passw0rd");
```

В более простой форме - для файловой базы можно указать через ключ ```/F```:

```bsl
Конфигуратор.УстановитьКонтекст("/FC:\1cdb\mydatabase","Admin", "passw0rd");
Конфигуратор.УстановитьКонтекст("/FC:\1cdb\mydatabase", "Admin", "passw0rd");
```

ИЛИ

```bsl
ПараметрыСтрокиСоединения = Конфигуратор.ПараметрыСтрокиСоединения();
ПараметрыСтрокиСоединения.ПутьКФайлуБазы = "C:\1cdb\mydatabase";

Конфигуратор.УстановитьКонтекст(ПараметрыСтрокиСоединения, "Admin", "passw0rd");
```

Далее, вы вызываете методы объекта "Конфигуратор", соответствующие командам конфигуратора. Все команды будут выполняться над заданной базой. Теперь, объект Конфигуратор настроен на некий *"контекст"* - информационную базу, с которой и будут производиться все операции.
Expand Down
70 changes: 67 additions & 3 deletions src/v8runner.os
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,13 @@
#Область ПрограммыйИнтерфейс

Процедура УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт
мКонтекстКоманды.КлючСоединенияСБазой = СтрокаСоединения;

Если ТипЗнч(СтрокаСоединения) = Тип("Структура") Тогда
мКонтекстКоманды.КлючСоединенияСБазой = СформироватьСтрокуСоединения(СтрокаСоединения);
Иначе
мКонтекстКоманды.КлючСоединенияСБазой = СтрокаСоединения;
КОнецЕсли;

мКонтекстКоманды.ИмяПользователя = Пользователь;
мКонтекстКоманды.Пароль = Пароль;

Expand Down Expand Up @@ -917,7 +923,8 @@
Знач ФайлНастроек,
Знач ПоставитьНаПоддержку = Неопределено,
Знач ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Неопределено,
Знач Принудительно = Ложь) Экспорт
Знач Принудительно = Ложь,
Знач ПараметрыХранилища = Неопределено) Экспорт

Параметры = СтандартныеПараметрыЗапускаКонфигуратора();
Параметры.Добавить("/MergeCfg " + ОбернутьВКавычки(ФайлКонфигурации));
Expand All @@ -939,6 +946,15 @@
Параметры.Добавить("-force");
КонецЕсли;

Если НЕ ПараметрыХранилища = Неопределено Тогда
Параметры.Добавить("/ConfigurationRepositoryF """ + ПараметрыХранилища.СтрокаПодключенияХранилище + """");
Параметры.Добавить("/ConfigurationRepositoryN """ + ПараметрыХранилища.ПользовательХранилища + """");

Если ЗначениеЗаполнено(ПараметрыХранилища.ПарольХранилища) Тогда
Параметры.Добавить("/ConfigurationRepositoryP """ + ПараметрыХранилища.ПарольХранилища + """");
КонецЕсли;
КонецЕсли;

ВыполнитьКоманду(Параметры);

КонецПроцедуры
Expand Down Expand Up @@ -1300,14 +1316,20 @@

КонецПроцедуры // СоздатьСервернуюБазу()

Процедура ЗагрузитьИнформационнуюБазу(ПутьВыгрузкиИБ) Экспорт
Процедура ЗагрузитьИнформационнуюБазу(ПутьВыгрузкиИБ,
Знач КоличествоЗаданий = 0) Экспорт

ФайлВыгрузки = Новый Файл(ПутьВыгрузкиИБ);
Ожидаем.Что(ФайлВыгрузки.Существует(), "Файл выгрузки <"+ПутьВыгрузкиИБ +"> существует, а это не так").ЭтоИстина();

ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора();

ПараметрыЗапуска.Добавить("/RestoreIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ));

Если ИспользуемаяВерсияПлатформыСтаршеИлиРавна("8.3.19") Тогда
ПараметрыЗапуска.Добавить(СтрШаблон("-JobsCount %1", КоличествоЗаданий));
КонецЕсли;

ВыполнитьКоманду(ПараметрыЗапуска);
КонецПроцедуры

Expand Down Expand Up @@ -2544,6 +2566,48 @@

КонецФункции

Функция СформироватьСтрокуСоединения(ПараметрыСтрокиСоединения) Экспорт

Если ТипЗнч(ПараметрыСтрокиСоединения) <> Тип("Структура") Тогда
Возврат ПараметрыСтрокиСоединения;
КонецЕсли;

Если ПараметрыСтрокиСоединения.ПутьКФайлуБазы <> "" Тогда
СтрокаСоединения = СтрШаблон("/F""%1""", ПараметрыСтрокиСоединения.ПутьКФайлуБазы);
Иначе
СтрокаСоединения = СтрШаблон(
"/IBConnectionString""Srvr='%1:%2'; Ref='%3'""",
ПараметрыСтрокиСоединения.Сервер,
ПараметрыСтрокиСоединения.Порт,
ПараметрыСтрокиСоединения.ИмяБазы);
КонецЕсли;

Возврат СтрокаСоединения;

КонецФункции

// возвращает параметры строки соединения с базой
//
// Возвращаемое значение:
// - Структура
// * Путь к файлу базы - строка - путь к базе в файловом варианте; если задан - остальные параметры игнорируются
// * Сервер - Строка
// * Порт - Строка
// * ИмяБазы - Строка
//
Функция ПараметрыСтрокиСоединения() Экспорт

ПараметрыСтрокиСоединения = Новый Структура;

ПараметрыСтрокиСоединения.Вставить("ПутьКФайлуБазы", "");
ПараметрыСтрокиСоединения.Вставить("Сервер", "");
ПараметрыСтрокиСоединения.Вставить("Порт", "");
ПараметрыСтрокиСоединения.Вставить("ИмяБазы", "");

Возврат ПараметрыСтрокиСоединения;

КонецФункции

#КонецОбласти

Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner");
Expand Down
Loading