Друзья, всем бобра и счастья!
Дисклеймер! Политика 1С не разрешает никакие манипуляции с данными напрямую средствами СУБД, только средствами платформы! Поэтому качать, смотреть, думать, а уж тем более запускать эту обработку категорически нельзя. (или можно, но только ночью, обязательно завесив окна, выключив свет и закрывшись на семь замков). Шутка, конечно же. Просто в случае безвозвратной потери данных виноваты будете Вы и только Вы. Минздрав предупредил.
Цель написания обработки единственная: создание БД для разработчика в максимально короткие сроки путем обрезки базы до минимума, необходимого для работы. Никакая целостность не проверяется и не гарантируется. Возможно, кто-то уже сталкивался с проблемой в больших компаниях, когда база 1С весит сотни гигов (по несколько млн документов в год), и развернуть каждому программисту в отделе по отдельной копии просто физически невозможно. И не рентабельно. Лучшее решение - обрезать базу, оставив в ней данные лишь за небольшой период. Но удаление большого числа объектов средствами 1С занимает очень много времени.
В качестве статистики приведу пример. 1С у меня удаляет данные со скоростью ~25 000 объектов/час, Обработка - ~2 000 000 объектов за 20 минут. Разница налицо, как говорится.
За основу идеи была взята обработка //infostart.ru/public/122546/ . За что огромное спасибо автору и долгих лет жизни. К сожалению, столкнулся с единственной проблемой - скорость работы. Поэтому решил полностью изменить алгоритм.
Как пользоваться обработкой?
Аутенфикация
Некоторые данные для аутенфикации подтягиваются автоматически из строки соединения с ИБ, но они совсем не всегда совпадают. Поэтому необходимо ввести имя именно своего сервера SQL.
Для проверки корректности данных есть кнопочка "Проверить подключение".
Тайм-ауты можно оставить как есть. 30 сек для подключения, 1ч на выполнение запроса в СУБД. Если в процессе удаления появится ошибка "(Microsoft OLE DB Provider for SQL Server): Query timeout expired", значит, необходимо увеличить тайм-аут выполнения запроса, т.к. слишком много данных, и СУБД не успела их почистить.
Удаление
Удаление возможно частичное или полное.
Обработка позволяет очищать следующие объекты:
- Документы,
- Журналы документов,
- Регистры сведений,
- Регистры накопления,
- Регистры бухгалтерии.
Полное удаление выполняется быстро через команду TRUNCATE TABLE.
Частичное удаление производится путем выбора периода удаляемых данных (отбор по полю _Period в БД).
Для Документов также автоматически очищаются таблицы, содержащие данные табличных частей документов.
Для Регистров накопления и бухгалтерии есть возможность выбора действия обработки виртуальных таблиц (Итоги, Обороты...). По хорошему, в идеале лучше всего виртуальные таблицы очищать полностью, после чего из Конфигуратора запускать Тестирование и исправление с галкой "Пересчет итогов".
Для Регистров сведений есть возможность выбора Подчиненных или Независимых. Для Подчиненных возможен отбор по периоду регистратора.
Команда "Очистить всё" последовательно проходит по всем страницам обработки и выполняет действия в зависимости от выбранных параметров.