В периодическом независимом регистре сведений ОтветственныеЛицаОрганизации все записи, касающиеся организации с наименованием Групп-трейдинг, период которых меньше 01 января 2005 года, необходимо перенести на 01 января 2004 года. Но записи с указанием должностей Продавец и Кладовщик должны остаться на своих местах.
Сначала получим таблицу записей, которые подлежат модификации. Поскольку условий несколько, да еще и не на равенство, оптимальнее это сделать при помощи запроса. А потом, перебирая результат запроса, добьемся требуемого результата:
Результат запроса – таблица, в которой по каждой записи заполнены все поля измерений из регистра и поле Период. Именно эту информацию мы используем для получения каждой нужной записи.
Источником данных для запроса послужила таблица РегистрСведений.ОтветственныеЛицаОрганизации.
Отборы были применены так, чтобы в результат попали записи с периодом менее 1 января 2005 года, наименование структурных единиц в которых – Групп-трейдинг, а наименования должностей не относятся к Продавец и Кладовщик. Кроме того, необходимо позаботиться о случае, когда должность вообще не указана, то есть ее наименование имеет значение NULL. Такие записи тоже нужно будет переносить.
Запрос выполнен, далее перебираем его результат и посредством менеджера записи регистра ОтветственныеЛицаОрганизации добиваемся желаемого. При каждом проходе цикла считываем очередную запись, предварительно указав значение ее поля Период и полей измерений.
Далее меняем значение поля Период у считанной записи и записываем ее в регистр.
Если регистр сведений подчинен регистратору, то для добавления записей в него необходимо создать набор записей этого регистра с установленным отбором по нужному регистратору, заполнить этот набор записей и записать его:
По умолчанию запись выполняется с замещением, т. е. существующие записи этого регистратора в регистре сведений будут удалены.
Для того чтобы добавить записи к существующим записям регистратора, необходимо указывать значение Ложь параметра метода Записать() набора записей. При этом необходимо позаботиться о том, чтобы значения измерений добавляемых записей были уникальны для записей данного регистратора в регистре сведений, иначе запись выполнена не будет:
При переносе данных из одной информационной базы в другую может возникнуть необходимость перенести и пользователей информационной базы. Для этого можно воспользоваться свойством глобального контекста ПользователиИнформационнойБазы
Добавление пользователя информационной базы
Следует отметить, что в свойство Пароль можно только записать новый пароль, прочитать записанный (определенный) ранее нет возможности.
Добавление новых пользователей в информационную базу может осуществлять пользователь, обладающий административными правами. Если административные права у пользователя отсутствуют, он может изменить только ограниченный набор сведений о себе.
Для того чтобы предоставить, например, менеджеру, не имеющему административных прав, возможность добавления новых пользователей с правами менеджера, можно поступить следующим образом.
Создать обработку, с помощью которой менеджер будет задавать имя, пароль, набор ролей и другие свойства нового пользователя. Однако запись нового пользователя выполнять не на клиенте, а на сервере, передав нового пользователя в качестве параметра в процедуру привилегированного модуля.
Вызов процедуры привилегированного модуля
В этом случае система не будет выполнять проверку прав пользователя, поэтому о проверке необходимых прав нужно позаботиться самостоятельно. Например, процедура привилегированного модуля может выглядеть следующим образом.
Текст процедуры привилегированного модуля
Если выполняется попытка добавить нового пользователя с административными правами, выдается запрет. Если набор ролей нового пользователя не содержит роль Администратор, проверяется, является ли текущий пользователь менеджером или администратором, и если это так, то выполняется запись нового пользователя. В противном случае выдается сообщение об отсутствии прав доступа.