Задача: в информационной базе (Бухгалтерия для Украины 2.0) ведется несколько предприятий. Принято решение разделить их и вести учет отдельно. Необходимо вынести одно предприятие в отдельную базу для продолжения работы в ней.
Для решения этой задачи есть несколько методов.
Метод 1. Разделение бухгалтерской базы по предприятиям с помощью РИБ
В примере рассматривается конфигурация "Бухгалтерия для Украины 2.0". Однако, полагаю, данное решение подойдет к большинству современных конфигураций на базе управляемого приложения.
Включаем синхронизацию данных
Для этого переходим в раздел "Администрирование" -> "Настройки синхронизации данных":
Добавляем распределенную информационную базу (РИБ)
Добавляем синхронизацию данных "Распределенная информационная база с фильтром по организации":
На следующем шаге указываем любой каталог:
Пропустив настройку FTP и e-mail переходим к указанию одной или нескольких организаций, которые мы будем переносить. Обязательно указываем префикс инфобазы.
Пропускаем страницу настроек и переходим к созданию образа РИБ:
Указываем каталог, в котором будет создана новая информационная база (в примере D:\tmp\Бух20-риб\):
После создания образа выйдет такое сообщение:
После чего в исходной базе необходимо удалить только что созданный элемент плана обмена и, при необходимости, отключить синхронизацию вообще.
Выполняем отключение главного узла в новой базе
Свежесозданная БД заблокирована средствами управления распределенной ИБ. Если мы планируем пользоваться новой базой как отдельной, а не распределенной, необходимо провести отключение от главного узла.
После первого старта новой базы запускается окно настройки синхронизации. Нажмем "Отмена" и "Да" и настройки синхронизации БД заполнятся по-умолчанию:
Для непосредственного отключения главного узла нам необходимо запустить конфигуратор с ключом "/ResetMasterNode". Проще всего это сделать с помощью параметра "Дополнительные параметры запуска" при добавлении информационной базы. Прописывам этот ключ и запускаем один раз конфигуратор (он отработает и закроется без каких-либо окон и сообщений), после чего для дальнейшей работы ключ запуска необходимо удалить.
Если далее просто запустить базу и согласиться на отключение от главного узла, мы получим ошибку (касается редакции Бухгалтерия для Украины 2.0.13.1 и, вероятно, некоторых других):
Платформа: 1С:Предприятие 8.3 (8.3.12.1790)
Конфигурация: Бухгалтерия для Украины, редакция 2.0. (2.0.13.1) (http://1c.ua/v8/RegionalSolutions_UA_BUH.php)
Copyright © Molenari OU, 2017-2018. All rights reserved
Режим: Файловый (без сжатия)
Приложение: Тонкий клиент
Локализация: Информационная база: украинский (Украина), Сеанс: русский (Россия)
Вариант интерфейса: Такси
Ошибки:
--------------------------------------------------------------------------------
15.02.2019 15:53:52
У пользователя недостаточно прав на исполнение операции над базой данных.
объект: 'Справочник.ПараметрыСинхронизацииV77'; право: 'Удаление'
Таблица: 'RefSInf9672', SDBL-команда: 'DELETE'.
Чтобы избежать ее, необходимо добавить право "Удаление" справочника "ПараметрыСинхронизацииV77" для роли "Полные права". Для этого включаем возможность изменения в базе:
И добавляем нужно нам право:
Применив изменения, запускаем нашу информационную базу и подтверждаем отключение от главного узла:
Далее следуем рекомендациям сайта ИТС:
Константа "Настройка подчиненного узла РИБ завершена" - флаг должен быть снят
Константа "Это автономное рабочее место" - флаг должен быть снят.
Удаляем запись плана обмена, соответствующую главному узлу распределенной информационной базы и отключаем синхронизацию данных в панели администрирования (шаг 1).
Очистка от лишних данных
В записях регистов и справочников осталось множество "лишних" данных. Например, в справочнике "Контрагенты" есть "битые" ссылки на несуществующие договоры (остались от прошлой организации):
Для устранения необходимо запустить Тестирование и исправление информационной базы из под конфигуратора с указанием настройки "Очищать ссылки":
Проверка
Для проверки корректности переноса сформируем ОСВ в базе-источнике и базе-приемнике и убедимся что они сходятся:
Плюсы и минусы разделения с помощью РИБ
К плюсам переноса с помощью РИБ можно отнести высокую скорость и относительную простоту процесса.
Минусы: элементы справочников переносятся не все присутсвующие в БД, а только те что используются в документах по организации. Для примера, можно привести справочник "Контрагенты":
Метод 2. Разделения по организациям с помощью инструментов разработчика
Принцип разделения прост: берем копию базы, помечаем на удаление не нужные организации и удаляем все документы и элементы справочников, которые на них ссылаются. Для этого в панели "Инструменты разработчика" есть удобный инструмент "Удаление объектов с контролем ссылок".
Подготовка базы
Сначала сделаем копию нашей базы. Для работы будем использовать портативную версию инструментов разработчиков. Необходимо отключить "Защиту от опасных действий" в настройках пользователя в конфигураторе:
Также для корректной работы необходимо установить русский язык интерфейса пользователю, под которым будет производится "обрезка" базы.
Удаление "лишних" организаций
Открываем обработку инструменты разработчика портативный и запускаем обычное приложение (панель инструментов работает только в этом режиме):
Помечаем "лишние" организации на удаление:
В панели разработчика запускаем инструмент "Удаление объектов с контролем ссылок" и указываем что планируем работать со справочником "Организации":
В верхней табличной части "Кандидаты" появятся 3 организации, помеченные на удаление. С помощью кнопки "Контроль" производится поиск ссылок на каждый из кандидатов. При желании, можно сразу удалить элементы, которые ссылаются на кандидата (если, конечно, на него нет других ссылок в БД).
После первого контроля нижняя табличная часть заполнится ссылками на объекты, которые ссылаются на кандидата. С помощью переключателя режима отбора "По кандидату", включается либо режим отображения в нижней ТЧ ссылок только на текущего кандидата, либо же на всех кандидатов.
В качестве первого шага, необходимо добавить все элементы, ссылающиеся на наших кандидатов, в список кандидатов на удаление. Для этого уберем отбор "По кандидату", выделим все элементы нижней таб. части (Ctrl+A), нажмем "В кандидаты". От пометки удаления лучше отказаться (при ошибке установки пометки удаления процесс будет прекращен).
Теперь можно запускать "Контроль" с удалением элементов, которые можно удалить. Дальнейшие проблемы удаления связанных элементов рассматриваем в ручном режиме. Всегда можно посмотреть кто ссылается на элемент, установив отбор "По кандидату".
Банковские счета
Удалить банковский счет по организации "Добро" мешают 4 ссылки на приходные кассовые ордера:
Каждый из них можно открыть и просмотреть с помощью двойного клика на колонку "Объект":
Как ни странно, но документ организации "Пилот" визуально не содержит ссылок на р/сч организации "Добро". Для поиска ссылки воспользуемся еще одним удобным инструментом "Редактор объекта БД", который можно вызвать с помощью кнопки "Редактировать". По клику открывается окно редактора объекта БД и в нём подсвечивается найденная ссылка.
Удивительно, но в документе в реквизите "Счет организации" действительно пристутствует ссылка на р/сч организации "Добро". Такое, зачастую, случается когда пользователи копируют документ, меняют в нем вид операции и организацию. Поскольку документов у нас не много, откроем каждый из них и вручную очистим реквизит "Счет организации". Теперь после нажатия кнопки "Контроль" эти документы пропадут из списка препятствующих удалению.
Подразделения организаций
На помеченные к удалению подразделения организаций присутствует множество ссылок справочника "Способы отражения расходов по амортизации", на которые, в свою очередь, ссылаются элементы справочника "Назначения использования". В нашей задаче все препятствующие удалению элементы справочника "Назначения использования" необходимо добавить в кандидаты к удалению. Для этого выделим любой элемент из нижней таб. части в колонке "Метаданные объекта" и применим команду "Отбор по значению в текущей колонке", после чего кнопку "В кандидаты".
Справочник "Файлы"
У организации "Добро" в БД присутствуют 2 хранимых файла. Эти файлы присутствуют в кандидатах на удаление, но на них ссылаются элементы справочника "Версии файлов". Попробуем открыть элемент справочника и пометить его на удаление вручную (это также можно сделать через добавление в кандидаты с установкой пометки удаления):
В событии "Перед записью" срабатывает триггер, который запрещает установку пометки удаления. В нашем случае, мы уверены, что файлы сторонней организации нам не нужны, поэтому элементы справочника можно удалить "грубо", т. е. без контроля ссылочной целостности. Для этого есть специальная команда в инструменте "Редактор объекта БД":
Контрагенты
У контрагентов есть реквизит "Основной договор", который ссылается на договор с одной из удаляемых организаций. Следовательно, необходимо очистить ссылку на основной договор у таких контрагентов. Для этого наиболее удобным будет инструмент "Консоль запросов". В нем мы можем задать запрос к БД и на вкладке "Обработка строки результата" указать программный код, который будет выполнен для каждой полученной строки результата запроса.
В качестве запроса для нас будет оптимально найти контрагентов, у которых реквизит "Организация" основного договора помечена на удаление.
Для каждого найденного контрагента будет применен следующий код:
Объект = СтрокаРезультата.Ссылка.ПолучитьОбъект();
// Обработка объекта
Объект.ОсновнойДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
//Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
Документ "Установка цен номенклатуры"
В списке документов, препятсвующих удалению, присутствует "Установка цен номенклатуры". С помощью редактора объекта БД найден ссылку на организацию:
Ссылка на организацию "ПП Петренко" присутствует в последовательности "Документы организаций". Инструмент "Редактор объекта БД" позволяет редактировать не только реквизиты объекта, но и движения документа. Удалим движение и запишем объект помощью кнопки "Записать движения".
Справочник "Зарплатные проекты"
На зарплатные проекты ссылаются элементы регистра сведений "Лицевые счета сотрудников по зарплатным проектам":
Проще всего в нашем случае будет зайти в форму списка этого регистра сведений, выделить все записи и удалить их:
Другие ссылки на регистры сведений
Другие ссылки на регистры сведений лучше всего будет добавить в список неблокирующих, чтобы они не препятствовали удалению. В дальнейшем, при тестировании и исправлении БД, эти ссылки будут очищены.
Тестирование и исправление БД
После нажатия кнопки "Контроль" все помеченные организации будут удалены. Пора провести тестирование и исправление информационной базы с пометкой "Очищать ссылки":
Плюсы и минусы разделения с помощью инструментов разработчика
Плюсы:
- Полный контроль над процессом;
- Справочники номенклатура, контрагенты и пр. полностью перенесены.
Минусы:
- Полуручная работа;
- Требует программирования.