Распределенные информационные базы (РИБ) в 1С:Предприятии — мощный механизм для организации работы территориально распределенных подразделений или мобильных рабочих мест. Однако иногда возникает необходимость отвязать периферийный узел от основного, чтобы он начал функционировать как самостоятельная, независимая информационная база. Это может потребоваться при изменении структуры компании, переходе на другую схему обмена или просто для создания тестовой копии, которую не нужно синхронизировать с главной базой.
В этой статье мы подробно разберем, как выполнить отвязку периферийной базы от главного узла РИБ, используя программные методы и дополнительные настройки. Мы рассмотрим как основной метод с использованием кода, так и необходимые последующие действия, которые обеспечат стабильную и корректную работу отвязанной базы.
Ключевым шагом в процессе отвязки является программный сброс указания на главный узел для текущей информационной базы. В системе 1С:Предприятие это достигается вызовом статического метода глобального контекста ПланыОбмена.УстановитьГлавныйУзел() со значением Неопределено. Этот метод сообщает системе, что текущий узел больше не является подчиненным по отношению к какому-либо другому узлу.
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Метод ПланыОбмена.УстановитьГлавныйУзел(Неопределено); фактически очищает ссылку на родительский узел для текущей базы. После его выполнения ваша база перестанет считать себя подчиненной и не будет пытаться обмениваться данными с главным узлом. Это фундаментальный шаг, без которого все остальные действия по отвязке будут бессмысленны.
Для тех, кто не является опытным программистом 1С, наиболее удобным и безопасным способом выполнения вышеуказанного кода является создание простой внешней обработки. Мы пошагово разберем, как это сделать.
&НаКлиенте
Процедура ОтвязатьОтГлавного(Команда)
ОтвязатьОтГлавногоНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОтвязатьОтГлавногоНаСервере()
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
КонецПроцедуры
Мы используем клиент-серверное взаимодействие, вызывая серверную процедуру из клиентской, так как метод ПланыОбмена.УстановитьГлавныйУзел() должен выполняться на сервере (или в контексте тонкого клиента с полными правами при файловой базе).
Важный нюанс: Если при открытии обработки вы видите "пустой экран" или форма отображается некорректно, это часто происходит, если форма обработки была создана для обычного приложения, а вы пытаетесь открыть её в управляемом. Для данной задачи, если вы столкнулись с такой проблемой, можно попробовать запустить 1С в режиме обычного приложения (если конфигурация это поддерживает) или убедиться, что ваша форма в обработке создана как управляемая форма. Однако, для простой команды сброса узла, как правило, достаточно формы обычного приложения, открытой в соответствующем режиме. Простейшим решением является выполнение кода непосредственно в консоли запросов или через инструмент "Выполнить произвольный код" (если он доступен и у вас достаточно прав), или просто убедитесь, что вы создали именно управляемую форму для обработки, если ваша конфигурация работает в управляемом режиме.
Существует также способ отключения режима распределенной информационной базы с помощью параметра запуска конфигуратора. Этот метод может быть полезен, если по какой-либо причине не удается выполнить программный код через обработку.
Для использования этого метода вам потребуется запустить 1С:Предприятие из командной строки или через ярлык, добавив один из следующих параметров:
/ResetMasterNode: Этот параметр специально предназначен для сброса главного узла РИБ. Он выполняет ту же логику, что и программный вызов ПланыОбмена.УстановитьГлавныйУзел(Неопределено);./RunModeOrdinaryApplication: Этот параметр принудительно запускает конфигурацию в режиме обычного приложения. В этом режиме могут корректно отображаться обработки, предназначенные для обычных форм, что может быть полезно для выполнения кода, если стандартный управляемый режим вызывает проблемы с UI обработки.Как запустить с параметром:
"C:\Program Files\1cv8\8.3.18.1289\bin\1cv8.exe") добавьте параметры:
"C:\Program Files\1cv8\8.3.18.1289\bin\1cv8.exe" ENTERPRISE /F "C:\MyBases\MyRIB" /ResetMasterNode
/F "C:\MyBases\MyRIB" указывает путь к файловой базе данных. Если база серверная, используйте /S "Сервер1С\ИмяБазы".После запуска с параметром /ResetMasterNode, система автоматически выполнит сброс главного узла. Затем можно удалить этот параметр из ярлыка.
Простое выполнение команды сброса главного узла — это лишь половина дела. Для обеспечения полной и корректной работы отвязанной базы как самостоятельной, необходимо выполнить ряд дополнительных шагов по очистке служебных данных и проверке настроек. Эти действия особенно актуальны для современных конфигураций 1С.
После отвязки от главного узла, в базе могут оставаться ряд настроек, которые ранее регулировали ее поведение как подчиненного узла. Чтобы избежать потенциальных ошибок и конфликтов, рекомендуем использовать редактор констант и записей регистров, чтобы вручную проверить и скорректировать следующие параметры:
Для доступа к константам используйте обработку со списком всех констант и их значений или стандартное меню "Все функции".
После того, как база перестала быть подчиненной, запись о главном узле в плане обмена становится неактуальной. Чтобы полностью очистить следы РИБ и избежать потенциальных ошибок, необходимо удалить соответствующую запись плана обмена. Через меню "Все функции" -> "Планы обмена" найдите запись, которая соответствовала главному узлу распределенной информационной базы (обычно она имеет имя вашего основного узла), и удалите её.
При выполнении операций по отключению РИБ важно, чтобы у пользователя, под которым вы работаете, были полные права. Также может потребоваться временно снять галочку "Защита от опасных действий" для всех пользователей (если она включена в вашей конфигурации и мешает выполнению административных операций). Некоторые пользователи отмечают, что после нажатия на кнопку отключения РИБ могут "слететь" права у текущего пользователя, поэтому рекомендуется иметь как минимум двух пользователей с полными правами в базе.
Для абсолютной уверенности в том, что база полностью отвязана и готова к независимой работе, рассмотрим более глубокие шаги:
Неопределено, следует убедиться, что все ссылки на план обмена, связанные с бывшим главным узлом, были корректно очищены. Это может включать записи в регистрах сведений, константах, а также ссылочные данные, которые могли использоваться для определения текущего узла или настроек обмена. Некорректно очищенные ссылки могут приводить к ошибкам при дальнейшей работе с базой как с самостоятельной.
ПланыОбмена.УстановитьГлавныйУзел(Неопределено); является универсальным, конкретные конфигурации (например, УправлениеТорговлей 11, БухгалтерияПредприятия 3.0 и т.д.) могут иметь свои специфические константы, регистры или подсистемы, которые также требуют внимания при отвязке РИБ. Желательно изучить документацию или опыт других пользователей по конкретной конфигурации, если возникают проблемы.
В процессе отвязки могут возникнуть некоторые сложности, рассмотрим наиболее частые из них:
ПланыОбмена.УстановитьГлавныйУзел() относится к глобальному контексту и должен выполняться на сервере или в клиентском приложении с достаточными правами. Убедитесь, что ваш код выполняется в подходящем контексте (например, в серверной процедуре, как показано в примере обработки).&НаСервере).Следуя этим подробным инструкциям, вы сможете успешно отвязать периферийную базу 1С от главного узла РИБ и обеспечить ее стабильную работу как независимой информационной базы. Всегда помните о создании резервных копий перед началом любых серьезных административных операций.