Понятие момента времени
Для определения положения документа на оси времени использу- ется реквизит документа Дата. Дата содержит время с точностью до секунды. Это позволяет контролировать последовательность записи документов. Однако при большом объеме создаваемых документов вероятна ситуация, когда несколько документов будут иметь одина- ковое значение даты (т. е. будут созданы в течение одной секунды). Как в этом случае определить последовательность созданных документов? Для обработки подобных ситуаций было введено понятие момент времени. Момент времени представляет собой совокупность даты, времени и ссылки на объект базы данных. Он позволяет однозначно идентифицировать любой объект ссылочного типа базы данных на оси событий, но имеет смысл в основном только для документов. Кроме того, момент времени позволяет идентифицировать и необъ- ектные данные, например, записи регистров, подчиненных регистра- тору. Понятие момента времени реализовано во встроенном языке при помощи универсального объекта МоментВремени. Этот объект имеет свойства Дата и Ссылка, которые позволяют получить «составля- ющие» момента времени, и один метод – Сравнить(), при помощи которого возможно сравнение двух моментов времени между собой. Кроме этого, объект МоментВремени имеет конструктор и может быть создан в явном виде для любого объекта базы данных ссылоч- ного типа. Для нескольких документов, имеющих одинаковую дату и время, последовательность их на оси событий определяется системой исходя из ссылок на эти документы. Она может не совпадать с последова- тельностью создания документов, и она недоступна для изменения пользователем, то есть нельзя каким-либо образом повлиять на после- довательность документов внутри одной секунды или вычислить, что один документ создан раньше, а другой – позже.
Оперативная отметка времени создается системой каждый раз при оперативном проведении документа. Ее значение формируется исходя из текущей даты сеанса и последней созданной оперативной отметки. Если последняя оперативная отметка меньше текущей даты сеанса, в качестве новой оперативной отметки принимается текущая дата сеанса. Если последняя оперативная отметка равна или больше текущей даты сеанса, в качестве новой оперативной отметки принимается значение на одну секунду большее, чем старая оперативная отметка времени. Таким образом, если у объекта конфигурации Документ установлено свойство оперативного проведения (рис. 14. 30), последовательность действий системы будет следующей: при создании нового документа система будет устанавливать ему текущую дату сеанса и «нулевое» время; при проведении такого документа (с датой, день которой соответ- ствует дню текущей даты сеанса) система установит в качестве даты документа оперативную отметку времени; если отменить проведение документа и затем провести его снова (не изменяя даты), система установит документу новую оператив- ную отметку времени; если попытаться перепровести документ, то система также авто- матически установит документу новую оперативную отметку времени и проведет его; при попытке проведения (или перепроведения) оперативно про- водимого документа с датой, день которой меньше дня текущей даты сеанса, документ будет проведен неоперативно; если попытаться провести (или перепровести) оперативно прово- димый документ с датой, день которой больше дня текущей даты сеанса, то система не даст выполнить такое действие.
Рис. 14. 30. Разрешение оперативного проведения документа
Общая методика контроля остатков при проведении документа заключается в следующем: сначала, не глядя ни на что, нужно записать движения документа, а затем, когда движения уже записаны, прочитать из базы данных остатки. Если появились отрицательные остатки, значит, такой документ проводить нельзя. Нужно сообщить пользователю, каких материалов не хватает, и отменить проведение документа. Если же отрицательных остатков не появилось, тогда можно смело проводить документ. Полдела у нас уже сделано: мы формируем движения документа и записываем их. Единственное, что нам осталось, – в случае опера- тивного проведения проконтролировать, что получилось, и, если появились отрицательные остатки, отменить проведение документа.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|