1с ключ пользовательских настроек

Обновлено: 08.07.2024

В статье рассмотрены стандартные и добавленные в конфигурацию хранилища настроек, их предназначение и средства встроенного языка 1С для взаимодействия с хранилищами настроек.

Содержание

Что же такое хранилища настроек и для чего они нужны?

Где еще хранятся настройки?

Как оно работало раньше?

Давным-давно, когда не было еще тонкого клиента и управляемых форм, появились методы для записи и чтения настроек:
СохранитьЗначение();
ВосстановитьЗначение();

Однако эти два метода сохранения значений имеют ряд недостатков.

1. Мы не можем узнать весь список значений, которые сохранены в базе. Они могут быть сохранены пользователем, который уже уволен и в базе не работает. Они могут быть сохранены какой-нибудь обработкой, которую мы запустили раз в жизни и удалили, а сохраненные значения от нее остались в базе и занимают место.
2. Сохраненные значения сохраняются в памяти в течение сеанса, но записываются в базу только при закрытии сеанса. Т.е. если произошло аварийное завершение работы (через прерывание отладки или завершение сеанса в диспетчере задач, например), то сохраненные значения не сохранятся.
3. Выборочно удалить сохраненное значение средствами платформы нельзя. Можно только очистить все сохраненные настройки пользователя, в том числе и сохраненные значения.
4. Эти методы работают только в толстом клиенте. В современных типовых решениях воспользоваться ими вряд ли удастся.

Выход - хранилища настроек 1С!

К стандартным относятся следующие хранилища:

Хранилище настроек на прокачку!



Эти хранилища целесообразно использовать, например, в таких случаях:

Как использовать хранилища настроек 1С?

Кроме того, разработчик может описать в нужных местах код сохранения и восстановления настроек, например, по кнопке, по определенному действию (например, при переходе на закладку формы сохранять данные предыдущей закладки), обработчику ожидания (например, сохранять настройки каждые 10 минут)

Для этого используется конструкции языка

Для интерактивного сохранения и восстановления настроек с использованием хранилищ настроек, обязательно необходимо создать формы сохранения и загрузки у соответствующего хранилища. Для программного сохранения и восстановления формы не обязательны.

Использование объекта ХранилищеОбщихНастроек. Считаю этот вариант наиболее удобным и гибким.

Объект доступен в глобальном контексте. Содержит следующие методы:

Сохранение настроек:

// ключи могут быть произвольными строками
КлючОбъекта = " MIKO " ;
КлючНастроек = "ПанельТелефонии" ;
// настройки могут быть произвольного типа
Настройки = Новый Структура ( "Это настройки произвольного типа, к примеру структура" , "" );
ИмяПользователя = ИмяПользователя ();

// имя пользователя - пользователь владелец настроек, если параметр не указать,
// то настройки будут сохранены для ТЕКУЩЕГО пользователя
ИмяПользователя = ИмяПользователя ();
ХранилищеОбщихНастроек .C охранить ( КлючОбъекта , КлючНастроек , Настройки , , ИмяПользователя );

Под пользователем понимается именно пользователь информационной базы! Пример получения имени текущего пользователя:

// получим имя
ИмяТекущегоПользователя = ИмяПользователя ();
// в типовых конфигурация используется справочник "Пользователи"
// в этом справочнике в стандартном реквизите "Код" обычно
// хранят информацию по имени пользователя, пример получения имени:
ИмяПользователя = Справочники . Пользователи . НайтиПоНаименованию ( "Администратор" ). Код ;
// обычно "Код", для этого справочника - строка фиксированной длинны, потому вероятно разумно обрезать пробелы справа:
ИмяПользователя = СокрП ( ИмяПользователя );

Восстановление настроек:

КлючОбъекта = " MIKO " ;
КлючНастроек = "ПанельТелефонии" ;
ВладелецНастроек = ИмяПользователя ();
// Для восстановления настроек необходимо воспользоваться функцией Загрузить
СтруктураНастроек = Неопределено;
Попытка
СтруктураНастроек = ХранилищеОбщихНастроек . Загрузить ( КлючОбъекта , КлючНастроек ,, ВладелецНастроек );
// если настроек нет, то будет возвращено значение "Неопределено"
Исключение
Сообщить ( "Нет прав на восстановление настроек." );
КонецПопытки;

