Собираем статистику из баз (аудит)

  оглавление  Собираем базы всех пользователей на сервере в общий список

Создаем и удаляем пользователей при помощи Обновлятора-1С

Как известно, основная функция обновлятора - это обновление баз. Но многие, наверное, уже обратили внимание на дополнительную закладку "Скрипты", которая появилась в программе с начала 2016 года.

И если вы владеете навыками написания скриптов (2 варианта - пакетные cmd скрипты и onescript, он же 1C), то сможете на этой закладке творить чудеса,  не связанные напрямую с обновлением.

В этой статье рассмотрим как в группе баз:

Для применения материала нужен хотя бы минимальный уровень владения языком 1с и изучение начальной статьи по скриптам в обновляторе.

Итак, поехали ;)

Для теста возьмём три базы:

Переходим на закладку "Скрипты":

Прежде всего указываем "Базы для запуска" и тип скрипта "OneScript". Нижние параметры запуска ("Блокировать", "Разблокировать..." выставляем как на рисунке).

Осталось только написать скрипт в редакторе и запустить его (через кнопку "Запустить") сразу на всех выбранных базах.

Для этого выбираем из шаблонов пример "Привет, база":

И свой код (см. примеры ниже) пишем в процедуре Главная.

Создать нового пользователя

Напишем скрипт для создания нового пользователя:

Процедура Главная()
 
  // Создание нового пользователя.  
 
  ПользовательИБ = v8.ПользователиИнформационнойБазы.СоздатьПользователя(); 
  ПользовательИБ.Имя = "Грозный И.В."; 
  ПользовательИБ.ПолноеИмя = "Грозный Иван Васильевич";
  ПользовательИБ.Пароль = "";
  ПользовательИБ.Роли.Добавить(v8.Метаданные.Роли.ПолныеПрава);
  ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
  ПользовательИБ.АутентификацияОС = Ложь;
  // ПользовательИБ.ОсновнойИнтерфейс = v8.Метаданные.Интерфейсы.Полный;
 
  Если v8.ПользователиИнформационнойБазы.НайтиПоИмени(ПользовательИБ.Имя) = Неопределено Тогда    
    ПользовательИБ.Записать();  
    Сообщить("Новый пользователь создан.");
  Иначе
    Сообщить("Пользователь с таким именем уже есть в базе!");  
  КонецЕсли;
 
КонецПроцедуры

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

Запустим его на группе базы:

Для проверки откроем список пользователей первой базы в конфигураторе:

Отлично! Такой же пользователь появился и в оставшихся двух базах.

Добавить роль существующему пользователю

Добавим созданному ранее пользователю право на внешнее подключение к базе. За это отвечает роль "ПравоВнешнегоПодключения".

Скрипт будет таким:

Процедура Главная()
 
  // Добавление роли уже существующему пользователю
 
  ИмяПользователя = "Грозный И.В.";
 
  ПользовательИБ = v8.ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя); 
 
  Если ПользовательИБ = Неопределено Тогда
    Сообщить("Пользователь с таким именем не найден в базе.");
  Иначе
    ПользовательИБ.Роли.Добавить(v8.Метаданные.Роли.ПравоВнешнегоПодключения);
    ПользовательИБ.Записать();
    Сообщить("Роль добавлена.");
  КонецЕсли;
 
КонецПроцедуры

Запустим его на группе баз:

И проверим на первой базе добавилась ли нужная нам роль:

Замечательно.

Удалить роль у существующего пользователя

Ну и для учебных целей тут же отберём данную роль у пользователя :)

Вот скрипт:

Процедура Главная()
 
  // Удаление роли у существующего пользователя
 
  ИмяПользователя = "Грозный И.В.";
  ПользовательИБ = v8.ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя); 
 
  Если ПользовательИБ = Неопределено Тогда
    Сообщить("Пользователь с таким именем не найден в базе.");
  Иначе
    ПользовательИБ.Роли.Удалить(v8.Метаданные.Роли.ПравоВнешнегоПодключения);
    ПользовательИБ.Записать();
    Сообщить("Роль удалена.");
  КонецЕсли;
 
КонецПроцедуры

Удалить существующего пользователя

Наконец, удалим созданного нами пользователя.

Вот скрипт:

Процедура Главная()
 
  // Удаление пользователя.
 
  ИмяУдаляемого = "Грозный И.В.";
 
  ПользовательИБ = v8.ПользователиИнформационнойБазы.НайтиПоИмени(ИмяУдаляемого); 
 
  Если ПользовательИБ = Неопределено Тогда
    Сообщить("Пользователь с таким именем не найден в базе.");
  Иначе
    ПользовательИБ.Удалить();
    Сообщить("Пользователь удалён.");
  КонецЕсли;
 
КонецПроцедуры

Проверим список пользователей в конфигураторе первой базы:

Всё получилось.

Вот так легко и просто (при минимальном владении языком 1с) можно управлять списком пользователей сразу в группе баз.

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:



Собираем статистику из баз (аудит)

  оглавление  Собираем базы всех пользователей на сервере в общий список