РИБ - штука хорошая, но медленная и избыточная. К тому же всякие ограничения целостности и прочее на практике редко требуются.
При выгрузке файла обмена происходит запись в базу (меняются номера сообщений), что тоже не очень разумно.
Давайте поразмыслим об альтернативе на примере обмена между Центром и Филиалом.
На обоих узлах есть план обмена, где просто фиксируются изменения, для наших целей номера сообщений не нужны, просто используем типовой механизм.
Рассмотрим обмен, например, из Филиала в Центр.
Филиал формирует XML-файл А, содержащий XML-представления всех объектов, зарегистрированных как измененные в Филиале на плане обмена для Центра.
При подгрузке этого филиала в Центре те объекты, которые уже соответствуют этим XML-представлениям, пропускаются, повторно в базу не загружаются. Загружаются только изменения.
В ответ отправляется файл В, содержащий XML-представления всех объектов из файла А объектов в базе Центр.
Филиал считывает этот файл и те объекты, которые соответствуют объектам в базе Филиал, удаляет из плана обмена в Филиале для Центра.
Таким образом обеспечивается перекачка правильного состояния объекта менее затратными средствами.
Потеря файла обмена точно так же не влияет на целостность обмена, как и в обычной РИБ.
Эту же схему можно красиво обыграть, если есть COM-соединение, тогда сразу сравниваем два объекта и если они идентичны, то сразу исключаем их из плана обмена. Иначе передаем и сразу после успешной передачи исключаем.
У схемы есть ограничение - объекты обмена должны соответствовать 1:1 в центральной базе и на филиалах. Т.е. если есть служебные реквизиты типа даты прихода
При сравнении можно исключать, если требуется, служебные реквизиты, актуальные только для текущей базы - типа даты изменения документа, даты подгрузки и т.п., то их нужно игнорировать при сравнении.
Что скажете, звери 1С?
Journal information