Версионирование объектов

Немного измененный механизм версионирования объектов. Может использоваться с любой конфигурацией (возможно с небольшими доработками). Тестировался на УТ 10.3.
Основное отличие — контроль уже записанных версий объектов.

В стандартном механизме, даже если не изменять объект, но записать его, создается новая версия объекта. В данной подсистеме происходит проверка с последней записанной версией объекта и, если версии идентичны, то новая версия не создается.
Реализовано с использованием md5 хеширования.

 

Устанавливается либо переносом объектов, либо объединением конфигураций.

22 Comments

  1. Chernyakovich

    Советую всем обратить внимания на эту разработку,

    очень помогла

    Reply
  2. worker1c

    А вы пробовали массовое перепроведение документов (например 10 000) с контролем уже записанных версий объектов и без контроля (как реализовано в типовом механизме)?

    Мне интересно падение производительности, есть или нет? Если есть то насколько это критично?

    Мы тоже «боремся» с версионированием, но мы пошли по другому пути: Сначала записываем всё без разбора (чтобы документы проводились быстрее), а потом во время простоя (ночью) запускаем обработку и удаляем дубли.

    http://infostart.ru/public/150314/

    Если нет потери производительности или она минимальна, то может и не стоит заморачиваться с обработкой и сделать вашу модификацию…

    Reply
  3. unoDosTres

    попробовал внедрить в имеющуюся конфу, все отлично, но вот 64бит система не хочет воспринимать ком объект который использут общий модуль Хеш.. мучался мучался эту компоненту поставить , но она подттупливает.. а так вешь отличнейшая. работает шустро

    (2) worker1c, а вы качали конфу то, поглядите как там(javaScript) реализовано нет этой муторной проверки как в отчете по историиИЗмененияОбъектов от 1с

    Reply
  4. sherbv

    В Бухгалтерию 2.0 ставиться на УРА

    Остается только включить константу «Использовать версионирование» в Истина

    Reply
  5. apatyukov

    Конфа под 8.2, а в описании публикации написано что и под 8.1 тоже работает…

    Reply
  6. pyrkin_vanya

    Только сегодня получил подобное задание. Самому лень писать. Решил здесь посмотреть. Прям в точку. То, что нужно. Спасибо огромное.

    Reply
  7. yalo

    Поставили задачу на версионирование обеъектов в ЗУиПе. Попробую использовть вашу разработку

    Reply
  8. yalo

    После объединения с cf файлом выходит ошибка:

    {ОбщийМодуль.ОбщегоНазначенияЗК.Модуль(1133,15)}: Процедура или функция с указанным именем не определена (глЗначениеПеременной)

    Обработка = <<?>>глЗначениеПеременной(«глОбработкаСообщений»);

    Reply
  9. kanalya

    (8) Затерся модуль приложения. Скопируйте его из рабочей базы.

    Reply
  10. break

    не пошла (( Ошибка при вызове конструктора (COMОбъект): Класс не зарегистрирован Скрипт = Новый COMОбъект(«MSScriptControl.ScriptControl»); проблема в 64 битной версии версии Win, пока выставил выполнение модуля «Хеш» на клиенте

    Reply
  11. Adecvator

    Кто-то поборол: {ОбщийМодуль.Хеш.Модуль(5)}: Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован

    Reply
  12. GoKerze

    В Windows Server 2008R2 Standard 64bit «{ОбщийМодуль.Хеш.Модуль(5)}: Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован : -2147221164(0x80040154): Класс не зарегистрирован »

    В Windows 7 Масимальная SP1 64bit такого не наблюдается. Явно беда не в 64bit. В чем затык? Версия платформы не та? Нужна Java? Ищу, чем отличаются два ПК помимо версии ОС.

    Reply
  13. Maria1C

    Спасибо! Очень полезная вещь! Поставилась на УТ без проблем и доработок.

    Reply
  14. GoKerze

    В файловом варианте на свежеустановленной Windows Server 2008R2 Standard 64bit. Косяк точно не в битах. (%

    Кто запустил — признавайтесь. Косяк в правах на исполнение скриптов? Косяк в сервере 1С?

    Reply
  15. GoKerze

    Как-то проблема решилась, не понял. Шел по этим инструкциям:

    http://www.bulygin.su/2014/06/1-83-com-class-not-registered.html

    http://www.forum.mista.ru/topic.php?id=635553

    Reply
  16. ivm032

    Спасибо! Нужная вещь.

    Reply
  17. ChessCat

    В доработке есть один интересный момент.

    После установки в регистр ВерсииОбъектов добавляется ресурс Хеш.

    Но у всех объектов которые уже присутствуют в базе это измерение после добавления в конфигурацию будет пустое.

    В результате после установки при записи любого объекта создается новая запись с заполненным ресурсом Хэш.

    Все дело в Общем модуле Хэш в функции ПолучитьСтарыйХеш

    Функция ПолучитьСтарыйХеш(Ссылка, ЧислоВерсийОбъекта) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.Текст = »
    | ВЫБРАТЬ Хеш КАК Хеш
    | ИЗ РегистрСведений.ВерсииОбъектов
    | ГДЕ Объект = &Ссылка И НомерВерсии = &НомерВерсии»;
    Запрос.УстановитьПараметр(«Ссылка», Ссылка);
    Запрос.УстановитьПараметр(«НомерВерсии», ЧислоВерсийОбъекта);
    
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
    Возврат Выборка.Хеш;
    Иначе
    Возврат «»;
    КонецЕсли;
    
    КонецФункции

    Показать

    У всех объектов которые присутствуют в базе до момента внесения доработок в систему версионирования Хэш пустой (поскольку этого ресурса в регистре сведений ранее не было).

    Поэтому функция вернет пустое значение и в результате при записи объекта будет создана версия объекта с заполненным хэшем (даже если в реквизитах объекта ничего не поменялось).

    Reply
  18. newtype

    Поставил на ЗУП 2.5. Работает. Можно ли как-нибудь сравнить хэши, для того, чтобы узнать, что изменилось в версии объекта ? Спасибо за разработку.

    Reply
  19. jaroslav.h

    Работал проделанная очень бомбезная, автору спасибо, с соглашением автора добавил управляемые формы на ту же логику http://infostart.ru/public/548203/

    Reply
  20. user665368_shakir.shirvanzade

    (4)

    «Использовать версионирование

    как?

    Reply
  21. AlexeyK1

    Строки табличных документов фиксирует?

    Reply
  22. mrlakec

    Никак не смог подключить на УТ 10.3, нигде не могу найти где надо включить его, может кто подскажет?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *