Почему при закрытии месяца 1С:Бухгалтерия требует закрыть период с даты ввода остатков или свертки базы?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Каждый практикующий специалист по 1С или бухгалтер рано или поздно сталкивается с ситуацией, когда после проведения свертки информационной базы или переноса остатков из другой конфигурации, обработка «Закрытие месяца» начинает настойчиво требовать перепроведения документов или выполнения регламентных операций за давно прошедшие периоды. Например, база была свернута на 31 декабря 2017 года, реальный учет ведется с января 2018 года, но система при каждом удобном случае предлагает начать закрытие именно с декабря 2017 года.

В этой статье мы подробно разберем внутренние механизмы платформы 1С:Предприятие 8.3 и конфигурации «Бухгалтерия предприятия 3.0», выясним причины такого поведения системы и пошагово решим эту проблему без внесения изменений в типовой код конфигурации.

Механика работы помощника «Закрытие месяца»

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

При открытии формы закрытия месяца программа выполняет комплексный анализ базы данных по следующим направлениям:

  1. Анализ последовательности документов: Система проверяет, есть ли документы, проведенные «задним числом», нарушающие хронологию проведения.
  2. Анализ проводок в регистре бухгалтерии «Хозрасчетный»: Программа отправляет запрос к регистру бухгалтерии и проверяет наличие записей (движений) за каждый календарный месяц.
  3. Проверка наличия регламентных документов: Если за определенный месяц в регистре Хозрасчетный обнаружены проводки, система проверяет наличие проведенных документов РегламентнаяОперация за этот же месяц. Если проводок много, а регламентных операций нет — этот месяц помечается программой как «требующий закрытия».

Именно из-за второго и третьего пунктов возникает коллизия. Документы ввода остатков (например, ВводОстатков или ручные операции), созданные в процессе свертки базы, записываются датой 31.12.2017. Они делают проводки по дебету и кредиту счетов в корреспонденции со вспомогательным счетом 000. Система видит эти движения в регистре Хозрасчетный за декабрь 2017 года, не находит там закрывающих регламентных документов за этот же месяц и делает ложный вывод о том, что декабрь 2017 года — это полноценный рабочий месяц, который необходимо закрыть.

Шаг 1. Исключаем нарушение последовательности документов

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

Рассмотрим первый вариант запроса, который позволяет быстро выявить документы, имеющие статус отличный от «Проведен в последовательности»:


ВЫБРАТЬ
    ДокументыОрганизаций.Регистратор КАК Регистратор,
    ДокументыОрганизаций.Период КАК Период,
    ДокументыОрганизаций.Организация КАК Организация,
    ДокументыОрганизаций.СостояниеПроведения КАК СостояниеПроведения
ИЗ
    Последовательность.ДокументыОрганизаций КАК ДокументыОрганизаций
ГДЕ
    ДокументыОрганизаций.СостояниеПроведения <> &СостояниеПроведения
    И ДокументыОрганизаций.Организация = &Организация

В качестве параметра &СостояниеПроведения необходимо передать значение перечисления Перечисление.СостоянияПроведенияВПоследовательности.ПроведенВПоследовательности.

Для более детального анализа, позволяющего выявить документы, которые были явно исключены из последовательности или проведены с нарушениями, мы можем применить следующий оптимизированный запрос:


ВЫБРАТЬ
    ТаблицаПоследовательности.Период КАК Период,
    ТаблицаПоследовательности.Регистратор КАК Регистратор,
    ТаблицаПоследовательности.СостояниеПроведения КАК СостояниеПроведения
ИЗ
    Последовательность.ДокументыОрганизаций КАК ТаблицаПоследовательности
ГДЕ
    ТаблицаПоследовательности.Организация В(&Организация)
    И ТаблицаПоследовательности.СостояниеПроведения В (
        ЗНАЧЕНИЕ(Перечисление.СостоянияПроведенияВПоследовательности.ПроведенСНарушениемПоследовательности),
        ЗНАЧЕНИЕ(Перечисление.СостоянияПроведенияВПоследовательности.ИсключенИзПоследовательности)
    )
