Разделение базы по организациям: Бухгалтерия для Украины 2.0

Задача: в информационной базе (Бухгалтерия для Украины 2.0) ведется несколько предприятий. Принято решение разделить их и вести учет отдельно. Необходимо вынести одно предприятие в отдельную базу для продолжения работы в ней. 

Для решения этой задачи есть несколько методов.

Метод 1. Разделение бухгалтерской базы по предприятиям с помощью РИБ

В примере рассматривается конфигурация "Бухгалтерия для Украины 2.0". Однако, полагаю, данное решение подойдет к большинству современных конфигураций на базе управляемого приложения.

Включаем синхронизацию данных

Для этого переходим в раздел "Администрирование" -> "Настройки синхронизации данных":

Настройка синхронизации данных

Добавляем распределенную информационную базу (РИБ)

Добавляем синхронизацию данных "Распределенная информационная база с фильтром по организации":

Распределенная информационная база с фильтром по организации

На следующем шаге указываем любой каталог:

Каталог для синхронизации файлов (использоваться не будет)

Пропустив настройку FTP и e-mail переходим к указанию одной или нескольких организаций, которые мы будем переносить. Обязательно указываем префикс инфобазы.

Выбор организаций для переноса

Пропускаем страницу настроек и переходим к созданию образа РИБ:

Начало создания образа РИБ

Указываем каталог, в котором будет создана новая информационная база (в примере D:\tmp\Бух20-риб\):

Указываем каталог для создания инфобазы

После создания образа выйдет такое сообщение:

8.png

После чего в исходной базе необходимо удалить только что созданный элемент плана обмена и, при необходимости, отключить синхронизацию вообще.

Выполняем отключение главного узла в новой базе

Свежесозданная БД заблокирована средствами управления распределенной ИБ. Если мы планируем пользоваться новой базой как отдельной, а не распределенной, необходимо провести отключение от главного узла.

10.png

После первого старта новой базы запускается окно настройки синхронизации. Нажмем "Отмена" и "Да" и настройки синхронизации БД заполнятся по-умолчанию:

Настройка синхронизации по организации

Для непосредственного отключения главного узла нам необходимо запустить конфигуратор с ключом "/ResetMasterNode". Проще всего это сделать с помощью параметра "Дополнительные параметры запуска" при добавлении информационной базы. Прописывам этот ключ и запускаем один раз конфигуратор (он отработает и закроется без каких-либо окон и сообщений), после чего для дальнейшей работы ключ запуска необходимо удалить.

Дополнительный параметр запуска "/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" для роли "Полные права". Для этого включаем возможность изменения в базе:

Включаем возможность изменения в инфобазе

И добавляем нужно нам право:

Право удаления справочника "ПараметрыСинхронизацииV77" для роли "Полные права"

Применив изменения, запускаем нашу информационную базу и подтверждаем отключение от главного узла:

Подтвержаем отключение от главного узла

Далее следуем рекомендациям сайта ИТС:

Константа "Настройка подчиненного узла РИБ завершена" - флаг должен быть снят

Настройка подчиненного узла РИБ завершена

Константа "Это автономное рабочее место" - флаг должен быть снят.

Это автономное рабочее место

Удаляем запись плана обмена, соответствующую главному узлу распределенной информационной базы и отключаем синхронизацию данных в панели администрирования (шаг 1).

Удаляем запись плана обмена "По организации"

Очистка от лишних данных

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

Ссылка на несуществующий договор ("битая" ссылка)

Для устранения необходимо запустить Тестирование и исправление информационной базы из под конфигуратора с указанием настройки "Очищать ссылки":

Тестирование и исправление информационной базы

Проверка

Для проверки корректности переноса сформируем ОСВ в базе-источнике и базе-приемнике и убедимся что они сходятся:

ОСВ сходится

Плюсы и минусы разделения с помощью РИБ

К плюсам переноса с помощью РИБ можно отнести высокую скорость и относительную простоту процесса.

Минусы: элементы справочников переносятся не все присутсвующие в БД, а только те что используются в документах по организации. Для примера, можно привести справочник "Контрагенты":

Справочник "Контрагенты" отличается в первой и второй базах

Метод 2. Разделения по организациям с помощью инструментов разработчика

Принцип разделения прост: берем копию базы, помечаем на удаление не нужные организации и удаляем все документы и элементы справочников, которые на них ссылаются. Для этого в панели "Инструменты разработчика" есть удобный инструмент "Удаление объектов с контролем ссылок".

Подготовка базы

Сначала сделаем копию нашей базы. Для работы будем использовать портативную версию инструментов разработчиков. Необходимо отключить "Защиту от опасных действий" в настройках пользователя в конфигураторе:

Отключаем флаг "Защита от опасных действий"

Также для корректной работы необходимо установить русский язык интерфейса пользователю, под которым будет производится "обрезка" базы.

Устанавливаем русский язык интерфейса в программе

Удаление "лишних" организаций

Открываем обработку инструменты разработчика портативный и запускаем обычное приложение (панель инструментов работает только в этом режиме):

Инструменты разработчика портативные

Помечаем "лишние" организации на удаление:

Помечаем лишние организации на удаление

В панели разработчика запускаем инструмент "Удаление объектов с контролем ссылок" и указываем что планируем работать со справочником "Организации":

Выбираем объект метаданных "Организации"

В верхней табличной части "Кандидаты" появятся 3 организации, помеченные на удаление. С помощью кнопки "Контроль" производится поиск ссылок на каждый из кандидатов. При желании, можно сразу удалить элементы, которые ссылаются на кандидата (если, конечно, на него нет других ссылок в БД).

