![]() |
![]() |
![]() |
|
Справочники. Обмен данными. Атрибут Ref. | ☑ | ||
---|---|---|---|---|
0
voffkat
23.10.13
✎
18:15
|
Всем привет.
Имеется задача осуществлять двухстороннюю синхронизацию некоторых данных (несколько справочников и документов) м-ду 1с и БД на MS SQL не имеющей отношения к 1с. Задача в общем то решена, но есть один нюанс. В качестве ключей для синхронизации данных используется атрибут справочников Ref. Т.о. когда на стороне MS SQL создается новая запись, в качестве Ref ей генирится GUID. План обмена в 1с это принимает, добавляет запись и все хорошо. Но после внимательного рассмотрения оказалось, что в 1с Ref это не совсем GUID, т.к. в пределах одного справочника они генеряться чуть ли не последовательно. Отсюда вопрос: генеря GUID в качестве Ref не окажется что 1с захочет где-либо сгенерить такой же или ей он просто не понравиться. Извиняюся за дилетантский вопрос, но в 1с я всего неделю. Гуглом не нашел ответа, может искал не то или не так. Вобщем пните в нужном направлении. |
|||
1
Serginio1
23.10.13
✎
18:35
|
||||
2
Serginio1
23.10.13
✎
18:36
|
||||
3
voffkat
24.10.13
✎
09:45
|
(2) Спасибо. Вы и ваша ссылка помогли, но остается еще пара вопросов. Насколько я понял 1С инкрементирует стартовый GUID дабы быстрее получать новый. Инкрементируется достаточно безопасный разряд GUID, который не должен сильно повлиять на веротность генерации дубля. Вопрос: Как 1С определяет стартовый GUID? Не будет ли при этом проблем связанных с подпихиванием новых GUID?
Возможно ответом на все мои вопросы было бы описание формата XML файлов плана обмена или устройства справочников и документов. Можно где-нибудь найти подобные описания? |
|||
4
Serginio1
24.10.13
✎
10:33
|
Если ты читал 2 то увидишь там такое
Стартовый GUID формируется по wiki:UUID потом, при записи новых объектов - инкремент на единицу в поле "Время". Ссылка это УникальныйИдентификатор в обмене учасвствует строкове представление каоторое можно получить Через XmlСтрока(Ссылка) или строка(ссылка.УникальныйИдентификатор()) |
|||
5
voffkat
24.10.13
✎
11:45
|
(4) Принцип формирования GUID я понимаю. Вопрос заключается в том, какой именно GUID и когда 1с принимает за стартовый и сколько их существует(он один на всю базу или он для каждого справочника свой или он один для справочников один для документов и т.д.)
Вопрос вызван тем, что, например, есть в 1с некий справочник... При вставки новой записи 1с откуда-то берет стартовый GUID и инкрементирует его. Тут я беру и вставляю свои записи с координально иными по значению GUID. Что будет делать 1с при последующем ручном добавлении? Продолжит инкрементировать некий стартовый GUID или выберет мой, как последний или максимальный и будет инкрементировать его. Соответственно эта ситуация становится более непонятной от того один ли стартовый GUID на всю базу или для каждого справочника свой или как еще. Эта информация должна помочь мне во-первых понять принцип во-вторых оценить вероятность возникновения коллизии. |
|||
6
Serginio1
24.10.13
✎
11:53
|
А свой ты откуда берешь? Если с другой машины то гуиды должны быть разными. И учти что UUID по другому считается wiki:GUID
v8: Как перевести ГУИД в число и обратно? |
|||
7
МихаилМ
24.10.13
✎
11:57
|
guid генерируется при старте процесса и инкрементируется для новых объектов в процессе жизни процесса.
за примерно 6 лет на этом форуме видел пару тем задвоенных гуидов в распределенных базах. естественно целых интервалов. |
|||
8
voffkat
24.10.13
✎
12:22
|
(6) Свой GUID я формирую в MS SQL с помощью функции NEWID(). Сама задача подразумевает что тачки разные.
Вывод получается такой(если не прав - поправьте): Ref в 1с является уникальным идентификатором записей. Представляет собой UUID. Генерируется путем инкрементации сеансово сгенерированного стартового UUID. Таким образом вероятность дублирования ничтожно мала, а с учетом разных машин - генераторов и того, что вечного использования ПО не предвидится ей можно смело пренебречь. И последний дилетантский вопрос. Для 1с необходима уникальность Ref в пределах одного объекта(например справочника) или всей базы? |
|||
9
МихаилМ
24.10.13
✎
12:24
|
(8)
да необходима уникальность Ref тк он PK |
|||
10
МихаилМ
24.10.13
✎
12:28
|
+(9)
в пределах объекта |
|||
11
voffkat
24.10.13
✎
12:29
|
(10) Спасибо!
Всем большое спасибо. |
|||
12
Serginio1
24.10.13
✎
13:02
|
У меня проблем не было v8: _SimpleKey и его установка
|
|||
13
Зойч
24.10.13
✎
13:08
|
кстати то что уиды гененрятся последовательно есть свой плюс. Типа документы в одну дату будут сортироваться по моменту создания
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |