Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Разрешение коллизий
Дальше: Универсальный механизм обмена данными

Особенности использования последовательности документов в распределенной информационной базе

Для отслеживания правильного порядка проведения документов в «1С:Предприятии» служит механизм последовательностей документов. Этот механизм позволяет отслеживать порядок проведения документов и производить восстановление этого порядка. Для того чтобы документ оказался в последовательности, он должен зарегистрироваться в последовательности, тогда механизм последовательностей будет учитывать его при своей работе.

При организации работы последовательности документов в распределенной информационной базе нужно учитывать, что участие документа в последовательности имеет смысл только в одном узле распределенной информационной базы. Это может быть либо узел, в котором документ был создан, либо другой узел, но узел должен быть один. Нарушение данного принципа может привести к различным проблемам в процессе работы с системой – например, невозможности восстановления последовательности документов.

Таким образом, документ, участвующий в последовательности, должен регистрироваться в последовательности только в одном узле информационной базы. Для этого документ должен содержать информацию, по которой на момент записи документа можно сделать вывод, должен он регистрироваться в данном узле или нет. Для того чтобы документ мог это определить, все узлы информационной базы должны иметь уникальную идентификацию.

Например, документ может содержать реквизит, который содержит код узла плана обмена его информационной базы. Коды узлов информационных баз должны быть в этом случае уникальными. Этого можно добиться организационными методами. Основываясь на информации о принадлежности данному узлу распределенной информационной базы, документ должен при записи либо очистить набор записей регистрации в последовательности, либо, наоборот, его заполнить. Тем самым будет достигнута цель регистрации документа в последовательности только в собственном узле информационной базы.

Пример очистки наборов записей в последовательностях (фрагмент кода размещается в обработке проведения документа) приведен в листинге 3.45.

Листинг 3.45. Пример очистки набора записей регистрации документа в последовательности

Если Узел<>ПланыОбмена.Расходные.ЭтотУзел().Код Тогда

Для Каждого НаборПоследовательности Из ПринадлежностьПоследовательностям Цикл

НаборПоследовательности.Очистить();

КонецЦикла;

КонецЕсли;

Узел ? реквизит документа, содержащий код узла, в котором он должен регистрироваться в последовательностях.

Как уже было сказано, документ может участвовать в последовательности только в одном узле информационной базы. Поэтому сами последовательности документов не должны участвовать в обмене данных. Иначе записи регистрации документа будут переданы в другой узел информационной базы, тем самым нарушив принцип регистрации документа в последовательности только в одном узле информационной базы.

Назад: Разрешение коллизий
Дальше: Универсальный механизм обмена данными