gifts2017

"Распил" базы БП 3.0. Удаление организации из базы со всеми связанными данными

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

Необходимо удалить одну из организаций из информационной базы Бухгалтерия предприятия, редакция 3.0? Разделить одну, общую базу, где ведется учет по нескольким организациям? Данная статья может быть полезна!

Как всегда, Новый Год приносит всем, кто связан с бухгалтерией, сюрпризы. И не все они приятные.

Учет по 3 - м юридическим лицам ведется в одной базе бухгалтерия предприятия ред. 3.0. Учет, как говорится, "без особенностей", лица как лица. Конфигурация - почти типовая. Документов не очень много, база на сервере приложений, быстродействие всех устраивает... 5 гигабайт за 2 года, менее 100 тыс. документов (правда крупненьких) - сущие пустяки. А обновлять одну базу вместо трех - намного приятнее. И вот от руководства в начале декабря поступает команда: Разделить, т.е. для каждого юридического лица должна быть отдельная база. И обязательно - никаких следов присутствия ранее других организаций в каждой из баз. Обсуждению, естественно, такие приказы не подлежат...

Пришлось экспериментировать. Первый вариант - шальная идея использовать конвертацию данных. Шальная идея кончилась,  "в лоб" и быстро решить вопрос не удалось. Описание танцев с бубном на граблях заслуживает отдельной статьи, которую когда - нибудь, возможно, и напишу. Основные причины бросить это занятие - быстродействие выгрузки. Кроме того, необходимо было перенести не только справочники и документы, но много "Мусора" типа пачек ПФР, налоговой отчетности, регистров сведений с настройками и т.п. 

