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


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

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

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

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

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

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

7 Comments

  1. Trotter_NN

    Обязательно попробую, у меня просьба к людям которые знают как ставить SQL и 1С к ней привязать и + как делать бэкап этой SQL напиши пожалуйста статью, а то я пришел на работу а здесь такая вот ситуация 1C+SQL бекапы не делаются, как делать бекапы SQL и как её ставить и настраивать если не дай боже всё упадёт? 20+ баз.

    Посмотрел установлена microsoft visual studio 2005 expres с ней в комплекте наверное и шла SQL

    Reply
  2. kiros

    Как делать бэкап автоматически или по расписанию не знаю, к сожалению, как то всегда админы этим занимались, знаю только как разово ручками сделать, но для вас это не подойдет :(, попробую попросить скрипт у админов, может поделятся.

    Reply
  3. AlexO

    (1) Trotter_NN,

    microsoft visual studio 2005 expres с ней в комплекте наверное и шла SQL

    вы что, думаете, что MS SQL — это бесплатное приложение к чему-либо? 🙂

    visual studio 2005 — это среда программирования, SQL — СУБД.

    На оба покупается по отдельной лицензии.

    Бэкапы настраиваются элементарно: настроить архивацию — выбираете параметры — SQL сам создаст скрипт, который потом можно вручную править.

    Возможности широчайшие. Бэкап делается даже при работе с базой. Инкрементный, полный, и еще пару разновидностей. Тут же настройка расписания.

    Reply
  4. AlexO

    (2)

    нельзя чистить так базы.

    Играться — можно, чистить рабочие базы — нельзя.

    Вот вы по дате документы удаляете — а если ссылки на эти документы в других документах?

    Не работает в 1С студенческий наскок с «да че там делать!».

    Раз в месяц появляется подобное «творчество» с приходом новых студентов, прослушавших лекции по СУБД, на инфостарт.

    Есть типовые средства очистки объектов базы (достаточно быстрые), ими и пользуйтесь.

    Никуда — НИКУДА — вы не денетесь от нагромождения ссылок и перекрестные связи.

    Хотите потягаться с 1С-сервером в поиске данных и разборе запутанейших связей структуры 1с-базы? тягайтесь.

    Тут уже десятки таких потуг были.

    Максимум, что можно сделать через прямой запрос к SQL 1С-базе — это аккуратно сменить, например, значение какого-либо реквизита выбранного вида документов «скопом» по таблице шапок документов.

    Т.е. сделать подмену. Так и то — есть, опять же, уже давно превосходные типовые обработки для этого.

    Reply
  5. kiros

    (4)Даже спорить не буду, т.к. давно не студент, и прекрасно понимаю что могут (и даже скорее всего будут) битые ссылки. Идея была именно в быстрой подготовке базы со справочниками и какими нибудь документами для аутсорсеров, т.е. удалить актуальные данные (ибо коммерческая тайна), а так так у нас база более 1Тб, а 1с средства даже на базе гораздо более маленького размера 2-е суток «колбасили», из-за этого и было принято такое нестандартное решение. И я призываю пользоваться обработкой только для подобных задач, и, действительно, ни в коем случае не на рабочей!

    Reply
  6. maxsoft83

    (1) Trotter_NN, На ИТС есть примеры как настроить резервное копирование да и в интернете масса, если лень осваивать SQL, то просто настрой по расписанию выполнение скрипта для запуска выгрузки базы из 1С, в книжке по администрированию есть ключи для запуска 1С из командной строки. Читайте документацию там много полезного)))

    Reply
  7. zzz_natali

    (5) Может проще определиться, что нужно для аудита(в горстях принесённое), чем издеваться над базёнкой? ОСВ в разрезе; справочники контриков, номенклатуры, договоров, налоговые декларации, акты инвентаризации/сверок… ну и т.д.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *