Администраторы и пользователи систем на базе платформы 1С:Предприятие 8.3 часто сталкиваются с крайне неприятной ситуацией. В разгар рабочего дня при попытке входа в программу система выдает предупреждение: «Не обнаружено свободной лицензии». При этом по бухгалтерским или лицензионным документам у вас может быть приобретено достаточное количество рабочих мест (например, пакет на 5, 10 или более пользователей), а фактически в программе работают всего три человека. Попытка подключить четвертого пользователя оборачивается неудачей.
В этой статье мы подробно разберем, почему возникает подобный дефицит лицензий, как технически устроена раздача программных ключей в системе 1С, в чем особенности работы решения Сервер МИНИ, и как исправить ошибку раз раз и навсегда без дополнительных финансовых затрат.
Для начала проанализируем ситуацию, которая часто складывается в небольших компаниях. Типичная инфраструктура: развернут терминальный сервер (подключение по RDP), на котором установлена база данных 1С (например, 1С:Бухгалтерия 3.0) и используется связка из клиент-серверного варианта работы на базе СУБД под управлением Сервера МИНИ на 5 подключений. Также куплен комплект программных клиентских лицензий на 5 пользователей.
Когда один из сотрудников пытается запустить четвертый сеанс, система выдает ошибку. Чтобы понять, почему это происходит, нам необходимо четко разграничить два понятия:
ragent, rmngr, rphost). Сервер МИНИ имеет жесткое технологическое ограничение — на нем одновременно может быть запущено не более 5 сеансов пользователей в режиме предприятия и 1 сеанс в режиме конфигуратора. Эта лицензия сама по себе не заменяет клиентские лицензии пользователей!.lic (или аппаратные USB-ключи HASP), которые дают право конкретному пользователю или компьютеру запустить клиентское приложение 1С (тонкий, толстый или веб-клиент).Основная проблема нехватки свободных лицензий при их физическом наличии почти всегда кроется в способе раздачи этих лицензий. Существует два принципиально разных механизма раздачи программных ключей, и выбор неправильного режима для терминального сервера моментально приводит к искусственному дефициту мест.
Рассмотрим подробнее, как именно распределяются программные лицензии в зависимости от настроек информационной базы в кластере 1С. За это отвечает параметр в свойствах базы данных: «Разрешить выдачу лицензий сервером».
При такой схеме все клиентские лицензии устанавливаются непосредственно на сервер 1С:Предприятия. Когда пользователь запускает программу, клиентское приложение не ищет лицензию на локальном компьютере, а обращается к серверу 1С. Сервер берет одну лицензию из своего пула и отдает ее клиенту.
Важное ограничение: При выдаче лицензий сервером действует жесткое правило — «одна лицензия на один сеанс». Это означает, что если один и тот же бухгалтер в рамках своей RDP-сессии захочет запустить одновременно три разные информационные базы (например, «Бухгалтерия предприятия», «Зарплата и управление персоналом» и тестовую копию), сервер 1С заберет из общего пула целых три клиентские лицензии! В результате при наличии пакета на 5 пользователей один человек может легко израсходовать большую часть доступного лимита, а коллеги просто не смогут войти в систему.
Если мы запрещаем серверу раздавать лицензии, задача их поиска полностью перекладывается на плечи клиентского приложения. Так как мы рассматриваем работу пользователей в терминальном режиме (RDP), конфигуратор или тонкий клиент фактически запускаются непосредственно на самом терминальном сервере.
При запуске клиентское приложение обращается к локальным ресурсам сервера и ищет файлы лицензий в общей папке C:\ProgramData\1C\licenses. При таком сценарии на терминальном сервере начинает действовать экономное правило — «одна лицензия на одного пользователя ОС (сеанс RDP)». Это означает, что один пользователь внутри своего терминального подключения может открыть хоть пять окон 1С и запустить разные базы — система израсходует всего одну клиентскую лицензию на его сеанс. Это ключевой момент, который позволяет радикально снизить потребление лицензий.
Для того чтобы решить проблему нехватки свободных лицензий, выполним комплекс последовательных действий.
Переведем наши базы данных в режим выдачи лицензий клиентом. Для этого выполним следующие действия:
После этого клиентские приложения перестанут запрашивать лицензии у сервера 1С и начнут искать их локально в операционной системе терминала.
Поскольку теперь клиенты ищут лицензии самостоятельно на терминальном сервере, нам нужно убедиться, что файлы программных лицензий лежат в правильном месте и доступны всем пользователям RDP.
Когда вы активируете однопользовательские лицензии по отдельности (например, у вас было 3 лицензии, потом докупили еще 2, затем еще 1), они должны суммироваться в единый пул. Это происходит автоматически, если соблюдать два правила:
В этом случае файлы с расширением .lic будут сохранены в общую системную папку. Давайте проверим это. Перейдем по пути:
C:\ProgramData\1C\licenses
В этой папке вы должны увидеть все ваши файлы лицензий (и серверную, и клиентские). Если вы обнаружили, что файлов там меньше, чем должно быть, возможно, часть лицензий была случайно активирована «Только для текущего пользователя» и сохранилась в личный профиль администратора:
%APPDATA%\1C\1Cv8\licenses (или аналогичный путь в профиле пользователя)
Файлы из личных папок будут недоступны другим пользователям терминала. Перенесите их в общую папку C:\ProgramData\1C\licenses, чтобы система могла их успешно суммировать.
Очень частая причина «пропадания» уже активированных лицензий — это изменение сетевого имени компьютера или его аппаратных характеристик. Программная лицензия 1С жестко привязывается к ключевым параметрам системы:
WIN-0C48LTCQO1U, а системный администратор переименовал его в SERVER1C).Если хотя бы один из этих параметров изменился, старые файлы лицензий становятся недействительными. Иногда они продолжают работать какое-то время из-за отложенной проверки платформой, но при первом же сбое или перезагрузке сервера лицензии «слетают», и пользователи получают ошибку.
Проанализируем лог поиска лицензий, который система выводит при ошибке. Если вы видите, что в логе фигурируют старые имена компьютеров или файлов лицензий меньше, чем фактически лежит в папке, это явный признак рассинхронизации привязок.
Ниже приведен пример лога неудачного поиска лицензии, который можно увидеть при детальном анализе:
Локальный поиск лицензий:
Файл лицензии C:\ProgramData\1C\licenses\20180919.lic - Нарушена привязка к компьютеру! (Изменилось имя компьютера с WIN-0C48LTCQO1U на SERVER1C)
Файл лицензии C:\ProgramData\1C\licenses\20200123.lic - Успешно проверен на SERVER1C
Сетевой поиск в локальной сети:
Ключи защиты HASP не обнаружены.
Поиск на сервере 1С:Предприятия:
Выдача лицензий сервером запрещена пользователем.
Из этого примера видно, что старая лицензия от 2018 года заблокирована платформой, так как имя компьютера изменилось. Нам необходимо выполнить процедуру восстановления (переактивации) поврежденных ключей.
Если привязка лицензий «слетела» из-за переименования сервера, выполним процедуру восстановления через Конфигуратор 1С. Для этого запустим 1С на самом сервере в режиме Конфигуратор (желательно под учетной записью Администратора Windows):
SERVER1C.После успешной активации всех поврежденных ключей обязательно зайдите в папку C:\ProgramData\1C\licenses и удалите (или перенесите во временную папку-архив) старые файлы лицензий, у которых нарушена привязка, чтобы они не вызывали путаницу в системе.
При частых экспериментах с настройками сервера или изменениях оборудования резервные пин-коды из коробки могут закончиться. Не поддавайтесь панике — вам не придется покупать новые лицензии.
Для получения дополнительных пин-кодов отправьте электронное письмо в Центр лицензирования 1С по адресу lic@1c.ru. В письме обязательно укажите:
Техническая поддержка оперативно обработает ваш запрос и вышлет новые пин-коды для продолжения работы.
Таким образом, правильная настройка параметров раздачи лицензий в кластере 1С и корректная привязка программных ключей к аппаратным характеристикам терминального сервера позволяют навсегда забыть об ошибке нехватки свободных мест и оптимизировать работу пользователей.