Следующая идея оказалась более продуктивной. С рабочей базы были сняты 3 копии, и в каждой из них начался процесс "выпиливания" 2-х лишних в этой базе юридических лиц. Опять - таки "сейчас сделаем" с использованием функции НайтиПоСсылкам() тоже вело в тупик. Во первых, искать надо рекурсивно, во - вторых, не все найденное можно удалять сразу, не разбираясь, в - третьих, не всегда можно дождаться результатов. В результате экспериментов была найдена следующая методика удаления данных по организации:

  • Разбираемся (руками!) с планами обмена. Предварительно надо довести все обмены до состояния, что все данные приняты и выгружены. 
  • Тестирование и исправление базы - обязательный этап. Обязательно с параметром при наличии ссылок на несуществующие объекты - создавать ссылки. "Битые" ссылки, которые непременно есть в базе - не дадут удалить что - ни будь в режиме контроля ссылочной целостности. На пропуске этого этапа мне "удалось" потерять пару лишних дней - берегитесь!
  • Выгружаем в файловый режим, если возможно. Мне это удалось - ускорение всех последующих манипуляций как минимум в полтора раза.
  • Перепроводим базу, сверяем с первоисточником. При наличии "косяков" показываем их бухгалтеру, и как минимум, заручаемся его поддержкой. Этот пункт по желанию.
  • Удаляем даты запрета изменения данных. Тоже можно "наступить". Внимательно смотрим, чтобы у текущего пользователя были полные права на удаление объектов - проще всего проверить, открыв стандартную обработку "Удаление помеченных объектов".
  • Запускаем обработку "ОчисткаРегистровОтБитыхСсылок". Код подсмотрен здесь - http://kb.mista.ru/article.php?id=21, я просто засунул данный код в управляемую форму. Смысл проводимой процедуры - при работе стандартных процедур обмена, в регистрах, отвечающих за учет НДС со временем накапливаются записи, регистратор которых - счет фактура, уже удалена, а одно из измерений либо реквизитов = организация. Тестирование ИБ в конфигураторе с параметром при наличии ссылок на несуществующие объекты - создавать ссылки помогает не всегда. В моем случае таких записей было около 10 в 7 регистрах. Пока они есть - удалить организацию не получится.
  • Запускаем обработку "ПоискИУдаление". Выбираем организацию которая удаляется (Организация удаляем) и которая остается (Организация оставляем). Нажимаем кнопку "Заменить договор". В результате в поле основной договор каждого контрагента прописывается договор Организации оставляем (если такая есть), или в договоре меняется организация (если такой нет). Конечно, это не совсем правильно с точки зрения документооборота, однако в данном конкретном случае необходимо было сохранить хоть один договор по каждому контрагенту. Чистка справочника Контрагенты в рамки поставленной задачи не входила.
  • Нажимаем кнопку "Найти и удалить по организации". Данная процедура обходит по метаданым все справочники, документы, и независимые регистры сведений, где есть ссылки на справочник Организации, а затем помечает объекты на удаление а записи - удаляет. Поиск не учитывает табличных частей, соответственно - выполняется быстро. При пометке удаления пришлось "Обмануть" примерно таким образом:
        Если ТипСсылки = "Документ" Тогда
			
		Для каждого НаборЗаписей Из ТекОбъект.Движения Цикл
			НаборЗаписей.ОбменДанными.Загрузка = Истина;
			НаборЗаписей.Очистить();
			НаборЗаписей.Записать(Истина);
		КонецЦикла;
		
		ТекОбъект.ОбменДанными.Загрузка = Истина;
		ТекОбъект.ПометкаУдаления = Истина;
		ТекОбъект.Проведен = Ложь;
		ТекОбъект.Записать(РежимЗаписиДокумента.Запись);
		
	ИначеЕсли ТипСсылки = "Справочник" Тогда
		
		ТекОбъект.ПометкаУдаления = Истина;
		ТекОбъект.ОбменДанными.Загрузка = Истина;
		ТекОбъект.Записать();
			
	КонецЕсли;

  • поскольку проверки бизнес - логики не давали пометить на удаление часть объектов без предварительного удаления подчиненных. Это в первую очередь такие устойчивые консолидации документов, как ведомость по выплате зарплаты и РКО, пачки ПФР, счет - фактуры и корректировочные фактуры, документы комиссионеров и т.п.
  • Если необходимо удалить несколько организаций, повторяем шаги с "Запускаем обработку "ПоискИУдаление" для каждой следующей.
  • Нажимаем кнопку "Открыть удаление объектов" и попадаем в стандартную обработку "Удаление помеченных объектов". Автоматическое удаление всех отмеченных - удалить. Ждем. В моем случае это самая длительная операция, на win 7 x64 - i5 3.1 Ghz - SSD Intel - 8 Gb RAM удаление около 35 тыс. объектов занимает около 3 часов. 
  • Следующее действие - Поиск по ссылкам. Выполняется из обработки "ПоискИУдаление" кнопка поиск по ссылкам. Результат - дерево связей объектов на закладке. Поиск рекурсивный, с использованием функции НайтиПоСсылкам(МассивСсылок), но поскольку к данному моменту ссылок в базе осталось не так много, поиск происходит быстро.  Часть флажков при необходимости снимаем, т.е. разбираемся вручную. Потом нажимаем кнопку "Удаление по ссылкам", ждем. Последовательность, описанную в данном абзаце, повторяем по каждой удаляемой организации.
  • Снова нажимаем кнопку "Открыть удаление объектов" на нашей обработке и попадаем в стандартную обработку "Удаление помеченных объектов". Автоматическое удаление всех отмеченных - удалить. Ждем. На этот раз не долго. Руками разбираемся с не удаленными объектами - у меня это было несколько ГТД, пара фактур, с десяток пачек ПФР перенесенных еще из БП 2.0. 
  • Удаление успешно завершилось, переходим к следующему этапу - перепроведение документов, сверка с "непиленой" базой, поиск ошибок. У меня все кончилось благополучно, т.к. до "Распила" база регулярно перепроводилась, и почти все операции отражались документами в соответствии с рекомендациями ИТС.
  • Конфигуратор - Тестирование исправление - ставим галку "Сжатие таблиц информационной базы". Ждем, когда все ранее удаленные записи физически удалятся.
  • Всё!
