Skip to content

Commit 248d150

Browse files
authored
Merge pull request #151 from khorevaa/feature/v8path
fix #150 Добавление возможности указания исполняемого файла платформы 1С
2 parents 7bd7144 + fac1d72 commit 248d150

10 files changed

+97
-6
lines changed

features/v8path.feature

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# language: ru
2+
3+
Функционал: Передача полного пути к платформе 1С
4+
Как Пользователь
5+
Я хочу иметь возможность указать не стандартный путь к платформе 1С
6+
Чтобы иметь возможность запускать синхронизацию с использованием платформы 1С установленной в произвольном каталоге
7+
8+
Контекст: Тестовый контекст
9+
Когда Я очищаю параметры команды "gitsync" в контексте
10+
И Я создаю новый объект ГитРепозиторий
11+
И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке
12+
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С"
13+
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С"
14+
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников"
15+
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников"
16+
И Я создаю тестовой файл AUTHORS
17+
И Я записываю "0" в файл VERSION
18+
19+
Сценарий: Простая синхронизация хранилища с git-репозиторием
20+
Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория"
21+
И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория"
22+
И Я добавляю параметр "--v8-path /opt/1C/v8.3/x86_64/1cv8" для команды "gitsync"
23+
И Я добавляю параметр "-v" для команды "gitsync"
24+
И Я добавляю параметр "sync" для команды "gitsync"
25+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
26+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
27+
Когда Я выполняю команду "gitsync"
28+
Тогда Вывод команды "gitsync" содержит "ОТЛАДКА - Используется путь к платформе 1С </opt/1C/v8.3/x86_64/1cv8>"
29+
И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git"
30+
И Вывод команды "gitsync" не содержит "Внешнее исключение"
31+
И Код возврата команды "gitsync" равен 0

readme.md

+13
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ $ opm install -f <ПутьКФайлу>
255255
| Имя | Описание |
256256
|---------------------|--------------------------------------------------------|
257257
| `GITSYNC_V8VERSION` | маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.) |
258+
| `GITSYNC_V8_PATH` | путь к исполняемому файлу платформы 1С (Например, /opt/1C/v8.3/x86_64/1cv8) |
258259
| `GITSYNC_VERSOBE` | вывод отладочной информация в процессе выполнении |
259260
| `GITSYNC_TEMP` | путь к каталогу временных файлов |
260261
| `GITSYNC_EMAIL` | домен почты для пользователей git |
@@ -312,6 +313,14 @@ $ opm install -f <ПутьКФайлу>
312313
Данная команда выполнить синхронизацию хранилища 1С по пути `C:/Хранилище_1С/` и репозитория git в каталоге `C:/work_dir`
313314
Используя для подключения к хранилищу 1С пользователя `Admin` и пароль `Secret`
314315

316+
* Использование конкретной исполняемого файла платформы
317+
318+
```sh
319+
gitsync --v8-path /opt/1C/v8.3/x86_64/1cv8 s -uAdmin -p=Secret C:/Хранилище_1С/ C:/work_dir/
320+
```
321+
Данная команда синхронизации выполнится с использованием исполняемого файла платформы `/opt/1C/v8.3/x86_64/1cv8` для хранилища 1С по пути `C:/Хранилище_1С/` и репозитория git в каталоге `C:/work_dir`
322+
Используя для подключения к хранилищу 1С пользователя `Admin` и пароль `Secret`
323+
315324
* Использование только переменных окружения
316325

317326
linux:
@@ -322,6 +331,8 @@ $ opm install -f <ПутьКФайлу>
322331
export GITSYNC_STORAGE_USER=Admin
323332
export GITSYNC_STORAGE_PASSWORD=Secret
324333
export GITSYNC_V8VERSION=8.3.7
334+
# Указание конкретного исполняемого файла платформы 1С
335+
#export GITSYNC_V8_PATH=/opt/1C/v8.3/x86_64/1cv8 # Надо обернуть в кавычки если путь содержит пробелы
325336
export GITSYNC_VERSOBE=true #Можно использовать Да/Ложь/Нет/Истина
326337
export GITSYNC_TEMP=./temp/sync
327338
gitsync s
@@ -334,6 +345,8 @@ $ opm install -f <ПутьКФайлу>
334345
set GITSYNC_STORAGE_USER=Admin
335346
set GITSYNC_STORAGE_PASSWORD=Secret
336347
set GITSYNC_V8VERSION=8.3.7
348+
# Указание конкретного исполняемого файла платформы 1С
349+
#set GITSYNC_V8_PATH="C:\Program Files (x86)\1cv8\8.3.12.1567\bin\1cv8.exe" # Надо обернуть в кавычки если путь содержит пробелы
337350
set GITSYNC_VERSOBE=true #Можно использовать Да/Ложь/Нет/Истина
338351
set GITSYNC_TEMP=./temp/sync
339352

