Установка границы последовательности

Последовательности документов

Установка границы последовательности

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

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

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

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

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

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

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

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

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

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

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

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

Реализация

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

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

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

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

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

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

Тогда при восстановлении последовательности документов, система может определить, по каким товарам было произведено изменение данных, и соответственно, какие документы должны быть перепроведены.

Регистрация документа в последовательности может осуществляться автоматически. Для этого разработчик должен настроить соответствия между реквизитами документа и измерениями последовательности документа.

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

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

Если все табличные части имеют во всех строках уникальные сочетания значений соответствующих реквизитов, то количество регистраций будет равно N1*N2…*Ni раз, где Ni количество строк соответствующей табличной части, реквизиты которой участвуют в соответствиях.

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

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

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

Механизм последовательности документов использует две сущности: регистрация документа в последовательности, граница последовательности. Для каждой из этих сущностей в системе создаются таблицы данных. Регистрация используется для регистрации документа в последовательности. Обе эти таблицы доступны в языке запросов 1С:Предприятия.

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

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

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

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

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

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

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

Процесс записи документа

Начало транзакции
            Автоматическое заполнение наборов записей регистрации документа в последовательности
            Вызов предопределенной процедуры ПередЗаписью()            Запись документа            Вызов предопределенной процедуры ПриЗаписи()            Запись измененных и не записанных наборов записей движений документа

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

Процесс записи документа с проведением

Начало транзакции
            Автоматическое заполнение наборов записей регистрации документа в последовательности
            Вызов предопределенной процедуры ПередЗаписью()            Запись документа            Вызов предопределенной процедуры ПриЗаписи()            Вызов предопределенной процедуры ОбработкаПроведения()            Запись измененных и не записанных наборов записей движений документа

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

Процесс записи документа с отменой проведения

Начало транзакции
            Автоматическое заполнение наборов записей регистрации документа в последовательности
            Вызов предопределенной процедуры ПередЗаписью()            Вызов предопределенной процедуры ОбработкаУдаленияПроведения()            Удаление движений документа

                       Проверка и перенос границ последовательностей на момент времени движений (данное действие производится в наборе записей, не в документе!)
            Запись документа

            Вызов предопределенной процедуры ПриЗаписи()

            Запись измененных и не записанных наборов записей регистрации документа в последовательностях
Конец транзакции

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

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

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

Источник: https://its.1c.eu/db/content/metod8dev/src/developers/platform/metod/applied/i8102736.htm

Использование механизма последовательности документов

Установка границы последовательности
Перейти к содержимому

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

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

Например, мы выставили клиенту счет на 100 USD, и отразили поступление от него денежных средств — 7 000 тыс.руб. по курсу 70 руб./долл. Спустя некоторое время было обнаружено, что на банковском счете добавилось только 6 000 руб., т.к. с курсом конвертации была допущена ошибка, он составлял 60 руб./долл на самом деле.

При этом со счета уже произошли списания по иным курсам, актуальным для дат операции.

Так вот, если документы Поступления и Списания денег объединены в последовательность, то после исправления курса конвертации в проблемном документе поступления «задним числом» все последующие документы будут перепроведены, и тем самым мы выйдем на корректный остаток по счету.

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

Условно последовательность можно представить как «общий» журнал документов, входящих в эту последовательность. 

Последовательность считается нарушенной если после границы последовательности есть другие документы (в таком случае её необходимо восстановить).

Физически последовательность состоит из двух таблиц:

1) таблица регистрации;

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

Регистрация документа в последовательности (т.е. в таблице регистрации) производится в момент его записи. Регистрация документа в последовательности может осуществляться:

  1. автоматически, под руководством системы, если свойство «Заполнение последовательностей» документа будет установлено в «Заполнять автоматически»;
  2. по описанным разработчиком правилам регистрации.

[свернуть]

2) таблица границ.

Таблица границ – хранит границу последовательности в разрезе измерений (одно измерение – одна запись; если измерений нет, то только одна запись).

Запись в таблицу границ происходит при проведении документа.

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

[свернуть]

Обе таблицы идентичны по составу колонок («Период», «Регистратор», «Измерение»).

Восстановить последовательность возможно путём:

  1. простого программного переноса границы последовательности (если вы уверены, что итоги не нарушены) на последний документ в последовательности или
  2. повторным последовательным проведением всех документов от границы до последнего по времени документа в последовательности (для исправления последовательности существует штатная обработка «Проведение документов»).

Свойства последовательности документов

