Каждый практикующий специалист по 1С или бухгалтер рано или поздно сталкивается с ситуацией, когда после проведения свертки информационной базы или переноса остатков из другой конфигурации, обработка «Закрытие месяца» начинает настойчиво требовать перепроведения документов или выполнения регламентных операций за давно прошедшие периоды. Например, база была свернута на 31 декабря 2017 года, реальный учет ведется с января 2018 года, но система при каждом удобном случае предлагает начать закрытие именно с декабря 2017 года.
В этой статье мы подробно разберем внутренние механизмы платформы 1С:Предприятие 8.3 и конфигурации «Бухгалтерия предприятия 3.0», выясним причины такого поведения системы и пошагово решим эту проблему без внесения изменений в типовой код конфигурации.
Для того чтобы понять, почему программа «ругается» на документы ввода остатков, нам необходимо проанализировать логику работы самой обработки. Большинство пользователей считает, что помощник закрытия месяца ориентируется исключительно на границы таблиц последовательностей (в нашем случае это объект метаданных Последовательность.ДокументыОрганизаций). Однако алгоритм проверки гораздо сложнее.
При открытии формы закрытия месяца программа выполняет комплексный анализ базы данных по следующим направлениям:
Хозрасчетный обнаружены проводки, система проверяет наличие проведенных документов РегламентнаяОперация за этот же месяц. Если проводок много, а регламентных операций нет — этот месяц помечается программой как «требующий закрытия».Именно из-за второго и третьего пунктов возникает коллизия. Документы ввода остатков (например, ВводОстатков или ручные операции), созданные в процессе свертки базы, записываются датой 31.12.2017. Они делают проводки по дебету и кредиту счетов в корреспонденции со вспомогательным счетом 000. Система видит эти движения в регистре Хозрасчетный за декабрь 2017 года, не находит там закрывающих регламентных документов за этот же месяц и делает ложный вывод о том, что декабрь 2017 года — это полноценный рабочий месяц, который необходимо закрыть.
Прежде чем переходить к более глубоким настройкам, мы должны убедиться, что в информационной базе действительно нет документов, нарушающих последовательность. Сделать это стандартными средствами интерфейса не всегда удается, поэтому лучшим решением будет написание небольшого запроса в консоли запросов.
Рассмотрим первый вариант запроса, который позволяет быстро выявить документы, имеющие статус отличный от «Проведен в последовательности»:
ВЫБРАТЬ
ДокументыОрганизаций.Регистратор КАК Регистратор,
ДокументыОрганизаций.Период КАК Период,
ДокументыОрганизаций.Организация КАК Организация,
ДокументыОрганизаций.СостояниеПроведения КАК СостояниеПроведения
ИЗ
Последовательность.ДокументыОрганизаций КАК ДокументыОрганизаций
ГДЕ
ДокументыОрганизаций.СостояниеПроведения <> &СостояниеПроведения
И ДокументыОрганизаций.Организация = &Организация
В качестве параметра &СостояниеПроведения необходимо передать значение перечисления Перечисление.СостоянияПроведенияВПоследовательности.ПроведенВПоследовательности.
Для более детального анализа, позволяющего выявить документы, которые были явно исключены из последовательности или проведены с нарушениями, мы можем применить следующий оптимизированный запрос:
ВЫБРАТЬ
ТаблицаПоследовательности.Период КАК Период,
ТаблицаПоследовательности.Регистратор КАК Регистратор,
ТаблицаПоследовательности.СостояниеПроведения КАК СостояниеПроведения
ИЗ
Последовательность.ДокументыОрганизаций КАК ТаблицаПоследовательности
ГДЕ
ТаблицаПоследовательности.Организация В(&Организация)
И ТаблицаПоследовательности.СостояниеПроведения В (
ЗНАЧЕНИЕ(Перечисление.СостоянияПроведенияВПоследовательности.ПроведенСНарушениемПоследовательности),
ЗНАЧЕНИЕ(Перечисление.СостоянияПроведенияВПоследовательности.ИсключенИзПоследовательности)
)
УПОРЯДОЧИТЬ ПО
ТаблицаПоследовательности.МоментВремени
Если оба этих запроса возвращают пустой результат, значит, с последовательностью документов физически все в порядке. Проблема кроется исключительно в логике сопоставления остатков и хозяйственных операций.
Для того чтобы принудительно указать помощнику закрытия месяца, с какого момента начинается реальная хозяйственная деятельность организации и с какой даты нужно игнорировать проводки по вводу остатков, разработчики предусмотрели специальный технический регистр.
Проанализируем ситуацию: если в базе отсутствует запись в регистре сведений «Даты ввода начальных остатков» (или указана неверная дата), программа считает все документы от 31.12.2017 обычными документами хозяйственной деятельности.
Выполним следующие действия по шагам:
Эта запись служит для системы жестким маркером: все движения регистра бухгалтерии, сделанные этой датой и ранее, относятся к формированию начального баланса и не должны инициировать процедуру закрытия месяца.
Иногда при проведении свертки базы данных часть документов прошлых лет (до даты свертки) помечается на удаление, но физически не может быть удалена из-за ссылочной целостности. Например, старый договор или документ расчетов с контрагентом указан в качестве субконто в новых документах ввода остатков по счетам 60, 62 или 76.
Если у такого помеченного на удаление документа прошлых лет «зависли» движения в регистре Хозрасчетный, то система обнаружит проводки за условный 2016 или 2017 год и потребует закрывать базу с тех периодов.
Для устранения этой проблемы рекомендуется выполнить следующие действия:
Документы ввода остатков должны располагаться строго в самом конце периода ввода. Общепринятым стандартом является время 23:59:59 даты ввода остатков (в нашем случае — 31.12.2017 23:59:59).
Выясним причину, почему это важно. Если документ ВводОстатков или заменяющая его ручная операция записаны, к примеру, внутри дня (например, в 12:00:00) или, что еще хуже, датой 01.01.2018, то алгоритмы закрытия месяца могут отработать некорректно. Изменение времени документов ввода остатков на 23:59:59 позволяет четко разграничить входящий баланс и последующие обороты нового периода.
Если все предыдущие шаги выполнены, но в форме закрытия месяца все еще висит навязчивое предложение вернуться в декабрь 2017 года, мы можем применить интерактивный метод обхода данной проверки.
В современных релизах 1С:Бухгалтерии 3.0 предусмотрена возможность принудительной остановки проверок перепроведения за прошлые периоды:
Для полной безопасности и исключения случайного изменения исторических данных пользователями обязательно установите Дату запрета изменения данных на дату свертки базы (31.12.2017). Это защитит регистр бухгалтерии и таблицы последовательностей от случайного перепроведения старых документов ввода остатков в будущем.