Процесс свертки информационной базы в 1С 7.7 — это всегда сложный компромисс между желанием уменьшить размер файлов и необходимостью сохранить корректность входящих остатков. Основная проблема заключается в том, что регистры (например, Покупатели, Поставщики или Партии) часто содержат ссылки на первичные документы (так называемый КредДокумент или документ-основание). Если просто удалить эти документы, база превратится в набор «битых» ссылок, а отчеты перестанут строиться.
В данной статье мы разберем, как поступить со старыми документами при переносе остатков, чтобы база осталась работоспособной, быстрой и пригодной для аудита.
Самый простой и безопасный способ — оставить документы, на которые есть ссылки в регистрах, в самой информационной базе, но перевести их в состояние непроведенных. Рассмотрим подробнее, почему это эффективно:
Однако, если таких документов сотни тысяч, этот метод не решит проблему лимита размера файла в 2 Гб для DBF-версии. Разберем другие подходы.
Проанализируем ситуацию, когда нам не важна детализация до каждой накладной за прошлые годы. В этом случае мы можем использовать метод подмены ссылок. Вместо тысяч реальных документов мы оставляем один специальный документ-пустышку.
Как это реализовать по шагам:
ВводОстатков (или любой другой технический вид документа).КредДокумент на ссылку на этот новый документ ввода остатков.Важный нюанс: Чтобы отчеты по взаиморасчетам выглядели адекватно, рекомендуется создавать по одной «заглушке» на каждого контрагента или даже на каждый договор. Это позволит видеть общую задолженность в разрезе аналитики, не загромождая базу лишними объектами.
Выясним, почему нельзя просто занулить ссылки, если в базе ведется валютный учет. В конфигурациях «Бухгалтерия» или «Комплексная» для корректного расчета курсовых разниц программе необходима дата возникновения задолженности.
Если мы заменим все валютные накладные одним документом ввода остатков от 31 декабря, алгоритм переоценки может сработать некорректно, так как он опирается на дату документа-основания. В таких случаях необходимо сохранять оригинальные валютные документы (пусть и пустые), либо очень внимательно переносить их дату в реквизиты документа ввода остатков.
Посмотрим на пример работы с ТМЦ. Если на складе ведется учет по партиям, то информация о документе поступления является ключевой для определения себестоимости списания. При свертке «в один документ» теряется очередность партий.
Решение может быть следующим:
// Пример логики создания синтетических партий
Процедура СоздатьСинтетическуюПартию(Товар, Оresidue, ДатаПартии)
НовДок = СоздатьОбъект("Документ.ВводОстатковТМЦ");
НовДок.Новый();
НовДок.ДатаДок = ДатаПартии;
// Заполнение реквизитов...
НовДок.Записать();
// Использование этой ссылки в регистре Партии
КонецПроцедуры
Профессионалы рекомендуют создавать «синтетические» партии (например, по одной на каждый месяц прошлого года), чтобы сохранить хотя бы приблизительную хронологию списания товаров.
Разберем техническую сторону вопроса. Многие пользователи забывают, что в 1С 7.7 (DBF) удаление записей не уменьшает размер файла .DBF автоматически. Записи просто помечаются как удаленные.
Чтобы реально освободить место, после проведения свертки и удаления ссылок обязательно выполните операцию «Упаковка таблиц» в Конфигураторе. Это физически пересоберет файлы и индексы (.CDX).
Если ваша база работает на MS SQL Server, для массовой подмены ссылок можно использовать прямые SQL-запросы. Это в десятки раз быстрее, чем перебор объектов через ВыбратьДокументы().
Пример изменения ссылок в таблице регистра (упрощенно):
UPDATE _1SRG1600 -- Таблица итогов регистра
SET SP1605 = @NewDocID -- Ссылка на новый документ
WHERE SP1605 IN (SELECT ID FROM _1SJOURN WHERE CLOSED_DATE < @SverkaDate)
_1SJOURN, _1SOPER, RA, RG) и предварительного создания бэкапа!
Проанализируем последствия: после свертки бухгалтер не сможет воспользоваться функцией «расшифровки» (drill-down). Клик по сумме долга в отчете не покажет состав накладной, так как накладная либо пуста, либо заменена на «заглушку».
Чтобы избежать конфликтов с пользователями, всегда рекомендуем:
При массовой обработке документов файл системного журнала 1cv7.mlg может вырасти до гигантских размеров, забив все свободное место на диске. Перед началом глобальной свертки и переподчинения ссылок рекомендуется временно отключить регистрацию событий в Мониторе 1С. Это существенно ускорит процесс и убережет от внезапной остановки системы из-за нехватки дискового пространства.
Таким образом, выбор метода свертки зависит от ваших приоритетов: если нужно максимальное сжатие — используйте подмену ссылок на «заглушки»; если важна точность валютного и партионного учета — оставляйте документы-основания непроведенными с пустой табличной частью.