- Последовательности документов
- Общее
- Реализация
- Процесс записи документа
- Процесс записи документа с проведением
- Процесс записи документа с отменой проведения
- Последовательность
- Последовательность документов в 1С 8.3
- Восстановление последовательностей
- В случае закрытии месяца
- Перепроведение и установка границ в разделе «Все функции»
- С какими регистрами может быть использован объект последовательность
- Последовательность документов в 1С 8.3
- Настройка последовательности
- Измерения последовательности
- Регистрация в последовательности
- Граница последовательности
- Восстановление последовательности
Последовательности документов
Общее
Механизм последовательности документов предназначен для отслеживания правильной последовательности проведения группы взаимосвязанных документов. Основная идея данного механизма заключается в том, что при своем проведении документ может использовать некоторые данные, уже хранящиеся в информационной базе. При этом процесс проведения документа зависит от значения этих данных на момент времени регистрации документа. Если после проведения документа эти данные были изменены, то документ должен быть перепроведен, для того чтобы он был правильно отражен в разных учетных регистрах. Например, документ, который при проведении определяет цену товара по регистру сведений, должен быть перепроведен при изменении цены задним числом, так как выполненные на основании этой информации движения стали неверными.
Схему работы этого механизма можно представить следующим образом. Документ при записи регистрируется в последовательности документов. Данная регистрация сигнализирует системе, что при проведении документ использует определенные данные информационной базы, и от их состояния на заданный момент времени зависит результат проведения документа. В конце процесса проведения документа система определяет, в каких последовательностях документов был зарегистрирован документ. Для каждой последовательности, в которой был зарегистрирован документ, определяется, были ли все документы, зарегистрированные в последовательности ранее данного документа, проведены в правильной последовательности. Если это условие выполняется, то данный документ тоже считается проведенным в правильной последовательности. Если данное условие не выполняется, то считается, что документ не был проведен в правильной последовательности и его надо перепровести.
При изменении данных, которые используются документами для проведения, система определяет, какие последовательности документов зависят от этих данных. Для всех документов, зарегистрированных в соответствующих последовательностях позже момента времени, к которому относятся изменяемые данные, устанавливается, что их нужно перепровести.
Пользователь может получить информацию о том, какие документы были проведены в правильной последовательности, а какие нет. Эта информация выдается в виде момента времени, до которого все документы считаются проведенными в правильной последовательности. Все документы позже данного момента времени считаются проведенными в неправильной последовательности. На основе данной информации пользователь может принять решение о восстановлении правильной последовательности проведения документов. Процесс восстановления заключается в перепроведении всех документов участвующих в последовательности, и являющихся проведенными.
Реализация
При разработке прикладного решения разработчик должен описать, какие документы могут участвовать в последовательности, и какие данные используются этими документами при своем проведении. Вся эта информация задается в объекте метаданных Последовательность. Разработчик отдельно указывает список документов, которые будут участвовать в последовательности, и список регистров, данные из которых будут использоваться при проведении документа. Важно заметить, что автоматическое отслеживание изменения данных для поддержки последовательностей документов осуществляется платформой только для регистров накопления, расчета, бухгалтерии и сведений.
Последовательность документов может иметь измерения. Измерения позволяют разбить общую последовательность документов на более мелкие последовательности в разрезе измерений. Например, если при проведении документ использует цены товаров, хранящиеся в регистре сведений, то при изменении цены любого товара будут перепроведены все документы, даже если в этом документе не использовался данный товар. Для того чтобы избежать такой ситуации, у последовательности документов можно определить измерение Товар. При регистрации в последовательности документов будет указываться, по каким товарам данный документ использует данные. Тогда при восстановлении последовательности документов, система может определить, по каким товарам было произведено изменение данных, и соответственно, какие документы должны быть перепроведены.
Регистрация документа в последовательности может осуществляться автоматически. Для этого разработчик должен настроить соответствия между реквизитами документа и измерениями последовательности документа. Если в соответствии был указан один или несколько реквизитов табличной части документа, то документ будет зарегистрирован в последовательности ровно столько раз, сколько в данной табличной части строк с уникальной комбинацией значений соответствующих реквизитов. Если в соответствиях с измерениями последовательности были указаны реквизиты разных табличных частей, то документ будет зарегистрирован столько раз, сколько уникальных комбинаций значений можно составить из соответствующих реквизитов этих табличных частей. Если все табличные части имеют во всех строках уникальные сочетания значений соответствующих реквизитов, то количество регистраций будет равно N 1* N 2. * Ni раз, где Ni количество строк соответствующей табличной части, реквизиты которой участвуют в соответствиях.
Для автоматического отслеживания изменений данных в разрезе измерений последовательности документов, нужно настроить соответствие измерений и реквизитов регистров и измерений последовательностей документов. Нужно помнить, что при создании новой последовательности документов или добавлении нового вида документа автоматическая регистрация документов в последовательности не происходит. Для регистрации документов в последовательности нужно или перезаписать документы, или написать обработку, которая будет регистрировать документы в последовательности документов.
Механизм последовательности документов использует две сущности: регистрация документа в последовательности, граница последовательности. Для каждой из этих сущностей в системе создаются таблицы данных. Регистрация используется для регистрации документа в последовательности. Обе эти таблицы доступны в языке запросов 1С:Предприятия.
Таблица регистрации имеет следующие поля: период, регистратор, измерения последовательности. В таблице регистрации документов хранятся записи уникальные по измерениям в пределах одного регистратора. То есть для определенной комбинации значений измерений по одному регистратору, хранится только одна запись, но может храниться множество записей с одним и тем же набором значений реквизитов для различных регистраторов. Работа с данными этой таблицы происходит через набор записей регистрации документа в последовательности документа. У объекта документа есть коллекция наборов записей регистрации в последовательностях документов. Наборы записей из этой коллекции используются для регистрации документа в последовательностях при записи документа. Важно помнить, что при отмене проведения, отмена регистрации в последовательностях документов не происходит. Но не проведенный документ не участвует в восстановлении последовательности. В остальном, работа с набором записей регистрации документа в последовательности точно такой же, как и с набором записей любого регистра.
Граница последовательности показывает момент времени (границу), по которую документы проводились в правильной последовательности. Структура таблицы границ аналогична структуре таблицы регистрации, но содержание и смысл ее отличается. В отличие от таблицы регистрации, в таблице границ может содержаться только уникальные по набору значений измерений записи. То есть для определенной комбинации значений измерений, хранится только одна запись. Период и регистратор задают момент времени границы по данным измерениям. Изменять содержимое таблицы границ последовательности можно только через объект менеджер последовательности документов.
Процесс записи документа
Начало транзакции
Автоматическое заполнение наборов записей регистрации документа в последовательности
Вызов предопределенной процедуры ПередЗаписью()
Запись документа
Вызов предопределенной процедуры ПриЗаписи()
Запись измененных и не записанных наборов записей движений документа
Проверка и перенос границ последовательностей на момент времени движений (данное действие производится в наборе записей, не в документе!)
Запись измененных и не записанных наборов записей регистрации документа в последовательностях
Конец транзакции
Процесс записи документа с проведением
Начало транзакции
Автоматическое заполнение наборов записей регистрации документа в последовательности
Вызов предопределенной процедуры ПередЗаписью()
Запись документа
Вызов предопределенной процедуры ПриЗаписи()
Вызов предопределенной процедуры ОбработкаПроведения()
Запись измененных и не записанных наборов записей движений документа
Проверка и перенос границ последовательностей на момент времени движений (данное действие производится в наборе записей, не в документе!)
Запись измененных и не записанных наборов записей регистрации документа в последовательностях
Проверка и перенос границы последовательности на момент времени регистрации документа
Конец транзакции
Процесс записи документа с отменой проведения
Начало транзакции
Автоматическое заполнение наборов записей регистрации документа в последовательности
Вызов предопределенной процедуры ПередЗаписью()
Вызов предопределенной процедуры ОбработкаУдаленияПроведения()
Удаление движений документа
Проверка и перенос границ последовательностей на момент времени движений (данное действие производится в наборе записей, не в документе!)
Запись документа
Вызов предопределенной процедуры ПриЗаписи()
Запись измененных и не записанных наборов записей регистрации документа в последовательностях
Конец транзакции
Разработчику доступны методы по установке границы на произвольный момент времени. Кроме установки границы последовательности на произвольный момент, разработчик может получить текущую границу последовательности, проверить, что по заданный момент времени последовательность не нарушена, принадлежит ли данный документ последовательности или нет, восстановить последовательность.
Последовательность
Последовательности — это прикладные объекты конфигурации. Они предназначены для обеспечения контроля правильности изменений, внесенных документами в учетные данные. Кроме этого последовательности, в случае необходимости, позволяют восстанавливать правильную картину изменений.
Алгоритм проведения документа, как правило, отражает в учете данные, содержащиеся в самом документе. Однако в некоторых случаях алгоритм проведения документа анализирует также и текущие итоги, используя их при проведении. Например, если документ списывает товары или материалы по средней себестоимости, то для определения суммы списания алгоритм проведения будет анализировать остатки товаров в количественном и суммовом выражении на момент списания.
Допустим, приходной накладной было оприходовано 10 единиц товара по 26 рублей. Тогда остаток товара на предприятии в суммовом выражении будет равен 260 рублей. После этого весь товар был отправлен клиенту. При проведении расходной накладной были проанализированы остатки этого товара и рассчитано, что средняя себестоимость единицы товара равна 26 рублям. В результате этих действий остаток товара на предприятии как в суммовом, так и в количественном выражении равен нулю:
Через несколько дней после этого была обнаружена ошибка в приходной накладной: оказывается, себестоимость единицы товара равна не 26, а 20 рублям. В приходную накладную были внесены соответствующие изменения, и она была заново проведена. В результате оказалось, что данные в системе учета не верны, поскольку все последующие документы по-прежнему вносят изменения, исходя из старой себестоимости товара, и «не знают» о том, что она изменилась:
Для того чтобы не возникало такой ситуации, эти два документа можно объединить в одну последовательность. Тогда, в случае изменения приходной накладной, система автоматически определит, что последовательность документов нарушена и сможет перепровести все последующие документы, которые могут зависеть от результатов проведения приходной накладной. Другими словами, расходная накладная будет проведена заново и, при анализе остатков товара, будет получена новая себестоимость (20 рублей) по которой и будет списан товар.
Приведенный пример является довольно простым, однако в реальных прикладных решениях взаимное влияние одних документов на другие может быть очень сложным. Поэтому система позволяет создавать в одном прикладном решении произвольное количество последовательностей документов:
Последовательность позволяет описать документы, которые будут относиться к данной последовательности, а также перечень учетных механизмов прикладного решения, изменение которых должно приводить к перепроведению документов данной последовательности:
Механизм последовательностей допускает более тонкую настройку, если требуется, чтобы последовательность учитывала не все, а вполне определенные ситуации. В этом случае для последовательности можно указать измерения, и перепроводиться будут только те документы, которые внесли изменения в учетные механизмы по данным значениям измерений.
Последовательность документов в 1С 8.3
Последовательность в 1С Предприятие 8.3 является объектом метаданных, нужных для контроля за хронологией документов. Это необходимо при составлении учетов о списании товаров, расчетах с контрагентами. К примеру, если сделать проведение документа задним числом, программа неправильно определит стоимость списанных материалов, что объясняется неверно проанализированной датой, связанной с документом списания.
Внеся небольшие коррективы в документы оприходования, можно столкнуться с искажением информации. Неправильная хронология проведения документов в программе приведет к неверным расчетам, например, с теми же контрагентами. Система должна правильно функционировать, чтобы проблемы такого типа не помешали пользователю. 1С имеет широкий функционал, чтобы справляться с последовательностями документов.
Открыв 1С в режиме Конфигуратора и зайдя в узел «Документы» можно увидеть строку «Последовательности».
В последовательностях описаны те документы, которые входят в нее и определяют действия, перепроводящие их в случае необходимости.
Это видно на примере «1С:Бухгалтерии предприятия 3.0».
В 1С:УТ видно регистры от которых зависит последовательность.
Здесь же можно поставить перемещения границы последовательности при проведении. Есть два варианта: «Перемещать» и «Не перемещать», от них зависит автоматическое передвижение границы.
Восстановление последовательностей
В случае закрытии месяца
В качестве примера документ был специально перепроверен. Программа нашла в нем нарушение и сразу же сообщает об этом пользователю, указывая, что перепроведение может стать решением проблемы.
Закрывая месяц, система автоматически подвергает контролю правильность последовательности документов.
Пользователь вправе выбрать, ведет ли он работу с нынешними документами или же хочет еще добавить к ним файлы предыдущих периодов. Документ, взятый в качестве примера был подвергнут изменениям в текущем периоде, так что можно смело ставить «Закрыть только Январь 2019».
Нажав на «1 документ», система откроет отчет со всеми измененными документами за конкретный период. Это помогает понять, нужно ли перепроводить или нет.
Ниже представлен отчет об изменениях
Пользователь сам решает, что ему необходимо, но настоятельно советуем проводить перепроводку для подстраховки от ошибок в расчетах данных.
Перепроведение и установка границ в разделе «Все функции»
Используем «Все функции» для перепроводки, если раздел не доступен, включаем его через меню «Сервис-Параметры».
Граница восстанавливается на одноименной закладке и с помощью одноименной команды. Это используется для восстановления хронологии, перепроведение здесь не нужно.
Поставим границу на 01.01.0001. Так как в конфигураторе стоит «Не перемещать», дата никогда не сдвинется.
Возвращаемся на закладку перепроведения. Ставим период, это осуществляется с помощью кнопки «Добавить», здесь выбираем нужные документы. Перепроводить нужно только проведенные документы, остальные же лучше просмотреть в отдельном случае.
При нажатии на кнопку «Провести», система перепроведет выбранные пользователем документы и установит их в нужной временной последовательности.
Имеется функция «Группового перепроведения документов», она находится в узле «Обработки».
В таком виде обработки указывается только период проведения.
При нажатии на кнопку «Выполнить» будут проведены документы только за выбранный пользователем период.
Как видно, вариантов есть несколько, но самый удобный все-таки первый, в особенности для закрытия месяца.
Пользователь должен обращать внимания на сообщения системы о нарушении хронологии, чтобы позднее не выяснить, что документы расположены в неправильном порядке и искажают информацию, указанную в хозяйственной деятельности компании.
С какими регистрами может быть использован объект последовательность
1. Регистры накопления
2. Регистры бухгалтерии
3. Регистры расчета
4. Регистры сведений
5. С любыми регистрами
12.77 Каким образом изменится состав списка последовательности «СебестоимостьПродаж» и ее границы при проведении документа «Приходная накладная 00002 от 13.02.2002 12:00:00»? Измерения в последовательности не используются, таблица последовательности приведена полностью
1. Ни состав списка последовательности, ни значение границы не изменятся
2. Документ зарегистрируется и в списке последовательности, и в качестве границы последовательности
3. Документ зарегистрируется в списке последовательности, но не повлияет на границу последовательности
4. Состав списка последовательности не изменится, а граница последовательности установится на документ «Приходная накладная 00002 от 13.02.2002 12:00:00»
12.78 Каким образом изменится состав списка последовательности «СебестоимостьПродаж» и ее границы при проведении документа «Расходная накладная 00015 от 21.01.2002 12:00:00»? Измерения в последовательности не используются, таблица последовательности приведена полностью
1. Документ зарегистрируется и в списке последовательности, и в качестве ее границы
2. Ни состав списка последовательности, ни значение границы не изменятся
3. Документ зарегистрируется в списке последовательности, но не повлияет на границу последовательности
4. Состав списка последовательности не изменится, а граница последовательности установится на документ «Расходная накладная 00015 от 21.01.2002 12:00:00»
12.79 Каким образом изменится состав списка последовательности «СебестоимостьПродаж» и ее границы при проведении документа «РасходнаяНакладная 00001 от 11.01.2002 12:00:00»? Измерения в последовательности не используются, таблица последовательности приведена полностью
1. Состав списка последовательности не изменится, но документ зарегистрируется в качестве границы последовательности
2. В списке последовательности появится еще одна запись с регистратором «Расходная накладная 00001 от 11.01.2002 12:00:00», а также документ зарегистрируется в качестве границы последовательности
3. Ни состав списка последовательности, ни значение границы не изменятся
4. В списке последовательности появится еще одна запись с регистратором «Расходная накладная 00001 от 11.01.2002 12:00:00», но документ не повлияет на границу последовательности
12.80 Каким образом изменится состав списка последовательности «СебестоимостьПродаж»и ее границы при проведении документа «Расходная накладная 00003 от 16.01.2002 12:00:01»?Измерения в последовательности не используются, таблица последовательности приведена полностью
1. Ни состав списка последовательности, ни значение границы не изменятся
2. Состав списка последовательности не изменится, но документ зарегистрируется в качестве границы последовательности
3. В списке последовательности появится еще одна запись с регистратором «Расходная накладная 00003 от 16.01.2002 12:00:00, а также документ зарегистрируется в качестве границы последовательности
4. В списке последовательности появится еще одна запись с регистратором «Расходная накладная 00003 от 16.01.2002 12:00:01», но документ не повлияет на границу последовательности
При работе в режиме 1С:Предприятие для каждой введенной в конфигурации последовательности документов система будет автоматически поддерживать границу последовательности. В качестве границы последовательности будет выступать позиция документа. При последовательном проведении документов, входящих в данную последовательность, граница последовательности будет устанавливаться на каждый вновь проведенный документ. Однако если будет проводиться документ, относящийся к данной последовательности, но расположенный позже другого проведенного документа, относящегося к той же последовательности и находящегося после текущей границы последовательности, то граница последовательности сдвигаться не будет, так как нарушается последовательность проведения документов.
Любое изменение в движениях по регистру, на котором ведется стоимостный учет товаров, записанное раньше границы последовательности, будет отодвигать границу последовательности назад, на момент этого документа. После этого проводимые документы, находящиеся позже границы последовательности, уже не будут двигать ее вперед, если между границей последовательности и проводимым документом окажутся проведенные документы из этой последовательности.
Последовательность документов в 1С 8.3
Настройка последовательности
Последовательность документов используется для построения единой хронологической цепочки документов и для осуществления контроля последовательного проведения документов в этой цепочке.
Например, в информационной базе используются 2 вида документов: приход товара и расход товара. При расходе товара сразу рассчитывается себестоимость проданного товара. 1 марта поступило 2 штуки товара по цене 100 рублей. Итоговая себестоимость 200 рублей. 5 марта была продана 1 штука. Себестоимость списания = 100 рублей (200 / 2). Но затем 2 марта ввели еще один приход товара на 1 штуку по цене 250 рублей. Себестоимость одной штуки стала равна 150 рублей ((200 + 250) / 3). Для исправления списания себестоимости нужно перепровести расход товара.
В данной ситуации помогло бы использование последовательности. Последовательность хранит список всех входящих в нее документов и границу, до которой документы проведены в хронологической последовательности. Как только проводится какой-то документ до границы, граница перемещается на этот момент времени. В дальнейшей с помощью последовательности можно автоматически перепровести все документы, идущие после границы.
В списке Входящие документы нужно указать те документы, которые будут перепроводиться при нарушении границы последовательности. Тут важно отметить, что сюда должны входить только те документы, которые при формировании движений используют данные регистров. Для примера, который был рассмотрен выше, нужно включить в последовательность только документ Расход товара. Нет смысла включать в последовательность Приход товара, так как он для формирования движений используется только данные самого документа.
В списке Движения, влияющие на последовательность нужно указать те регистры, изменение которых нужно отслеживать.
Измерения последовательности
На закладке Данные в последовательность можно добавить измерения:
Измерения позволяют разбить одну последовательность на несколько. В свойствах измерения нужно настроить соответствие реквизитам документов и реквизитам движений:
Если для соответствия выбран реквизит табличной части документа, то будет сформировано столько записей последовательности сколько получится уникальных комбинаций.
Регистрация в последовательности
В свойствах документа на закладке Последовательности можно настроить Заполнение последовательностей. Данное свойство может принимать два значения: Заполнять автоматически и Не заполнять автоматически:
Если выбрано значение Заполнять автоматически, то при записи документа он будет автоматически добавлен в таблицу регистрации последовательности. Таблица регистрации содержит колонки: период, регистратор и по одной колонке для каждого измерения. В одной строке содержатся сведения об одном документе:
Период | Регистратор | Склад |
---|---|---|
21.03.2021 16:57:23 | Расход товара 1 от 21.03.2021 | Основной |
23.03.2021 21:14:17 | Расход товара 2 от 23.03.2021 | Основной |
Таблицу регистрации можно использовать для восстановления последовательности.
Если выбрано значение Не заполнять автоматически, то таблица регистрации не будет заполняться автоматически. Для регистрации документа в последовательности можно программно в обработчике ПередЗаписью документа заполнить набор записей последовательности. Для обращения к последовательностям, в которые входит документ, используется свойство ПринадлежностьПоследовательностям:
В случае автоматического заполнения можно очищать набор записей последовательности, тогда документ не будет регистрироваться:
Новую запись в последовательность можно добавить не только из модуля объекта документа. Но тогда нужно установить отбор по регистратору:
Через набор записей можно удалить регистрацию любого документа в последовательности:
С помощью метода Принадлежит можно узнать зарегистрирован ли документ в последовательности:
Граница последовательности
Граница последовательности — это момент времени, до которого считается что документы проведены в хронологической последовательности, а после возможно нет.
Для хранения границы последовательности используется еще одна таблица. Состав колонок такой же как у таблицы регистрации: период, регистратор и по одной колонке для каждого измерения. Для каждого набора измерений хранится своя граница:
Период | Регистратор | Склад |
---|---|---|
23.03.2021 21:14:17 | Расход товара 2 от 23.03.2021 | Основной |
24.03.2021 12:00:0 | Расход товара 4 от 24.03.2021 | Розничный |
В настройках последовательности, на закладке Использование можно указать нужно ли автоматически перемещать границу последовательности при проведении:
Если свойство Перемещение границы при проведении = Перемещать, то при проведении документа будет выполнен следующий алгоритм действий:
Если свойство Перемещение границы при проведении = Не перемещать, то никаких дополнительных действий с последовательностью не будет выполнено.
Перемещение границы последовательности назад (сбивание последовательности) не зависит от данного свойства и всегда выполняется при записи набора записей регистров, которые перечислены в списке движений, влияющих на последовательность. Если момент записи регистра меньше текущей границы последовательности, то граница будет перемещена на момент записи регистра.
С помощью метода УстановитьГраницу можно изменить границу последовательности программно:
Получить границу можно с помощью метода ПолучитьГраницу. Данный метод вернет самую раннюю границу из таблицы границ. С помощью метода ПолучитьГраницы можно получить таблицу значений с границами по всем измерениям. В таблице будет по одной колонки для каждого измерения и колонка Граница:
С помощью метода Проверить можно узнать не нарушена ли последовательность на определенный момент времени:
Восстановление последовательности
Для автоматического восстановления последовательности предназначена специальная обработка Проведение документов.
Чтобы открыть данную обработку нужно:
С помощью метода Восстановить можно восстановить последовательность программно: