Имя: Пароль:
1C
1С v8
Версионирование регистров сведений
,
0 Besometr
 
28.11.13
12:00
И снова здравствуйте!

Задача по версионированию обсуждалась много, но, тем не менее нигде не нашел что искал.

За основу я взял идею хранить версию объекта, сериализовав его в строку с помощью XML.
Вот от сюда: http://kb.mista.ru/article.php?id=270

Далее в регистр сведений пишется ссылка на объект данных, дата версии и версия объекта, и, при необходимости сериализуется обратно в объект. Красота, можно даже восстановить предыдущее состояние объекта!

Для документов и справочников, которые имеют собственно ссылку все замечательно, но...

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

Что я делаю не так, или с какой стороны подойти к кобыле?

Прошу прощения за скомканность изложения. Спасибо.
1 Maxus43
 
28.11.13
12:10
в типовой регистр версионирования не прикрутить версионирование наборов записей, тут надо извращаться, хранить где-то Отбор регистра, чтобы спозиционироваться на нуном диапазоне
2 Галахад
 
гуру
28.11.13
12:11
Чтото не представляю что там версионировать.
К примеру РС Штрихкоды.

Было:
2222222222 Товар1

Стало
1111111111 Товар1

или

Было:
2222222222 Товар1

Стало
2222222222 Товар2

А могло быть и хуже

Было:
2222222222 Товар1

Стало
3333333333 Товар3
3 Maxus43
 
28.11.13
12:13
(2) конечно имеет смысл следить только за конкретным набором записей, т.е. кто его менял, и на что. в твоём случае "А могло быть и хуже" - будет запись о том, что данные из этого набора удалены. И запись что по другоуму надобу добавлены
4 Defender aka LINN
 
28.11.13
12:14
(0) "За основу я взял идею хранить версию объекта, сериализовав его в строку с помощью XML." - удачи, чо.
5 Besometr
 
28.11.13
12:32
(1)
Понятно что, например, контактная информация Василия Пупкина ни кому не интересна, если не понятно какого именно Василия. Т.е. важен параметр отбора, в данном случае Объект.
Но в общем случае у регистров разные измерения.

А потом, если достать сохраненную версию набор, то в нем будет отбор. Только как это понять до десериализации?(
6 Besometr
 
28.11.13
12:33
(4) Спасибо конечно, но чем вызван сарказм? Есть предложения лучше?
7 Aprobator
 
28.11.13
12:37
(6) Сарказм, как минимум в том, что хранение в XML, требует уйму места. Это раз, а "сериализуется обратно в объект" - попробуй конфигурацию изменить и посмотри на обратную сериализацию.
8 Besometr
 
28.11.13
12:44
(7) Ну ок, ваши предложения?
9 Maxus43
 
28.11.13
12:55
(8) системы версионирования давно изобретены в типовых, и в БСП есть. Зачем изобретать велосипеды?
А вот с регистрами - да, типового нету
10 Maxus43
 
28.11.13
13:02
>>что хранение в XML, требует уйму места
они сжимаются очень хорошо
11 Aprobator
 
28.11.13
13:07
(10) пофиг. Излишне все это хранить в базе.
12 Besometr
 
28.11.13
13:08
(10) Угу, как то так?
ДвоичныеДанные = ЗаписьXML.Закрыть();
ХранилищеДанных = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
13 Maxus43
 
28.11.13
13:09
(12) как то так. Суть не в этом, суть в том что всё давно придумано
14 Defender aka LINN
 
28.11.13
13:09
(8) Сериализовать нечто более иначе другое. Или тупо взять готовую систему из БСП.
15 Besometr
 
28.11.13
13:09
(13)(9) А вот с регистрами - да, типового нету
:(
16 Лефмихалыч
 
28.11.13
13:10
Объектные данные от необъектных тем и отличаются, что первые возможно версионировать, а вторые - нет. Необъектные данные не имеют ссылки, потому состояние у них не меняется - оно просто ЕСТЬ в любой момент времени
17 CrazyBear
 
28.11.13
15:04
(3) полностью поддерживаю
попробовать хранить версию "отбора" т.е. вчера при таком отборе были одни данные, а вот сегодня при таком отборе другие?