Процедура закрытия месяца в 1С:Бухгалтерия 3.0 является одной из самых ресурсоемких операций, особенно когда требуется восстановить учет за длительный период (год и более). В такой ситуации перед специалистом встает выбор: в каком режиме базы работа пойдет быстрее, и можно ли «обмануть» систему, чтобы не перепроводить тысячи документов за прошлые годы. Рассмотрим эти вопросы подробно, опираясь на технические особенности платформы 1С:Предприятие 8.3.
Проанализируем ситуацию с выбором архитектуры базы данных. Если перед нами стоит задача закрыть МНОГО месяцев (например, при исправлении ввода остатков за 2015 год), серверный вариант (клиент-сервер) будет предпочтительнее по нескольким причинам:
Simple. Это существенно ускорит запись данных, так как файл лога транзакций (.ldf) не будет раздуваться до гигантских размеров.Однако стоит учитывать производительность оборудования. Если используется старый процессор, такой как Xeon E5652, критически важным фактором становится частота одного ядра. Поскольку 1С во многих операциях остается однопоточной, низкая частота старых процессоров может нивелировать преимущества сервера. В этом случае рекомендуем настроить протокол Shared Memory, если сервер 1С и SQL-сервер находятся на одной физической машине.
Многие пользователи ошибочно полагают, что нужно кликать на каждый месяц по отдельности. Выясним, как автоматизировать этот процесс встроенными средствами:
Рассмотрим стандартную обработку «Закрытие месяца». Если вы выберете, например, декабрь текущего года, система автоматически проанализирует состояние предыдущих периодов. Если за прошлые месяцы есть невыполненные операции или перепроведенные документы, программа сама предложит выполнить закрытие, начиная с самого первого «неактуального» месяца. Достаточно запустить процесс один раз, и система будет «шуршать» последовательно до выбранной даты.
Разберем ситуацию, когда в старом периоде (например, 5 лет назад) был изменен один документ, который не влияет на текущие остатки существенно, но «сбросил» актуальность всех последующих месяцев. Чтобы не перепроводить тысячи документов за 5 лет, можно применить следующие технические приемы:
1. Ручное перемещение границы актуальности.
В помощнике закрытия месяца при попытке выполнить операцию система может выдать запрос. В этом диалоговом окне часто доступна возможность «Перескочить» или «Признать все операции актуальными». Это позволяет передвинуть границу в конец нужного периода без фактического выполнения расчетов.
2. Очистка технических регистров.
Проанализируем работу механизмов контроля актуальности. За то, что месяц считается «незакрытым», отвечают скрытые регистры сведений. Если вы уверены в качестве данных, можно программно или через групповое изменение реквизитов почистить следующие объекты:
НеактуальныеРегламентныеОперации;ЗаданияКРасчетуАмортизации, ЗаданияКРасчетуСебестоимости).После удаления записей из этих регистров за прошлые периоды, система перестанет считать их требующими перезакрытия. Рассмотрим пример кода для программной очистки (использовать с осторожностью!):
НаборЗаписей = РегистрыСведений.ЗаданияКРасчетуСебестоимости.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Организация.Установить(Объект.Организация);
НаборЗаписей.Отбор.Период.Использовать = Истина;
НаборЗаписей.Отбор.Период.ЗначениеС = '20150101';
НаборЗаписей.Отбор.Период.ЗначениеПо = '20201231';
НаборЗаписей.Записать();
Иногда при попытке изменить документ в глубоком прошлом (например, «Ввод остатков») возникает ошибка записи или нарушение итогов. Рассмотрим по шагам, как привести базу в порядок:
Операция (бухгалтерский и налоговый учет) текущей датой или концом прошлого года, чтобы отсторнировать ненужные суммы. Это безопаснее, чем «разваливать» закрытые периоды пятилетней давности.Перед началом массовых манипуляций с закрытием месяцев, обязательно выполните следующие действия:
Во-первых, создайте полную резервную копию базы. Массовое перепроведение — процесс необратимый, и если в середине процесса выяснится, что «поплыло» сальдо по 09 или 77 счету, восстановить данные без бэкапа будет невозможно.
Во-вторых, на время выполнения массовых операций отключите индексацию полнотекстового поиска. Это освободит ресурсы дисковой подсистемы и процессора. Также стоит временно отключить все регламентные задания, которые не относятся к закрытию месяца, чтобы они не конкурировали за ресурсы сервера.
В-третьих, если база файловая, выполняйте процедуру локально на сервере, а не по сети через shared folder. Это ускорит процесс в несколько раз за счет минимизации задержек сети (latency).
Подводя итог: для массового закрытия лучше использовать серверный режим, а для экономии времени — механизмы ручной корректировки границ актуальности в регистрах сведений 1С.