Если СтруктураНастроек = Неопределено Тогда
Сообщить ( "Не вышло восстановить настройки!" );
КонецЕсли;

ВладелецНастроек - это имя пользователя, владельца настроек. Параметр очень важный.

Настройки других пользователей могут получать ТОЛЬКО пользователи с расширенными правами.

Необходимо право "АдминистрированиеДанных".

Пробелы справа игнорируются!

Плюсы
  • Возможно работать со значениями настроек других пользователей.
  • Доступность: Сервер, толстый клиент, внешнее соединение.

Получение всех ключей настроек по ключу объекта

// Пример получения всех настроек по ключу объекта
КлючОбъекта = "MIKO" ;
ВладелецНастроек = ИмяПользователя ();
Попытка
// возвращает список значений
// элементы списка - ключи настроек
СтруктураНастроек = ХранилищеОбщихНастроек . ПолучитьСписок ( КлючОбъекта , ВладелецНастроек );
Исключение
Сообщить ( "Нет прав на восстановление настроек." );
КонецПопытки;


Подведем итог

В рамках этой заметки я рассказал о двух вариантах работы с настройками пользователя. Пробуйте :).

Получение клиентских лицензий через сервер 1С:Предприятия

Раздел описывает особенности получения лицензий клиентами 1С:Предприятия через сервер 1С:Предприятия.

Когда сервер 1С:Предприятия выдает клиентские лицензии

Для запуска клиента 1С:Предприятия необходимо наличие свободной лицензии в клиентском ключе. При запуске клиент 1С:Предприятия выполняет поиск доступной клиентской лицензии в следующей последовательности:

  • локальный клиентский ключ (кроме веб-клиента);
  • сетевой клиентский ключ (кроме веб-клиента);
  • локальный клиентский ключ сервера (кроме информационной базы на локальном компьютере или на компьютере в локальной сети). Для информационной базы на сервере 1С:Предприятия используется локальный ключ компьютера менеджера лицензий, на который назначен сервис сеансовых данных. Для файловой информационной базы на веб-сервере используется локальный ключ веб-сервера;
  • сетевой клиентский ключ сервера (кроме информационной базы на локальном компьютере или на компьютере в локальной сети). Для информационной базы на сервере 1С:Предприятия доступ к сетевому ключу выполняет компьютер менеджера лицензий, на который назначен сервис сеансовых данных. Для файловой информационной базы на веб-сервере доступ к сетевому ключу выполняет веб-сервер;
  • программная лицензия базовой конфигурации.

Таким образом, если клиент 1С:Предприятия не нашел свободной клиентской лицензии на одном из доступных ему ключей, то он обращается за клиентской лицензией на сервер. В этом случае сервер выполняет поиск и занятие свободной лицензии на одном из клиентских ключей, доступных серверу.

Отличия в получении клиентских лицензий через сервер

Механизм получения сервером клиентских лицензий в основном аналогичен получению клиентских лицензий клиентами. Его особенности определяются тем, что процесс менеджера кластера, на который назначен сервис сеансовых данных, или веб-сервер для файловой информационной базы:

  • может занять одновременно несколько клиентских лицензий, в отличие от клиента;
  • может подключиться только к одному локальному и одному сетевому ключу одной серии;
  • в общем случае не может идентифицировать клиентский компьютер из-за возможности подключения клиента к информационной базе через веб-сервер.

Одна лицензия на экземпляр клиента

При получении клиентской лицензии через сервер лицензию занимает каждый экземпляр клиента, независимо от того, работают они на одном компьютере или на разных. Например, если клиентскому компьютеру доступен клиентский ключ, то при запуске на нем двух клиентов будет занята только одна клиентская лицензия, а если клиентскому компьютеру клиентский ключ не доступен, то при запуске на нем двух клиентов будут заняты через сервер две клиентские лицензии.

