Содержание:
2. Описание алгоритма загрузки свойств пользователей в 1С: Конвертации данных 2
Иногда возникает необходимость скопировать пользователей в новую пустую базу, либо в другую типовую и простым копированием справочника Пользователи в 1С здесь не обойтись. Необходимо также для каждого пользователя, работающего в базе создать учетную запись для входа в систему.
Рассмотрим, как это сделать в типовых конфигурациях или конфигурациях с подключенной 1С: Библиотека стандартных подсистем. Алгоритм выгрузки и загрузки опишем в правилах Конвертации данных 2. Таким образом при копировании справочника Пользователей в 1С, будут скопированы параметры входа в систему, пароли и роли, которые присвоены каждому пользователю. В данном примере используется 1С: БСП версии 3.1.10.403.
1. Описание алгоритма выгрузки свойств пользователя в 1С: Конвертации данных 2
В 1С: Конвертации данных 2 создадим правило конвертации Пользователи и добавим необходимые свойства, соответствующие объектам источника и приемника, кроме свойства ИдентификаторПользователяИБ, так как оно содержит уникальный идентификатор учетной записи для входа в систему, и у созданной учетной записи в базе приемнике будет свой уникальный идентификатор.
Добавим конвертируемые свойства параметр СведенияОПользователе. В нем, в модуле Перед выгрузкой, с помощью типовой функции системы СвойстваПользователяИБ модуля Пользователи получим структуру свойств пользователя, которая содержит параметры учетной записи. Если у пользователя нет учетной записи для входа, получим Неопределено. Так как данные, переданные в параметр, могут быть только простого типа, то с помощью функции ЗначениеВСтрокуВнутр преобразуем их в строку. Пример кода алгоритма представлен ниже:
Конвертация свойств
Пример кода алгоритма
СвойстваПользователя = Пользователи.СвойстваПользователяИБ(Источник.ИдентификаторПользователяИБ);
Если СвойстваПользователя <> Неопределено Тогда
Значение = ЗначениеВстрокуВнутр(СвойстваПользователя);
Иначе
Значение = "";
2. Описание алгоритма загрузки свойств пользователей в 1С: Конвертации данных 2
В правиле конвертации данных, в модуле После загрузки опишем алгоритм обработки выгруженных сведений о пользователе. Вначале выполним проверку, что параметр СведенияОПользователе заполнен. Затем проверим, есть ли учётная запись пользователя в базе приёмнике и в зависимости от результата, используя типовой метод УстановитьСвойстваПользователяИБ модуля Пользователи создадим нового или обновим данные существующего пользователя базы. В случае успешного создания нового пользователя 1С в структуру СведенияОПользователе будет добавлен элемент ПользовательИБ, а элементу УникальныйИдентификатор будет присвоен его идентификатор. Пример кода алгоритма представлен ниже:
Пример кода алгоритма
СведенияОПользователеСтрокой = ПараметрыОбъекта["СведенияОПользователе"];
Если ЗначениеЗаполнено(СведенияОПользователеСтрокой) Тогда
СведенияОПользователе = ЗначениеИзСтрокиВнутр(СведенияОПользователеСтрокой);
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(СведенияОПользователе.Имя);
СоздатьПользователя = (ПользовательИБ = Неопределено);
Пользователи.УстановитьСвойстваПользователяИБ(СведенияОПользователе.Имя, СведенияОПользователе, СоздатьПользователя);
Если СоздатьПользователя
и СведенияОПользователе.Свойство("ПользовательИБ") Тогда
Объект.ИдентификаторПользователяИБ = СведенияОПользователе.УникальныйИдентификатор;
КонецЕсли;
КонецЕсли;
Правило можно использовать как для разовых обменов в типовой обработке УниверсальныйОбменДаннымиXML, так и в планах обмена. Стоит отметить, что в некоторых версиях обработки УниверсальныйОбменДаннымиXML, например в 1С: Библиотека стандартных подсистем 3.1.10.403, выгрузка и загрузка данных происходит исключительно в безопасном режиме, что вызывает исключения при работе с используемыми процедурами. Есть несколько решений либо поставить точку останова при выгрузке и загрузке данных и установить БезопаныйРежим в Ложь, либо модифицировать обработку. Также в последних версиях 1С: БСП появилась возможность отключить безопасный режим в обработке.
Специалист компании ООО "Кодерлайн"
Илья Рогозников


