Описание задачи:

Открыть из Террасофт два файла в режиме сравнения

Описание решения:

В Террасофт есть версионность файлов, но нет возможности сравнения версий. Потому было решено реализовать функционал открытия 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();
}

Теперь выделяем 2 файла, нажимаем на кнопку «Сравнить документы»:

И получаем результат:

Нравится

Поделиться

0 комментариев
Показать все комментарии