Связать пользователя иб и пользователя 1с
Данная статья рассказывает о синхронизации справочника «Пользователи» с пользователями БД. Типовые конфигурации от «1С» обладают достаточно сложной конфигурацией для понимания теми людьми, которые впервые сталкиваются с данной платформой и программированием на ней. В этой статье приводится наглядный пример, упрощающий схему работы пользователей.
Для создания формы списка справочника «Пользователи» следует создать новый справочник «Пользователи» без реквизитов, которые в случае необходимости могут быть добавлены позже. Отображение списка пользователей произойдет после создания «Формы Списка» опять же без реквизитов. Вместо этого создается реквизит «Таблица Значений», далее в него добавляются колонки.
Затем на форме размещается «Элемент таблица» с названием «Список Пользователей», в нее необходимо добавить два поля: «Список Пользователей Полное Имя» (Путь к информации – Список. Полное имя) и «Список Пользователей Имя» (Путь к информации – Список. Имя). После создания данной таблицы она заполняется сведениями с помощью создания события формы «При Создании На Сервере» и добавляется следующий код:
&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
ОМПользователи . ОбновитьСписокПользователей ( Список );
Функция «Обновить Список Пользователей (Список)» размещается в общем модуле, а сама она теперь выглядит следующим образом:
Процедура ОбновитьСписокПользователей ( СписокПользователей ) Экспорт
Перем ПользователиИБ , СпрПользователейДляПоиска , СсылкаНаНайденногоПользователя ;
СпрПользователейДляПоиска = Справочники . Пользователи ;
ПользователиИБ = ПользователиИнформационнойБазы . ПолучитьПользователей ();
Для Каждого ПользовательИБ Из ПользователиИБ Цикл
СсылкаНаНайденногоПользователя = СпрПользователейДляПоиска . НайтиПоНаименованию ( ПользовательИБ . Имя );
Если СсылкаНаНайденногоПользователя = СпрПользователейДляПоиска . ПустаяСсылка () Тогда
НоваяСтрока = СписокПользователей . Добавить ();
НоваяСтрока . Имя = ПользовательИБ . Имя ;
НоваяСтрока . ПолноеИмя = ПользовательИБ . ПолноеИмя ;
НоваяСтрока . Ссылка = СсылкаНаНайденногоПользователя ;
НоваяСтрока . СуществуетВСправочнике = Ложь;
Иначе
НоваяСтрока = СписокПользователей . Добавить ();
НоваяСтрока . Имя = ПользовательИБ . Имя ;
НоваяСтрока . ПолноеИмя = ПользовательИБ . ПолноеИмя ;
НоваяСтрока . Ссылка = СсылкаНаНайденногоПользователя ;
НоваяСтрока . СуществуетВСправочнике = Истина;
КонецЕсли;
В данной функции перебираются пользователи БД, они добавляются в «Список Пользователей». Если этот элемент присутствует в справочнике «Пользователи», то обязательно устанавливается флажок «Существует В Справочнике», это требуется для условного форматирования в оформлении, то есть программа видит незаведенного в справочник пользователя и отображает его другим цветом. В свойствах формы указывается это же форматирование:
Затем создается новое форматирование за счет нажатия на кнопку «Добавить». Параметры их колонки «Оформление» должны выглядеть следующим образом:
Параметры колонки «Условие» должны выглядеть следующим образом:
Параметры колонки «Оформляемые поля» должны выглядеть следующим образом:
Для создания элемента справочника «Пользователи» следует добавить новую форму в справочник «Пользователи»:
После этого в форму добавляется новое поле со строковым реквизитом «Полное Наименование»:
Затем требуется вернуться к форме «Форма Списка» и создать событие «Выбор» для списка «Список Пользователей» с добавлением данного кода:
&НаКлиенте
Процедура СписокПользователейВыбор ( Элемент , ВыбраннаяСтрока , Поле , СтандартнаяОбработка )
Перем ТекущиеДанные ;
ТекущиеДанные = Элементы . СписокПользователей . ТекущиеДанные ;
//Если в справочнике Пользователи элемента нет тогда создаем новый
Если ТекущиеДанные . Ссылка . Пустая () Тогда
//В открываемую форму передаем 2 параметра:
//имя пользователя и полное имя пользователя
ОткрытьФорму ( "Справочник.Пользователи.ФормаОбъекта " ,
Новый Структура ( "ИмяПользователя, ПолноеИмяПользователя" ,
ТекущиеДанные . Имя , ТекущиеДанные . ПолноеИмя ));
//Иначе открываем существующий элемент справочника
Иначе
//В открываемую форму передаем 2 параметра:
//ссылка на существующий справочник и полное имя пользователя
ОткрытьФорму ( "Справочник.Пользователи.ФормаОбъекта" ,
Новый Структура ( "Ключ, ПолноеИмяПользователя" ,
ТекущиеДанные . Ссылка , ТекущиеДанные . ПолноеИмя ));
КонецЕсли;
После отправления параметров в открываемую форму осуществляется их прием и обработка, что делается благодаря созданию нового события формы «При Создании На Сервере» в форме элемента справочника «Пользователи»:
&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
Попытка
Объект . Наименование = Параметры . ИмяПользователя ;
Исключение
КонецПопытки;
Попытка
ПолноеНаименование = Параметры . ПолноеИмяПользователя ;
Исключение
КонецПопытки;
Форма элемента закончена, однако во время записи элемента справочника форма списка не обновляется. Для обновления формы справочника нужно воспользоваться функцией «Обработка Оповещения», что делается при помощи создания в форме элемента справочника события «После Записи» с добавлением следующего кода:
&НаКлиентеПроцедура ПослеЗаписи ( ПараметрыЗаписи )
Оповестить ( "ОбновитьФормуСписка" );
КонецПроцедуры
Далее в форме списка справочника создается событие «Обработка Оповещения» с добавлением кода:
&НаКлиенте
Процедура ОбработкаОповещения ( ИмяСобытия , Параметр , Источник )
Если ИмяСобытия = "ОбновитьФормуСписка" Тогда
ЭтаФорма . Список . Очистить ();
ОбновитьСписокПользователей ();
КонецЕсли;
Функция «Обновить Список Пользователей» теперь выглядит следующим образом:
Рассмотрена подсистема Пользователи из библиотеки стандартных подсистем (БСП) 3.1.3.
Примеры приведены на конфигурации Управление торговлей 11.4.13.
В пользовательском режиме
Пользователи
Список всех пользователей находится в разделе НСИ и администрирование -> Администрирование -> Настройки пользователей и прав -> Пользователи:
При создании нового пользователя большинство полей совпадает с полями при создании пользователя в конфигураторе, подробно рассматривать их нет смысла. Рассмотрим только некоторые из них, например, можно снять флаг Показывать в списке выбора:
Тогда пользователя не будет в списке выбора при входе в базу, но его можно будет ввести вручную в поле Пользователь и войти в базу. Это можно использовать для каких-то служебных пользователей или для администратора, чтобы они не мешались в списке выбора:
Если установить флаг Потребовать установку пароля при входе:
То при входе в программу пользователю будет предложено установить пароль:
Это можно использовать при создании нового пользователя. Тогда пользователь сам, при первом входе, установит себе пароль.
Настройки сложности пароля выполняются в разделе НСИ и администрирование -> Администрирование -> Настройки пользователей и прав -> Настройки входа:
Можно установить флаг Недействителен, тогда пользователь не сможет войти в ИБ, однако ссылка на него сохранится. Удобно использовать при увольнении пользователя.
Смена пароля
Если позволяют права доступа, то пароль можно изменить прямо в карточке пользователя. Иначе в разделе Главное -> Сервис можно выбрать пункт меню Сменить пароль:
Настройка прав доступа
Настройка прав доступа входит в подсистему Управление доступом, поэтому здесь не рассматривается. Отмечу только, что для настройки прав доступа нужно перейти по ссылке Права доступа и включить пользователя в нужную группу доступа:
Группы пользователей
Если включено использование групп пользователей:
То пользователей можно объединять в группы.
В группе можно указать состав пользователей, а также настроить права доступа:
Тогда при добавлении нового пользователя достаточно включить его в какую-либо группу, чтобы к нему автоматически применились такие же права, как у всей группы.
Один пользователь может входить в несколько групп. Состав групп можно указать в карточке пользователя:
Настройки пользователей
Можно посмотреть все настройки пользователя: настройки форм, отчетов, избранное, настройки печати и т.п. По кнопке Очистить можно удалить все настройки (будет выполнен сброс на настройки по умолчанию).
По кнопке Скопировать другим можно выбрать пользователей, кому будут скопированы настройки текущего пользователя:
По кнопке Скопировать от можно выбрать пользователя у которого нужно скопировать настройки текущему пользователю. Можно скопировать как все настройки, так и только часть выбранных настроек:
Пользователи информационной базы
При добавлении нового элемента в справочнике Пользователи, автоматически создается пользователь информационной базы. Связь выполняется по реквизиту ИдентификаторПользователяИБ.
Если в списке пользователей выбрать Еще -> Пользователи информационной базы, то будет открыт список пользователей ИБ:
Здесь можно посмотреть сопоставление пользователя ИБ с пользователей из справочника Пользователи. Можно отменить сопоставление, сопоставить с другим пользователем. На практике это можно использовать когда пользователь создавался в конфигураторе. Такие пользователи выделяются в списке красным цветом (у них нет сопоставления с пользователем из справочника Пользователи). Чтобы сопоставить нужно нажать Сопоставить с новым и записать новый элемент справочника Пользователи.
Если создать нового пользователя ИБ в конфигураторе, дать ему полные права и попробовать зайти в базу, то при входе будет выдана ошибка:
Однако, если добавить роль Администратор системы, то при первом входе новый элемент в справочнике Пользователи будет создан автоматически.
В конфигураторе
Получение текущего пользователя, вернет ссылку на справочник Пользователи:
Откроется окно со списком всех пользователей информационной базы:
Для добавления нового пользователя нужно нажать на зеленую кнопку с плюсом. Будет открыто окно редактирования нового пользователя:
В поле Имя нужно ввести имя пользователя, которое будет показано при входе в программу, например: Иванов И.И.
В поле Полное имя нужно ввести полное имя пользователя. Оно будет отображаться в программе, например: Иванов Иван Иванович.
Для аутентификации средствами платформы 1С нужно чтобы был установлен флаг Аутентификация 1С:Предприятия. В этом случае при входе нужно будет ввести логин и пароль.
В полях Пароль и Подтверждение пароля нужно указать пароль пользователя.
Заполним данные пользователя:
Дело в том, что хотя бы один пользователь должен иметь административные права доступа, чтобы он мог создавать новых пользователей и задавать для них права доступа.
Роли и права доступа мы рассмотрим позднее, пока просто создадим одну роль Полные права, указав для нее максимально возможные права доступа.
Дважды щелкнув по роли, откроем окно настроек прав доступа для данной роли:
И сохраним конфигурацию базы данных.
Вернемся к настройке пользователя и на закладке Прочее установим флаг рядом с ролью Полные права в списке доступных ролей и нажмем ОК:
И добавим еще одного пользователя:
Теперь при входе в базу нужно выбрать пользователя и ввести его пароль:
Значит пользователя с таким именем нет в базе данных или введен неверный пароль.
Для удаления пользователя нужно выделить его в списке пользователей и нажать на кнопку с красным крестом:
Список пользователей хранится в специальной таблице базы данных.
Показывать в списке выбора
В настройках пользователя есть флаг Показывать в списке выбора:
Если данный флаг установлен, то пользователь будет доступен для выбора при входе в программу. Если снять этот флаг, то пользователя не будет в списке выбора, но можно будет ввести его имя вручную и войти под ним. Это можно использовать, чтобы скрыть администратора системы.
Например, создадим нового пользователя Администратор и снимем у него флаг Показывать в списке выбора:
Теперь при входе в базу пользователь не будет в списке доступных пользователей:
Но можно вручную ввести его логин и пароль и войти под ним:
Защита от опасных действий
Потенциально опасными действиями считаются:
- Загрузка внешней обработки или отчета
- Подключение расширения
- Обновление конфигурации
- Выполнение команды операционной системы из внешней обработки/отчета или расширения
- Программное добавление или удаление пользователей из внешней обработки/отчета или расширения
- Загрузка внешней компоненты из внешней обработки/отчета или расширения
- Использование COM-объекта из внешней обработки/отчета или расширения
Если в свойствах пользователя установлен флаг Защита от опасных действий:
Если нажать Нет, то внешняя обработка не будет открыта.
Если нажать Да, то внешняя обработка будет открыта и платформа запомнит, что данное действие было разрешено. При последующих открытиях этой же обработки предупреждения не будет. Платформа запоминает разрешение для хэша обработки. Если в дальнейшем обработка будет изменена, то при первом открытии обработки снова будет выдано предупреждение безопасности.
Активные пользователи
Будет открыт список активных пользователей:
Текущий пользователь выделен специальной пиктограммой с галочкой.
В открывшемся окне нужно установить флажок Режим технического специалиста:
После этого в главном меню выбрать Функции для технического специалиста:
В открывшемся окне в узле Стандартные нужно найти пункт меню Активные пользователи:
По двойному клику будет открыто окно с активными пользователями. Текущий пользователь будет выделен жирным шрифтом:
Если база клиент-серверная, то можно запустить утилиту для администрирования серверов 1С предприятие. Для этого в меню пуск нужно найти соответствующий пункт меню:
В открывшемся окне нужно в списке информационных баз найти нужную базу, развернуть ее и выбрать пункт Сеансы:
Справа будут показаны все активные сеансы с текущей базой:
Если нужно просто узнать текущего пользователя, то он отображается в правом верхнем углу:
Завершение работы пользователей
Чтобы завершить работу пользователей в 1С можно воспользоваться утилитой для администрирования серверов. Данный вариант подойдет только для клиент-серверных баз. В списке сеансов нужно выделить нужного пользователя и выбрать команду Удалить:
Чтобы выгнать всех пользователей из базы нужно нажать ctrl+A, чтобы выделить всех пользователей. А потом выбрать в контекстном меню команду Удалить.
В конфигурациях на базе БСП, в списке активных пользователей есть кнопка Завершить сеанс, которая позволяет завершить сеанс пользователя:
Чтобы выкинуть всех пользователей из файловой базы можно завершить их процессы операционной системы. Этот вариант подойдет если все пользователи работают на одном компьютере. Нужно запустить диспетчер задач (ctrl + alt + Del), на закладке Процессы найти все процессы 1С и завершить их, выбрав в контекстном меню Снять задачу:
Программная работа с пользователями
Создать нового пользователя
Управление пользователями информационной базы выполняется с помощью объекта ПользователиИнформационнойБазы.
Для добавления нового пользователя нужно вызвать метод СоздатьПользователя у данного объекта. Затем заполнить все необходимые поля и записать пользователя в базу методом Записать:
НовыйПольз = ПользователиИнформационнойБазы . СоздатьПользователя ( ) ; ЗащитаОтОпасныхДействий = Новый ОписаниеЗащитыОтОпасныхДействий ; ЗащитаОтОпасныхДействий . ПредупреждатьОбОпасныхДействиях = Истина; НовыйПольз . ЗащитаОтОпасныхДействий = ЗащитаОтОпасныхДействий ; НовыйПольз . Роли . Добавить ( Метаданные . Роли . ПолныеПрава ) ;В результате будет добавлен новый пользователь:
Получить всех пользователей
Всех пользователей можно получить с помощью метода ПолучитьПользователей. Данный метод вернет массив объектов типа ПользовательИнформационнойБазы:
ВсеПользователи = ПользователиИнформационнойБазы . ПолучитьПользователей ( ) ;Поиск пользователей
Найти пользователя можно или по имени или по идентификатору. Для поиска используются методы НайтиПоИмени и НайтиПоУникальномуИдентификатору:
НайдПольз = ПользователиИнформационнойБазы . НайтиПоИмени ( "Сидоров С.С." ) ; УИДПользователя = Новый УникальныйИдентификатор ( "0c3c8e07-c36a-41ce-977a-85ee65d03a00" ) ; НайдПольз = ПользователиИнформационнойБазы . НайтиПоУникальномуИдентификатору ( УИДПользователя ) ;Удаление пользователя
Для удаления пользователя используется метод Удалить:
НайдПольз = ПользователиИнформационнойБазы . НайтиПоИмени ( "Сидоров С.С." ) ;Текущий пользователь
Чтобы программно получить текущего пользователя можно воспользоваться методом ТекущийПользователь:
ТекПользователь = ПользователиИнформационнойБазы . ТекущийПользователь ( ) ;Блокировка установки сеансов
Клиент-серверный вариант
Иногда требуется на некоторое время заблокировать вход пользователей в базу. Это можно сделать с помощью механизма установки блокировки сеансов пользователей. Блокировка настраивается через утилиту администрирования серверов 1С. В списке информационных баз нужно найти нужную базу и в контекстном меню выбрать пункт Свойства:
В поле с администратором информационной базы нужно ввести логин и пароль пользователя 1С:
Блокируются как пользовательские сеансы, так и конфигуратор. При этом, существующие сеансы смогут продолжить работать.
При необходимости можно задать код разрешения, указав который можно войти даже при включенной блокировке. Код указывается в параметре Код разрешения:
Данный код указывается в свойствах базы в параметре Дополнительные параметры запуска после ключа /UC. Чтобы открыть свойства базы нужно в списке баз выделить нужную базу и нажать кнопку Изменить:
Теперь в данную базу можно войти даже во время блокировки.
Чтобы снять блокировку до ее окончания нужно просто снять флаг Блокировка начала сеансов включена.
Итак у вас установлено 1С:Предприятие, как определить каким способом или вариантом загружается ваша информационная база (ИБ)?
Если у вас файловый вариант работы то в строке при запуске 1С и при выборе информационной базы (в списке информационных баз) вы увидите: File=”C:\Documents and Settings\Pupkin\Мои документы\Infobase1”. Это папка, где хранится ваша файловая база.
Если вы увидите такую надпись типа Srvr=»192.168.6.1″;Ref=»Infobase1″;, то это означает, что вы работаете в клиент-серверном варианте работы с 1С.
Что означает файловый вариант работы — вы более или менее понимаете.
Клиент-серверный вариант работы предполагает обмен данными через сеть по специальному порту и IP-адресу того компьютера, где установлена база данных.
В случае клиент-серверного варианта работы на компьютере, где установлена база данных работает специальная служба, которую вы можете посмотреть в Панели управления, пункт “Администрирование” и выбрать оснастку “Службы”; в списке служб вы увидите примерно следующее (зависит от версии 1С) — “Агент сервера 1С:Предприятие 8.хх” или к примеру вот такую службу “1C:Enterprise 8.2 Server Agent:”.
В случае работы с клиент-серверным вариантом, очень полезна оснастка, которая находится в меню Пуск->Все программы(программы)->1С Предприятие 8.х->Дополнительно->Администрирование серверов 1С Предприятия.
Что нам дает данная оснастка в плане работы с пользователями и выгрузкой ИБ?
1. Здесь мы можем завершать работу пользователей
2. Здесь мы можем устанавливать блокировку, запрещающую вход пользователям (на тот случай если нам необходим монопольный доступ к информационной базе)
Оснастка может запрашивать пароль, но какой?
Имя пользователя и пароль (для вас как для Администратора БД) — укажите ваше Имя пользователя и пароль, который вы используете для входа в 1С:Предприятие.
Итак, что мы здесь видим. Видим сервер 1С Предприятия (My_1C) и информационную базу (порт по умолчанию 1541) — My_UPP. В правой части окна видим возможность выбрать -> Сеансы, Блокировки, Соединения.
Сейчас нас интересует ветка с информационными базами, — нажмите правую клавишу мыши на выбранной ИБ, и воспользуйтесь командой “Свойства”, Контекстного меню.
Для того, чтобы запретить пользователям входить и работать с информационной базой необходимо поставить галочку — “Блокировка начала сеансов включена”.
Обратите внимание на Даты начала блокировки и конца блокировки. Начиная с даты и времени начала блокировки и даты и времени окончания блокировки — база будет находиться в монопольном режиме.
До тех, пор пока вы не снимите галочку, никто не может войти и работать с информационной базой, но … Для того, чтобы вы могли сами заходить в ИБ(при помощи командной строки), предусмотрите Код разрешения.
Блокировка регламентных заданий включена — эта блокировка необходима для того, чтобы не разрешать 1С запускать различные регламентные задания в фоновом режиме. Регламентное задание — это какая-либо операция, запускающаяся по расписанию, иногда для того чтобы обновить конфигурацию — мешают регламентные задания, которые запускаются как назло в те моменты, когда вы работает с базой — можете на время воспользоваться указанной возможностью.
Часто бывает такая ситуация, что сервер 1С:Предприятия установлен на одном компьютере (какой-либо главный сервер, как в нашем случае My_1C), а “рулить” вы хотите сервером со своего локального компьютера. (Также возможна ситуация что у вас несколько серверов, а управлять вы хотите этими серверами с локальной оснастки вашего компьютера).
Сделаем следующее на локальной машине откроем оснастку “Администрирование серверов 1С Предприятия” (путь Пуск->Все программы (Программы)->1С_Предприятие 8.х->Дополнительно->Администрирование серверов 1С Предприятия). Если вдруг на локальной машине у вас не установлен этот компонент, то вы его не увидите — идете в Панель управления ->Установка и удаление программ и ищете строку с установкой 1С Предприятия, и изменяете настройку компонентов, добавляя оснастку “Администрирование сервера”
Итак, нашли, выполнили, посмотрели. Идём далее.
В оснастке мы видим пустую строку не включающую в себя ничего, что-то типа Console Root-> Central 1C:Entreprise 8.2 servers. Ставим курсор на эту строку, нажимаем правую клавишу мыши и выбираем команду Создать->Центральный сервер 1С Предприятия 8.2.
Вписываем имя нашего сервера, находящегося в сети, нажимаем “ОК”. и всё — мы имеем возможность работать с локального компьютера и управлять нашим сервером 1С.
Читайте также: