С течением времени любая информационная база 1С:Управление нашей фирмой (УНФ) неизбежно увеличивается в объеме. Это приводит к замедлению формирования отчетов, росту времени на создание резервных копий и общую деградацию производительности системы. Оптимальным решением в такой ситуации является свертка информационной базы — процедура удаления неактуальных документов за прошлые периоды с сохранением актуальных остатков на определенную дату (дату свертки).
В этой статье мы подробно разберем, как подготовиться к свертке, какие инструменты использовать и на что обратить внимание, чтобы не «сломать» учетную логику программы, особенно в части заказов и резервов.
Рассмотрим основные цели, которые мы преследуем при обрезании базы:
SQL или файловой базы ускоряет выборку данных.Прежде чем приступать к техническим действиям, проанализируем специфику 1С:УНФ. В отличие от простой торговой системы, УНФ активно использует механизм двойного измерения в регистрах накопления. Речь идет о заказах покупателей и заказах на производство.
Выясним причину, почему это важно: практически все остатки в УНФ хранятся в разрезе документов-оснований. Если на дату свертки у вас есть незакрытый ЗаказПокупателя, по которому товар уже зарезервирован, но еще не отгружен, простого переноса остатка товара на склад будет недостаточно. Программа должна «понимать», что этот товар закреплен за конкретным заказом. Если мы удалим старые заказы, но оставим остатки товаров, мы получим разрыв в регистрах Запасы и ЗаказыПокупателей, что приведет к невозможности корректного расчета себестоимости при будущей отгрузке.
Для старых версий конфигураций (таких как УНФ 1.3 на платформе 8.2) штатного встроенного помощника может не быть. В этом случае мы рекомендуем обратиться к универсальной обработке СверткаИнформационнойБазы.epf, которую можно найти на диске ИТС (Информационно-технологическое сопровождение).
Разберем по шагам алгоритм работы с этой обработкой:
Запасы, РасчетыСКонтрагентами, ДенежныеСредства) и создает документы ВводНачальныхОстатков или Операция.Важный момент: стандартная обработка часто требует доработки под специфические регистры сведений УНФ, которые не связаны напрямую с регистраторами. Проанализируем ситуацию: если в базе есть сложные графики платежей или серийные номера, проверьте, перенеслись ли они в новые документы ввода остатков.
Этот метод считается наиболее надежным, так как он гарантирует отсутствие «хвостов» в базе данных. Посмотрим, как реализовать этот процесс:
Шаг 1. Перенос справочников.
Используем обработку ВыгрузкаЗагрузкаДанныхXML.epf. Переносим основные справочники: Номенклатура, Контрагенты, Спецификации, Договоры. Это позволит сохранить внутренние идентификаторы (GUID), что важно для будущих синхронизаций.
Шаг 2. Получение остатков.
В старой базе формируем отчеты Остатки запасов, Задолженность контрагентов по срокам долга и Остатки денежных средств на дату свертки. Сохраняем эти данные в формат Excel.
Шаг 3. Загрузка остатков.
В новой, пустой базе используем стандартную обработку Загрузка данных из табличного документа. Мы создаем новые документы ВводНачальныхОстатков, сопоставляя колонки из Excel с реквизитами табличных частей документов 1С.
Пример программного формирования документа ввода остатков (условно):
НовыйДокумент = Документы.ВводНачальныхОстатков.СоздатьДокумент();
НовыйДокумент.Дата = ДатаСвертки;
НовыйДокумент.Организация = Справочники.Организации.НайтиПоНаименованию("Наша Фирма");
Для Каждого СтрокаИзExcel Из ТаблицаДанных Цикл
НоваяСтрока = НовыйДокумент.Запасы.Добавить();
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СтрокаИзExcel.Код);
НоваяСтрока.Количество = СтрокаИзExcel.Количество;
НоваяСтрока.Сумма = СтрокаИзExcel.Сумма;
КонецЦикла;
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
Если ваша база работает под управлением PostgreSQL (как указано в примере автора вопроса — версия 9.0.3), простого удаления документов недостаточно для уменьшения физического размера файла базы данных. Рассмотрим подробнее необходимые действия:
После удаления помеченных объектов база данных на уровне файловой системы все еще будет занимать прежний объем. Чтобы высвободить место, необходимо выполнить регламентные операции на сервере БД:
VACUUM FULL для очистки таблиц и возврата места операционной системе.REINDEX для пересборки индексов, которые могли фрагментироваться после массового удаления записей..dt и последующая загрузка в новую информационную базу. Этот метод автоматически выполняет «сжатие» данных.После проведения свертки крайне важно убедиться, что «цифры сошлись». Проанализируем, какие отчеты нужно сравнить в старой и новой базах:
Важное предостережение: Если вы решили оставить «незакрытые» заказы покупателей прошлых лет, их придется перенести как документы (вместе с цепочкой связанных документов) или отразить их остатки в специализированных разделах ввода остатков, иначе контроль остатков при отгрузке в новом периоде будет выдавать ошибки о нехватке зарезервированного товара.
Таким образом, свертка УНФ — это не только технический запуск обработки, но и глубокий аудит текущего состояния учета. Выбор метода (штатная обработка или перенос в новую базу) зависит от чистоты ваших данных и необходимости сохранения истории справочников.