Оперативное проведение подразумевает проведение в текущей дате. Проведение предыдущей и последующей датой, не может быть оперативным. Поэтому в оперативном проведении используется текущая системная дата.

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

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

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

В качестве оперативной отметки система, как правило, возвращает текущее время (текущую дату и текущее время). Однако если текущее время больше или равно последней выданной какому-либо пользователю отметке, то возвращается значение на секунду большее, чем значение последней выданной отметки. Таким образом обеспечивается получение при каждом обращении значения по возможности соответствующего текущему времени, но в обязательном порядке большего, чем предыдущее полученное значение.

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

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

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

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

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

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

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

Работать будующей датой в 1с теоретически можно. Чтобы документ провелся будующей датой, нужно выключить у него оперативный режим проведения (флаг РежимПроведения в форме) и тогда он проведется будующей датой.

При этом, правда, остатки на текущую дату (и на оперативную отметку времени) не изменятся. Поэтому если не быть внимательным, то один и тот же товар можно провести дважды.

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

Но при таком способе в файловой базе при попытке провести текущей датой возникает ошибка " Дата документа не соответствует текущей дате или дате последнего оперативно проведенного документа. Документ не может быть проведен оперативно". Чтобы от нее избавиться, нужно перезагрузить компьютер, где находится файловая база. Отмена проведения проведенного будущим числом документа, естественно, не помогает.

На диске ИТС в статье «Особенности использования системной даты компьютера при оперативном проведении документов».

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

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

Рассмотрим ряд примеров работы этих механизмов.">

Если основной реквизит формы имеет тип значения ДокументОбъект. , то для данной формы действует расширение формы документа. Посредством него решаются вопросы специфичной функциональности формы документа. Расширение помогает обрабатывать различные команды пользователя, выполнять предварительные проверки и другие сервисные действия.

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

Рассмотрим ряд примеров работы этих механизмов.

Установка даты документа при открытии формы

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

Причем время документа будет установлено в зависимости от следующих настроек. Если свойство АвтоВремя расширения формы документа имеет значение НеИспользовать то время документа будет установлено по значению текущей даты сеанса. В остальных случаях дате документа присваивается время начала дня (00:00:00).

Установка даты нового документа при записи нового документа в форме

При записи документа в режиме оперативного проведения значение даты документа устанавливается согласно выданной оперативной отметке времени. Тут настройки свойств расширения формы не играют роли.

Но если время документа "нулевое" (0:00:00), то при неоперативном проведении документа оно будет изменено согласно настройкам свойства АвтоВремя. Исключение — когда АвтоВремя имеет значение НеИспользовать тогда время документа не меняется.

.

Запрет интерактивной записи проведенного документа без проведения (перепроведения)

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

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

Предотвращение подобных ситуаций достигается за счет установки свойства расширения формы документа ПриЗаписиПерепроводить значение Истина. Тогда отказ в обработке проведения приведет к откату транзации — документ не будет и перезаписан.

Установка режима проведения

При проведении документа из формы система проверяет наличие у пользователя соответствующих прав (Проведение, Интерактивное проведение, Интерактивное проведение неоперативное). Если их нет, то выдается сообщение о невозможности проведения документа, и запись с проведением документа из формы отменяется. Мы будем рассматривать только возможность отсутствия/наличия прав на неоперативное проведение, в зависимости от которого система может менять свое поведение, так как если нет первых двух прав, то документ не может быть проведен из формы в принципе.

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

При записи документа из формы расширение формы документа выполняет установку режима проведения документа.

Для реализации данного функционала система использует вариант (Автоматически, Оперативный, Неоперативный, Запрашивать) указанный в качестве значения свойства ИспользоватьРежимПроведения расширения формы документа.

Вариант "Автоматически"

Вариант Автоматически устанавливается посредством выбора значения Автоматически у свойства ИспользоватьРежимПроведения расширения формы документа. Платформа стандартно устанавливает это значение для новой формы.

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

Для проводимого документа происходит проверка положения даты документа относительно текущей даты сеанса.

Если дата документа (без учета времени) равна текущей дате сеанса, то система автоматически выбирает вариант проведения Оперативный.

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

Если дата документа (без учета времени) меньше текущей даты сеанса, выбирается вариант проведения Неоперативный. При этом если у пользователя нет права на неоперативное проведение, выдается предупреждение: "Недостаточно прав для неоперативного проведения", и проведение документа отменяется.

Вариант "Оперативный"

Вариант Оперативный устанавливается посредством выбора значения Оперативный у свойства ИспользоватьРежимПроведения расширения формы документа.

В данном варианте, если дата документа (без учета времени) меньше текущей даты сеанса, выдается предупреждение: "Дата оперативно проводимого документа меньше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.

Если дата документа (без учета времени) равна текущей дате сеанса, производится запись документа с оперативным проведением.

Если дата документа (без учета времени) больше текущей даты сеанса, выдается предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.

Вариант "Неоперативный"

Вариант Неоперативный устанавливается посредством выбора значения Неоперативный у свойства ИспользоватьРежимПроведения расширения формы документа.

При испльзовании данного варианта проведение документа из формы всегда производится в неоперативном режиме, независимо от положения даты документа по отношению к текущей дате сеанса.

При этом еслу у пользователя нет права на неоперативное проведение, выдается предупреждение: "Недостаточно прав для неоперативного проведения", и проведение документа отменяется.

Вариант "Запрашивать"

Вариант Запрашивать устанавливается посредством выбора значения Запрашивать у свойства ИспользоватьРежимПроведения расширения формы документа.

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

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

Поведение системы при этом варианте определяется прежде всего положением даты документа (без времени) по отношению к текущей дате сеанса.

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

Если дата документа (без учета времени) меньше текущей даты сеанса, поведение системы определяется опять же наличием права на неоперативное проведение у пользователя. Если пользователь таким правом не обладает, выдается предупреждение: "Дата оперативно проводимого документа меньше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.

Если право на неоперативное проведение есть, пользователю выдается диалог с режимом выбора проведения. После выбора неоперативного режима проведения система проводит документ в неоперативном режиме. Если же пользователь выберет оперативный режим проведения, выдается предупреждение: "Дата оперативно проводимого документа меньше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.

Если дата документа (без учета времени) больше текущей даты сеанса, система не позволяет проводить документ оперативно. Поэтому если права неоперативного проведения нет, сразу выдается предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.

Если право на неоперативное проведение есть, пользователю выдается диалог с режимом выбора проведения. После выбора неоперативного режима проведения система проводит документ в неоперативном режиме. Если же пользователь выберет оперативный режим проведения, будет выдано предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменится.

Прочие функции

Кроме выбора режима проведения и установки даты документа, расширение формы документа реализует также следующий функционал:

  • при открытии формы проведенного документа, если у пользователя нет права Интерактивное изменение данных форма переводится в режим ТолькоПросмотр;
  • при открытии формы документа, в которой находятся таблицы, отражающие движения основного реквизита (объекта документа), эти движения автоматически считываются из базы данных и отображаются;
  • при записи из формы (даже если и программной — посредством Записать()) система выполняет проверку прав на интерактивное проведение или интерактивную отмену проведения.