Перенос данных из одной информационной базы в другую — задача стандартная, но когда дело доходит до пользовательских настроек (состав колонок в списках, положение окон, избранное, персональные варианты отчетов), многие специалисты сталкиваются с трудностями. Проблема заключается в том, что эти данные не хранятся в обычных справочниках или регистрах, к которым мы привыкли. В этой статье мы подробно разберем, как устроены механизмы хранения настроек в 1С:Управление торговлей 11.4 и какими способами их можно перенести в новую базу.
Проанализируем техническую сторону вопроса. В платформе 1С:Предприятие 8.3 для хранения персональных данных интерфейса используются специальные системные таблицы, доступ к которым осуществляется через программные «хранилища». Рассмотрим основные типы таких хранилищ:
Главная сложность заключается в том, что все эти записи жестко привязаны к Уникальному Идентификатору (UUID) пользователя. Если в новой базе вы создали пользователей вручную с теми же именами, их UUID будут отличаться от старой базы. В результате настройки, перенесенные простым XML-обменом, «не увидят» своих владельцев.
Конфигурация УТ 11.4 построена на базе Библиотеки стандартных подсистем (БСП). Разберем, как можно использовать штатные возможности для решения нашей задачи. Если пользователи в новой базе уже созданы и сопоставлены, мы можем воспользоваться механизмом копирования настроек.
Перейдем в раздел Администрирование — Настройки пользователей и прав — Персональные настройки пользователей — Копирование настроек. Этот инструмент позволяет передать настройки от одного пользователя другому. Однако он работает внутри одной базы. Для переноса между базами часто требуется специализированная обработка «Выгрузка и загрузка настроек пользователей», которая входит в состав инструментов разработчика БСП. Она позволяет выгрузить данные в файл и загрузить их, сопоставляя пользователей по именам, а не по внутренним идентификаторам.
Если готовые обработки не помогают (например, из-за различий в релизах конфигураций), мы можем написать собственный скрипт для переноса. Выясним причину, по которой это может быть эффективнее: программный код позволяет нам принудительно подменить владельца настройки при загрузке.
Рассмотрим пример кода, который демонстрирует принцип получения настроек из хранилища:
// Пример получения списка всех системных настроек для пользователя
Выборка = ХранилищеСистемныхНастроек.Выбрать(ПользовательСсылка);
Пока Выборка.Следующий() Цикл
КлючОбъекта = Выборка.КлючОбъекта;
КлючНастройки = Выборка.КлючНастройки;
ЗначениеНастройки = Выборка.Значение;
ПользовательИмя = Выборка.Пользователь;
// Здесь можно реализовать логику записи в файл или напрямую в другую базу через COM
КонецЦикла;
Для записи настроек в целевой базе используется метод Сохранить(). Проанализируем пример записи:
// Запись настройки для конкретного пользователя в новой базе
ХранилищеСистемныхНастроек.Сохранить(
"Общее/НастройкиФормы/Справочник_Номенклатура_ФормаСписка",
"",
СтруктураНастроек,
,
ИмяНовогоПользователя
);
Важно помнить: при переносе настроек форм КлючОбъекта часто содержит ссылки на метаданные. Если структура метаданных в базах отличается, форма может не открыться или выдать ошибку. Поэтому перенос настроек рекомендуется выполнять только между идентичными версиями конфигураций.
Варианты отчетов — это самая ценная часть пользовательских настроек. В отличие от положения окон, их можно перенести полуавтоматически. Разберем по шагам, как это сделать без программирования:
Для массового переноса лучше использовать регистр сведений ВариантыОтчетов, выгрузив его через обработку «Выгрузка и загрузка данных XML», но не забудьте также перенести связанные данные из ХранилищеВариантовОтчетов.
Посмотрим на ситуацию под другим углом. Если задача стоит как «новая чистая база с остатками на 1 января», то создание базы «с нуля» — не единственный и часто не лучший путь. Рассмотрим метод свертки информационной базы.
Почему это эффективнее для сохранения настроек? При свертке вы берете копию текущей рабочей базы и запускаете штатную обработку «Свертка информационной базы» (раздел Администрирование — Обслуживание). Программа сама выполнит следующие действия:
Именно этот способ рекомендуют опытные специалисты, так как он гарантирует, что у вас не «поплывут» обмены с сайтом, кассовое оборудование останется настроенным, а пользователи не заметят перехода, сохранив привычное рабочее окружение.
В завершение разберем критически важные моменты, которые нужно проверить перед запуском пользователей в новую базу:
Персональные настройки в регистрах. Помимо системных хранилищ, в УТ 11 есть регистр сведений НастройкиПользователей. Там хранятся значения по умолчанию: основная организация, склад, касса ККМ. Эти данные являются обычными записями регистра и легко переносятся через стандартный XML-обмен. Обязательно перенесите этот регистр, иначе пользователям придется заново выбирать основные значения в каждом документе.
Соответствие UUID. Если вы все же решили переносить пользователей в чистую базу, делайте это с помощью обработки ВыгрузкаЗагрузкаДанныхXML.epf с установленным флагом «Поддерживать сопоставление объектов по идентификаторам». Это обеспечит идентичность ссылок в обеих базах и значительно упростит «подцепление» настроек.
Таким образом, для быстрого и безболезненного перехода лучше всего использовать метод свертки. Если же база уже создана и наполнена данными, используйте специализированные обработки для переноса из хранилищ настроек, предварительно убедившись в синхронности справочника пользователей.