Skip to content

Commit 34af635

Browse files
committed
Реализован показ сравнения бинарных файлов 1С с помощью инструмента "v8reader"
1 parent 90c7453 commit 34af635

File tree

6 files changed

+63
-9
lines changed

6 files changed

+63
-9
lines changed

README.md

-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,3 @@ v8Diff
44
Удобное сравнение файлов внешних обработок и отчетов 1С, конфигураций 1С, макетов и т.п.
55

66
Пример использования описан в http://infostart.ru/public/118207/
7-
8-
9-

packagedef

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
.ЗависитОт("logos")
55
.ЗависитОт("cmdline")
66
.ЗависитОт("asserts")
7+
.ЗависитОт("v8runner")
8+
.ЗависитОт("tempfiles")
79
.ВключитьФайл("src")
810
.ВключитьФайл("ibService")
911
.ИсполняемыйФайл("v8diff.os");

src/Классы/КомандаСравнить.os

+39-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#Использовать logos
22
#Использовать asserts
3+
#Использовать v8runner
4+
#Использовать tempfiles
35

46
Перем Лог;
57

@@ -10,13 +12,11 @@
1012
ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Сравнение внешних бинарных файлов 1С");
1113
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПервыйПуть", "Путь к первому файлу для сравнения");
1214
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ВторойПуть", "Путь ко второму файлу для сравнения");
13-
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--silent", "Не показывать окно с ошибкой и не ожидать действий пользователя");
1415
Парсер.ДобавитьКоманду(ОписаниеКоманды);
1516

1617
// для использования по умолчанию
1718
Парсер.ДобавитьПараметр("ПервыйПуть", "Путь к первому файлу для сравнения");
1819
Парсер.ДобавитьПараметр("ВторойПуть", "Путь ко второму файлу для сравнения");
19-
Парсер.ДобавитьПараметрФлаг("--silent", "Не показывать окно с ошибкой и не ожидать действий пользователя");
2020
КонецПроцедуры
2121

2222
// Выполняет логику команды
@@ -37,5 +37,41 @@
3737
Ожидаем.Что(ПервыйФайл.Существует(), СтрШаблон("Первый файл должен существовать, а это не так! %1", ПервыйПуть)).ЭтоИстина();
3838
Ожидаем.Что(ВторойФайл.Существует(), СтрШаблон("Первый файл должен существовать, а это не так! %1", ВторойПуть)).ЭтоИстина();
3939

40+
СравнитьФайлы(ПервыйФайл, ВторойФайл);
41+
4042
Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
41-
КонецФункции
43+
КонецФункции
44+
45+
Процедура СравнитьФайлы(Знач ПервыйФайл, Знач ВторойФайл)
46+
УстановитьУровеньЛогаКонфигуратораРавнымУровнюПродукта();
47+
48+
УправлениеКонфигуратором = Новый УправлениеКонфигуратором;
49+
ВременныйКаталог = ВременныеФайлы.СоздатьКаталог();
50+
51+
УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог);
52+
53+
ФайлОписанияСравнения = ПодготовитьФайлОписанияСравнения(ПервыйФайл, ВторойФайл);
54+
55+
Параметры = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска();
56+
Параметры.Добавить("");
57+
58+
КомандаДля1С = СтрШаблон("""diff;%1;shutdownAfterClose""", ФайлОписанияСравнения.ПолноеИмя);
59+
ДопПараметр = СтрШаблон("/Execute %1 ", ОбъединитьПути(ПараметрыСистемы.КаталогПроекта(), "tools", "v8reader.epf"));
60+
61+
УправлениеКонфигуратором.ЗапуститьВРежимеПредприятия(КомандаДля1С, Ложь, ДопПараметр);
62+
63+
КонецПроцедуры
64+
65+
Процедура УстановитьУровеньЛогаКонфигуратораРавнымУровнюПродукта()
66+
ДопЛог = Логирование.ПолучитьЛог("oscript.lib.v8runner");
67+
ДопЛог.УстановитьУровень(Лог.Уровень());
68+
КонецПроцедуры
69+
70+
Функция ПодготовитьФайлОписанияСравнения(Знач ПервыйФайл, Знач ВторойФайл)
71+
ПутьФайла = ВременныеФайлы.НовоеИмяФайла();
72+
ЗаписьТекста = Новый ЗаписьТекста(ПутьФайла);
73+
ЗаписьТекста.ЗаписатьСтроку(ПервыйФайл.ПолноеИмя);
74+
ЗаписьТекста.ЗаписатьСтроку(ВторойФайл.ПолноеИмя);
75+
ЗаписьТекста.Закрыть();
76+
Возврат Новый Файл(ПутьФайла);
77+
КонецФункции

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

+11-1
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,14 @@
3232
// myapp /home/user/somefile.txt будет аналогично myapp default-action /home/user/somefile.txt
3333
Функция ИмяКомандыПоУмолчанию() Экспорт
3434
Возврат "diff";
35-
КонецФункции
35+
КонецФункции
36+
37+
// Возвращает путь корневого каталога проекта
38+
//
39+
// Возвращаемое значение:
40+
// Строка - путь корневого каталога проекта
41+
//
42+
Функция КаталогПроекта() Экспорт
43+
ФайлСкрипта = Новый Файл(СтартовыйСценарий().Источник);
44+
Возврат ФайлСкрипта.Путь;
45+
КонецФункции // КаталогПроекта()

tools/V8Reader.epf

934 KB
Binary file not shown.

v8diff.os

+11-2
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,17 @@
6767
МенеджерКомандПриложения.РегистраторКоманд(ПараметрыСистемы);
6868

6969
Попытка
70-
ЗавершитьРаботу(ПолезнаяРабота());
70+
КодВозврата = ПолезнаяРабота();
71+
7172
Исключение
7273
Лог.КритичнаяОшибка(ОписаниеОшибки());
73-
ЗавершитьРаботу(МенеджерКомандПриложения.РезультатыКоманд().ОшибкаВремениВыполнения);
74+
75+
Сообщить("Нажмите любой символ для завершения ...");
76+
Консоль = Новый Консоль;
77+
Консоль.Прочитать();
78+
79+
КодВозврата = МенеджерКомандПриложения.РезультатыКоманд().ОшибкаВремениВыполнения;
7480
КонецПопытки;
81+
82+
ВременныеФайлы.Удалить();
83+
ЗавершитьРаботу(КодВозврата);

0 commit comments

Comments
 (0)