Работа с последовательностями
Работа с последовательностью включает в себя три процесса:
·регистрация документа в последовательности;
·перемещение границы последовательности назад;
·перемещение границы последовательности вперед (восстановление границы последовательности).
В принципе эти процессы, во-первых, независимы, во-вторых, могут выполняться системой автоматически или посредством программных действий, заложенных разработчиком.
Для автоматической регистрации документа в последовательностях необходимо, чтобы свойство Заполнение последовательностейдокумента как объекта конфигурации было установлено в значение Заполнять автоматически.
Если последовательность имеет измерения, то для обеспечения автоматического заполнения полей этих измерений в формируемой записи таблицы регистрации документов последовательности настраивается соответствие между реквизитами документа и измерениями последовательности документа
Перенос границы последовательности выполняется при записи набора записей регистров.
Сам процесс автоматического перемещения границы последовательности назад (сбивание границы) состоит из следующих операций (рис. 2.85):
·проверка того, что граница последовательности больше момента времени записи регистра;
·перемещение границы последовательности на момент времени записи регистра.
Процесс переноса границы последовательности вперед называется восстановление последовательности.
|
|
Необходимым условием автоматического восстановления последовательности является установка значения Перемещать свойству Перемещение границы при проведении последовательности как объекта конфигурации.
Сам процесс автоматического восстановления последовательности выполняется только при проведении документа и состоит из следующих операций (рис. 2.88):
·проверка того, что момент регистрации документа больше, чем граница последовательности;
·проверка того, что в последовательности нет других проведенных документов в интервале между границей последовательности и моментом регистрации документа;
·установка границы последовательности на момент регистрации документа.
Параллельный ввод документов , участвующих в последовательности
Информация последовательностей документов хранится в двух таблицах:
·таблице записей регистрации документов в последовательности;
·таблице границ последовательностей.
Выполнение различных действий с последовательностью в клиент-серверном варианте использования программы порождает блокирование этих таблиц в различных диапазонах:
·При регистрации документа в последовательности происходит добавление или модификация набора записей таблицы регистрации документов в последовательности, подчиненного регистратору. Поэтому заблокированным оказывается как минимум диапазон записей, соответствующих одному регистратору (плюс две граничные записи «вокруг» этого диапазона).
|
|
·При перемещении границы последовательности назад происходит модификация записей границ по соответствующим комбинациям значений измерений. Поэтому блокируются записи таблицы границ последовательности, соответствующие данным комбинациям значений измерений. А если измерений в последовательности нет, то вся таблица целиком.
·При перемещении границы последовательности вперед. Этот процесс происходит только при проведении документа, поэтому блокируются обе таблицы. Таблица регистрации документов в последовательности оказывается заблокированной в диапазоне от границы последовательности по момент времени регистрации проводимого документа в последовательности. То есть заблокированными могут оказаться записи, подчиненные документам не проведенным, но зарегистрированным в последовательности в указанном интервале. Таблица границ последовательностей будет заблокирована целиком. Если у последовательности есть измерения, то вышеописанные блокировки при данном действии будут касаться только записей с комбинациями значений измерений, совпадающими со значениями измерений записей регистрации.
|
|
·В файловом варианте работы системы в любом случае происходит блокировка таблиц целиком.
Согласно данному описанию механизма блокировок видно, что узким местом обеспечения параллельности ввода и проведения документов для клиент-серверного варианта работы системы являются действия, связанные с автоматическим перемещением границы последовательности.
То есть если документ зарегистрирован в последовательности, то при его проведении система может предпринять попытку автоматического перемещения границы последовательности на момент регистрации данного документа. Это приведет к блокировке таблицы границ последовательности целиком или в диапазоне соответствующей комбинации значений измерений последовательности. Параллельно проводимый документ, входящий в ту же последовательность, при попытке заблокировать те же записи или таблицу не сможет этого сделать. В результате вместо параллельного проведения для таких документов получим последовательное.
|
|
Одним из вариантов выхода из ситуации является отключение автоматического перемещения границы последовательности при проведении документов. Для этого свойству Перемещение границы при проведении последовательности как объекта конфигурации устанавливается значение Не перемещать.
В этом случае при проведении документа, даже если он регистрируется в последовательности, система не предпринимает попытки перемещения границы (границ) последовательности. А блокировки, возникающие при регистрации разных документов в последовательности, не мешают друг другу. То есть тогда работа с объектом Последовательность не препятствует параллельному проведению документов.
Необходимо лишь не забыть позже реализовывать перемещение границы последовательности, например, служебной обработкой.
Дата добавления: 2019-02-22; просмотров: 320; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!