Как перенести настройки пользователя в подчиненный узел РИБ

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

При работе с распределенными информационными базами (РИБ) в конфигурации 1С:Бухгалтерия предприятия 3.0 специалисты часто сталкиваются с проблемой: данные (документы, справочники) мигрируют исправно, а вот интерфейс и настройки форм в подчиненных узлах остаются «пустыми». Это создает значительные неудобства, когда сотрудникам из центрального офиса необходимо подключиться к базе филиала (например, через удаленный рабочий стол) и оперативно разобраться в данных, а привычные отчеты и формы там не настроены.

В этой статье мы подробно разберем, почему настройки не переносятся автоматически, где они хранятся в системе и какими способами можно доставить их в периферийную базу.

Почему настройки не мигрируют автоматически через РИБ

Проанализируем архитектуру платформы 1С:Предприятие 8.3. Большинство пользовательских настроек (расположение окон, видимость колонок, отборы в списках, настройки рабочего стола) хранятся не в привычных справочниках или регистрах, а в специальных системных хранилищах. Эти хранилища представляют собой внутренние таблицы базы данных, которые не являются объектами метаданных и, как следствие, не включены в планы обмена.

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

  1. ХранилищеОбщихНастроек — здесь лежат общие настройки интерфейса и служебные параметры.
  2. ХранилищеНастроекДанныхФорм — именно здесь хранятся изменения, которые пользователь внес через меню «Изменить форму» (видимость полей, порядок закладок).
  3. ХранилищеПользовательскихНастроекОтчетов — тут сохраняются варианты отборов и группировок для типовых отчетов.
  4. Справочник «Варианты отчетов» — используется в современных конфигурациях на базе БСП. Он может быть включен в обмен, но сами настройки внутри него часто хранятся в виде двоичных данных.

Способ 1. Создание подчиненного узла из копии базы

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

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

  1. Установить код нового узла в константах.
  2. Преобразовать базу в подчиненный узел программно (используя метод ПланыОбмена.УстановитьГлавныйУзел).
  3. Удалить лишние данные, которые не должны присутствовать в этом узле (например, документы по другим организациям), используя штатные средства или специализированные обработки.

Этот способ гарантирует 100% перенос интерфейса «как в центре» на момент создания, но он не подходит для оперативной передачи новых настроек в уже работающую базу.

Способ 2. Использование обработки «Выгрузка и загрузка данных XML»

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

Важное условие: Для того чтобы настройки «прижились», справочник Пользователи в обеих базах должен быть синхронизирован. Настройки в хранилищах жестко привязаны к GUID (уникальному идентификатору) пользователя. Если вы создали пользователя «Иванов» в центре и вручную создали «Иванов» в филиале — это разные объекты для системы, и настройки не подцепятся.

Алгоритм действий следующий:

  1. Запускаем в центральной базе обработку «Выгрузка и загрузка данных XML».
  2. В списке объектов для выгрузки находим системные таблицы. Они обычно располагаются в самом конце списка. Нам интересны:
    • ХранилищеОбщихНастроек
    • ХранилищеНастроекДанныхФорм
    • ХранилищеПользовательскихНастроекОтчетов
  3. Настраиваем отбор по полю Пользователь, чтобы не выгружать лишний объем данных.
  4. Формируем файл выгрузки и загружаем его в подчиненном узле аналогичной обработкой.

Способ 3. Перенос через встроенный механизм БП 3.0

В конфигурации «Бухгалтерия предприятия 3.0» предусмотрен штатный механизм копирования настроек. Рассмотрим подробнее, как его использовать:

  1. Переходим в раздел Администрирование — Настройки пользователей и прав.
  2. Выбираем гиперссылку Копирование настроек.
  3. Выбираем «Донора» (пользователя, чьи настройки идеальны) и список «Получателей».

Однако помните: этот инструмент работает локально внутри одной базы. Чтобы передать результат в филиал, можно сначала скопировать настройки техническому пользователю, который гарантированно мигрирует через РИБ (если у вас настроен программный перенос хранилищ), либо использовать этот инструмент уже внутри подчиненного узла после того, как вы создали там нужных пользователей.

Способ 4. Программная автоматизация обмена настройками

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

Посмотрим на пример логики, которую можно реализовать в модуле сеанса или в подписке на событие при сохранении настроек:


// Пример упрощенной логики сохранения настройки в промежуточный регистр
Процедура ПриСохраненииНастройкиВХранилище(ИмяХранилища, КлючОбъекта, КлючНастроек, Настройка, Пользователь)
    // Сериализуем настройку в XML для хранения в регистре
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Настройка);
    СтрокаНастроек = ЗаписьXML.Закрыть();
    
    // Записываем в регистр, который участвует в обмене РИБ
    МенеджерЗаписи = РегистрыСведений.УдаленныйПереносНастроек.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Пользователь = Пользователь;
    МенеджерЗаписи.КлючОбъекта = КлючОбъекта;
    МенеджерЗаписи.ДанныеНастроек = СтрокаНастроек;
    МенеджерЗаписи.Записать();
КонецПроцедуры

В подчиненном узле необходимо создать регламентное задание или обработчик ожидания, который будет считывать данные из этого регистра и записывать их в локальное хранилище методом ХранилищеОбщихНастроек.Сохранить(). Таким образом, настройки будут «прилетать» вместе с обычным обменом данными.

Особенности переноса «Избранного»

Выясним причину, по которой список «Избранного» (желтая звездочка в интерфейсе) перенести сложнее всего. В файловых версиях 1С эти данные часто хранятся в профиле пользователя операционной системы в файле v8_ib_t.sl. Для клиент-серверных версий они находятся в базе, но доступ к ним через встроенный язык ограничен. Наилучшим способом переноса «Избранного» остается полное копирование папки настроек пользователя 1С (из %AppData%\1C\1cv8\) из одного терминального сеанса в другой, если пользователи работают в одинаковом окружении.

Резюме

Подведем итоги. Если вам нужно разово настроить рабочие места в магазине или филиале:

  1. Убедитесь, что GUID пользователей в центре и в подчиненном узле совпадают (переносите их только обменом, не создавайте вручную).
  2. Используйте обработку «Выгрузка и загрузка данных XML» для переноса системных хранилищ настроек.
  3. Для переноса вариантов отчетов используйте штатную выгрузку в файл через кнопку «Еще» в форме настроек отчета, а затем загрузку в подчиненном узле.

Такой комплексный подход позволит вам избежать «джунглей» в интерфейсе и обеспечит комфортную работу бухгалтеров и аналитиков в любом узле распределенной информационной системы.

← На главную