-
Notifications
You must be signed in to change notification settings - Fork 7
/
config-storage.os
76 lines (57 loc) · 3.49 KB
/
config-storage.os
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#Использовать 1commands
#Использовать tempfiles
#Использовать logos
Перем мКаталогВнешнихПрограмм;
Перем Лог;
Перем ЭтоWindows;
//////////////////////////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
Процедура ВыгрузитьВерсиюКонфигурации(Знач ФайлХранилища, Знач ВыходнойФайл, Знач НомерВерсии = 0) Экспорт
ЛогTool1CD = ВременныеФайлы.НовоеИмяФайла("txt");
ПрефиксПути = ?(ЭтоWindows = Ложь, "Z:", "");
СтрокаЗапуска = """" + ПутьTool1CD() + """ """ + ПрефиксПути + ФайлХранилища
+ """ -l """ + ПрефиксПути + ЛогTool1CD
+ """ -q -ne -drc "
+ Строка(НомерВерсии)
+" """ + ПрефиксПути + ВыходнойФайл +"""";
ФайлИсходника = Новый Файл(ВыходнойФайл);
ФайлЛога = Новый Файл(ЛогTool1CD);
КодВозврата = "";
Если НЕ ЭтоWindows Тогда
СтрокаЗапуска = "wine "+СтрокаЗапуска;
КонецЕсли;
Лог.Отладка(СтрокаЗапуска);
Команда = Новый Команда;
Команда.УстановитьСтрокуЗапуска(СтрокаЗапуска);
Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8);
Команда.ПоказыватьВыводНемедленно(Истина);
КодВозврата = Команда.Исполнить();
ВыводКоманды = Команда.ПолучитьВывод();
Если ФайлЛога.Существует() Тогда
ТекстЛогаTool1CD = (ПрочитатьФайл(ЛогTool1CD));
УдалитьФайлы(ФайлЛога.ПолноеИмя);
Иначе
ВызватьИсключение "Tool_1CD не выгрузил файл конфигурации." + ВыводКоманды;
КонецЕсли;
Если КодВозврата <> 0 Тогда
Лог.Ошибка(ТекстЛогаTool1CD);
ВызватьИсключение "Tool_1CD вернул код возврата " + КодВозврата;
КонецЕсли;
КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////////////////////////
//
Функция ПутьTool1CD()
Если мКаталогВнешнихПрограмм = Неопределено Тогда
мКаталогВнешнихПрограмм = ОбъединитьПути(ТекущийСценарий().Каталог, "bin", "cTool_1CD.exe");
КонецЕсли;
Возврат мКаталогВнешнихПрограмм;
КонецФункции
Функция ПрочитатьФайл(Знач ИмяФайла)
ЧтениеТекста = Новый ЧтениеТекста(ИмяФайла);
Текст = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
Возврат Текст;
КонецФункции
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
Лог = Логирование.ПолучитьЛог("oscript.lib.tool1cd");