Рассмотрим на примере сети ресторанов, в которой есть центральная («ЦЕНТР») и 2 периферийные базы («БАНКЕТНЫЙ ЗАЛ» и «ОБЩЕСТВЕННАЯ СТОЛОВАЯ»). В базе «ЦЕНТР» хранятся два вида меню «Столовая» и «Банкетное», а также указывается привязка вида меню к конкретной базе.
В базу «БАНКЕТНЫЙ ЗАЛ» попали данные из меню «Столовая», хотя для нее установлено только меню «Банкетное».
Предварительно, конечно же, делаем копии баз! :)
А теперь по пунктам:
- В базе «ЦЕНТР» помечаются на удаление все элементы и папки меню «Банкетное».
- Из базы «ЦЕНТР» производится обмен с базой «БАНКЕТНЫЙ ЗАЛ»
- В базе «БАНКЕТНЫЙ ЗАЛ» производится обмен с базой «ЦЕНТР».
- После пункта №3 в базе «БАНКЕТНЫЙ ЗАЛ» у нас стали помеченными на удаление элементы, которые действительно должны быть в этой базе. Соответственно, объекты которые не должны быть в базе у нас без пометками удаления, поэтому пишем обработку, которая помечает на удаление эти объекты.
- Запускаем обработку в базе «БАНКЕТНЫЙ ЗАЛ», таким образом все объекты у нас с пометкой на удаление. ВНИМАНИЕ! Обмен с базой «ЦЕНТР» на этом этапе не делается.
- В базе «ЦЕНТР» снимаем пометку удаления с объектов, которую установили в пункте №1.
- Из базы «ЦЕНТР» производится обмен с базой «БАНКЕТНЫЙ ЗАЛ»
- В базе «БАНКЕТНЫЙ ЗАЛ» производится обмен с базой «ЦЕНТР».
- После пункта №8 в базе «БАНКЕТНЫЙ ЗАЛ» помечены на удаление только не нужные элементы в этой базе. Запускаем стандартную обработку «Удаление помеченных объектов» и с помощью этой обработки удаляем объекты.
- Возможно, что после пункта №9, в базе эти объекты не удалятся, т.к. по ним уже были какие-то операции. Здесь уже нужно думать в зависимости от ситуации, если она позволяет, то можно просто оставить эти объекты помеченными на удаление.
- Запускаем типовую обработку РегистрацияИзмененийДляОбмена.epf
- Выбираем узел обмена «ЦЕНТР»
- У нас появится список элементов, которые были изменены базе («БАНКЕТНЫЙ ЗАЛ») и должны быть выгружены в «ЦЕНТР». Нам это не нужно на текущем шаге, поэтому мы нажимаем кнопку «Удалить всю регистрацию», выбираем пункт «Для всех элементов», нажимаем «ОК» и подтверждаем удаление.
- После пункта №13 у нас была изменена регистрация наших изменений, поэтому делаем обмен из базы «БАНКЕТНЫЙ ЗАЛ» с базой «ЦЕНТР»
- Из базы «ЦЕНТР» производится обмен с базой «БАНКЕТНЫЙ ЗАЛ».
Далее необходимо проверить полученный результат, сделать обмены между базами «ЦЕНТР» и «ОБЩЕСТВЕННАЯ СТОЛОВАЯ» (в этой базе ничего не должно пропасть). Сделать еще несколько обменов между базами «ЦЕНТР» - «БАНКЕТНЫЙ ЗАЛ» и «ЦЕНТР» - «ОБЩЕСТВЕННАЯ СТОЛОВАЯ», убедиться, что все нормально.
P.S. Стоит заметить, что данный способ решения имеет свой минус. В случае, когда в базе «ЦЕНТР» есть помеченные на удаления объекты из меню «Банкетное», то по завершению операции эти объекты останутся без пометки. Поэтому необходимо проконтролировать этот момент. Но в любом случае, это уже не настолько критично по сравнению с “левыми” данными.