Хранение итогов в системе 1С:Торговля
Итоговая информация в системе 1С:Торговля хранится в регистрах. Необходимое количество регистров для хранения итоговой информации создается в процессе настройки конфигурации задачи. При создании регистров определяется, какая информация и в каком разрезе будет храниться в каждом регистре. В терминологии системы 1С:Торговля разрезы хранения итоговых данных называются «измерениями», а сами хранимые данные — «ресурсами». Итоговая информация, хранящаяся в регистрах, — это значения ресурсов регистра на дату и время, которые могут устанавливаться автоматически или выбираться пользователем.
Проиллюстрируем изложенное таким примером. Предположим, что создан регистр «Товарный запас», в котором предстоит хранить информацию о наличии товаров, В таком регистре измерениями будут являться наименования складов и товаров, а ресурсами — количество и стоимость конкретного товара на конкретном складе. Итоговой информацией в данном случае будут значения остатков товара на складах в стоимостном и количественном выражении.
Необходимо отметить, что ресурсы имеют только числовой тип, в то время как измерения могут быть любых типов, разрешенных в системе 1С:Торговля, — строка, дата, элемент справочника и так далее.
В процессе настройки конфигурации задачи для большинства документов создается алгоритм движения регистров, т.е. на встроенном языке программы описывается, каким именно образом проведение данного документа повлияет на остатки и внесет изменениях в регистрах. В процессе проведения документа на основании этого алгоритма формируются конкретные записи об изменениях в регистрах. Эти записи в терминологии системы 1С:Торговля называются «движениями регистров», и их можно просмотреть, если открыть документ для редактирования и в меню «Действия» главного меню программы выбрать пункт «Движения регистров».
Процесс вычисления итогов происходит следующим образом. Перед проведением самого первого документа исходным состоянием регистров является отсутствие итогов; регистры пусты. Когда проводится самый первый документ, система подсчета итогов использует сведения о начальном состоянии регистров и записи о движениях регистров, сформированные этим документом, для вычисления значений ресурсов регистра на дату и время проведения документа.
Движения регистров всегда описывают динамику изменений регистров, или, выражаясь проще, указывают системе подсчета итогов, как необходимо увеличить или уменьшить данные, хранящиеся в ресурсах регистра, чтобы получились правильные итоги.
Опять возьмем в качестве примера регистр «Товарный запас». Предположим, самый первый документ — приходная накладная — содержит информацию о том, что на склад А поступил товар Б в количестве 5-ти штук (стоимость опустим — для простоты). Запись о движении регистра «Товарный запас» будет иметь такой смысл: «Прибавить 5 к остатку товара Б, находящемуся на складе А».
Как обработает этот документ система расчета итогов? Очень просто: к начальному количеству товара Б на складе А, которое равно 0, она прибавит 5, в результате в некоторую условную ячейку регистра «Товарный запас», находящуюся на пересечении склада А и товара Б, будет записана цифра 5. Теперь эта цифра будет считаться начальным состоянием ресурса и, соответственно, исходной точкой для вычислений, которые необходимо будет выполнить при проведении следующего по очереди документа.
Упомянутая выше исходная точка времени, от которой производится вычисление значений регистров при проведении документов, называется точкой актуальности итогов. Точка актуальности итогов имеет определенную дату и время.
Механизм расчета итогов системы 1С:Торговля позволяет, с одной стороны, всегда поддерживать итоги в актуальном состоянии, а с другой стороны — получать итоги на любой момент времени. Данные возможности реализует механизм смены точки актуальности итогов.
Чтобы итоги всегда поддерживались в актуальном состоянии, точка актуальности итогов автоматически сдвигается при проведении каждого нового документа. Если документы вводятся в хронологическом порядке и проводятся сразу после ввода, то итоги будут актуальны сразу после проведения документа.
Однако в системе 1С:Торговля предусмотрена возможность проведения документа «задним числом» — когда документ имеет дату и время более ранние, чем точка актуальности итогов. В этом случае точка актуальности итогов остается на месте, но проведение документа изменяет итоги.
Способность системы поддерживать итоги в актуальном состоянии при вводе документов может быть использована в ситуации, когда алгоритм формирования движения регистров использует итоговые данные, например, для контроля остатков товара.
Для получения итогов на любой момент времени точка актуальности итогов может быть сдвинута во времени вперед или назад. Такая смена может быть выполнена самим пользователем в режиме «Управление оперативными итогами». При смене точки актуальности итогов значения регистров рассчитываются заново, и при расчете учитываются все проведенные документы, расположенные до точки актуальности итогов.
Для ускорения вычислений, выполняемых при смене точки актуальности итогов, система 1С:Торговля сохраняет промежуточные значения регистров на начало каждого периода хранения итогов (далее — просто «период»), величина которого задается на стадии конфигурирования и может принимать следующие значения: месяц, пятнадцать дней, десять дней, пять дней. Так как процесс сохранения значений может занимать длительное время, он выполняется только по команде пользователя.
Сохранение значений на начало периода может выполняться двумя способами:
• автоматически, когда точка актуальности итогов сдвигается на следующий период;
• по команде «Открыть следующий период», при этом точка актуальности итогов сдвигается на первое число следующего периода.