8.х Быстрое удаление документов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем alex-79, 24 ноя 2015.

  1. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Привет всем!

    База: Управление торговлей 10.3 (клиент-серверная)
    За 5 лет база стала больших размеров. Было решено сделать обрезку базы. Я скопировал базу и начал в ней удалять документы. Вариант, чтобы создать пустую базу и в неё перекачать справочники не подойдёт, т.к. база сильно переписанная. Вообщем, документы удаляются очень долго. Можно ли как-то средствами SQL удалить документы?

    Поделитесь опытом.
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    Можно, но это будет без сохранения ссылочной целостности.
    После такого удаления необходимо выполнить ТиИ с удалением ссылок на несуществующие объекты.
  3. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.644
    Симпатии:
    948
    Баллы:
    204
    А зачем вы делаете таоке.
    есть такое понятие как Свертка базы и соответвующая обработка.
    Полчитайте про это - как раз для этих целей и используется
    --- Объединение сообщений, 24 ноя 2015 ---
    Просто удаляя документы у вас остаки неправильно будут то
  4. Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    а сохранить конфигурацию в файл, а потом загрузить в новую базу? Структура сохраниться полностью, правда справочники и перенос остатков придется делать.
  5. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Draco В итоге нужна база со справочниками. Остатки я обработкой своей перенесу.
    Ktyf Не пойдёт потому конфигурация переписанная и потом проблемы будут.
    nomad_irk а можно получить скрипт для удаления если не жалко?
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    Готового скрипта не дам, т.к. он будет уникальным для каждой БД, могу подсказать алгоритм действий.
    Методом глобального контекста получаешь информацию о структуре хранения данных в терминах имен таблиц SQL и объектов метаданных 1с.
    Определяешь нужную талицу с данными и делаешь в SQL:

    Delete From dbname.dbo.tablename where <нужное_условие_отбора_строк_для_удаления>

    Так же необходимо удалить данные ТЧ удаляемых документов.
    После процедуры удаления строк в таблицах запускаем ТиИ через конфигураторр с опцией "удаление ссылок на несуществующие объекты".
  7. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.644
    Симпатии:
    948
    Баллы:
    204
    Не совсем понимаю зачем изобретать велосипед, если уже все сделано. Свертка базы вам и от документов почистит и остатки сделает и справочники оставит.
    Все что Вам нужно сделает. Причем уже проверенная вещь.
  8. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.987
    Симпатии:
    398
    Баллы:
    104
    Полностью поддерживаю Draco.
  9. Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    простите, не поняла при чем тут переписанность? Хоть вообще самописная. Выгружаете конфигурацию в сф-файл, а потом загружаете его на пустую конфигурацию. В итоге получается полная структурная копия.
  10. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    nomad_irk я написал обработку удаления через SQL. Единственное, что не удалось побороть это момент когда таблица SQL большая и в процессе удаления SQL Server отвечает, что время ожидания запроса истекло. В принципе я сделал чтобы удаление таких больших таблиц было не сразу одним запросом, а запросом к примеру который удаляет 1000 строк каждый раз и закциклил запрос до тех пор пока таблица не будет полностью очищена.

Поделиться этой страницей