Версионирование объектов. Отсеивание дублирующихся версий в процессе возникновения (УПП 1.3). Часть 2.

13.04.15

Разработка - Универсальные функции

  В данной статье описан механизм, позволяющий не сохранять дублирующиеся версии объектов в процессе их возникновения, что избавит от постоянного их удаления различными обработками.

  Большинство решений данного вопроса на Инфостарте представлены в виде различных обработок, удаляющих записи регистра сведений «Версии объектов», в том числе и дублирующиеся.

  В данной статье остановимся подробнее на создании механизма, позволяющего не сохранять дублирующиеся версии в процессе их возникновения.

  В общем модуле «ВерсионированиеОбъектов» в экспортной процедуре МеханизмВерсионированияОбъектов_ПриЗаписиОбъекта(Источник, Отказ) необходимо добавить проверку на изменение объектов:

  В функции ПроверкаИзмененияОбъекта(Источник, ИмяВременногоФайла, ЧислоВерсийОбъекта)  выполняется определение номера последней хранящейся версии объекта и ее получение из регистра «ВерсииОбъектов» по номеру. Здесь же происходит вызов функции для  сравнения двух версий – текущей и последней хранящейся в регистре «ВерсииОбъектов».  Если версии совпадают, то запись новой версии в регистр не требуется.

  В функции СравнитьВерсии(Версия1, Версия2)  происходит Сравнение двух версий произвольного объекта. В функцию  могут быть переданы как пути к файлам,  содержащим версии, так и непосредственно версии в виде двоичных данных.  Возвращаемое значение - признак равенства версий объекта.

  Функция ПолучитьXMLПредставлениеВерсии( Знач Версия) выполняет получение представления версии в виде XML-строки. В функцию может быть передан как путь к файлу,  содержащему версию, так и версия в виде двоичных данных.  Возвращаемое значение: строка - представление версии в виде XML-строки.

 

Версионирование объектов. Механизм временной блокировки версионирования (УПП 1.3). Часть 1:

//infostart.ru/public/326075/

версионирование версии объектов УПП дублирующиеся версии

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2670    0    John_d    8    

54

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4607    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3961    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8821    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16143    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7243    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. spetzpozh 12.02.15 10:10 Сейчас в теме
Буквально позавчера занимался этим вопросом - у нас до сих пор БП 2.0, из КА перенес туда механизм версионирования, он 1 в 1 как в УПП, думаю. Огромное Вам спасибо!
P.S. а код текстом можно? Перебивать с картинки не хочется :)
2. theshadowco 238 12.02.15 10:13 Сейчас в теме
У себя мы реализовали несколько иначе - храним хэш данных объекта в РС с версиями и перед записью версии просто сравниваем хэш текущий с последним зафиксированным.
Это работает в разы быстрее предложенного ТС варианта
ojiojiowka; +1 Ответить
5. spetzpozh 12.02.15 10:48 Сейчас в теме
(2) theshadowco, http://infostart.ru/public/96713/ - 23 комментарий ваш с нужной функцией?
ojiojiowka; +1 Ответить
6. theshadowco 238 12.02.15 11:23 Сейчас в теме
(5) до 8.3 использую его, в 8.3 использую платформенные возможности.
3. scompany 41 12.02.15 10:29 Сейчас в теме
Извлечение в файлы и сравнение больших текстовых полей, не самое производительное решение.
В добавок данное действие происходит в транзакции, что для систем с количеством пользователей от 100 пользователей и более, должно приводить к блокировкам.
Для сравнения версий предпочтительней использовать HASH ключи:
1. В регистр добавить реквизит: Ключ = HASH ключ версии
2. Перед записью вычислять данный ключ для версии и записывать в регистр
3. При последующией записи получать предыдущий ключ и сравнивать с новым.
Да кстати, в последних релизах платформы появилась встроенная поддержка работы с HASH ключами:
Объект: Хеширование

nihfalck; ojiojiowka; w-divin; +3 Ответить
4. spetzpozh 12.02.15 10:42 Сейчас в теме
Коллеги, можете привести код вычесление хэш? Речь не о встроенном языке?
7. spetzpozh 12.02.15 12:10 Сейчас в теме
В итоге добавил строковый реквизит в регистр с версиями, в общий модуль добавил код подсчета хэша и в в проедуре МеханизмВерсионированияОбъекта_ПриЗаписи - проверка

////////////////////////////////////////////////////////////­////////////////////
// Механизм подсчета хэша представления объекта и сравнения с предыдущим записанным значением

ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ИмяВременногоФайла, КодировкаТекста.UTF8);
СтрокаXML = ТекстовыйДокумент.ПолучитьТекст();
ХэшНовойВерсии = оп_ВерсионированиеОбъектовПривилегированный.Хэширование(СтрокаXML);

// Получим хэш предыдущей версии объекта
Если ЧислоВерсийОбъекта > 0 Тогда
ХэшПредыдущей = оп_ВерсионированиеОбъектовПривилегированный.ПолучитьХэшПоВерсии(Источник.Ссылка, ЧислоВерсийОбъекта);
Если ХэшНовойВерсии = ХэшПредыдущей Тогда
Возврат;
КонецЕсли;
КонецЕсли;
8. maxx 991 12.02.15 14:24 Сейчас в теме
Освещал подобную проблему в БСП больше года наза http://infostart.ru/public/237921/
Через полгода моей статье разработчики БСП внедрили подобный механизм по сравнению версий.
ojiojiowka; +1 Ответить
9. spetzpozh 12.02.15 15:05 Сейчас в теме
В БСП эта проверка есть, я ее видел. Но у нас отраслевка на поддержке, в ней функции БСП переписаны авторами конфы, ломать их желания нет, а внедрять подсистему из БСП свою и параллельно той что уже есть - желания еще меньше. Оказалось проще взять несколько объектов из КА и добавить контроль версий.
10. friend0 16.02.15 17:52 Сейчас в теме
Странно, что в БСП все никак не сделают опцию хранения версий не в базе, а в файлах на диске (точнее слив из базы в файлы по ночам). Делается элементарно ж, зато и база не пухнет и бэкапы базы не пухнут. А файлы бэкапить тоже много места не надо - старые не меняются, только новые знай добавляй.
А читать версии ИМХО нужно весьма редко и быстродействие не критично.

Я так свою базу на 3/4 "сократил" - удалять жалко, да и пользователи такие, что обязательно ткнуть носом надо кто именно и когда накосячил.
Drivingblind; +1 Ответить
Оставьте свое сообщение