P.S. Описанная методика не претендует на оригинальность, и не является единственно возможной. Возможно она будет кому - то полезной, сейчас как раз "сенокосная пора". Буду рад конструктивной критике - 1С.8 не занимался почти 2 года, что - то забыл - остальное устарело.
Манипуляции производились на Платформа: 1С:Предприятие 8.3 (8.3.5.1383) Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.37.34) (http://v8.1c.ru/buhv8/) Copyright (С) ООО "1C", 2009 - 2014. Все права защищены (http://www.1c.ru) Режим: Файловый (без сжатия) Приложение: Тонкий клиент Локализация: Информационная база: русский (Россия), Сеанс: русский Вариант интерфейса: Версия 8.2.

Перед любыми экспериментами необходимо создать резервную копию, и обязательно убедиться в ее работоспособности!
 
 

 

 

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

Наименование Файл Версия Размер
ОчисткаРегистровОтБитыхСсылок.epf 134
.epf 7,33Kb
11.01.15
134
.epf 7,33Kb Скачать
ПоискИУдаление.epf 199
.epf 13,86Kb
11.01.15
199
.epf 13,86Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. борян петров (TODD22) 12.01.15 06:24
А чем вариант с РИБ не устроил? Настраиваем РИБ. Выгружаем подчинённый узел с отбором по юр лицу. Обработкой у подчинённого узла сбрасываем признак РИБ. И работаем. В 2.0 работало.
Borisych; batlerrett; svvinks; kit; detro; Il; +6 Ответить 4
2. Димон * (DDos76) 12.01.15 08:25
(1) TODD22,
Спасибо за идею!
Как - то не догадался, в следующий раз обязательно попробую!
3. борян петров (TODD22) 12.01.15 09:46
(2) DDos76,
Спасибо за идею!
Как - то не догадался, в следующий раз обязательно попробую!

Времени бы сэкономили :) В 2.0 процесс выделения организации в свою базу занимал не более получаса :) По сути время создания узла.
4. Димон * (DDos76) 12.01.15 13:41
(3) TODD22,
Не факт что намного быстрее, во - первых размер базы тоже что - то значит.
Во вторых, при обмене/выгрузке тоже иногда ловятся разные "тараканы". Особенно, когда в базе есть какие - то не стыковки.
А после 2-х лет активной работы не стыковки будут обязательно. И именно на борьбу с ними было убито основное количество времени. А также на контрольное перепроведение всех баз после "Распила".
В третьих, когда нужно выделить одну организацию из например 5, как подсказывает интуиция самым быстрым будет комбинация моего и Вашего вариантов. Выгружаем данные по одной организации через РИБ и потом удаляем ее в основной базе.
5. борян петров (TODD22) 12.01.15 15:44
Выгружаем данные по одной организации через РИБ и потом удаляем ее в основной

А зачем удалять в основной?
Создайте ещё один узел и выгрузите в него 4 другие организации и будет вам счастье :)
6. Димон * (DDos76) 12.01.15 18:13
Любопытство победило, решил попробовать...
Из первых впечатлений. Процедуры "Тестирование и исправление", а также "Запускаем обработку "ОчисткаРегистровОтБитыхСсылок" уже были выполнены", как и выгрузка в файловую базу. Дальнейшие действия:
-Создал узел обмена через Администрирование - настройки синхронизации.
-Выгрузка по одной организации - около 40 минут, т.е. гораздо быстрее.
-Зашел в конфигуратор, создал пользователя, дал ему абсолютно все права, т.к. иначе вылетала ошибка при запуске 1с.
-Создал обработку из 1 строки - ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
-Запустился в режиме 1с предприятие, и ответил на вопрос на восстановление связи с главным узлом: Отключить, затем на вопрос о легальности приобретения обновлений.
-Подождал минут 5, пока шло заполнение начальных настроек.
-База запустилась, зашел в администрирование - Настройки синхронизации, убрал префикс и галочку"Синхронизация данных".
-Вроде все! На выделение одной базы ушло около часа (точно не замерял, занимался другим), т.е. в три с лишним раза быстрее!
из минусов (на первый взгляд):
-в РС Счета учета номенклатуры - нет ни одной записи с заполненной организацией, придется разбираться.
-Пользователи не перенеслись, возможно, что - то надо было сделать еще.
-"Улетела" дата актуальности закрытия месяца на самый первый документ. В предыдущем варианте "Распила" перепроводил только 2014 год - тут надо 2013 перепроводить.
дальше не ковырялся, перепроведение тоже пока делать некогда, т.к. 2013 у меня с налету не пререпроводится, по причине нескольких корректировок, а также изменения 1с -никами некоторых алгоритмов учета. Т.е. надо либо разбираться с переносом даты актуальности (кстати самому интересно), либо сидеть и перепроводить документы. В общем случае это времени займет тоже немало.
Так что мои обработки носят не только чисто научный интерес.

