Очистка базы данных от данных по организации

Администрирование - Чистка базы

Обработка Очистка базы

27
Обработка генерирует SQL-скрипт, который очищает базу данных от документов выбранной организации. Проверялась на конфигурации Управление производственным предприятием на платформе 8.3. Но в принципе универсальная для стандартных конфигураций на платформе 8.3.

В БД велось несколько организаций. Некоторые закрылись несколько несколько лет назад. Сама БД стала весить гораздо более 400 ГБ. Встал вопрос об уменьшении базы за счет "вырезания" из нее ненужных документов закрытых организаций.

Для этого был написана эта обработка.

Как пользоваться:

1. Запустить обработку в 1С предприятии в нужной базе.

2. Выбрать Организацию.

3. Нажать кнопку "Выполнить". Запустится процедура генерации SQL-скрипта. Будет создан файл и в сообщении указано его имя.

4. Запустить SQL Server Management Studio.

5. Нажать кнопку "Open File" и выбрать созданный файл.

6. Выбрать нужную базу для выполнения скрипта.

7. Нажать кнопку "Execute". Скрипт начнет выполняться. Время выполнения зависит от объема данных по организации и мощности сервера. У меня с 400Г до 200Г резалось около часа. Документов было около миллиона.

8. После выполнения скрипта запустить 1С в режиме Конфигуратор в обрезанной базе.

9. В меню "Администрирование" выбрать пункт "Тестирование и исправление". Откроется окно настройки тестирования и исправления.

10. Выбрать только пункт "Пересчет итогов". Скрипт не смотрит на таблицы итогов и оборотов в регистрах, поэтому пересчет итогов необходим.

27

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

Наименование Файл Версия Размер
Очистка БД от данных по организации:
.epf 9,32Kb
23.01.18
54
.epf 9,32Kb 54 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. Novoenkov 15 23.01.18 11:51 Сейчас в теме
Т.е. скрипт только удаляет документы, а битые ссылки очищаются, регистры исправляются тестированием и исправлением?
2. mugr 71 23.01.18 16:44 Сейчас в теме
(1) Скрипт удаляет:
1. Данные в шапке документа (т.е. сами ссылки)
2. Табличные части документа
3. Движения документа по регистрам накопления, бухгалтерии, сведений и последовательностям. При этом не трогаются таблицы промежуточных итогов (остатков или оборотов), поэтому и нужен пересчет итогов.
4. Частично удаляются битые ссылки (по тем регистрам, где я был уверен). Полной чистки (по справочникам, документам и регистрам) писать не стал. Причина - это потенциально более опасное действие - можно удалить нужные данные по другой организации... Битые ссылки отрабатывались отдельно после более тщательного анализа.
Поэтому ССЫЛКИ после обработки ВОССТАНАВЛИВАТЬ не НАДО! Нужен детальный анализ и скрипт более тщательно подготовленный с расширенной фильтрацией.
3. puzakov 29.01.18 08:50 Сейчас в теме
Это нарушение лицензионного соглашения 1с.

Нельзя обращаться к данным информационной базы напрямую, минуя уровень объектов работы с данными "1С:Предприятия" - например при помощи средств СУБД или при помощи внешних компонент, которые реализуют прямой доступ к СУБД. Это ограничение распространяется на любые действия с данными, в том числе на изменение их структуры, а так же на чтение или изменение самих данных информационной базы или служебных данных "1С:Предприятия".

http://v8.1c.ru/predpriyatie/questions_licence.htm#65
logarifm; +1 Ответить
4. sovital 22 29.01.18 22:39 Сейчас в теме
(3) Лицензионное соглашение не позволяет использовать недокументированные фирмой "1С" средства для построения решений на платформе 1С:Предприятие. Это означает, что средства СУБД (или любые другие внесистемные средства) можно использовать только в том случае, если документация по продуктам линейки "1С:Предприятие" (включая 1С:ИТС) содержит явную рекомендацию использовать данное средство для решения данной задачи.
...
Данное ограничение необходимо для обеспечения стабильности работы механизмов системы, осуществления поддержки и возможности перехода на новые версии "1С:Предприятия".

