|
1С:7.7 - Потеря данных при обмене УРБД
|
|||
---|---|---|---|
#18+
Ситуация такова: Есть 3 базы 1 центральная и 2 периферийные. В одной из периферийных баз в справочнике меняются значения периодических реквизитов. При обмене они "откатываються" (в логах 1С пишет коллизию, но 100% что этот справочник был изменен только в одной (периферийной) базе). 1С 7.7 (релиз 25), SQL 2005. Кото сталкивался с чемто подобным? Как побороть эту проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 13:24 |
|
1С:7.7 - Потеря данных при обмене УРБД
|
|||
---|---|---|---|
#18+
Реквизиты в переферийной базе и не должны меняться. Если просто пройтись по ним и нажать кнопку записать (ничего не меняя) то они попадут как измененные... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 15:18 |
|
1С:7.7 - Потеря данных при обмене УРБД
|
|||
---|---|---|---|
#18+
Реквизиты меняются, только в одной периферийной базе, другую базу вообще никто не трогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 18:47 |
|
1С:7.7 - Потеря данных при обмене УРБД
|
|||
---|---|---|---|
#18+
Ситуация очень проста и однозначна (с точки зрения механизмов УРБД). Предположим, есть центральная Ц и две периферийных - А и Б. 1. Меняются периодические реквизиты в А. Они передаются в Ц только в составе объектов: изменение одного элемента истории толкает в выгрузку всю историю всех реквизитов элемента. 2. Ц получает измененный объект - и должна его раздать всем остальным периферийным. Отправляет. И пока от Б не придет квитанция сеанса, маркер изменений этого объекта остается в 1SUPDTS центральной базы. 3. В базе А продолжается работа. Создан новый элемент истории реквизита. Весь объект со всей историей - опять в выгрузке. 4. Квитанция от Б не пришла. Зато пришла свежая выгрузка из А. И там объект - маркер изменений которого ждет в Ц той квитанции. "Коллизия !" - говорит Ц. И не принимает объект из А. Вместо этого создается маркер изменений этого объекта для А. В результате в следующей выгрузке для А Ц отправляет свою версию объекта. Которую А обязана принять. Другой вариант возникновения коллизии - в Б меняется история другого реквизита того же объекта. Результат - тот же. Даже если квитанция из Б пришла вовремя (до получения след. выгрузки из А). С коллизиями первого типа можно справляться тщательной организацией последовательности обменов (в простых случаях). Для более сложных - могут подойти внешние (по отношению к 1С) средства обработки 1SUPDTS. А могут и не подойти. Тогда остается только менять логическую структуру базы - освобождая реализацию важных функций от использования периодических реквизитов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 20:08 |
|
1С:7.7 - Потеря данных при обмене УРБД
|
|||
---|---|---|---|
#18+
pail, Это все верно, но есть один нюанс. При обмене с базами никто не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2008, 11:39 |
|
1С:7.7 - Потеря данных при обмене УРБД
|
|||
---|---|---|---|
#18+
The EclipsEpail, Это все верно, но есть один нюанс. При обмене с базами никто не работает. Верно ли я понимаю это утверждение, что существует время, когда: - во всех базах останавливается работа, - делаются выгрузки из всех периферийных, - заливаются в центральную, - делается раздача изменений из центральной во все периферийные, - изменения принимаются последними - и только затем возобновляется работа? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2008, 16:32 |
|
1С:7.7 - Потеря данных при обмене УРБД
|
|||
---|---|---|---|
#18+
pail Верно ли я понимаю это утверждение, что существует время, когда: - во всех базах останавливается работа, - делаются выгрузки из всех периферийных, - заливаются в центральную, - делается раздача изменений из центральной во все периферийные, - изменения принимаются последними - и только затем возобновляется работа? Совершенно верно, во время обмена в бвзвх НИКТО не работает. Обмен производится в монопольном режиме. + ко всему менять справочник (в котором была потеря данных) програмно запрещено во всех базах кроме 1-й периферийной. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2008, 18:32 |
|
1С:7.7 - Потеря данных при обмене УРБД
|
|||
---|---|---|---|
#18+
"Коллизия" - получение ЦБ из ПБ объекта, маркер изменения которого в ЦБ уже есть (или еще есть). Такой маркер будет существовать, пока не придут квитанции сеансов (в которых объект раздавался в ПБ) от ВСЕХ периферийных. Этого можно добиться, если делать два полных обмена с каждой ПБ. (в первом будут изменения, во втором - только квитанции). Но должен помочь более простой вариант, через соблюдение последовательности обмена: принимать в ЦБ изменения от ПБ-источника проблемного справочника в последнюю очередь - только после того, как файлы изменений будут приняты от всех остальных ПБ. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2008, 22:03 |
|
|
start [/forum/topic.php?fid=28&gotonew=1&tid=1524205]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 292ms |
total: | 563ms |
0 / 0 |