Описание задачи:
Открыть из Террасофт два файла в режиме сравнения
Описание решения:
В Террасофт есть версионность файлов, но нет возможности сравнения версий. Потому было решено реализовать функционал открытия 2х файлов в режиме сравнения.
Для этого используется метод CompareDocuments(). Описание метода и входных параметров можно посмотреть здесь.
На деталь [Журнал изменений] раздела [Файлы] добавлена кнопка [Сравнить документы]
На событие кнопки:
function btnCompareDocumentsOnClick(Control) {
var Dataset = dlData.Dataset;
var RecordID = Dataset('RecordID'); // RecordID – ID родительского файла
var SelectedIDs = grdData.SelectedIDs; //Получаем массив идентификаторов выделенных файлов
var SelectedFilesIDs = GetArrayByCollection(SelectedIDs); //Преобразуем его в коллекцию
var Ln = SelectedFilesIDs.length;
//Проверяем количество выделенных файлов, файлов должно быть 2
if (Ln == 2){
FirstFileID = SelectedFilesIDs[0];
SecondFileID = SelectedFilesIDs[1];
}
else {
MessageBox(‘Выделите два файла’);
return;
}
//Получаем название первого файла
var DatasetLog = Services.GetNewItemByUSI('ds_FilesLog');
ApplyDatasetFilter(DatasetLog, 'RecordID', RecordID, true);
ApplyDatasetFilter(DatasetLog, 'ID', FirstFileID, true);
DatasetLog.Open();
var FirstFileLink = DatasetLog('Link');
DatasetLog.Close();
//Получаем название второго файла
ApplyDatasetFilter(DatasetLog, 'RecordID', RecordID, true);
ApplyDatasetFilter(DatasetLog, 'ID', SecondFileID, true);
DatasetLog.Open();
var SecondFileLink = DatasetLog('Link');
DatasetLog.Close();
// загружаем файлы из бд на диск
var FirstFileName = LoadFileFromFilesLog(FirstFileID, FirstFileLink, true, RecordID);
var SecondFileName = LoadFileFromFilesLog(SecondFileID, SecondFileLink, true, RecordID);
//С помощью COM-объекта добавляем файлы в коллекцию открытых документов
WordUtils = new ActiveXObject("Word.Application");
var FirstWordDoc = WordUtils.Documents.Add(FirstFileName);
var SecondWordDoc = WordUtils.Documents.Add(SecondFileName);
// получаем документ, который является результатом сравнения исходных файлов
var WordDocRes = WordUtils.CompareDocuments(FirstWordDoc, SecondWordDoc, 0, 1, true, true, true, true, true, true, true, true, true, true, '', true);
// отображаем результирующий документ
WordDocRes.Application.Visible = true;
WordDocRes.Activate();
}
var Dataset = dlData.Dataset;
var RecordID = Dataset('RecordID'); // RecordID – ID родительского файла
var SelectedIDs = grdData.SelectedIDs; //Получаем массив идентификаторов выделенных файлов
var SelectedFilesIDs = GetArrayByCollection(SelectedIDs); //Преобразуем его в коллекцию
var Ln = SelectedFilesIDs.length;
//Проверяем количество выделенных файлов, файлов должно быть 2
if (Ln == 2){
FirstFileID = SelectedFilesIDs[0];
SecondFileID = SelectedFilesIDs[1];
}
else {
MessageBox(‘Выделите два файла’);
return;
}
//Получаем название первого файла
var DatasetLog = Services.GetNewItemByUSI('ds_FilesLog');
ApplyDatasetFilter(DatasetLog, 'RecordID', RecordID, true);
ApplyDatasetFilter(DatasetLog, 'ID', FirstFileID, true);
DatasetLog.Open();
var FirstFileLink = DatasetLog('Link');
DatasetLog.Close();
//Получаем название второго файла
ApplyDatasetFilter(DatasetLog, 'RecordID', RecordID, true);
ApplyDatasetFilter(DatasetLog, 'ID', SecondFileID, true);
DatasetLog.Open();
var SecondFileLink = DatasetLog('Link');
DatasetLog.Close();
// загружаем файлы из бд на диск
var FirstFileName = LoadFileFromFilesLog(FirstFileID, FirstFileLink, true, RecordID);
var SecondFileName = LoadFileFromFilesLog(SecondFileID, SecondFileLink, true, RecordID);
//С помощью COM-объекта добавляем файлы в коллекцию открытых документов
WordUtils = new ActiveXObject("Word.Application");
var FirstWordDoc = WordUtils.Documents.Add(FirstFileName);
var SecondWordDoc = WordUtils.Documents.Add(SecondFileName);
// получаем документ, который является результатом сравнения исходных файлов
var WordDocRes = WordUtils.CompareDocuments(FirstWordDoc, SecondWordDoc, 0, 1, true, true, true, true, true, true, true, true, true, true, '', true);
// отображаем результирующий документ
WordDocRes.Application.Visible = true;
WordDocRes.Activate();
}
Теперь выделяем 2 файла, нажимаем на кнопку «Сравнить документы»:
И получаем результат:
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать