Skip to content

Commit ae84770

Browse files
committed
refactor: Рефакторинг вызова ibcmd;
Дополнены комментарии и вывод сообщений в лог.
1 parent 52a20a2 commit ae84770

File tree

1 file changed

+40
-23
lines changed

1 file changed

+40
-23
lines changed

src/Классы/useIbcmd.os

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -96,27 +96,27 @@
9696

9797
Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды);
9898

99-
КлассРеализации.Опция("d ibcmd-data", "", "рабочий каталог утилиты ibcmd")
99+
КлассРеализации.Опция("d ibcmd-data", "", "[*use-ibcmd] рабочий каталог утилиты ibcmd")
100100
.Флаговый()
101101
.ВОкружении("GITSYNC_IBCMD_DATA");
102102

103-
КлассРеализации.Опция("t ibcmd-dbms", "MSSQLServer", "тип СУБД (при использовании ibcmd)")
103+
КлассРеализации.Опция("t ibcmd-dbms", "MSSQLServer", "[*use-ibcmd] тип СУБД (при использовании ibcmd)")
104104
.ТСтрока()
105105
.ВОкружении("GITSYNC_IBCMD_DBMS");
106106

107-
КлассРеализации.Опция("s ibcmd-db-server", "", "адрес сервера базы данных (при использовании ibcmd)")
107+
КлассРеализации.Опция("s ibcmd-db-server", "", "[*use-ibcmd] адрес сервера базы данных (при использовании ibcmd)")
108108
.ТСтрока()
109109
.ВОкружении("GITSYNC_IBCMD_DB_SERVER");
110110

111-
КлассРеализации.Опция("n ibcmd-db-name", "", "имя базы данных (при использовании ibcmd)")
111+
КлассРеализации.Опция("n ibcmd-db-name", "", "[*use-ibcmd] имя базы данных (при использовании ibcmd)")
112112
.ТСтрока()
113113
.ВОкружении("GITSYNC_IBCMD_DB_NAME");
114114

115-
КлассРеализации.Опция("U ibcmd-db-user", "", "имя пользователя базы данных (при использовании ibcmd)")
115+
КлассРеализации.Опция("U ibcmd-db-user", "", "[*use-ibcmd] имя пользователя базы данных (при использовании ibcmd)")
116116
.ТСтрока()
117117
.ВОкружении("GITSYNC_IBCMD_DB_USER");
118118

119-
КлассРеализации.Опция("P ibcmd-db-pwd", "", "пароль пользователя базы данных (при использовании ibcmd)")
119+
КлассРеализации.Опция("P ibcmd-db-pwd", "", "[*use-ibcmd] пароль пользователя базы данных (при использовании ibcmd)")
120120
.ТСтрока()
121121
.ВОкружении("GITSYNC_IBCMD_DB_PWD");
122122

@@ -137,8 +137,10 @@
137137

138138
СтандартнаяОбработка = Ложь;
139139

140+
Лог.Информация("Используем утилиту ibcmd для выгрузки конфигурации в файлы");
141+
140142
Попытка
141-
ВыгрузитьКонфигурациюВФайлыIBCMD(КаталогВыгрузки);
143+
ВыгрузитьКонфигурациюВФайлыIBCMD(Конфигуратор, КаталогВыгрузки);
142144
Исключение
143145
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
144146
Лог.Ошибка("Невозможно выгрузить конфигурацию в файлы. Ошибка:%1%2", Символы.ПС, ТекстОшибки);
@@ -159,36 +161,48 @@
159161

160162
#Область Вспомогательные_процедуры_и_функции
161163

162-
Процедура ВыгрузитьКонфигурациюВФайлыIBCMD(Знач КаталогВыгрузки)
164+
// Процедура - выполняет выгрузку конфигурации в файлы с использованием утилиты ibcmd
165+
//
166+
// Параметры:
167+
// Конфигуратор - УправлениеКонфигуратором - объект управления конфигуратором (v8runner)
168+
// КаталогВыгрузки - Строка - каталог для выгрузки файлов конфигурации
169+
//
170+
Процедура ВыгрузитьКонфигурациюВФайлыIBCMD(Знач Конфигуратор, Знач КаталогВыгрузки)
163171