1. Для задач разделения конфигураций по юридическим лицам компания 1С ничего не советует. Помечайте на удаление и удаляйте не работает, ибо сроки такой реализации подхода крайне неприемлемы.
2. Такие задачи делаются не для повседневной работы, а для того, чтобы можно иметь базу с одним юрлицом для проверяющих органов.
3. Данные принадлежат мне, и работа с ними регламентируется лицензионным соглашением Microsoft. И с помощью средств СУБД имею полное право на то, чтобы смотреть что и как там.
7. puzakov 30.01.18 05:17 Сейчас в теме
(4) я согласен, что иногда хочется влезть в базу недокументированными средствами, и это может оказаться быстрее или удобнее. НО! Это нарушение лицензионного соглашения. Со всеми вытекающими.
8. Novoenkov 15 30.01.18 09:01 Сейчас в теме
(7) С какими именно «вытекающими»?
mvernig; sovital; +2 Ответить
11. puzakov 31.01.18 08:36 Сейчас в теме
(8) когда вы влезаете в данные напрямую, минуя объектную модель, вы нарушаете лицензионное соглашение. Нарушив лицензионное соглашение, вы теряете право использовать ПП. А какие последствия бывают за использование не лицензионного ПО, можете нагуглить сами.

4. Лицензиат обязуется не допускать нарушений исключительных прав Правообладателя на ПРОГРАММНЫЙ ПРОДУКТ, в частности, не совершать и не допускать совершения третьими лицами следующих действий без специального письменного разрешения Правообладателя:
- распространять ПРОГРАММНЫЙ ПРОДУКТ или отдельные его компоненты;
вносить какие-либо изменения в код ПРОГРАММНОГО ПРОДУКТА, содержимое баз данных и других наборов данных, в которых система хранит информацию, за исключением тех изменений, которые вносятся штатными средствами, входящими в состав ПРОГРАММНОГО ПРОДУКТА и описанными в сопроводительной документации;
- осуществлять доступ к информационной базе ПРОГРАММНОГО ПРОДУКТА и построение систем на основе ПРОГРАММНОГО ПРОДУКТА с помощью средств и технологических решений, не предусмотренных в сопроводительной документации;

(с) лицензионное соглашение 1с
12. Novoenkov 15 31.01.18 09:20 Сейчас в теме
(11) Меня в гугле забанили. Напишите конкретней, к каким последствиям приведет нарушение указанного пункта соглашения? Тюремный срок? Штраф? Есть прецеденты?
15. puzakov 31.01.18 11:30 Сейчас в теме
(12) вы меня троллите? Нарушение лицензионного соглашения ведет к тому, что продукт перестает быть лицензионным. А что бывает за использование нелицензионного ПО, вам любой поисковик выдаст.
16. Novoenkov 15 31.01.18 11:51 Сейчас в теме
(15) Насколько здорово вы разбираетесь в предмете я понял. Своим вопросом всего лишь хотел в этом убедиться. Убедился.
17. puzakov 31.01.18 12:16 Сейчас в теме
(16) а что конкретно я неправильно сказал? Я не юрист, во всех тонкостях не разбираюсь, но лицензионное соглашение фирмы 1С читал.
21. Novoenkov 15 02.02.18 10:48 Сейчас в теме
(17) ни в административном, ни в уголовном кодексе ничего про "нарушение лицензионного соглашения", насколько мне известно, не сказано. а употребляются термины "контрафакт" и "авторские (смежные) права".

поэтому, чисто теоретически, указанное "нарушение лицензионного соглашения" может привести только к тому, что фирма 1С на вас обидится и будет дуться. или откажет в поддержке, если каким-то образом об этом узнает.

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

