Как всегда, Новый Год приносит всем, кто связан с бухгалтерией, сюрпризы. И не все они приятные.
Учет по 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.
- Удаление успешно завершилось, переходим к следующему этапу — перепроведение документов, сверка с «непиленой» базой, поиск ошибок. У меня все кончилось благополучно, т.к. до «Распила» база регулярно перепроводилась, и почти все операции отражались документами в соответствии с рекомендациями ИТС.
- Конфигуратор — Тестирование исправление — ставим галку «Сжатие таблиц информационной базы». Ждем, когда все ранее удаленные записи физически удалятся.
- Всё!







А чем вариант с РИБ не устроил? Настраиваем РИБ. Выгружаем подчинённый узел с отбором по юр лицу. Обработкой у подчинённого узла сбрасываем признак РИБ. И работаем. В 2.0 работало.
(1) TODD22,
Спасибо за идею!
Как — то не догадался, в следующий раз обязательно попробую!
(2)
Как — то не догадался, в следующий раз обязательно попробую!
Времени бы сэкономили 🙂 В 2.0 процесс выделения организации в свою базу занимал не более получаса 🙂 По сути время создания узла.
(3) TODD22,
Не факт что намного быстрее, во — первых размер базы тоже что — то значит.
Во вторых, при обмене/выгрузке тоже иногда ловятся разные «тараканы». Особенно, когда в базе есть какие — то не стыковки.
А после 2-х лет активной работы не стыковки будут обязательно. И именно на борьбу с ними было убито основное количество времени. А также на контрольное перепроведение всех баз после «Распила».
В третьих, когда нужно выделить одну организацию из например 5, как подсказывает интуиция самым быстрым будет комбинация моего и Вашего вариантов. Выгружаем данные по одной организации через РИБ и потом удаляем ее в основной базе.
А зачем удалять в основной?
Создайте ещё один узел и выгрузите в него 4 другие организации и будет вам счастье 🙂
Любопытство победило, решил попробовать…
Из первых впечатлений. Процедуры «Тестирование и исправление», а также «Запускаем обработку «ОчисткаРегистровОтБитыхСсылок» уже были выполнены», как и выгрузка в файловую базу. Дальнейшие действия:
-Создал узел обмена через Администрирование — настройки синхронизации.
-Выгрузка по одной организации — около 40 минут, т.е. гораздо быстрее.
-Зашел в конфигуратор, создал пользователя, дал ему абсолютно все права, т.к. иначе вылетала ошибка при запуске 1с.
-Создал обработку из 1 строки — ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
-Запустился в режиме 1с предприятие, и ответил на вопрос на восстановление связи с главным узлом: Отключить, затем на вопрос о легальности приобретения обновлений.
-Подождал минут 5, пока шло заполнение начальных настроек.
-База запустилась, зашел в администрирование — Настройки синхронизации, убрал префикс и галочку»Синхронизация данных».
-Вроде все! На выделение одной базы ушло около часа (точно не замерял, занимался другим), т.е. в три с лишним раза быстрее!
из минусов (на первый взгляд):
-в РС Счета учета номенклатуры — нет ни одной записи с заполненной организацией, придется разбираться.
-Пользователи не перенеслись, возможно, что — то надо было сделать еще.
-«Улетела» дата актуальности закрытия месяца на самый первый документ. В предыдущем варианте «Распила» перепроводил только 2014 год — тут надо 2013 перепроводить.
дальше не ковырялся, перепроведение тоже пока делать некогда, т.к. 2013 у меня с налету не пререпроводится, по причине нескольких корректировок, а также изменения 1с -никами некоторых алгоритмов учета. Т.е. надо либо разбираться с переносом даты актуальности (кстати самому интересно), либо сидеть и перепроводить документы. В общем случае это времени займет тоже немало.
Так что мои обработки носят не только чисто научный интерес.
(5) TODD22,
2013 у меня не перепроводится «так просто» и в оригинальной базе.
(7) Зачем вам перепроводить 2013? Надо двигать дату актуальности. В БП есть регистр сведений(забыл как называется, а базы нет под рукой) в котором нужно почистить не актуальные операции. И всё дальше должно пойти.
Тут на мисте как раз обсуждение идёт на тему «Бухгалтер решила оприходовать товар в 2010 году» и то что на улице давно уже 2015 её не смущает 🙂
TODD22, с РИБ конечно интересный вариант, но глюков там отхватить можно достаточно.
Не сталкивался с РИБ на ЗУП 3.0 но вот на БП 3.0 гемора много, при условие что учёт вёлся не совсем правильно. В основном гемор что не всё до конца догрузилось в перефирийные узлы, есть битые ссылки или наоборот много лишнего нагрузилось.
Короче времени уж точно не сэкономить. Поэтому качественнее удалить из базы.
(9) Vextel,
Абсолютно точно! Главное, у меня обмен с УТ 11 не пережил опыта с РИБ.
Я просто не смог дождаться, когда пройдет обмен… На копии, конечно.
Оставлял на выходные, сегодня с утра прибил, т.к. сервер тормозит.
Т.е. я так и не дождался окончания выгрузки из УТ.
Судя по симптомам, что — то решило серьезно за двоиться…
А вариант с удалением — как ни странно, работает нормально.
Главбух удалила помеченные на удаления документы поступления нетиповой обработкай в БП 3.0. Появились битых ссылки на эти партий по 41 счету. Я начинающий 1с-ник, раньше с такой проблемой не сталкивался. Подскажите, пожалуйста, можно воспользоваться вашими обработками в моей ситуации или может быть существует другой способ? Спасибо.
Для наглядности прикрепил файлик. Дайте пожалуйста совет.
все сработало, но пришлось много править документы, где-то в них остались «хвосты при смене организации… Но все завершилось успешно
(12) Vadim75,
C регистрами накоплений все проще. Тестирование исправление ИБ в Конфигураторе. Обязательно с параметром при наличии ссылок на несуществующие объекты — создавать ссылки. Либо руками — на Инфостарте есть много обработок создания по GUID объектов, даже сам когда — то выкладывал. Но руками как правило слишком долго.
И не забываем делать копию перед опытами! Как показывает практика, в таких случаях лучше (надежнее) копированием файла ИБ или средствами SQL при серверной базе.
помогло, полезная вещь. некоторые документы и регистры сведений все же пришлось грохать вручную
(1) TODD22,
на 2.0 отлично работало, а на 3.0 вылезли грабли:
отпочковал -> отключил главный -> дал права пользователю на все -> запустил -> сказал что не хочу восстанавливать связь с главным ->и радостно дожил до отчетного периода, когда выяснилось что регламентные операции по НДС не формируются 🙁
где порылась собака ума не приложу
UPD: помогли добрые люди!!! константа ОбщаяДляЮридическихЛиц(уплачивается налог на прибыль) слетела!!! поставил и все ок
Спасибо за обработку! На 90% помогла удалить лишние организации.
(1) TODD22, в 8.3 и соответственно редакции 3.0 при разделении таким способом будут сюрпризы.
Если вкратце — предопределенные элементы справочников перестают создаваться в периферийной базе, т.к. ожидают прихода из центральной.
Если из периферийной базы сделать обособленную — это состояние сохраняется.
По крайней мере так было в начале года, может в новых релизах платформы поправили.
Т.е. база при обновлении конфигурации остается без предопределенных элементов справочников. Эту тему здесь уже курили.
А если я через РИБ выгружу организацию из ПРОФ версии в переферийку, затем сниму с поддержки и накачу Базовую конфигурацию, полагаю все что положено у меня будет, в том числе и предопределенные? Дело в том что мне надо из ПРОФ версии где 3 компании выгрузить 3 базы Базовой версии…
В общем как я писал, так и получилось.
Описываю действия по моей задаче:
1) РИБ — «по организации» — выбираем орг. и делаем обмен.
2) Простой обработкой: «ПланыОбмена.УстановитьГлавныйУзел(Неопределено);» сменяем узел у периферийной базы.
3) Заходим в режим 1С: Предприятие, отказываемся от подключения к центральной базе.
4) Снимаем с поддержки
5) Загружаем базовую конфигурацию того же релиза сверх нашей ПРОФки.
6) Делаем ТИИ ну и обновляемся при необходимости.
Ссылка на мою публикацию по этой теме:
(20) TEENAGER1984, есть такое свойство у справочников — создавать предопределенные элементы или нет.
Оно хранится в БД и от того что Вы накатили конфигурацию от базовой не поменяется.
СМ
Я точно такие же действия проводил и не прокатило.
Разве что 1С сейчас на уровне платформы что то исправило.
У Вас не вылезают ошибки только потому что еще мало обновлений прошло.
Получается, что если мы делаем главную из подчиненной, то волноваться о предопределенных элементах до того, как получим сообщение об их отсутствии не стоит, а вот если получим, то решаем как описано в публикации про ошибки в предопределенных элементах. А если совсем не терпится, то можно и обработку сделать, которая проверяла бы новую главную базу и правила бы это свойство. На мой взгляд количество танцев с бубном при методе, описанном автором больше, чем при выделении через РИБ. Хотя поживем- увидим, я три базы отпочковал через РИБ, обновлений прошло не много, пока была только проблема с доступностью, отчетов по из-за константы ОбщаяДляЮридическихЛиц(уплачивается налог на прибыль). В остальном полет нормальный.
Скачал обе. Убился не прикручиваются. Что то в платформе может быть. Поставил августовскую платформу из за падения обновления ЗИК (под 8.2.19) поменял платформу все проскочило. Теперь обработки не встают. Причем любые в моем наборе не только Ваши…
Платформа: 1С:Предприятие 8.3 (8.3.6.2152)
Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.40.40) (
Copyright (С) ООО «1C», 2009 — 2015. Все права защищены
(
Режим: Серверный (сжатие: усиленное)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский
Вариант интерфейса: Такси
Спасибо за обработку! Все получилось, только использовала Удаление помеченных объектов штатную.
Оказывается второй раз качаю. Снова попал. Не прикручивается к бухии хоть убей. Первый раз пытался в 2015 году. И снова попал. Уже с современной платформой и последней версией БП.
Гадость.
(25) у 1С в базах невозможно автоматически удалить все данные, связанные с организацией — в силу того, что невозможен просто удалить документы по результатам только поиска наличия у них поля «Организация» и его проверки.
Объекты могут и не содержать поле Организация, или в нем будет не удаляемая организация, или он может принадлежать к учету двух организаций (и вследствие чего не может быть удален), и т.д.
Поэтому удалять нужно всегда «вручную», аккуратно, по видам объектов (документов), следя за удаляемым содержимым и их принадлежности к учету организации.
1С-отчетность при методе удаления с применением РИБ, не переносится, так что ваш вариант имеет право на жизнь
Надо бы актуализировать! Основного договора то уже нет!
(27)
Жизнь меняется к лучшему. По крайней мере с релиза 3.0.70.33 уже переносится.
(4)
В третьих, когда нужно выделить одну организацию из например 5, как подсказывает интуиция самым быстрым будет комбинация моего и Вашего вариантов. Выгружаем данные по одной организации через РИБ и пото
на новых платформах обработка еще работает?