Свойства последовательности редактируются в окне редактирования Последовательность.

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

  1. Перемещение границы при проведении:
    • «Перемещать» — документ, зарегистрированный в этой последовательности, при своем проведении будет пытаться переместить границу этой последовательности документов;
    • «Не перемещать» — документ не будет перемещать границу этой последовательности документов при своем проведении.
  2. Входящие документы – указываются виды документов, которые относятся к данной последовательности (могут регистрироваться в этой последовательности документов).  В качестве документов, на проведение которых будет влиять данная последовательность, следует выбрать те виды документов, которые при проведении будут анализировать состояние различных регистров (например, расходные накладные, накладные на передачу, на реализацию и т. д.).
  3. Движения, влияющие на последовательность – одно из основных свойств последовательности, которое определяет какие из движений будут влиять на необходимость перепроведения документов данной последовательности, то есть движения или итоги каких механизмов учета используются документами данной последовательности при проведении. Например, в качестве таких движений могут выступать движения регистров. Для настройки данного параметра следует добавить в список те виды регистров, движения которых будут нарушать данную последовательность.

Измерения последовательности

Последовательности могут иметь подчиненные объекты, называемые измерениями, которые создаются на закладке «Данные» окна редактирования.

[свернуть]

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

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

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

Отсюда…

[свернуть]

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

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

Пример

Отсюда…

Например, последовательность учитывает изменение состояния регистров по документам «Приходная накладная» и «Расходная накладная». Если требуется учитывать дополнительные критерии необходимости перепроведения указанных документов (например, нужно перепроводить документы по определенному значению номенклатуры), то необходимо:

  1. в последовательность добавить измерение;
  2. палитре свойств измерения указать его тип (СправочникСсылка.Номенклатура);
  3. установить связь с реквизитами регистров.

[свернуть]

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

Программные методы последовательности

ПоследовательностьМенеджер.< ИмяПоследовательности > — данный менеджер предназначен для управления последовательностью:

  • Последовательность.«ИмяПоследовательности».Восстановить
  • Последовательность.«ИмяПоследовательности».ПолучитьГраницу
  • Последовательность.«ИмяПоследовательности».ПолучитьГраницы
  • Последовательность.«ИмяПоследовательности».Принадлежит
  • Последовательность.«ИмяПоследовательности».Проверить
  • Последовательность.«ИмяПоследовательности».СоздатьНаборЗаписей
  • Последовательность.«ИмяПоследовательности».УстановитьГраницу

[свернуть]

За включение документов в последовательность отвечает отдельный объект конфигурации «Последовательность»:

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

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

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

При работе в режиме 1С:Предприятие для каждой введенной в конфигурации последовательности документов система будет автоматически поддерживать границу последовательности по следующим правилам:

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

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

Восстановление последовательности документов в 1С

В режиме перепроведения документов в режиме 1С:Предприятие («Главное меню — Все функции — Стандартные — Проведение документов») существует специальная возможность восстановления последовательности проведения документов. При ее использовании система автоматически выполняет перепроведение всех документов, относящихся к данной последовательности, от границы последовательности до указанного момента.

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

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

После выполнения восстановления последовательности проводимые после границы последовательности документы снова будут двигать границу вперед.

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

Особенности использования объекта «Последовательность документов»:

  1. Основное назначение объекта «Последовательность документов» — автоматизация контроля над хронологическим порядком проведения документов тех видов, которые указаны в последовательности.

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

  3. «Граница последовательности документов» обеспечивает пользователя моментом времени, начиная с которого перепроведение документов последовательности в хронологическом порядке, восстановит правильность (актуальность) учета, контролируемого последовательностью (важен именно момент времени, как комбинация даты (до секунды) и ссылки на конкретный документ внутри этой даты).
  4. Чтобы привести учет, контролируемый последовательностью, в актуальное состояние, лучше всего предложить пользователю воспользоваться режимом восстановления последовательности из диалога «Операции» / «Проведение документов…» / «Восстановление последовательностей» (или «Главное меню — Все функции — Стандартные — Проведение документов — Восстановление последовательностей»).
  5. Виды документов, которые могут регистрироваться в последовательности документов, указываются в свойстве «Входящие документы» на закладке «Использование» последовательности.

    Только документы, указанные в свойстве «Входящие документы», а именно «РасходнаяНакладная», могут регистрироваться в последовательности документов «СебестоимостьПродаж»: Все влияющие на последовательность виды документов указываются явно.

  6. Виды документов, которые могут регистрироваться в качестве границы последовательности, должны являться регистраторами регистров, указанных в свойстве «Движения, влияющие на последовательность».

    Виды документов, которые могут регистрироваться в качестве границы последовательности «СебестоимостьПродаж»: только документы, являющиеся регистраторами регистров, указанных в свойстве «Движения, влияющие на последовательность», а именно «ПриходнаяНакладная», «РасходнаяНакладная». Приходная накладная, хоть и не включена в последовательность, меняет состояние учета по данному регистру накопления, а значит влияет на границу последовательности.

Источник: https://flagman.top/about-business/ehkzamen-1s/posledovatelnost-dokumentov

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.