Как правильно свернуть базу 1С:ERP и почему стандартный механизм может быть опасен?

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

Рано или поздно перед каждым администратором и архитектором систем на базе 1С:ERP Управление предприятием встает вопрос оптимизации производительности и уменьшения объема базы данных. Ежедневный ввод сотен документов, накопление исторических данных за несколько лет, расширение номенклатуры — все это приводит к раздуванию таблиц СУБД, падению скорости проведения документов и формированию отчетов в разы дольше обычного.

Естественным желанием руководства и ИТ-отдела становится проведение свертки базы данных. Например, завершить текущий финансовый год, отрезать всю историю прошлых лет и начать вести учет «с чистого листа» в новой, легкой и быстрой базе, перенеся туда только актуальные остатки. Однако на практике классическая свертка для системы класса ERP превращается в сложнейший технологический квест. В этой статье мы подробно разберем, почему стандартная свертка «на месте» часто не работает, какие подводные камни вас ожидают и как правильно реализовать перенос остатков.

Встроенный инструмент свертки 1С:ERP: ожидания и реальность

Начиная с версии 1С:ERP 2.4.6, фирма «1С» добавила в конфигурацию встроенный помощник «Свертка информационной базы» (его можно найти в разделе НСИ и администрирование — Сервис). Этот инструмент предназначен для автоматического создания документов ввода остатков и удаления неиспользуемых документов за прошлые периоды.

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

Главные подводные камни свертки 1С:ERP

Давайте проанализируем основные архитектурные сложности 1С:ERP, которые делают классическую свертку чрезвычайно рискованной процедурой:

  1. Разбежка оперативного и регламентированного учета. ERP-система опирается на сложнейшую структуру оперативных регистров накопления. Проводки в регистре бухгалтерии строятся уже на основании этих данных. Если в оперативном контуре до свертки существовали скрытые ошибки (например, «зависшие» копейки по взаиморасчетам, отрицательные остатки по складам в разрезе аналитик, нераспределенные авансы), то после свертки Оборотно-сальдовая ведомость (ОСВ) в новой базе разойдется со старой базой.
  2. Сложности с незавершенным производством (НЗП). Учет производственных затрат в 1С:ERP — одна из самых чувствительных зон. Свертка крайне плохо справляется с остатками материалов, находящихся в цеховых кладовых, полуфабрикатами на этапах производства, а также с нераспределенными постатейными расходами.
  3. Цепочки документов по НДС. Учет НДС в системе жестко завязан на исторические последовательности документов. При «обрезании» базы по определенную дату стираются документы-основания (например, документы поступления или реализации). Это лишает систему возможности корректно восстанавливать НДС, делать распределение НДС по видам деятельности и формировать книгу покупок/продаж в последующих периодах.
  4. Расчет среднего заработка (блок ЗУП). Если вы используете встроенный расчет зарплаты и кадров, помните, что для расчета отпусков и больничных программе требуются исторические данные о начислениях сотрудников за последние 12-24 месяца. Свертка этих данных приведет к тому, что средний заработок придется вносить вручную.

Правильный подход: Перенос остатков в новую чистую базу

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

Рассмотрим по шагам, как правильно организовать этот процесс:

Шаг 1. Подготовка исходной базы данных

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

Шаг 2. Создание новой информационной базы и перенос НСИ

Создайте абсолютно чистую базу той же версии конфигурации. Перенесите в нее только нормативно-справочную информацию (НСИ) — справочники контрагентов, номенклатуры, договоров, физических лиц и т.д. Для этого рекомендуется использовать стандартный универсальный формат обмена EnterpriseData или специализированные правила переноса. На этом этапе очень полезно провести аудит справочников: избавиться от дублей и пометить на удаление то, что давно не используется.

Шаг 3. Формирование и выгрузка документов ввода остатков

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


// Пример запроса для проверки остатков товаров на складах перед переносом
Процедура ПроверитьОстаткиТоваровНаСкладах(ДатаСвертки) Export
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	ТоварыНаСкладахОстатки.Склад КАК Склад,
        |	ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        |	ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
        |	ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Количество
        |ИЗ
        |	РегистрНакопления.ТоварыНаСкладах.Остатки(&ПериодСвертки, ) КАК ТоварыНаСкладахОстатки
        |ГДЕ
        |	ТоварыНаСкладахОстатки.ВНаличииОстаток < 0";
        
    Запрос.УстановитьПараметр("ПериодСвертки", Новый Граница(ДатаСвертки, ВидГраницы.Включая));
    
    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Пока Выборка.Следующий() Цикл
            ЗаписьЖурналаРегистрации("СверткаБазы.ОтрицательныеОстатки",
                УровеньЖурналаРегистрации.Предупреждение,
                ,
                ,
                "Обнаружен отрицательный остаток: Номенклатура " + Выборка.Номенклатура + ", Склад: " + Выборка.Склад + " в количестве: " + Выборка.Количество);
        КонецЦикла;
    Иначе
        Сообщить("Отрицательных остатков по складу не обнаружено. База готова к выгрузке.");
    EndIf;
КонецПроцедуры

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

Шаг 4. Сверка данных

После проведения документов ВводНачальныхОстатков в новой базе необходимо выполнить тотальную выверку. Сравните отчеты в старой и новой базах на дату свертки:

Шаг 5. Архивация исторической базы

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

Подводя итог, можно сказать: «свертка» 1С:ERP — это проект внедрения в миниатюре. Подходите к этой задаче системно, избегайте поспешных решений с типовой сверткой «в лоб» на живой базе, всегда делайте резервные копии и отдавайте предпочтение методу переноса остатков в новую чистую базу.

← На главную