Большинство решений данного вопроса на Инфостарте представлены в виде различных обработок, удаляющих записи регистра сведений «Версии объектов», в том числе и дублирующиеся.
В данной статье остановимся подробнее на создании механизма, позволяющего не сохранять дублирующиеся версии в процессе их возникновения.
В общем модуле «ВерсионированиеОбъектов» в экспортной процедуре МеханизмВерсионированияОбъектов_ПриЗаписиОбъекта(Источник, Отказ) необходимо добавить проверку на изменение объектов:
В функции ПроверкаИзмененияОбъекта(Источник, ИмяВременногоФайла, ЧислоВерсийОбъекта) выполняется определение номера последней хранящейся версии объекта и ее получение из регистра «ВерсииОбъектов» по номеру. Здесь же происходит вызов функции для сравнения двух версий – текущей и последней хранящейся в регистре «ВерсииОбъектов». Если версии совпадают, то запись новой версии в регистр не требуется.
В функции СравнитьВерсии(Версия1, Версия2) происходит Сравнение двух версий произвольного объекта. В функцию могут быть переданы как пути к файлам, содержащим версии, так и непосредственно версии в виде двоичных данных. Возвращаемое значение - признак равенства версий объекта.
Функция ПолучитьXMLПредставлениеВерсии( Знач Версия) выполняет получение представления версии в виде XML-строки. В функцию может быть передан как путь к файлу, содержащему версию, так и версия в виде двоичных данных. Возвращаемое значение: строка - представление версии в виде XML-строки.
Версионирование объектов. Механизм временной блокировки версионирования (УПП 1.3). Часть 1: