Особенности архитектуры. Принципы организации регистров оперативного учета
Определенная сложность освоения механизма регистров объясняется тем, что в отличии от проводок бухгалтерского учета, регистры оперативного учета не имеют аналогов в ручном учете и являются специфической моделью учета 1С:Предприятия.
В этом разделе приводятся разъяснения об организации механизма Регистров , являющихся основой компоненты 1С:Предприятия "Оперативный учет". Правильное понимание модели учета, поддерживаемой Регистрами необходимо для разработки конфигураций с использованием этой компоненты.
Прежде всего, следует различать использование регистров остатков и оборотных регистров. Не смотря на единство основных принципов, по своему назначению они существенно различаются.
Регистры остатков
Регистр остатков - это объект, предназначенный для учета наличия исчисляемых ресурсов в разрезе некоторого набора измерений. Ресурсами могут являться любые исчисляемые величины, такие как: "количество товара", "долг клиента", "сумма наличных" и т.п. Измерения Регистра остатков – это оси координат, на пересечении которых Регистр остатков хранит конкретные значения ресурсов. В качестве измерений могут выступать любые значения, характеризующие конкретные значения ресурсов, например, "материал", "место хранения", "организация".
Приведем пример регистра остатков. Допустим, у нас есть Регистр "ОстаткиТоваров", измерениями этого регистра являются: "Товар", "Склад", "МОЛ". Регистр имеет один ресурс - "Количество". Содержание данного Регистра можно представить в виде следующей таблицы, где по каждому конкретному товару на конкретном складе за конкретным МОЛ числится определенное Количество товара.
На рисунке приведена логическая схема хранения текущих остатков регистра "ОстаткиТоваров".
Под термином "остаток" ресурса следует понимать числовое значение, которое содержит величину ресурса на какой-то момент времени.
Для каждого регистра в информационной базе система хранит остатки на некоторые моменты времени и все движения по данному регистру.
Управление регистрами остатков осуществляется записью движений прихода и расхода в процессе проведения документа. Каждое движение содержит значения всех измерений и тех ресурсов, которые изменяются в данном движении.Алгебраическая сумма значений ресурсов имеющихся движений приходов и расходов и определяет состояние остатков, причем эти итоги формируются отдельно по каждой используемой комбинации значений измерений. Приведем пример движений регистра и остатков, которые получаются на основании этих движений:
Движения
Остатки
С помощью выполнения запроса или последовательного обхода движений можно получить различную информацию о суммах движений за некоторый период или детальных движениях. Итоги, хранимые регистром, предназначены для выдачи информации об остатках на определенный момент времени. Например, итоги регистра "ОстаткиТоваов" позволяют ответить на вопрос: "сколько данного товара на этом конкретном складе числится за определенным материально-ответственным лицом".
Состав измерений регистров определяет максимальную детализацию хранения остатков. Разумеется, с помощью запросов можно "свернуть" остатки, получив их с меньшей детализацией. Свертка может производиться по любой комбинации измерений. Приведем некоторые варианты свертки регистра "ОстаткиТоваров".
Свертка по МОЛ.
Свертка по складу и МОЛ.
Свертка по товару и складу.
При проектировании регистра остатков следует придерживаться следующих правил:
Состав измерений регистра должен быть таковым, что для каждой единицы ресурса в конкретный момент времени можно однозначно определить значения всех измерений. В приведенном примере это означает, что каждая единица количества товара в конкретный момент располагается на некотором складе и при этом записана за определенным материально-ответственным лицом.
Движения регистров, выполняемые документами по регистру остатков должны выполнять как приход, так и расход по каждому используемому сочетанию значений измерений. Это означает, что нельзя допускать ситуации, когда в конфигурации предусматривается, например, запись движений прихода по некоторому сочетанию измерений регистра остатков и не предусматривается движений расхода по данному сочетанию значений измерений. Разумеется, приходы и расходы могут выполняться совершенно разными документами и в разные моменты времени, но сам принцип регистра остатков подразумевает то, что регистр отражает некоторый баланс наличия средств которые приходуются и расходуются. Причем данное правило должно выполняться для всех ресурсов регистра. В противном случае остатки регистра будут постоянно переноситься из периода в период и его использование будет неэффективным.
Кроме измерений и ресурсов в движениях регистров могут располагаться реквизиты. Они никак не влияют на расчет остатков. Реквизиты предназначены для указания в движениях некоторой дополнительной информации о выполненном движении. Например, при расходовании товара может указываться вид продажи (наличный или безналичный). Этот признак никак не влияет на остатки товаров, но может использоваться, например, для анализа структуры продаж.
Заметим, что если некоторое числовое значение является характеристикой движения регистра, и вы хотите получать по нему отчеты с суммами данного значения по движениям, но оно не имеет физического смысла в качестве остатка, то его следует вводить в структуру регистра в качестве реквизита, а не в качестве ресурса. Например, если при расходовании товара, мы хотим отразить сумму НДС, выделенную при продаже, но эта сумма не должна храниться в регистре в качестве остатка (так как мы не планируем вести учет остатков по НДС), то ее нужно ввести в структуру регистра в качестве реквизита.
Из описанных выше правил вытекает то, что регистр остатков фактически используется для организации некоторой замкнутой системы учета. Причем в определенной ситуации может существовать потребность в двух и более системах учета одних и тех же объектов предметной области. В этом случае создается более чем один регистр. Типичным примером использования нескольких регистров для учета одних и тех же объектов может служить учет складских запасов и резервирования товаров для тех случаев, когда резервирование выполняется не с конкретного склада, а от лица всей фирмы. При этом фактически ведется два учета - учет наличия товаров на складах и учет зарезервированных товаров по клиентам или конкретным счетам. На рисунке приведен пример такой структуры регистров.
Пример структуры регистров для учета товаров:
Регистр "НаличиеТоваров"
Регистр "РезервыТоваров"
Разумеется, в этом случае идентичность количественных остатков по товарам в обоих регистрах должна обеспечиваться синхронной записью движений по этим регистрам при проведении документов.
Для регистров остатков система обеспечивает хранение рассчитанных итогов и их динамическое обновление при любых действиях с движениями (записи движений, отмены проведения документов, удалении документов). Итоги хранятся системой на текущий момент (точку актуальности) и на границы предыдущих периодов. В качестве периода может выступать месяц, пятнадцать дней, декада и пять дней. Хранение текущих итогов позволяет системе выполнять быстрый доступ к итогам при проведении документов в реальном времени и для получения оперативных отчетов. Однако с помощью запросов или временных расчетов регистров существует возможность обращения к итогам на любой момент (любую дату или позицию документа). Для того, чтобы в этом случае не обрабатывать все существующие движения система использует хранимые итоги ближайшей границы периода и обрабатывает только движения от начала периода до указанного момента. Соответственно периодичность хранения определяет среднее время получения итогов на некоторый момент.
Чем меньше периодичность, тем меньше будет среднее время, но больше объем хранимой информации, и, соответственно, наоборот. Периодичность хранения итогов устанавливается в режиме управления оперативными итогами в режиме запуска "1С:Предприятие" и никак не влияет на функциональность системы, за исключением времени обращения к итогам на различные моменты и необходимости выполнения открытия периодов.
Оборотные регистры
В отличие от регистров остатков оборотные регистры призваны накапливать некоторые специфические итоги в разрезе периодов. То есть, ресурс оборотного регистра накапливает некоторую сумму за период. При этом значения измерений оборотного регистра детализируют накапливаемую сумму.
Примером оборотного регистра может служить регистр "ПродажаТоваров". Данный регистр учитывает объем продаж в разрезе товаров и клиентов.
На рисунке приведена логическая схема хранения итогов регистра "ПродажаТоваров".
Фактически итоги этого регистра позволяют ответить на вопрос "Сколько за определенный период продано данного товара конкретной организации". Разумеется, как и в случае регистра остатков, итоги оборотного регистра могут быть свернуты для получения данных с меньшей детализацией.