src/cmd/gitsync.os

+5-1
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818
Приложение = Новый КонсольноеПриложение(ПараметрыПриложения.ИмяПриложения(),
1919
"Приложение для синхронизации Хранилища 1С с git");
2020
Приложение.Версия("version", ПараметрыПриложения.Версия());
21-
Приложение.Опция("v8version", "8.3", "маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.)")
21+
Приложение.Опция("v8version", "8.3", "маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.)")
2222
.ВОкружении("GITSYNC_V8VERSION");
23+
Приложение.Опция("v8-path", "", "путь к исполняемому файлу платформы 1С (Например, /opt/1C/v8.3/x86_64/1cv8)")
24+
.ВОкружении("GITSYNC_V8_PATH");
2325

2426
Приложение.Опция("v verbose", Ложь, "вывод отладочной информация в процессе выполнении")
2527
.Флаговый()
@@ -64,6 +66,7 @@
6466
Команда.ПередВыполнениемКоманды(Команда);
6567

6668
ВерсияПлатформы = Команда.ЗначениеОпции("v8version");
69+
ПутьКПлатформе = Команда.ЗначениеОпции("v8-path");
6770
ВыводДополнительнойИнформации = Команда.ЗначениеОпции("verbose");
6871
ПутьКГит = Команда.ЗначениеОпции("git-path");
6972
ВременныйКаталогРаботы = Команда.ЗначениеОпции("tempdir");
@@ -73,6 +76,7 @@
7376

7477
Лог.Отладка("Устанавливаю общие параметры");
7578
ПараметрыПриложения.УстановитьВерсиюПлатформы(ВерсияПлатформы);
79+
ПараметрыПриложения.УстановитьПутьКПлатформе(ПутьКПлатформе);
7680
ПараметрыПриложения.УстановитьПутьКГит(ПутьКГит);
7781
ПараметрыПриложения.УстановитьДоменПочты(ДоменПочты);
7882
ПараметрыПриложения.УстановитьВременныйКаталог(ВременныйКаталогРаботы);

src/cmd/Классы/КомандаClone.os

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858

5959
Распаковщик = Новый МенеджерСинхронизации();
6060
Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы)
61+
.ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе)
6162
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
6263
.ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит)
6364
.ПодпискиНаСобытия(ИндексПлагинов)

src/cmd/Классы/КомандаInit.os

+1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060

6161
Распаковщик = Новый МенеджерСинхронизации();
6262
Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы)
63+
.ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе)
6364
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
6465
.ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит)
6566
.ПодпискиНаСобытия(ИндексПлагинов)

src/cmd/Классы/КомандаSetVersion.os

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030

3131
Распаковщик = Новый МенеджерСинхронизации();
3232
Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы)
33-
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
33+
.ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе)
34+
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
3435
.ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит)
3536
.ПодпискиНаСобытия(ИндексПлагинов)
3637
.ПараметрыПодписокНаСобытия(Команда.ПараметрыКоманды())

src/cmd/Классы/КомандаSync.os

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555

5656
Распаковщик = Новый МенеджерСинхронизации();
5757
Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы)
58+
.ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе)
5859
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
5960
.ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит)
6061
.ПодпискиНаСобытия(ИндексПлагинов)

src/cmd/Модули/ПараметрыПриложения.os

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
ОбщиеПараметры.Вставить("Плагины", Новый Массив);
1313
ОбщиеПараметры.Вставить("ВерсияПлатформы", "8.3");
14+
ОбщиеПараметры.Вставить("ПутьКПлатформе", "");
1415
ОбщиеПараметры.Вставить("ДоменПочты", "localhost");
1516
ОбщиеПараметры.Вставить("ПутьКГит", "");
1617

@@ -24,6 +25,10 @@
2425
ОбщиеПараметры.Вставить("ПутьКГит", ПутьКГит);
2526
КонецПроцедуры
2627

28+
Процедура УстановитьПутьКПлатформе(Знач ПутьКПлатформе) Экспорт
29+
ОбщиеПараметры.Вставить("ПутьКПлатформе", ПутьКПлатформе);
30+
КонецПроцедуры
31+
2732
Процедура УстановитьКаталогПлагинов(Знач ПутьККаталогуПлагинов) Экспорт
2833

