Skip to content

Commit f8cd735

Browse files
authored
Merge pull request #33 from ZhdanovR/feature/set-database
Подключение существующей ИБ как рабочей
2 parents a28ff3c + deab631 commit f8cd735

7 files changed

+179
-45
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ tests.xml
22
*.ospx
33
oscript_modules/
44
src/oscript.cfg
5+
.packman

README.md

+9-1
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,17 @@
2020
## Инструкция по применению
2121

2222
packman help
23-
23+
24+
## Важно!
25+
26+
При использовании существующей ИБ в качестве рабочей (например, формирование поставки непосредственно с тестового или боевого контура), будьте внимательны при использовании команд:
27+
- load-storage - Выгрузить из хранилища
28+
- drop-support - Снять с поддержки
29+
так как эти команды вносят изменения непосредственно в информационную базу
30+
2431
### Более подробная инструкция
2532

2633
На текущий момент отсутствует, как класс. Спрашивайте в [gitter](https://gitter.im/EvilBeaver/oscript-library)
2734

2835
Есть бесплатный вебинар [Открытый инструментарий счастливого 1С-ника](http://infostart.ru/webinars/564258/)
36+

packagedef

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
.ЗависитОт("tool1cd")
1111
.ЗависитОт("strings")
1212
.ЗависитОт("tempfiles")
13+
.ЗависитОт("fs")
1314
.ВключитьФайл("src")
1415
.ВключитьФайл("tools/СборИнформацииОМетаданных.epf")
1516
.ВключитьФайл("tools/ПомощникСозданияМанифестаПоставки.epf")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#Использовать logos
2+
3+
Перем Лог;
4+
5+
///////////////////////////////////////////////////////////////////////////////////////////////////
6+
// Прикладной интерфейс
7+
8+
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт
9+
ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Подключение существующей ИБ как рабочей");
10+
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ibconnection", "Строка подключения к БД (/FfilePath или /SserverPath) Например, для файловых баз --ibconnection /FC:\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1 Или для серверных баз --ibconnection /Sservername\basename"); // позиционный
11+
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-db-user", "Пользователь БД");
12+
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-db-pwd", "Пароль БД");
13+
Парсер.ДобавитьКоманду(ОписаниеКоманды);
14+
КонецПроцедуры
15+
16+
// Выполняет логику команды
17+
//
18+
// Параметры:
19+
// ПараметрыКоманды - Соответствие ключей командной строки и их значений
20+
//
21+
Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт
22+
ПутьКФайлуКонфигурации = ОкружениеСборки.ПолучитьПутьКФайлуКонфигурации();
23+
СтрокаПодключения = ПараметрыКоманды["ibconnection"];
24+
ПользовательИБ = ПараметрыКоманды["-db-user"];
25+
ПарольИБ = ПараметрыКоманды["-db-pwd"];
26+
27+
ТекстовыйДокумент = Новый ТекстовыйДокумент;
28+
ТекстовыйДокумент.ДобавитьСтроку("СтрокаПодключения" + "=" + СтрокаПодключения);
29+
Если ПользовательИБ <> Неопределено Тогда
30+
ТекстовыйДокумент.ДобавитьСтроку("ПользовательИБ" + "=" + ПользовательИБ);
31+
Если ПарольИБ <> Неопределено Тогда
32+
ТекстовыйДокумент.ДобавитьСтроку("ПарольИБ" + "=" + ПарольИБ);
33+
КонецЕсли;
34+
КонецЕсли;
35+
36+
ТекстовыйДокумент.Записать(ПутьКФайлуКонфигурации);
37+
38+
Лог.Информация("Файл настройки подключения создан. %1", ПутьКФайлуКонфигурации);
39+
Возврат 0;
40+
41+
КонецФункции
42+
43+
Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#Использовать v8runner
22
#Использовать strings
3+
#Использовать fs
34

45
Перем мРабочийКаталогСборки;
6+
Перем Лог;
57

68
// Возвращает значение рабочего каталога, глобальное для всех шагов сборки
79
//
@@ -17,6 +19,8 @@
1719
КонецЕсли;
1820
КонецЕсли;
1921

22+
ФС.ОбеспечитьКаталог(мРабочийКаталогСборки);
23+
2024
Возврат мРабочийКаталогСборки;
2125

2226
КонецФункции // РабочийКаталог() Экспорт
@@ -26,12 +30,36 @@
2630
Функция ПолучитьКонфигуратор() Экспорт
2731

2832
УК = Новый УправлениеКонфигуратором();
33+
34+
ИмяКонфигурационногоФайла = ПолучитьПутьКФайлуКонфигурации();
35+
Если ФС.ФайлСуществует(ИмяКонфигурационногоФайла) Тогда
36+
Лог.Отладка("Файл настройки подключения найден.");
37+
УстановитьКонтекстПодключения(УК, ИмяКонфигурационногоФайла);
38+
Иначе
39+
Лог.Отладка("Файл настройки подключения не найден");
40+
КонецЕсли;
2941
УК.КаталогСборки(РабочийКаталог());
3042

3143
Возврат УК;
3244

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

47+
Процедура УстановитьКонтекстПодключения(УК, ИмяКонфигурационногоФайла)
48+
ПараметрыПодключения = ПрочитатьДанныеИзФайла(ИмяКонфигурационногоФайла);
49+
СтрокаПодключения = ПараметрыПодключения.СтрокаПодключения;
50+
Лог.Отладка("Строка подключения из файла %1", СтрокаПодключения);
51+
ПользовательИБ = "";
52+
ПарольИБ = "";
53+
Если ПараметрыПодключения.Свойство("ПользовательИБ") Тогда
54+
ПользовательИБ = ПараметрыПодключения.ПользовательИБ;
55+
КонецЕсли;
56+
Если ПараметрыПодключения.Свойство("ПарольИБ") Тогда
57+
ПарольИБ = ПараметрыПодключения.ПарольИБ;
58+
КонецЕсли;
59+
60+
УК.УстановитьКонтекст(СтрокаПодключения, ПользовательИБ, ПарольИБ);
61+
КонецПроцедуры
62+
3563
Процедура ПрименитьВерсию1С(Знач УправлениеКонфигуратором, Знач Версия1С) Экспорт
3664
Если ЗначениеЗаполнено(Версия1С) Тогда
3765
УправлениеКонфигуратором.ИспользоватьВерсиюПлатформы(Версия1С);
@@ -50,11 +78,48 @@
5078
Возврат "v8-metadata.info";
5179
КонецФункции // ИмяФайлаИнформацииОМетаданных()
5280

81+
Функция ИмяКонфигурационногоФайла() Экспорт
82+
Возврат "packman.conf";
83+
КонецФункции // ИмяФайлаИнформацииОМетаданных()
84+
85+
Функция ПолучитьПутьКФайлуКонфигурации() Экспорт
86+
Возврат ОбъединитьПути(РабочийКаталог(), ИмяКонфигурационногоФайла());
87+
КонецФункции
88+
5389
Функция ПрочитатьИнформациюОМетаданных(Знач ИмяФайла) Экспорт
5490

91+
Результат = ПрочитатьДанныеИзФайла(ИмяФайла);
92+
Если Не Результат.Свойство("Версия") Тогда
93+
ВызватьИсключение "Не найдено поле Версия в файле метаданных";
94+
КонецЕсли;
95+
96+
// Предустановленное окружение
97+
Переменные = ПолучитьПеременнуюСреды("VPACKMAN_BUILDVARS");
98+
Если Переменные <> Неопределено Тогда
99+
Лог.Отладка("Обнаружена переменная VPACKMAN_BUILDVARS");
100+
Лог.Отладка("VPACKMAN_BUILDVARS=" + Переменные);
101+
Строки = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(Переменные, ";");
102+
Для Каждого Стр Из Строки Цикл
103+
Лог.Отладка("Прочитано: " + Стр);
104+
Позиция = Найти(Стр, "=");
105+
Если Позиция = 0 Тогда
106+
Продолжить;
107+
КонецЕсли;
108+
109+
Результат.Вставить(Лев(Стр, Позиция-1), Сред(Стр, Позиция+1));
110+
КонецЦикла;
111+
Иначе
112+
Лог.Отладка("Переменная окружения VPACKMAN_BUILDVARS не найдена");
113+
КонецЕсли;
114+
115+
Возврат Результат;
116+
117+
КонецФункции // ПрочитатьИнформациюОМетаданных()
118+
119+
Функция ПрочитатьДанныеИзФайла(ИмяФайла)
120+
55121
Результат = Новый Структура();
56122
ЧтениеТекста = Новый ЧтениеТекста(ИмяФайла);
57-
Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
58123
Лог.Отладка("Читаю информацию о метаданных");
59124
Пока Истина Цикл
60125
Стр = ЧтениеТекста.ПрочитатьСтроку();
@@ -71,54 +136,31 @@
71136

72137
КонецЦикла;
73138

74-
Если Не Результат.Свойство("Версия") Тогда
75-
ЧтениеТекста.Закрыть();
76-
ВызватьИсключение "Не найдено поле Версия в файле метаданных";
77-
КонецЕсли;
78-
79139
ЧтениеТекста.Закрыть();
80-
81-
// Предустановленное окружение
82-
Переменные = ПолучитьПеременнуюСреды("VPACKMAN_BUILDVARS");
83-
Если Переменные <> Неопределено Тогда
84-
Лог.Отладка("Обнаружена переменная VPACKMAN_BUILDVARS");
85-
Лог.Отладка("VPACKMAN_BUILDVARS=" + Переменные);
86-
Строки = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(Переменные, ";");
87-
Для Каждого Стр Из Строки Цикл
88-
Лог.Отладка("Прочитано: " + Стр);
89-
Позиция = Найти(Стр, "=");
90-
Если Позиция = 0 Тогда
91-
Продолжить;
92-
КонецЕсли;
93-
94-
Результат.Вставить(Лев(Стр, Позиция-1), Сред(Стр, Позиция+1));
95-
КонецЦикла;
96-
Иначе
97-
Лог.Отладка("Переменная окружения VPACKMAN_BUILDVARS не найдена");
98-
КонецЕсли;
99140

100141
Возврат Результат;
101-
102-
КонецФункции // ПрочитатьИнформациюОМетаданных()
142+
КонецФункции
103143

104144
Функция ОпределитьСтандартноеИмяКаталогаШаблона(Знач ИнформацияОМетаданных) Экспорт
105-
106-
Перем ВерсияМетаданных;
107-
Перем НомерКоммита;
108-
Перем НомерСборкиСервера;
109-
110-
ВерсияМетаданных = ИнформацияОМетаданных.Версия;
111-
ИнформацияОМетаданных.Свойство("НомерВерсииХранилища", НомерКоммита);
112-
ИнформацияОМетаданных.Свойство("НомерСборкиСервера", НомерСборкиСервера);
113-
114-
Возврат ВерсияМетаданных + НеобязательныйСуффикс("-", НомерКоммита) + НеобязательныйСуффикс(".", НомерСборкиСервера);
115-
145+
146+
Перем ВерсияМетаданных;
147+
Перем НомерКоммита;
148+
Перем НомерСборкиСервера;
149+
150+
ВерсияМетаданных = ИнформацияОМетаданных.Версия;
151+
ИнформацияОМетаданных.Свойство("НомерВерсииХранилища", НомерКоммита);
152+
ИнформацияОМетаданных.Свойство("НомерСборкиСервера", НомерСборкиСервера);
153+
154+
Возврат ВерсияМетаданных + НеобязательныйСуффикс("-", НомерКоммита) + НеобязательныйСуффикс(".", НомерСборкиСервера);
155+
116156
КонецФункции // ОпределитьСтандартноеИмяКаталогаШаблона()
117157

118158
Функция НеобязательныйСуффикс(Знач Разделитель, Знач Значение)
119-
Если Не ПустаяСтрока(Значение) Тогда
120-
Возврат Разделитель + Значение;
121-
КонецЕсли;
159+
Если Не ПустаяСтрока(Значение) Тогда
160+
Возврат Разделитель + Значение;
161+
КонецЕсли;
162+
163+
Возврат "";
164+
КонецФункции
122165

123-
Возврат "";
124-
КонецФункции
166+
Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());

src/Модули/ПараметрыСистемы.os

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
КлассыРеализацииКоманд["help"] = "КомандаСправкаПоПараметрам";
1111
КлассыРеализацииКоманд["version"] = "КомандаВерсия";
1212
КлассыРеализацииКоманд["load-storage"] = "КомандаВыгрузитьИзХранилища";
13+
КлассыРеализацииКоманд["set-database"] = "КомандаПодключитьИнформационнуюБазу";
1314
КлассыРеализацииКоманд["drop-support"] = "КомандаСнятьСПоддержки";
1415
КлассыРеализацииКоманд["load-src"] = "КомандаСобратьИзИсходныхФайлов";
1516
КлассыРеализацииКоманд["make-cf"] = "КомандаСоздатьФайлыПоставки";
@@ -41,6 +42,6 @@
4142

4243
Функция ВерсияПродукта() Экспорт
4344

44-
Возврат "0.6";
45+
Возврат "0.7";
4546

4647
КонецФункции // ВерсияПродукта() Экспорт

tests/create-distr.os

+38
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
Список.Добавить("Тест_ДолженПроверитьЧтоВерсияПолученаСПомощьюTool1CD");
1616
Список.Добавить("Тест_ДолженПроверитьЧтоВерсияПолученаСПомощьюTool1CDИЕстьФайлПараметров");
1717
Список.Добавить("Тест_ДолженПроверитьЧтоКаталогСборкиОчищается");
18+
Список.Добавить("Тест_ДолженПроверитьЧтоПодключаетсяВнешняяИБ");
1819

1920
Возврат Список;
2021

@@ -207,5 +208,42 @@
207208

208209
КонецПроцедуры // ИмяПроцедуры()
209210

211+
Процедура Тест_ДолженПроверитьЧтоПодключаетсяВнешняяИБ() Экспорт
212+
КонфигурационныйФайл = Новый Файл(ОкружениеСборки.ПолучитьПутьКФайлуКонфигурации());
213+
ФайлПоставки = Новый Файл(ОбъединитьПути(ОкружениеСборки.РабочийКаталог(), "1cv8.cf"));
214+
215+
ВременноеХранилище = СоздатьВременноеТестовоеХранилище();
216+
КаталогСборки = ВременныеФайлы.СоздатьКаталог();
217+
Параметры = Новый Соответствие;
218+
219+
Параметры.Вставить("АдресХранилища", ВременноеХранилище);
220+
Параметры.Вставить("-storage-user","Администратор");
221+
Параметры.Вставить("-storage-pwd", "");
222+
Параметры.Вставить("-storage-v", "18");
223+
Параметры.Вставить("-use-tool1cd", Ложь);
224+
225+
226+
КомандаыгрузитьИзХранилища = Новый КомандаВыгрузитьИзХранилища;
227+
УправлениеКонфигуратором = Новый УправлениеКонфигуратором;
228+
УправлениеКонфигуратором.КаталогСборки(КаталогСборки);
229+
230+
КомандаыгрузитьИзХранилища.ВыполнитьКоманду(Параметры);
231+
232+
КомандаПодключитьИнформационнуюБазу = Новый КомандаПодключитьИнформационнуюБазу;
233+
Параметры = Новый Соответствие;
234+
235+
Сообщить("Каталог сборки - отладка" + ОкружениеСборки.РабочийКаталог());
236+
Параметры.Вставить("ibconnection", "/F" + ОбъединитьПути(ОкружениеСборки.РабочийКаталог(), "v8r_TempDB/"));
237+
238+
КомандаПодключитьИнформационнуюБазу.ВыполнитьКоманду(Параметры);
239+
240+
КомандаСоздатьФайлыПоставки = Новый КомандаСоздатьФайлыПоставки;
241+
КомандаСоздатьФайлыПоставки.ВыполнитьКоманду(Новый Соответствие());
242+
243+
Сообщить("Файл поставки " + ФайлПоставки);
244+
Ожидаем.Что(ФайлПоставки.Существует()).ЕстьИстина();
245+
246+
КонецПроцедуры
247+
210248
Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
211249
Лог.УстановитьУровень(УровниЛога.Отладка);

0 commit comments

Comments
 (0)