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