следовательно, ваши комментарии про какие-то "вытекающие" про которые знаете только вы, являются профанацией и демагогией, если вы не можете подтвердить обратного.
22. puzakov 05.02.18 09:00 Сейчас в теме
(21) я не юрист, всех тонкостей не знаю. Но не думаю что юристы фирмы 1С такие дураки, что составили совершенно бесполезное лицензионное соглашение. Могу предложить, что фирма 1С, как правообладатель, может на законных основаниях потребовать от пользователя удаления нелицензионной платформы (которая таковой становится вследствие нарушения лиц. соглашения), и всех баз данных, которые создавались/наполнялись при помощи этой платформы.
9. sovital 22 30.01.18 09:55 Сейчас в теме
(7)Средства SQL весьма и весьма документирваны...
10. puzakov 31.01.18 07:51 Сейчас в теме
(9) да, но имеется ввиду, если документировано фирмой 1с использование средств SQL. В данном случае фирма 1с запрещает даже считывать данные напрямую, не то что изменять их средствами SQL.
13. sovital 22 31.01.18 11:13 Сейчас в теме
(10) А компания 1С вправе регламентировать мои отношения с SQL?
14. puzakov 31.01.18 11:22 Сейчас в теме
(13) 1С вправе регламентировать ваши отношения с их продуктом. Через SQL вы изменяете часть их продукта, так что всё в рамках закона. И видите ли в чем дело, вы СОГЛАСИЛИСЬ исполнять лицензионное соглашение фирмы 1с, когда начали использовать её ПП. Отскоки в сторону уже не принимаются. Надо было отказаться от 1С:Предприятия и использовать продукт другого вендора, который не запрещает менять данные посредством сторонних инструментов.
18. sovital 22 31.01.18 17:08 Сейчас в теме
(14) Уверяю Вас, лицо согласившееся с лиц., вообще не в курсе, кто и что делает в его инф. системе.
19. logarifm 1015 01.02.18 23:06 Сейчас в теме
(3)
ужебных данных "1С:Пред
Согласен. Автору статьи обязательно следует это указать в описании!!!
5. mugr 71 30.01.18 03:37 Сейчас в теме
Согласен с Яном.
Если бы 1С не позиционировала себя как решение для крупных предприятий или дала стандартную возможность удалить пол-базы за приемлемые сроки (расчетно у меня было около недели стандартными методами [распроведение, пометка и удаление с отключенными итогами] или обменом данных), то таких обработок бы и не появлялось.
Причем тут крупные предприятия: жизненный цикл базы на таких подразумевает, что ее надо чистить и при этом довольно быстро. Имеется ввиду Frontend-база, т.е. куда заносятся данные. Backend-базы нехай себе данные для аналитики копят их резать глупо. И тут появляется противоречие быстро это стандартными методами сделать нельзя.
Про стандартные методы. Для меня уже 15 лет загадка, почему нельзя разрешить конструкцию:
	Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ.РасчетСебестоимостиВыпуска");
	мс = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
	РегистрыНакопления.НезавершенноеПроизводство.УстановитьИспользованиеИтогов(ЛОЖЬ);
	нз = РегистрыНакопления.НезавершенноеПроизводство.СоздатьНаборЗаписей();
	нз.Отбор.Регистратор.Установить(мс, ИСТИНА); //Вот так почему 15 лет делать запрещено?
	нз.Очистить();
	нз.Записать();
	РегистрыНакопления.НезавершенноеПроизводство.УстановитьИспользованиеИтогов(ИСТИНА);
Показать

Решение использовать вместо массива конкретную ссылку в цикле не прокатывает. Документов многовато...
6. puzakov 30.01.18 05:13 Сейчас в теме
(5)
нз.Отбор.Регистратор.ВидСравнения = ВидСравнения.ВСписке;
нз.Отбор.Регистратор.Значение = мс;

не пробовал, но должно работать.
20. sovital 22 02.02.18 10:20 Сейчас в теме
(0)Спасибо большое за обработку.
Вопрос возник, планируете ли дорабатывать, в частности вычищать ссылки документов по журналам?
23. ambabas 29.03.18 15:03 Сейчас в теме
А под управляемые формы не планировали сделать? а то в тройке неудобно работать без УФ.
24. JammShoot 17 02.05.18 12:08 Сейчас в теме
{ВнешняяОбработка.ОчисткаОтДанныхОрганизации.Форма.Форма1.Форма(183)}: Поле объекта не обнаружено (КатегорииОбъектов)
мдРегра = Метаданные.РегистрыСведений.КатегорииОбъектов;

БП 2.0.66.46
платформа 8.3.10.2375
Оставьте свое сообщение