Работа с последовательностями



Работа с последовательностью включает в себя три процесса:

·регистрация документа в последовательности;

·перемещение границы последовательности назад;

·перемещение границы последовательности вперед (восстановление границы последовательности).

В принципе эти процессы, во-первых, независимы, во-вторых, могут выполняться системой автоматически или посредством программных действий, заложенных разработчиком.

 

Для автоматической регистрации документа в последовательностях необходимо, чтобы свойство Заполнение последовательностейдокумента как объекта конфигурации было установлено в значение Заполнять автоматически.

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

 

Перенос границы последовательности выполняется при записи набора записей регистров.

Сам процесс автоматического перемещения границы последовательности назад (сбивание границы) состоит из следующих операций (рис. 2.85):

·проверка того, что граница последовательности больше момента времени записи регистра;

·перемещение границы последовательности на момент времени записи регистра.

Процесс переноса границы последовательности вперед называется восстановление последовательности.

Необходимым условием автоматического восстановления последовательности является установка значения Перемещать свойству Перемещение границы при проведении последовательности как объекта конфигурации.

Сам процесс автоматического восстановления последовательности выполняется только при проведении документа и состоит из следующих операций (рис. 2.88):

·проверка того, что момент регистрации документа больше, чем граница последовательности;

·проверка того, что в последовательности нет других проведенных документов в интервале между границей последовательности и моментом регистрации документа;

·установка границы последовательности на момент регистрации документа.

 

Параллельный ввод документов , участвующих в последовательности

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

·таблице записей регистрации документов в последовательности;

·таблице границ последовательностей.

Выполнение различных действий с последовательностью в клиент-серверном варианте использования программы порождает блокирование этих таблиц в различных диапазонах:

·При регистрации документа в последовательности происходит добавление или модификация набора записей таблицы регистрации документов в последовательности, подчиненного регистратору. Поэтому заблокированным оказывается как минимум диапазон записей, соответствующих одному регистратору (плюс две граничные записи «вокруг» этого диапазона).

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

·При перемещении границы последовательности вперед. Этот процесс происходит только при проведении документа, поэтому блокируются обе таблицы. Таблица регистрации документов в последовательности оказывается заблокированной в диапазоне от границы последовательности по момент времени регистрации проводимого документа в последовательности. То есть заблокированными могут оказаться записи, подчиненные документам не проведенным, но зарегистрированным в последовательности в указанном интервале. Таблица границ последовательностей будет заблокирована целиком. Если у последовательности есть измерения, то вышеописанные блокировки при данном действии будут касаться только записей с комбинациями значений измерений, совпадающими со значениями измерений записей регистрации.

·В файловом варианте работы системы в любом случае происходит блокировка таблиц целиком.

Согласно данному описанию механизма блокировок видно, что узким местом обеспечения параллельности ввода и проведения документов для клиент-серверного варианта работы системы являются действия, связанные с автоматическим перемещением границы последовательности.

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

Одним из вариантов выхода из ситуации является отключение автоматического перемещения границы последовательности при проведении документов. Для этого свойству Перемещение границы при проведении последовательности как объекта конфигурации устанавливается значение Не перемещать.

В этом случае при проведении документа, даже если он регистрируется в последовательности, система не предпринимает попытки перемещения границы (границ) последовательности. А блокировки, возникающие при регистрации разных документов в последовательности, не мешают друг другу. То есть тогда работа с объектом Последовательность не препятствует параллельному проведению документов.

Необходимо лишь не забыть позже реализовывать перемещение границы последовательности, например, служебной обработкой.

 


Дата добавления: 2019-02-22; просмотров: 320; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!