Локальная установка сетевого клиентского ключа

Если многопользовательский (сетевой) клиентский ключ установлен в компьютер менеджера кластера, на который назначен сервис сеансовых данных, а для файловой информационной базы - в веб-сервер, то сервер может получить из этого ключа несколько клиентских лицензий (в соответствии с номиналом ключа) даже если на компьютере не установлен менеджер лицензий. Отсутствие менеджера лицензий не позволит использовать этот ключ с других компьютеров локальной сети или из терминальных сессий иначе, как через сервер.

Такой способ подключения можно использовать для того, чтобы клиенты, имеющие доступ к информационной базе через веб-сервер, гарантированно не могли занять лицензии клиентов, работающих в офисе по локальной сети. Для этого:

  • установите клиентский ключ с лицензиями, предназначенными для доступа через веб-сервер, в компьютер сервера и не устанавливайте на нем менеджер лицензий.
  • на компьютере сервера в подкаталог conf каталога загрузочных модулей 1С:Предприятия поместите файл nethasp.ini, запрещающий поиск клиентского ключа по сети, например такой:

[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Disabled

  • другой клиентский ключ, лицензии которого предназначены для пользователей локальной сети, установите в другой компьютер и запустите на нем менеджер лицензий.

Сервер предпринимает попытку получения клиентской лицензии из локальных ключей всех клиентских серий: ORGL8 (1 - 100 пользователей), ORG8A (300 пользователей), ORG8B (500 пользователей). Установка в компьютер сервера нескольких ключей разных серий позволяет увеличить количество клиентских лицензий, доступных для получения через сервер.

Доступ сервера к сетевому клиентскому ключу

Если сервер не нашел свободной лицензии в локальных ключах, то он выполняет поиск свободной лицензии на сетевых ключах всех клиентских серий в соответствии с настройками файла nethasp.ini.

Сервер может иметь соединение только с одним сетевым ключом одной серии. При исчерпании лицензий в одном сетевом ключе поиск в сети других ключей той же самой серии не выполняется. Таким образом, общее количество клиентских лицензий, доступных для получения через один сервер ограничено числом 1800: локальный на 100, локальный на 300, локальный на 500, сетевой на 100, сетевой на 300, сетевой на 500.

Множественное назначение сервиса сеансовых данных

Чтобы через сервер могло быть получено более чем 1800 клиентских лицензий необходимо:

  • определить кластер серверов 1С:Предприятия на 2 и более компьютерах;
  • на каждом из компьютеров (кроме первого) запустить дополнительный менеджер кластера;
  • сервис сеансовых данных назначить нескольким менеджерам на разных компьютерах;
  • при использовании локальных ключей установить локальные ключи в каждый из компьютеров менеджеров, на которые назначен сервис сеансовых данных;
  • при использовании сетевых ключей на компьютерах менеджеров, на которые назначен сервис сеансовых данных, определить nethasp.ini с указанием разных менеджеров лицензий, Например:

[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 1.2.3.4 ; Адрес компьютера с менеджером лицензий
NH_USE_BROADCAST = Disabled

[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 1.2.3.5 ; Адрес компьютера с менеджером лицензий
NH_USE_BROADCAST = Disabled

В этом случае кластер серверов 1С:Предприятия будет равномерно распределять клиентские сеансы между менеджерами, что позволит обеспечить доступность через сервер произвольного количества клиентских лицензий.

1С поддерживает работу как с программными, так и с аппаратными ключами. Разберемся подробнее с каждым из этих видов:

Программный ключ защиты 1С

Условно программную лицензию 1С можно поделить на 2 вида:

Однопользовательская лицензия ставится на один ПК и позволяет использовать платформу 1С. При этом стоит отметить, что количество конфигураций и информационных баз программный ключ не ограничивает.

Многопользовательская лицензия чаще всего устанавливается на сервер (1С:Предприятие, сервер терминалов, WEB-сервер). При обращении 1С-клиента к 1С-серверу программное обеспечение само отслеживает количество свободных лицензий и позволяет (или не позволяет, если количество лицензий исчерпано) работать с 1С. При этом стоит отметить, что многопользовательская лицензия до 50 пользователей может быть активирована не только на сервере, как общая, её можно активировать на 50 разных клиентских компьютерах как 50 однопользовательских лицензий. Но если хотя бы одна лицензия из комплекта многопользовательской активирована как однопользовательская, то дальнейшее использование лицензий как “комплекта” уже невозможно.

Аппаратный ключ защиты 1С

Более надежным, но вместе с тем, и более дорогим способом защиты 1С являются аппаратные ключи. Аппаратные ключи защиты (HASP-ключ) выглядят как флешка и отмечают 1С, как прошедшую лицензирование. В данном случае, в отличие от программной лицензии, ПИН хранится на HASP, а не в файле на компьютере/сервере.

Существуют 4 вида аппаратных ключей, каждый имеет отличительный цвет и маркировку:

. Стоит подчеркнуть, что специалисты 1С не рекомендуют использование локального ключа и сетевого ключа на одной машине. При запуске 1С будет идентифицирован локальный ключ, а сетевой использоваться не будет, при этом все остальные пользователи сети не смогут “видеть” сетевой ключ и, как следствие, не смогут работать в 1С.

аппаратные ключи 1С

Менеджер лицензий 1С

В случае работы с многопользовательской лицензией необходимо, чтобы 1С знала о наличии такой лицензии в сети. За это отвечает Менеджер лицензий 1С (Hasp License Manager). Менеджер лицензий 1С является дополнительным программным обеспечением (входит в комплект поставки), без которого многопользовательская лицензия не будет корректно работать.

Ответы на часто задаваемые вопросы по ключам защиты 1С

№1. 1С не видит лицензии

В случае использования аппаратных ключей, если 1С не видит лицензий, в первую очередь необходимо удостовериться, что на HASP-ключе мигает индикатор. Это показатель того, что устройство определено и драйвер HASP-ключа установлен. Если лампочка не горит, попробуйте подключить ключ-флешку в другой порт USB, либо обратитесь к системному администратору, возможно у пользователя не хватает прав доступа для установки драйвера.

Также, в первую очередь убедитесь, что к компьютеру подключен ключ нужной серии. помните, что ключи могут блокировать друг-друга.

№2. Драйвер ключа защиты HASP устанавливается с ошибкой.

  1. Возможно несовместимы операционная система и драйвер ключа. Попробуйте скачать более новую версию драйвера.
  2. Файлы драйвера могут быть заблокированы из-за того, что заняты другим процессом. Попробуйте перезагрузить компьютер и сразу после загрузки установить драйвер. Либо примените консольную версию утилиты установки с параметрами командной строки: hinstall -i -kp

№3. Ошибка: HASP not Found (-3), (Error 7), (H0007)

HASP в сети работает по порту 475. Убедитесь, что на компьютере с ключом, на компьютере с запущенным приложением и в сети не блокируется порт 475. Он может быть заблокирован брандмауэром или антивирусом.

№4. HASP Device Driver not installed (-100)

Распространенная ошибка Windows XP. Драйвер защиты загружается медленее, чем сервер защиты из автозагрузки. Вместо сервера защиты используйте Менеджер лицензий LMSETUP, который устанавливается, внимание, в качестве службы (Service) Windows!

В дополнение скажем, что при работе с 1С могут одновременно функционировать два и более менеджеров лицензий, но для предотвращения появления ошибок каждому менеджеру должно быть присвоено свое уникальное имя. Для этого используют файл nhsrv.ini, нужно изменить значение параметра NHS_SERVERNAMES в секции NHS_SERVER. Более того, необходимо сообщить эти имена каждой копии запущенной программы. Для этого используют nethasp.ini: в параметре NH_SERVER_ADDR указывают ip-адреса серверов, в параметре NH_SERVER_NAME указывают их имена в том же порядке, в котором были указаны адреса.

Если у вас еще есть вопросы по выбору, настройке, покупке программных или аппаратных ключей 1С на 10-50 пользователей, вы всегда можете обратиться за консультацией к нашим специалистам.

Читайте также: