При использовании одного терминального сервера (RDP) для обслуживания нескольких независимых организаций часто возникает проблема «справедливого» распределения программных лицензий. Если просто активировать все лицензии на сервере, 1С будет раздавать их в порядке очереди: кто первый зашел, тот и занял лицензию, независимо от того, какой компании она принадлежит. Рассмотрим, как настроить систему так, чтобы пользователи каждой организации использовали только свои лицензии.
Прежде чем переходить к настройкам, разберем по шагам, как именно 1С:Предприятие ищет программную лицензию при запуске. Платформа проверяет наличие файлов с расширением .lic в нескольких локациях:
%AppData%\1C\1Cv8\conf.%ProgramData%\1C\licenses (или C:\Documents and Settings\All Users\Application Data\1C\1Cv8\conf в старых ОС).conf).Если мы хотим изолировать лицензии, нам нужно сделать так, чтобы пользователи компании «А» физически не могли «прочитать» файл лицензии компании «Б».
Этот метод считается наиболее надежным для терминальных серверов. Рассмотрим его реализацию подробнее. По умолчанию программные лицензии сохраняются в общую папку C:\ProgramData\1C\licenses. Если мы оставим всё как есть, любой пользователь, запустивший 1С, получит доступ ко всем файлам в этой папке.
Разберем алгоритм настройки:
Users_Org_A и Users_Org_B).licenses создадим подпапки для каждой фирмы. Активируем лицензии таким образом, чтобы файлы .lic каждой компании попали в свою папку.Users_Org_A).В результате, когда сотрудник фирмы «Б» запустит 1С, платформа попытается просканировать папку с лицензиями. Файлы фирмы «А» будут для него невидимы на уровне файловой системы, и 1С их просто проигнорирует, перейдя к поиску доступных файлов фирмы «Б».
Проанализируем критически важный нюанс клиент-серверной архитектуры. Если ваши базы данных работают на сервере 1С (SQL-вариант), то по умолчанию лицензии может выдавать сам сервер (процесс rphost). В этом случае предыдущий способ с правами NTFS не сработает, так как rphost обычно работает под одной системной учетной записью и имеет доступ ко всем лицензиям сразу. Он будет раздавать их из общего пула любому подключившемуся пользователю.
Выясним, как принудительно заставить клиента искать лицензию самостоятельно в своей RDP-сессии:
После этой настройки сервер 1С перестанет выдавать лицензии из своего общего хранилища. Теперь лицензию будет искать само клиентское приложение, запущенное в сеансе пользователя. Здесь-то и вступят в силу наши ограничения NTFS, настроенные в первом способе.
Рассмотрим альтернативный вариант, который подходит, если лицензий немного (например, однопользовательские). При активации программной лицензии система спрашивает, для кого она устанавливается: «Для всех пользователей данного компьютера» или «Для текущего пользователя».
Если выбрать «Для текущего пользователя», файл лицензии сохранится в %AppData%\1C\1Cv8\conf. Этот каталог по определению недоступен другим пользователям сервера. Однако у этого метода есть существенный минус: если пользователь сменит компьютер или его профиль на сервере будет пересоздан, лицензию придется активировать заново или переносить файл вручную.
Посмотрим на разницу между типами программных лицензий. Однопользовательские лицензии проще всего распределять по папкам или профилям. С многопользовательскими лицензиями (например, на 10 или 20 рабочих мест) ситуация сложнее. Такая лицензия представляет собой один файл .lic. Вы не можете «откусить» от него 5 лицензий для одной фирмы и 15 для другой штатными средствами Windows. Если вам нужно жесткое разделение, организациям следует приобретать отдельные пакеты лицензий, чтобы у каждой был свой собственный файл активации.
Если ваша организация использует версию 1С:Предприятие КОРП, мы можем воспользоваться более продвинутым инструментом — Сервером лицензирования. Он позволяет создавать профили безопасности и гибко назначать количество доступных лицензий для конкретных баз или групп пользователей. Однако для большинства типовых задач на базе версии ПРОФ достаточно комбинации NTFS-прав и настройки параметров информационной базы в консоли сервера.
Резюме: Чтобы реализовать схему «каждому своя лицензия» на одном RDP-сервере, выполните следующие действия: разделите пользователей по группам ОС, ограничьте права доступа к файлам .lic через безопасность папок и обязательно отключите выдачу лицензий в свойствах базы на сервере 1С.