После первого контроля нижняя табличная часть заполнится ссылками на объекты, которые ссылаются на кандидата. С помощью переключателя режима отбора "По кандидату", включается либо режим отображения в нижней ТЧ ссылок только на текущего кандидата, либо же на всех кандидатов. 

В качестве первого шага, необходимо добавить все элементы, ссылающиеся на наших кандидатов, в список кандидатов на удаление. Для этого уберем отбор "По кандидату", выделим все элементы нижней таб. части (Ctrl+A), нажмем "В кандидаты". От пометки удаления лучше отказаться (при ошибке установки пометки удаления процесс будет прекращен).

Удаляем документы по организациям

Теперь можно запускать "Контроль" с удалением элементов, которые можно удалить. Дальнейшие проблемы удаления связанных элементов рассматриваем в ручном режиме. Всегда можно посмотреть кто ссылается на элемент, установив отбор "По кандидату".

Банковские счета

Удалить банковский счет по организации "Добро" мешают 4 ссылки на приходные кассовые ордера:

Ссылки на банковский счет организации "Добро"

Каждый из них можно открыть и просмотреть с помощью двойного клика на колонку "Объект":

ПКО организации "Пилот"

Как ни странно, но документ организации "Пилот" визуально не содержит ссылок на р/сч организации "Добро". Для поиска ссылки воспользуемся еще одним удобным инструментом "Редактор объекта БД", который можно вызвать с помощью кнопки "Редактировать". По клику открывается окно редактора объекта БД и в нём подсвечивается найденная ссылка.

Инструмент разработчика "Редактор объекта БД"

Удивительно, но в документе в реквизите "Счет организации" действительно пристутствует ссылка на р/сч организации "Добро". Такое, зачастую, случается когда пользователи копируют документ, меняют в нем вид операции и организацию. Поскольку документов у нас не много, откроем каждый из них и вручную очистим реквизит "Счет организации". Теперь после нажатия кнопки "Контроль" эти документы пропадут из списка препятствующих удалению.

Подразделения организаций

На помеченные к удалению подразделения организаций присутствует множество ссылок справочника "Способы отражения расходов по амортизации", на которые, в свою очередь, ссылаются элементы справочника "Назначения использования". В нашей задаче все препятствующие удалению элементы справочника "Назначения использования" необходимо добавить в кандидаты к удалению. Для этого выделим любой элемент из нижней таб. части в колонке "Метаданные объекта" и применим команду "Отбор по значению в текущей колонке", после чего кнопку "В кандидаты".

Команда "Отбор по значению в текущей колонке"

Справочник "Файлы"

У организации "Добро" в БД присутствуют 2 хранимых файла. Эти файлы присутствуют в кандидатах на удаление, но на них ссылаются элементы справочника "Версии файлов". Попробуем открыть элемент справочника и пометить его на удаление вручную (это также можно сделать через добавление в кандидаты с установкой пометки удаления):

Элемент справочника "Версии файлов"

В событии "Перед записью" срабатывает триггер, который запрещает установку пометки удаления. В нашем случае, мы уверены, что файлы сторонней организации нам не нужны, поэтому элементы справочника можно удалить "грубо", т. е. без контроля ссылочной целостности. Для этого есть специальная команда в инструменте "Редактор объекта БД":

Удаление элемента справочника "Версии файлов"

Контрагенты

У контрагентов есть реквизит "Основной договор", который ссылается на договор с одной из удаляемых организаций. Следовательно, необходимо очистить ссылку на основной договор у таких контрагентов. Для этого наиболее удобным будет инструмент "Консоль запросов". В нем мы можем задать запрос к БД и на вкладке "Обработка строки результата" указать программный код, который будет выполнен для каждой полученной строки результата запроса.

В качестве запроса для нас будет оптимально найти контрагентов, у которых реквизит "Организация" основного договора помечена на удаление.

Инструмент "Консоль запросов"

Для каждого найденного контрагента будет применен следующий код:

Объект = СтрокаРезультата.Ссылка.ПолучитьОбъект();

// Обработка объекта
Объект.ОсновнойДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();

//Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();

Документ "Установка цен номенклатуры"

В списке документов, препятсвующих удалению, присутствует "Установка цен номенклатуры". С помощью редактора объекта БД найден ссылку на организацию:

Движения документа "Установка цен номенклатуры"

Ссылка на организацию "ПП Петренко" присутствует в последовательности "Документы организаций". Инструмент "Редактор объекта БД" позволяет редактировать не только реквизиты объекта, но и движения документа. Удалим движение и запишем объект помощью кнопки "Записать движения".

Справочник "Зарплатные проекты"

На зарплатные проекты ссылаются элементы регистра сведений "Лицевые счета сотрудников по зарплатным проектам":

Ссылки на зарплатный проект из регистра сведений

Проще всего в нашем случае будет зайти в форму списка этого регистра сведений, выделить все записи и удалить их:

Очистка регистра сведений "Лицевые счета сотрудников"

Другие ссылки на регистры сведений

Другие ссылки на регистры сведений лучше всего будет добавить в список неблокирующих, чтобы они не препятствовали удалению. В дальнейшем, при тестировании и исправлении БД, эти ссылки будут очищены.

Добавление ссылки в список "Не блокирующих"

Тестирование и исправление БД

После нажатия кнопки "Контроль" все помеченные организации будут удалены. Пора провести тестирование и исправление информационной базы с пометкой "Очищать ссылки":

Тестирование и исправление БД

Плюсы и минусы разделения с помощью инструментов разработчика

Плюсы:

  1. Полный контроль над процессом;
  2. Справочники номенклатура, контрагенты и пр. полностью перенесены.

Минусы:

  1. Полуручная работа;
  2. Требует программирования.

Похожие материалы

Комментарии