Найти тему
Жаркое лето ZZ-го

Разработка в 1С. Ч.14. Оперативное и неоперативное проведение документов.

В конфигурации 1С:Предприятия есть два режима проведения документов - оперативный и неоперативный.

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

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

Соответственно, система ориентируется на текущую дату и проводит документ в оперативном режиме, только если его дата совпадает с текущей. Если же дата документа больше текущей даты (то есть, пытаемся провести документ будущей датой), а в настройках документа (в закладке "Движения" окна редактирования объекта конфигурации) разрешено оперативное проведение, то система не даст провести документ.

Бывают ситуации, когда много документов проводится одновременно, вплоть до того, что их даты совпадают до секунды. Для обработки таких ситуаций предусмотрено понятие момент времени - это совокупность даты, времени и ссылки на конкретный объект данных. Это понятие реализовано при помощи универсального объекта "МоментВремени", который имеет свойства "Дата" и "Ссылка", позволяющие получить составляющие момента времени, и метод "Сравнить()", сравнивающий два момента времени между собой.

Каждый раз при оперативном проведении документа создаётся оперативная отметка времени. При этом текущее время сравнивается с предыдущей оперативной отметкой. Если текущее время больше, то оно принимается в качестве новой оперативной отметки. Если текущее время равно или меньше предыдущей оперативной отметки, то новая оперативная отметка принимет значение на секунду больше предыдущей.

При перепроведении документа нужно будет выбрать - проведение будет оперативным или нет. Про оперативном перепроведении дата документа устанавливается на новую оперативную отметку времени. При неоперативном перепроведении дата документа остаётся прежней.