Свертка старых периодов в конфигурации «Торговля и Склад 7.7» (ТиС) — классическая задача, с которой сталкивается любой администратор или разработчик систем на платформе «1С:Предприятие 7.7». Главная проблема стандартных механизмов заключается в их низкой скорости работы. База объемом в несколько гигабайт при попытке свернуть ее «штатным» универсальным инструментом WRAP.ert (разработанным в первую очередь для бухгалтерских конфигураций) может зависнуть на несколько суток. Процесс удаления миллионов документов превращается в кошмар из-за рекурсивной проверки ссылочной целостности платформой.
В этой статье мы подробно разберем, почему стандартная свертка работает медленно, как правильно использовать штатные возможности конфигурации ТиС 7.7 и какие альтернативные профессиональные методы позволяют сократить время свертки с нескольких дней до пары часов.
Прежде чем переходить к радикальным техническим средствам, разберем архитектурную особенность «Торговли и Склада 7.7». Многие разработчики по ошибке пытаются использовать для свертки внешнюю обработку свертки конфигурации «Бухгалтерский учет». Для торговой базы это неэффективно, так как логика регистров накопления принципиально отличается от бухгалтерских проводок.
В ТиС 7.7 предусмотрен встроенный штатный механизм, о котором часто забывают. Он находится в меню Сервис — Завершение периода. Рассмотрим принцип его работы:
Основная проблема этого метода — последующее удаление документов за закрытый период. Если документов сотни тысяч, стандартная процедура удаления объектов в 1С 7.7 будет выполняться бесконечно долго. Ниже мы разберем, как обойти это ограничение. Для ускорения этого процесса можно воспользоваться обработкой усовершенствованной свертки конфигурации «Торговля и Склад 7.7».
Вместо того чтобы пытаться удалить огромный массив документов из старой базы данных, гораздо быстрее и эффективнее перенести справочники и сформированные остатки в абсолютно чистую базу. Рассмотрим этот алгоритм по шагам:
1cv7.md).Этот метод позволяет не только мгновенно избавиться от документов прошлых лет, но и полностью очистить справочники от накопленного «мусора» — элементов, которые давно не используются в текущей деятельности. Для реализации такого переноса остатков и связанных объектов подойдёт конфигурация для свертки базы 1С 7.7 и выборочного переноса данных.
Если ваша база данных «1С 7.7» работает под управлением СУБД MS SQL Server, мы можем обойти платформенные ограничения и удалить старые документы за считанные секунды с помощью прямых запросов. Для реализации этого метода обычно используется внешняя компонента 1С++, которая позволяет выполнять низкоуровневые SQL-команды прямо из кода 1С.
Выясним причину высокой скорости: СУБД удаляет записи напрямую из таблиц базы данных, минуя долгие проверки ссылок платформой 1С. Разберем примерный алгоритм и структуру SQL-запроса:
_1SJOURN, а также таблицы шапок (DH*) и табличных частей (DT*) документов за период до даты свертки.Пример концептуального SQL-запроса для очистки документов старше определенной даты:
-- Пример SQL-запроса для удаления документов до 01.01.2024
DECLARE @CutOffDate varchar(8)
SET @CutOffDate = '20240101'
-- Удаляем движения документов по регистрам (таблицы RA*)
-- Имена таблиц движений индивидуальны для каждой конфигурации
DELETE FROM RA999 WHERE DATE_TIME_IDDOC < @CutOffDate;
-- Удаляем строки табличных частей документов (таблицы DT*)
-- Требуется выполнить соединение с журналом документов по IDDOC
DELETE DT
FROM DT123 DT
INNER JOIN _1SJOURN J ON DT.IDDOC = J.IDDOC
WHERE J.DATE_TIME_IDDOC < @CutOffDate;
-- Удаляем шапки документов (таблицы DH*)
DELETE DH
FROM DH123 DH
INNER JOIN _1SJOURN J ON DH.IDDOC = J.IDDOC
WHERE J.DATE_TIME_IDDOC < @CutOffDate;
-- В последнюю очередь очищаем журнал документов
DELETE FROM _1SJOURN WHERE DATE_TIME_IDDOC < @CutOffDate;
Важно: После выполнения таких низкоуровневых операций необходимо обязательно запустить Конфигуратор и выполнить полное «Тестирование и исправление БД» с установленными галочками пересчета итогов и очистки ссылок на несуществующие объекты. Это восстановит логическую целостность базы данных.
Для файловых баз данных (DBF-формат) также существует быстрый технический обход стандартного удаления, основанный на временном отключении и пересоздании таблиц регистров. Разберем эту последовательность действий:
.DBF и .CDX, имена которых начинаются на RA* (движения регистров) и RG* (итоги регистров).1sjourn.dbf пройдет во много раз быстрее, поскольку системе не придется очищать миллионы строк движений по регистрам.RG* и RA* обратно в каталог базы данных с заменой.Проводя свертку «Торговли и Склада 7.7», обязательно учитывайте критически важные особенности этой конфигурации:
Справочник.Партии разрастается до колоссальных размеров, так как для каждой закупки создается новый элемент. Если просто удалить документы, база практически не уменьшится в объеме, так как записи справочника останутся нетронутыми. Перед сверткой или сразу после нее обязательно запустите специализированную обработку очистки неиспользуемых партий (например, УдалениеПартий.ert), чтобы удалить элементы справочника, на которые больше нет ссылок в остатках.Используя предложенные методики, мы можем сократить время свертки даже самых запущенных баз «1С:Торговля и Склад 7.7» до разумных пределов, обеспечив при этом абсолютную точность переноса остатков и стабильную работу системы в новом отчетном периоде.