Как перенести пользовательские настройки интерфейса между базами 1С:Управление торговлей 11?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Почему настройки не переносятся обычным копированием данных?

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

  1. ХранилищеСистемныхНастроек — здесь платформа сохраняет настройки форм: видимость и порядок колонок, ширину окон, состояние панелей.
  2. ХранилищеОбщихНастроек — используется для хранения общих параметров, таких как настройки печатных форм или общие списки.
  3. ХранилищеНастроекДанныхФорм — отвечает за значения, которые пользователь вводил в формы (например, последние выбранные фильтры).
  4. ХранилищеВариантовОтчетов — хранит созданные пользователями персональные варианты отчетов.

Главная сложность заключается в том, что все эти записи жестко привязаны к Уникальному Идентификатору (UUID) пользователя. Если в новой базе вы создали пользователей вручную с теми же именами, их UUID будут отличаться от старой базы. В результате настройки, перенесенные простым XML-обменом, «не увидят» своих владельцев.

Способ 1. Использование встроенных механизмов БСП

Конфигурация УТ 11.4 построена на базе Библиотеки стандартных подсистем (БСП). Разберем, как можно использовать штатные возможности для решения нашей задачи. Если пользователи в новой базе уже созданы и сопоставлены, мы можем воспользоваться механизмом копирования настроек.

Перейдем в раздел Администрирование — Настройки пользователей и прав — Персональные настройки пользователей — Копирование настроек. Этот инструмент позволяет передать настройки от одного пользователя другому. Однако он работает внутри одной базы. Для переноса между базами часто требуется специализированная обработка «Выгрузка и загрузка настроек пользователей», которая входит в состав инструментов разработчика БСП. Она позволяет выгрузить данные в файл и загрузить их, сопоставляя пользователей по именам, а не по внутренним идентификаторам.

Способ 2. Программный перенос через ХранилищеСистемныхНастроек

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

Рассмотрим пример кода, который демонстрирует принцип получения настроек из хранилища:


// Пример получения списка всех системных настроек для пользователя
Выборка = ХранилищеСистемныхНастроек.Выбрать(ПользовательСсылка);

Пока Выборка.Следующий() Цикл
    КлючОбъекта = Выборка.КлючОбъекта;
    КлючНастройки = Выборка.КлючНастройки;
    ЗначениеНастройки = Выборка.Значение;
    ПользовательИмя = Выборка.Пользователь;
    
    // Здесь можно реализовать логику записи в файл или напрямую в другую базу через COM
КонецЦикла;

Для записи настроек в целевой базе используется метод Сохранить(). Проанализируем пример записи:


// Запись настройки для конкретного пользователя в новой базе
ХранилищеСистемныхНастроек.Сохранить(
    "Общее/НастройкиФормы/Справочник_Номенклатура_ФормаСписка", 
    "", 
    СтруктураНастроек, 
    , 
    ИмяНовогоПользователя
);

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

Способ 3. Перенос вариантов отчетов

Варианты отчетов — это самая ценная часть пользовательских настроек. В отличие от положения окон, их можно перенести полуавтоматически. Разберем по шагам, как это сделать без программирования:

  1. Откройте нужный отчет в старой базе.
  2. Перейдите в меню Еще — Варианты отчета — Сохранить как....
  3. В открывшемся окне выберите «Сохранить в файл».
  4. В новой базе откройте этот же отчет, перейдите в Еще — Варианты отчета — Изменить вариант.
  5. В окне настроек выберите Еще — Загрузить настройки из файла.

Для массового переноса лучше использовать регистр сведений ВариантыОтчетов, выгрузив его через обработку «Выгрузка и загрузка данных XML», но не забудьте также перенести связанные данные из ХранилищеВариантовОтчетов.

Способ 4. Альтернативный подход — Свертка базы

Посмотрим на ситуацию под другим углом. Если задача стоит как «новая чистая база с остатками на 1 января», то создание базы «с нуля» — не единственный и часто не лучший путь. Рассмотрим метод свертки информационной базы.

Почему это эффективнее для сохранения настроек? При свертке вы берете копию текущей рабочей базы и запускаете штатную обработку «Свертка информационной базы» (раздел Администрирование — Обслуживание). Программа сама выполнит следующие действия:

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

Важные рекомендации при переносе

В завершение разберем критически важные моменты, которые нужно проверить перед запуском пользователей в новую базу:

Персональные настройки в регистрах. Помимо системных хранилищ, в УТ 11 есть регистр сведений НастройкиПользователей. Там хранятся значения по умолчанию: основная организация, склад, касса ККМ. Эти данные являются обычными записями регистра и легко переносятся через стандартный XML-обмен. Обязательно перенесите этот регистр, иначе пользователям придется заново выбирать основные значения в каждом документе.

Соответствие UUID. Если вы все же решили переносить пользователей в чистую базу, делайте это с помощью обработки ВыгрузкаЗагрузкаДанныхXML.epf с установленным флагом «Поддерживать сопоставление объектов по идентификаторам». Это обеспечит идентичность ссылок в обеих базах и значительно упростит «подцепление» настроек.

Таким образом, для быстрого и безболезненного перехода лучше всего использовать метод свертки. Если же база уже создана и наполнена данными, используйте специализированные обработки для переноса из хранилищ настроек, предварительно убедившись в синхронности справочника пользователей.

← На главную