gifts2017

Быстрая чистка 1С средствами SQL

Опубликовал Кирилл (kiros) в раздел Администрирование - Чистка базы

Обработка была создана в свете возникшей проблемы быстрой очистки БД от данных за определенный период. (Подготовка БД для аутсорсеров)

Работает НАМНОГО быстрее стандартных средств 1с, но не гарантирует правильность остатков, если не сказать больше, гарантирует неправильность регистров остатков (правда этот момент не проверяли, т.к. задача была быстро очистить БД), но проблема с остатками поправима (путем пересчета итогов и остатков, тем более что пересчет остатков вещь полезная)

В качестве базы для обработки была использована эта публикация http://infostart.ru/public/137872/ (за которую автору спасибо), обработка сначала была переделана "на модуль" (таким образом можно ее использовать для прямого получения данных непосредственно из SQL, да это противоречит лицензионному соглашению, но скорость в некоторых случаях важнее)

Принцип работы такой: Получает список метаданных с наименованиями таблиц хранения этих метаданных. Далее занимается удалением ТЧ документов за указанный период, далее самих документов (а то ведь будут ТЧ существовать без документов :).

Далее удаляет все остальные регистры в которых есть дата/период (если совсем точно, то только стандартные реквизиты период и дата проверяются). И все, база считаем очищена. Далее можно проверить (на всякий случай) на целостность, пересчитать итоги и т.п., но справочники на месте, документы (не актуальные) на месте, вместе с движениями.

А если ограничение по дате не нужно, то можно воспользоваться такой обработочкой http://infostart.ru/public/91327/, идея была почерпнута из нее.

Скачать файлы

Наименование Файл Версия Размер
Чистка за период 72
.epf 23,41Kb
18.09.12
72
.epf 23,41Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Trotter_NN 19.09.12 07:27
Обязательно попробую, у меня просьба к людям которые знают как ставить SQL и 1С к ней привязать и + как делать бэкап этой SQL напиши пожалуйста статью, а то я пришел на работу а здесь такая вот ситуация 1C+SQL бекапы не делаются, как делать бекапы SQL и как её ставить и настраивать если не дай боже всё упадёт? 20+ баз.
Посмотрел установлена microsoft visual studio 2005 expres с ней в комплекте наверное и шла SQL
2. Кирилл (kiros) 19.09.12 09:56
Как делать бэкап автоматически или по расписанию не знаю, к сожалению, как то всегда админы этим занимались, знаю только как разово ручками сделать, но для вас это не подойдет :(, попробую попросить скрипт у админов, может поделятся.
3. Алекс Ю (AlexO) 19.09.12 10:31
(1) Trotter_NN,
microsoft visual studio 2005 expres с ней в комплекте наверное и шла SQL

вы что, думаете, что MS SQL - это бесплатное приложение к чему-либо? :)
visual studio 2005 - это среда программирования, SQL - СУБД.
На оба покупается по отдельной лицензии.
Бэкапы настраиваются элементарно: настроить архивацию - выбираете параметры - SQL сам создаст скрипт, который потом можно вручную править.
Возможности широчайшие. Бэкап делается даже при работе с базой. Инкрементный, полный, и еще пару разновидностей. Тут же настройка расписания.
4. Алекс Ю (AlexO) 19.09.12 10:51
(2) kiros,
нельзя чистить так базы.
Играться - можно, чистить рабочие базы - нельзя.
Вот вы по дате документы удаляете - а если ссылки на эти документы в других документах?
Не работает в 1С студенческий наскок с "да че там делать!".
Раз в месяц появляется подобное "творчество" с приходом новых студентов, прослушавших лекции по СУБД, на инфостарт.
Есть типовые средства очистки объектов базы (достаточно быстрые), ими и пользуйтесь.
Никуда - НИКУДА - вы не денетесь от нагромождения ссылок и перекрестные связи.
Хотите потягаться с 1С-сервером в поиске данных и разборе запутанейших связей структуры 1с-базы? тягайтесь.
Тут уже десятки таких потуг были.
Максимум, что можно сделать через прямой запрос к SQL 1С-базе - это аккуратно сменить, например, значение какого-либо реквизита выбранного вида документов "скопом" по таблице шапок документов.
Т.е. сделать подмену. Так и то - есть, опять же, уже давно превосходные типовые обработки для этого.
5. Кирилл (kiros) 19.09.12 11:30
(4)Даже спорить не буду, т.к. давно не студент, и прекрасно понимаю что могут (и даже скорее всего будут) битые ссылки. Идея была именно в быстрой подготовке базы со справочниками и какими нибудь документами для аутсорсеров, т.е. удалить актуальные данные (ибо коммерческая тайна), а так так у нас база более 1Тб, а 1с средства даже на базе гораздо более маленького размера 2-е суток "колбасили", из-за этого и было принято такое нестандартное решение. И я призываю пользоваться обработкой только для подобных задач, и, действительно, ни в коем случае не на рабочей!
starik-2005; +1 Ответить 1
6. Максим Ковалев (maxsoft83) 26.09.12 10:01
(1) Trotter_NN, На ИТС есть примеры как настроить резервное копирование да и в интернете масса, если лень осваивать SQL, то просто настрой по расписанию выполнение скрипта для запуска выгрузки базы из 1С, в книжке по администрированию есть ключи для запуска 1С из командной строки. Читайте документацию там много полезного)))
7. Наталия Мастербатова (zzz_natali) 26.09.12 16:14
(5) kiros, Может проще определиться, что нужно для аудита(в горстях принесённое), чем издеваться над базёнкой? ОСВ в разрезе; справочники контриков, номенклатуры, договоров, налоговые декларации, акты инвентаризации/сверок... ну и т.д.