Содержание:
1. Отражение хозяйственных операций
2. Для разработчиков: настройка объекта Метаданных
В этой статье рассмотрим режимы Проведения, а также подход к действию с позиции пользователя 1С 8.3 Предприятие и разработчиков (особенно тех, кто только начинает этот тернистый путь).
1. Отражение хозяйственных операций
Разберемся откуда появились эти два Режима проведения. Для отражения хозяйственных операций (в том числе в режиме реального времени) требуется механизм учета и контроля движения (перемещения, например, купил => продал) товаров и материалов. Так как эти движения могут быть «размыты» во времени, то нужно понимать, как их регистрировать. В системе 1С для фиксации факта хозяйственной операции присутствует сущность «Документ». Следовательно требуется понимать, как проводить регистрацию и учет движений в Документе, если у каждой фиксации свои тонкости в регистрации движений. Отсюда и пришло понимание, что любая Операция может вноситься в режиме реального времени, т.е. «оперативно», и как свершившийся факт в прошлом (однозначно выполняемая операция в будущем) – «неоперативно». И в зависимости от стоящей задачи Документ может быть «оперативным», «неоперативным» или не иметь режима вовсе (например, Документ для внесения ручных операций).
Теперь следует однозначно разграничивать, что есть «оперативно», а что таковым не является. Фиксация хозяйственных операций - это также и учет «во времени». Именно от этого будем отталкиваться в понимании значения оперативного и неоперативного проведения.
Рис. 1. Регистрация событий хозяйственного учета
С помощью этой схемы можно четко себе представить, какой Документ будет Оперативный, какой – не будет иметь режима, а какой - Неоперативный.
На рисунке 1 не указано отсутствие режима проведения, но исходя из задачи можно однозначно понимать, что если функции у Документа нельзя определить по указанному в рисунке 1, то Проведение отсутствует (это понимание важно не только пользователю, но в большей степени разработчику для планирования будущей архитектуры решения).
Для того чтобы перейти к применениям этих режимов, необходимо также понимать следующее: использующие режимы проведения Документы ориентируются на временную шкалу, по которой работает Платформа 1С 8.3 и которая контролирует расчет остатков. Для полного понимания использования временной шкалы используется схема, указанная в рисунке 2. Следует уточнить, что Таблица Движений — это таблица, которая формируется на основе введенных в Документ учетных данных и вносит записи в Регистры.
Рис. 2. Расчет итогов и Актуальных остатков на временной шкале
Как можно увидеть из рисунка 2, размещение Документа влияет на расчет остатков. Актуальные остатки (далее АО) – это рассчитанные остатки, хранящиеся на дату 01.11.3999 год по времени 00:00:00 в интервале 1-й секунды по Левой границе от этого времени (левая граница означает, что берется весь отрезок времени по указанную секунду, но не включая эту секунду). При этом понятие Границы времени и Момент времени, использующиеся в проведении, отличаются и имеют свои особенности применения, что будет рассказано в другой статье.
Пересчет по Таблице Движений выполняется по следующему правилу. Берется ближайший (по количеству секунд) Рассчитанный итог и:
1. При условии, что Документ находится правее на оси времени по отношению к Рассчитанным итогам (т.е. Документ в будущем), к нему прибавляют Движения до момента проведения;
2. При условии, что Документ находится левее на оси времени по отношению к Рассчитанным итогам (т.е. Документ в прошлом), из него вычитают Движения до точки проведения Документа.
Таким образом, чем больше Документов формируемых Движения между проводимым Документом и Рассчитанными итогами, тем дольше происходят вычисления.
Для Оперативного присуще проведение текущей Дата/Время. При этом в текущий момент Времени Оперативного проведения происходит просчет Актуальных остатков. С «проводящимися» Документами в режиме Неоперативного проведения такого не происходит, они влияют на пересчет промежуточных итогов, и уже потом Платформа 1С выполняет на их основе пересчет Актуальных остатков.
Особая потребность в Оперативной проводке возникает в многопользовательском режиме, когда данные создаются несколькими пользователями одновременно. В этом случае программным кодом должно учитываться изменяющиеся итоги и АО. Таким образом, оперативное проведение служит для определения возможности выполнения той или иной операции (и выполнения ее при соблюдении заданных условий). Неоперативное же служит для безусловного сохранения данных (проводок) в информационной базе, которые уже совершены или точно будут совершены.
Если Документ может использовать Оперативное проведение, а существует необходимость создать проводки будущей датой, для сохранения данных (проводок) в информационной базе, которые должны произойти в будущем, то Система не проведет такой Документ без вариантов выбора. Тогда пользователю остается только поменять реквизит дата Документа:
1. На текущую: в таком случае Система самостоятельно задаст время, равное Оперативной Отметке Времени и Документ будет проведен оперативно;
2. На прошедшую: Документ будет проведен в неоперативном режиме.
При текущих обстоятельствах если параметры учета указывают на необходимость проведения каких-либо Документов будущей датой, то для такого Документа Оперативное проведение должно быть запрещено. Помните: не рекомендуется изменять Дату и Время Операционной системы и Программы с целью изменения даты Оперативного проведения, потому что это допускает возможность приведение к неверному расчету бухгалтерских данных. Из-за этого возникнут грубые ошибки в бухгалтерском учете.
2. Для разработчиков: настройка объекта Метаданных
Оперативное проведение (далее – ОП). В момент создания Документа режим ОП будет установлен автоматически. Документ создает движения текущим Временем, и механизм контролирует остатки (например, списываемые товары проверяются на остатки по складам). Подобные проверки имеют важное значение в клиент-серверной архитектуре, когда пользователи могут изменить данные одновременно. При этом ОП имеет прямое отношение к АО.
Неоперативное проведение (далее – НП). Регистрирует Движения данных без контроля остатков с точкам Времени в «прошлом» или «будущем». Также проведение ранее сохраненного Документа, но не проведенного в момент сохранения, приведет к Неоперативному проведению. Когда пользователь использует НП, он имеет возможность игнорировать описанный программный контроль. Это может привести к ошибкам в учете и ошибкам в записываемых данных, поэтому Система определяет автоматически на уровне Платформы, какой режим будет использован.
Запускаем 1С:Предприятие в режиме Конфигуратор. Открываем Конфигурацию, раскрываем в дереве Метаданных узел «Документы» двойным кликом откроем окно свойств Документа (или же при создаем новый Документ), переходим на закладку Движения и видим следующую настройку:
Рис. 3. Настройка объекта Документ в дереве Метаданных
Как видно на рисунке 3, существует два варианта в поле «Оперативное проведение»: запретить и разрешить. Данное свойство предполагает, что при выборе варианта Запретить любое проведение Документа будет Неоперативным (при этом документы также можно проводить любой датой). А при выборе варианта Разрешить уже сама Платформа, согласно внутреннему устройству, будет проверять дату Документа. И если Дата не задана пользователем, то будет проводиться Оперативно, если задана отличная от текущей – то Неоперативно. Для того чтобы не изменять параметры, программные механизмы и алгоритмы работы решения, не рекомендуется пользователю вмешиваться в настройки проведения.
В обработке проведения необходимо выстроить алгоритм, проверяющий и контролирующий достаточность остатков с целью списания при проведении Документа.
Как правило, такая проверка делается в случае, когда ОП разрешено. В случае НП такую проверку можно не выполнять, так как концепция ОП и НП подразумевает, что пользователь может работать, как описано выше, в абсолютно противоположных режимах. Так как ОП Документов выполняется пользователем в режиме «реального времени», а такое проведение особенно актуально при многопользовательской работе, то в таком случае необходимо программным образом описать максимальное количество проверок способных исключить ошибки ввода данных пользователем.
Например, необходимо выполнить контроль остатков на складах списываемой Номенклатуры, для исключения возможность продажи одного товара в один момент Времени несколькими пользователями.
При ОП Документа Платформа сначала проверит положение даты Документа относительно текущей даты сеанса. Текущая дата сеанса равна системной дате компьютера, приведенной к часовому поясу сеанса. Если текущий момент Времени Документа совпадает с текущей датой сеанса, то Система проведет его Оперативно. В обработке же проведения об этом можно узнать, чтобы выстроить определенный алгоритм проведения Документа. И если дата меньше текущей даты сеанса, то он будет проведен Неоперативно.
НП Документов подразумевает отражение фактов хозяйственного учета, которые произошли в прошлом или которые точно произойдут в будущем. Именно поэтому задача НП Документов – отразить совершенные операции в информационной базе. В том числе контроль остатков и иные проверки не имеет смысла производить при НП. Если в результате ввода данных с последующим НП были допущены ошибки, то подразумевается, что анализ данных не является текущей задачей и не относится к НП. Такая задача выполняется, когда в базе имеются достаточно данных для анализа. Например, когда списали количество материалов не имеющегося по складу на дату проведения Документа и планируют вводить Документы ранней датой, приходующие товары.
Специалист компании ООО «Кодерлайн»
Иван Каплин.