7. Димон * (DDos76) 12.01.15 18:16
(5) TODD22,
2013 у меня не перепроводится "так просто" и в оригинальной базе.
cleaner_it; +1 Ответить 1
8. борян петров (TODD22) 12.01.15 18:56
(7) DDos76, Зачем вам перепроводить 2013? Надо двигать дату актуальности. В БП есть регистр сведений(забыл как называется, а базы нет под рукой) в котором нужно почистить не актуальные операции. И всё дальше должно пойти.
Тут на мисте как раз обсуждение идёт на тему "Бухгалтер решила оприходовать товар в 2010 году" и то что на улице давно уже 2015 её не смущает :)
9. Алексей Смирнов (Vextel) 18.01.15 19:24
TODD22, с РИБ конечно интересный вариант, но глюков там отхватить можно достаточно.
Не сталкивался с РИБ на ЗУП 3.0 но вот на БП 3.0 гемора много, при условие что учёт вёлся не совсем правильно. В основном гемор что не всё до конца догрузилось в перефирийные узлы, есть битые ссылки или наоборот много лишнего нагрузилось.
Короче времени уж точно не сэкономить. Поэтому качественнее удалить из базы.
10. Димон * (DDos76) 19.01.15 05:52
(9) Vextel,
Абсолютно точно! Главное, у меня обмен с УТ 11 не пережил опыта с РИБ.
Я просто не смог дождаться, когда пройдет обмен... На копии, конечно.
Оставлял на выходные, сегодня с утра прибил, т.к. сервер тормозит.
Т.е. я так и не дождался окончания выгрузки из УТ.
Судя по симптомам, что - то решило серьезно за двоиться...
А вариант с удалением - как ни странно, работает нормально.
11. Vadim Петров (Vadim75) 06.02.15 09:38
Главбух удалила помеченные на удаления документы поступления нетиповой обработкай в БП 3.0. Появились битых ссылки на эти партий по 41 счету. Я начинающий 1с-ник, раньше с такой проблемой не сталкивался. Подскажите, пожалуйста, можно воспользоваться вашими обработками в моей ситуации или может быть существует другой способ? Спасибо.
12. Vadim Петров (Vadim75) 06.02.15 13:32
Для наглядности прикрепил файлик. Дайте пожалуйста совет.
Прикрепленные файлы:
Битые ссылки (партии) по 41 счету.doc
13. Ангел В (AngelVIII) 08.02.15 20:36
все сработало, но пришлось много править документы, где-то в них остались "хвосты при смене организации... Но все завершилось успешно
14. Димон * (DDos76) 10.02.15 12:22
(12) Vadim75,
C регистрами накоплений все проще. Тестирование исправление ИБ в Конфигураторе. Обязательно с параметром при наличии ссылок на несуществующие объекты - создавать ссылки. Либо руками - на Инфостарте есть много обработок создания по GUID объектов, даже сам когда - то выкладывал. Но руками как правило слишком долго.
И не забываем делать копию перед опытами! Как показывает практика, в таких случаях лучше (надежнее) копированием файла ИБ или средствами SQL при серверной базе.
15. Sergei (kauksi) 07.04.15 15:56
помогло, полезная вещь. некоторые документы и регистры сведений все же пришлось грохать вручную
16. Алексей Максимов (megaalex) 27.07.15 19:56
(1) TODD22,
на 2.0 отлично работало, а на 3.0 вылезли грабли:
отпочковал -> отключил главный -> дал права пользователю на все -> запустил -> сказал что не хочу восстанавливать связь с главным ->и радостно дожил до отчетного периода, когда выяснилось что регламентные операции по НДС не формируются :(
где порылась собака ума не приложу

UPD: помогли добрые люди!!! константа ОбщаяДляЮридическихЛиц(уплачивается налог на прибыль) слетела!!! поставил и все ок
17. Андрей Макаров (XOCTEP) 31.07.15 18:00
Спасибо за обработку! На 90% помогла удалить лишние организации.
18. Капитан Немо (capitan) 31.07.15 18:27
(1) TODD22, в 8.3 и соответственно редакции 3.0 при разделении таким способом будут сюрпризы.
Если вкратце - предопределенные элементы справочников перестают создаваться в периферийной базе, т.к. ожидают прихода из центральной.
Если из периферийной базы сделать обособленную - это состояние сохраняется.
По крайней мере так было в начале года, может в новых релизах платформы поправили.
Т.е. база при обновлении конфигурации остается без предопределенных элементов справочников. Эту тему здесь уже курили.
19. Виктор Ермаков (TEENAGER1984) 13.08.15 13:17
А если я через РИБ выгружу организацию из ПРОФ версии в переферийку, затем сниму с поддержки и накачу Базовую конфигурацию, полагаю все что положено у меня будет, в том числе и предопределенные? Дело в том что мне надо из ПРОФ версии где 3 компании выгрузить 3 базы Базовой версии...
20. Виктор Ермаков (TEENAGER1984) 13.08.15 18:11
В общем как я писал, так и получилось.
Описываю действия по моей задаче:
1) РИБ - "по организации" - выбираем орг. и делаем обмен.
2) Простой обработкой: "ПланыОбмена.УстановитьГлавныйУзел(Неопределено);" сменяем узел у периферийной базы.
3) Заходим в режим 1С: Предприятие, отказываемся от подключения к центральной базе.
4) Снимаем с поддержки
5) Загружаем базовую конфигурацию того же релиза сверх нашей ПРОФки.
6) Делаем ТИИ ну и обновляемся при необходимости.
Ссылка на мою публикацию по этой теме: http://infostart.ru/public/389081/
21. Капитан Немо (capitan) 17.08.15 12:52
(20) TEENAGER1984, есть такое свойство у справочников - создавать предопределенные элементы или нет.
Оно хранится в БД и от того что Вы накатили конфигурацию от базовой не поменяется.
СМ Ошибки в предопределённых элементах
Я точно такие же действия проводил и не прокатило.
Разве что 1С сейчас на уровне платформы что то исправило.
У Вас не вылезают ошибки только потому что еще мало обновлений прошло.
22. Алексей Максимов (megaalex) 21.08.15 09:50
Получается, что если мы делаем главную из подчиненной, то волноваться о предопределенных элементах до того, как получим сообщение об их отсутствии не стоит, а вот если получим, то решаем как описано в публикации про ошибки в предопределенных элементах. А если совсем не терпится, то можно и обработку сделать, которая проверяла бы новую главную базу и правила бы это свойство. На мой взгляд количество танцев с бубном при методе, описанном автором больше, чем при выделении через РИБ. Хотя поживем- увидим, я три базы отпочковал через РИБ, обновлений прошло не много, пока была только проблема с доступностью, отчетов по из-за константы ОбщаяДляЮридическихЛиц(уплачивается налог на прибыль). В остальном полет нормальный.
23. Александр (garipp) 18.09.15 22:55
Скачал обе. Убился не прикручиваются. Что то в платформе может быть. Поставил августовскую платформу из за падения обновления ЗИК (под 8.2.19) поменял платформу все проскочило. Теперь обработки не встают. Причем любые в моем наборе не только Ваши...
Платформа: 1С:Предприятие 8.3 (8.3.6.2152)
Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.40.40) (http://v8.1c.ru/buhv8/)
Copyright (С) ООО "1C", 2009 - 2015. Все права защищены
(http://www.1c.ru)
Режим: Серверный (сжатие: усиленное)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский
Вариант интерфейса: Такси
24. Ольга Антонова (Enerjaizer) 12.11.15 07:35
Спасибо за обработку! Все получилось, только использовала Удаление помеченных объектов штатную.
25. Александр (garipp) 28.07.16 23:22
Оказывается второй раз качаю. Снова попал. Не прикручивается к бухии хоть убей. Первый раз пытался в 2015 году. И снова попал. Уже с современной платформой и последней версией БП.

Гадость.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа