Как известно, основная функция обновлятора - это обновление баз. Но многие, наверное, уже обратили внимание на дополнительную закладку "Скрипты", которая появилась в программе с начала 2016 года.
И если вы владеете навыками написания скриптов (2 варианта - пакетные cmd скрипты и onescript, он же 1C), то сможете на этой закладке творить чудеса, не связанные напрямую с обновлением.
В этой статье рассмотрим как в группе баз:
Оглавление
Для применения материала нужен хотя бы минимальный уровень владения языком 1с и изучение начальной статьи по скриптам в обновляторе.
Итак, поехали
Для теста возьмём три базы:
Переходим на закладку "Скрипты":
Прежде всего указываем "Базы для запуска" и тип скрипта "OneScript". Нижние параметры запуска ("Блокировать", "Разблокировать..." выставляем как на рисунке).
Осталось только написать скрипт в редакторе и запустить его (через кнопку "Запустить") сразу на всех выбранных базах.
Для этого выбираем из шаблонов пример "Привет, база":
И свой код (см. примеры ниже) пишем в процедуре Главная.
Создать нового пользователя
Напишем скрипт для создания нового пользователя:
Процедура Главная() // Создание нового пользователя. ПользовательИБ = v8.ПользователиИнформационнойБазы.СоздатьПользователя(); ПользовательИБ.Имя = "Грозный И.В."; ПользовательИБ.ПолноеИмя = "Грозный Иван Васильевич"; ПользовательИБ.Пароль = ""; ПользовательИБ.Роли.Добавить(v8.Метаданные.Роли.ПолныеПрава); ПользовательИБ.ПоказыватьВСпискеВыбора = Истина; ПользовательИБ.АутентификацияОС = Ложь; // ПользовательИБ.ОсновнойИнтерфейс = v8.Метаданные.Интерфейсы.Полный; Если v8.ПользователиИнформационнойБазы.НайтиПоИмени(ПользовательИБ.Имя) = Неопределено Тогда ПользовательИБ.Записать(); Сообщить("Новый пользователь создан."); Иначе Сообщить("Пользователь с таким именем уже есть в базе!"); КонецЕсли; КонецПроцедуры |
Обратите внимание. В новых версиях конфигураций, основанных на БСП уже недостаточно создать пользователя информационной базы. В добавок нужно создать элемент справочника "Пользователи" и установить связь между ними. Если это ваш случай - разберите как работает вот этот пример.
Запустим его на группе базы:
Для проверки откроем список пользователей первой базы в конфигураторе:
Отлично! Такой же пользователь появился и в оставшихся двух базах.
Добавить роль существующему пользователю
Добавим созданному ранее пользователю право на внешнее подключение к базе. За это отвечает роль "ПравоВнешнегоПодключения".
Скрипт будет таким:
Процедура Главная() // Добавление роли уже существующему пользователю ИмяПользователя = "Грозный И.В."; ПользовательИБ = v8.ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя); Если ПользовательИБ = Неопределено Тогда Сообщить("Пользователь с таким именем не найден в базе."); Иначе ПользовательИБ.Роли.Добавить(v8.Метаданные.Роли.ПравоВнешнегоПодключения); ПользовательИБ.Записать(); Сообщить("Роль добавлена."); КонецЕсли; КонецПроцедуры |
Запустим его на группе баз:
И проверим на первой базе добавилась ли нужная нам роль:
Замечательно.
Удалить роль у существующего пользователя
Ну и для учебных целей тут же отберём данную роль у пользователя
Вот скрипт:
Процедура Главная() // Удаление роли у существующего пользователя ИмяПользователя = "Грозный И.В."; ПользовательИБ = v8.ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя); Если ПользовательИБ = Неопределено Тогда Сообщить("Пользователь с таким именем не найден в базе."); Иначе ПользовательИБ.Роли.Удалить(v8.Метаданные.Роли.ПравоВнешнегоПодключения); ПользовательИБ.Записать(); Сообщить("Роль удалена."); КонецЕсли; КонецПроцедуры |
Удалить существующего пользователя
Наконец, удалим созданного нами пользователя.
Вот скрипт:
Процедура Главная() // Удаление пользователя. ИмяУдаляемого = "Грозный И.В."; ПользовательИБ = v8.ПользователиИнформационнойБазы.НайтиПоИмени(ИмяУдаляемого); Если ПользовательИБ = Неопределено Тогда Сообщить("Пользователь с таким именем не найден в базе."); Иначе ПользовательИБ.Удалить(); Сообщить("Пользователь удалён."); КонецЕсли; КонецПроцедуры |
Проверим список пользователей в конфигураторе первой базы:
Всё получилось.
Вот так легко и просто (при минимальном владении языком 1с) можно управлять списком пользователей сразу в группе баз.