УПОРЯДОЧИТЬ ПО
    ТаблицаПоследовательности.МоментВремени

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

Шаг 2. Корректировка регистра сведений «Даты ввода начальных остатков»

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

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

Выполним следующие действия по шагам:

  1. Перейдем в главное меню программы, выберем пункт «Функции для технического специалиста» (в старых версиях — «Все функции»). Если этот пункт меню недоступен, его необходимо включить в настройках параметров системы (Настройки — Параметры — Отображать команду "Функции для технического специалиста").
  2. В открывшемся дереве объектов найдем раздел Регистры сведений и перейдем к регистру «Даты ввода начальных остатков».
  3. Проверим наличие записи по нашей организации. Если записи нет, создадим ее.
  4. В поле «Организация» укажем нашу организацию, а в поле «Дата» установим дату ввода остатков — в нашем примере это 31.12.2017.

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

Шаг 3. Поиск и устранение «зависших» движений прошлых периодов

Иногда при проведении свертки базы данных часть документов прошлых лет (до даты свертки) помечается на удаление, но физически не может быть удалена из-за ссылочной целостности. Например, старый договор или документ расчетов с контрагентом указан в качестве субконто в новых документах ввода остатков по счетам 60, 62 или 76.

Если у такого помеченного на удаление документа прошлых лет «зависли» движения в регистре Хозрасчетный, то система обнаружит проводки за условный 2016 или 2017 год и потребует закрывать базу с тех периодов.

Для устранения этой проблемы рекомендуется выполнить следующие действия:

  1. Запустить базу данных в режиме Конфигуратора.
  2. Открыть меню Администрирование — Тестирование и исправление...
  3. Установить флаги напротив пунктов «Проверка логической целостности» и «Проверка ссылочной целостности».
  4. В распределении «При наличии ссылок на несуществующие объекты» выбрать опцию «Очищать ссылки», а в распределении «При частичной потере данных объектов» — «Удалять объекты».
  5. Запустить процесс тестирования. После завершения процедуры все «битые» и некорректно записанные движения старых документов будут принудительно очищены.

Шаг 4. Проверка времени документов ввода остатков

Документы ввода остатков должны располагаться строго в самом конце периода ввода. Общепринятым стандартом является время 23:59:59 даты ввода остатков (в нашем случае — 31.12.2017 23:59:59).

Выясним причину, почему это важно. Если документ ВводОстатков или заменяющая его ручная операция записаны, к примеру, внутри дня (например, в 12:00:00) или, что еще хуже, датой 01.01.2018, то алгоритмы закрытия месяца могут отработать некорректно. Изменение времени документов ввода остатков на 23:59:59 позволяет четко разграничить входящий баланс и последующие обороты нового периода.

Шаг 5. Принудительное управление границей последовательности

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

В современных релизах 1С:Бухгалтерии 3.0 предусмотрена возможность принудительной остановки проверок перепроведения за прошлые периоды:

  1. Откроем обработку «Закрытие месяца» и перейдем в период, который программа считает незакрытым (декабрь 2017).
  2. Обратим внимание на синюю гиперссылку «Перепроведение документов» в верхней части формы.
  3. Нажмем на эту ссылку и в контекстном меню выберем пункт «Перепроведение не требуется» (или «Пропустить операцию» для всех регламентных операций этого месяца).
  4. После этого система зафиксирует актуальность последовательности на конец этого периода, и при переходе к текущим месяцам (например, к текущему месяцу закрытия текущего года) программа больше не будет обращаться к декабрю 2017 года.

Для полной безопасности и исключения случайного изменения исторических данных пользователями обязательно установите Дату запрета изменения данных на дату свертки базы (31.12.2017). Это защитит регистр бухгалтерии и таблицы последовательностей от случайного перепроведения старых документов ввода остатков в будущем.

← На главную