2934
ЛогПриложения.Отладка("Устанавливаю каталог плагинов <%1>", ПутьККаталогуПлагинов);

src/core/Классы/МенеджерСинхронизации.os

+37-3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
Перем ДоменПочтыДляGitПоУмолчанию Экспорт; // Строка, домен пользователей по умолчанию
3333
Перем ТекущаяВерсияПлатформы Экспорт; // Строка, используемая версия 1С.Предприятие
34+
Перем ТекущийПутьКПлатформе Экспорт; // Строка, путь к исполняемому файлу платформы 1С.Предприятие
3435

3536
#Область Публичное_API
3637

@@ -161,6 +162,21 @@
161162

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

165+
// Устанавливает версию платформы 1С
166+
//
167+
// Параметры:
168+
// НоваяВерсияПлатформы - Строка - путь к исполняемому файлу платформы 1С.Предприятие
169+
//
170+
// Возвращаемое значение:
171+
// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации>
172+
//
173+
Функция ПутьКПлатформе(Знач НовыйПутьКПлатформе) Экспорт
174+
175+
ТекущийПутьКПлатформе = НовыйПутьКПлатформе;
176+
Возврат ЭтотОбъект;
177+
178+
КонецФункции
179+
164180
// Устанавливает путь к исполняемому файлу git
165181
//
166182
// Параметры:
@@ -607,11 +623,26 @@
607623
Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень());
608624
КаталогСборки = ВременныеФайлы.СоздатьКаталог();
609625
МенеджерКонфигуратора.КаталогСборки(КаталогСборки);
610-
МенеджерКонфигуратора.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы);
626+
627+
Если ЗначениеЗаполнено(ТекущийПутьКПлатформе) Тогда
628+
629+
Если Не ФС.ФайлСуществует(ТекущийПутьКПлатформе) Тогда
630+
631+
ВызватьИсключение СтрШаблон("Исполняемый файл платформы 1С <%1> не найден", ТекущийПутьКПлатформе);
632+
633+
КонецЕсли;
634+
635+
МенеджерКонфигуратора.ПутьКПлатформе1С(ТекущийПутьКПлатформе);
636+
Лог.Отладка("Используется путь к платформе 1С <%1>", ТекущийПутьКПлатформе);
637+
Иначе
638+
МенеджерКонфигуратора.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы);
639+
Лог.Отладка("Используется платформа 1С версии <%1>", ТекущийПутьКПлатформе);
640+
КонецЕсли;
611641

612642
КонецЕсли;
613643

614644
Возврат МенеджерКонфигуратора;
645+
615646
КонецФункции
616647

617648
#КонецОбласти
@@ -1087,8 +1118,11 @@
10871118

10881119
Если ХранилищеКонфигурации = Неопределено Тогда
10891120
ХранилищеКонфигурации = Новый МенеджерХранилищаКонфигурации;
1090-
Конфигуратор = ХранилищеКонфигурации.ПолучитьУправлениеКонфигуратором();
1091-
Конфигуратор.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы);
1121+
1122+
НовыйУправлениеКонфигуратором = ПолучитьМенеджерКонфигуратора();
1123+
НовыйУправлениеКонфигуратором.УстановитьКодЯзыка("RU"); // TODO: Костыль выгрузки истории хранилища с другими языками выгружает только в RU
1124+
ХранилищеКонфигурации.УстановитьУправлениеКонфигуратором(НовыйУправлениеКонфигуратором);
1125+
10921126
КонецЕсли;
10931127

10941128
Логирование.ПолучитьЛог("oscript.lib.v8storage").УстановитьУровень(Лог.Уровень());

src/core/Классы/ПакетнаяСинхронизация.os

+1-1
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@
214214
Процедура ПрочитатьФайлНастроек()
215215

216216
МенеджерПараметров = Новый МенеджерПараметров();
217-
МенеджерПараметров.УстановитьФайлПараметров(ПутьКФайлуНастроек.ПолноеИмя);
217+
МенеджерПараметров.УстановитьФайлПараметров(ПутьКФайлуНастроек);
218218
МенеджерПараметров.ИспользоватьПровайдерJSON();
219219
МенеджерПараметров.ИспользоватьПровайдерYAML();
220220
МенеджерПараметров.КонструкторПараметров(ЭтотОбъект);

0 commit comments

Comments
 (0)