164-
РабочийКонфигуратор = Обработчик.ПолучитьРабочийКонфигуратор();
165-
КонтекстКонфигуратора = РабочийКонфигуратор.ПолучитьКонтекст();
172+
КонтекстКонфигуратора = Конфигуратор.ПолучитьКонтекст();
173+
174+
СтрокаСоединения = КонтекстКонфигуратора.КлючСоединенияСБазой;
175+
Пользователь = КонтекстКонфигуратора.ИмяПользователя;
176+
Пароль = КонтекстКонфигуратора.Пароль;
177+
166178
ИмяРасширения = Обработчик.ПолучитьИмяРасширения();
167179

168180
ПутьКIBCMD = Платформа1С.ПутьКIBCMD(Обработчик.ТекущаяВерсияПлатформы);
169-
181+
170182
СервернаяБаза = Ложь;
171183
ПутьКБД = "";
172184

173-
Если Лев(КонтекстКонфигуратора.СтрокаСоединения, 2) = "/F" Тогда
174-
ПутьКБД = СокрЛП(Сред(КонтекстКонфигуратора.СтрокаСоединения, 3));
175-
ИначеЕсли Лев(КонтекстКонфигуратора.СтрокаСоединения, 2) = "/S" Тогда
185+
Если Лев(СтрокаСоединения, 2) = "/F" Тогда
186+
ПутьКБД = СокрЛП(Сред(СтрокаСоединения, 3));
187+
ИначеЕсли Лев(СтрокаСоединения, 2) = "/S" Тогда
176188
СервернаяБаза = Истина;
177-
ЧастиПути = СтрРазделить(Сред(КонтекстКонфигуратора.СтрокаСоединения, 3), "\", Ложь);
189+
ЧастиПути = СтрРазделить(Сред(СтрокаСоединения, 3), "\", Ложь);
178190
Если НЕ ЗначениеЗаполнено(СерверБД) Тогда
179191
СерверБД = СокрЛП(ЧастиПути[0]);
180192
КонецЕсли;
181193
Если НЕ ЗначениеЗаполнено(ИмяБД) И ЧастиПути.Количество() > 1 Тогда
182194
ИмяБД = СокрЛП(ЧастиПути[1]);
183195
КонецЕсли;
184196
Иначе
185-
ПутьКБД = РабочийКонфигуратор.ПутьКВременнойБазе();
197+
ПутьКБД = Конфигуратор.ПутьКВременнойБазе();
186198
КонецЕсли;
187199

188200
КомандаIBCMD = Новый Команда;
189201
КомандаIBCMD.УстановитьКоманду(ПутьКIBCMD);
202+
КомандаIBCMD.ПоказыватьВыводНемедленно(Истина);
203+
КомандаIBCMD.УстановитьКодировкуВывода("UTF-8");
190204
КомандаIBCMD.ДобавитьПараметр("infobase config export");
191-
205+
192206
Если ЗначениеЗаполнено(РабочийКаталогIBCMD) Тогда
193207
КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--data=%1", РабочийКаталогIBCMD));
194208
КонецЕсли;
@@ -201,10 +215,10 @@
201215
Иначе
202216
КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--db-path=%1", ПутьКБД));
203217
КонецЕсли;
204-
Если ЗначениеЗаполнено(КонтекстКонфигуратора.Пользователь) Тогда
205-
КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--user=%1", КонтекстКонфигуратора.Пользователь));
206-
Если ЗначениеЗаполнено(КонтекстКонфигуратора.Пароль) Тогда
207-
КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--pwd=%1", КонтекстКонфигуратора.Пароль));
218+
Если ЗначениеЗаполнено(Пользователь) Тогда
219+
КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--user=%1", Пользователь));
220+
Если ЗначениеЗаполнено(Пароль) Тогда
221+
КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--pwd=%1", Пароль));
208222
КонецЕсли;
209223
КонецЕсли;
210224
Если ЗначениеЗаполнено(ИмяРасширения) Тогда
@@ -222,9 +236,12 @@
222236
КодВозврата = КомандаIBCMD.Исполнить();
223237

224238
Если КодВозврата <> 0 Тогда
225-
Лог.КритичнаяОшибка("Не удалось выгрузить конфигурацию в файлы с использованием IBCMD");
239+
ТекстОшибки = КомандаIBCMD.ПолучитьВывод();
240+
Лог.КритичнаяОшибка("Не удалось выгрузить конфигурацию в файлы с использованием IBCMD:%1%2",
241+
Символы.ПС,
242+
ТекстОшибки);
226243
КонецЕсли;
227-
244+
228245
КонецПроцедуры // ВыгрузитьКонфигурациюВФайлыIBCMD()
229246

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

0 commit comments

Comments
 (0)