Как очистить список ранее использованных лицензий и ключей HASP в 1С:Предприятии?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Различие понятий «Текущая лицензия» и «Информационная база»

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

  1. «Текущая» — отражает лицензию, полученную клиентом или сервером для текущего активного сеанса. Именно этот параметр имеет юридическое и техническое значение для валидности запуска.
  2. «Информационная база» — представляет собой накопительный системный журнал. В него платформа автоматически записывает сведения обо всех лицензиях и аппаратных ключах, под которыми когда-либо открывалась данная база данных.

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

Способ 1. Очистка системной таблицы через SQL-запрос (для клиент-серверного режима)

Платформа 1С:Предприятие хранит журнал лицензий внутри служебной таблицы СУБД Files (или files) в специальном конфигурационном файле с расширением .pfl и фиксированным GUID. Чтобы удалить эту историю, выполним прямое обновление таблицы базы данных.

Для Microsoft SQL Server:

Откроем SQL Server Management Studio (SSMS), выберем целевую базу данных и выполним следующий запрос:


USE [Имя_Вашей_Базы]
GO
UPDATE Files 
SET BinaryData = 0x, datasize = 0
WHERE FileName = 'c01b78f6-1525-41b1-9cc1-69e3da58d2ac.pfl';

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

Для PostgreSQL:

В среде pgAdmin или через консольный клиент psql синтаксис приведения типов будет выглядеть следующим образом:


UPDATE files 
SET binarydata = ''::bytea, datasize = 0 
WHERE filename = 'c01b78f6-1525-41b1-9cc1-69e3da58d2ac.pfl';

Обязательные действия после выполнения SQL-запроса:

  1. Остановим или перезапустим службу кластера серверов 1C:Enterprise Server Agent (процессы rphost и rmngr могут удерживать прочитанные служебные таблицы в оперативной памяти).
  2. При необходимости очистим сеансовые данные и серверный кэш.
  3. Запустим 1С:Предприятие и убедимся, что в окне «О программе» отображаются только актуальные данные.

Способ 2. Штатный перенос данных без прямого изменения таблиц

Если прямое вмешательство в структуры СУБД нежелательно или запрещено регламентом предприятия, используем штатные средства платформы. Обратите внимание: стандартная выгрузка базы в файл .dt не решит проблему, так как содержимое таблицы Files выгружается вместе со всей базой и восстанавливается обратно при загрузке.

Разберем корректный алгоритм штатной очистки:

  1. Создадим новую пустую информационную базу в том же релизе платформы.
  2. Выгрузим файл конфигурации (.cf) из исходной базы через конфигуратор: Конфигурация → Сохранить конфигурацию в файл.
  3. Загрузим полученный файл .cf в новую пустую базу и применим изменения структуры.
  4. Выполним перенос данных (справочников, документов, регистров) с помощью типовой обработки «Выгрузка и загрузка данных XML» или настроенных планов обмена.

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

Особенности файловых баз (.1CD)

В файловом режиме база данных упакована в единый файл 1Cv8.1CD. К нему невозможно применить стандартный язык SQL-запросов. Для файловых баз актуальны два варианта:

  1. Временная загрузка базы в клиент-серверный вариант (MS SQL / PostgreSQL), выполнение SQL-запроса по первому способу и последующая обратная выгрузка.
  2. Использование штатного способа переноса метаданных через .cf и данных через XML.

Устранение остаточных компонентов эмуляторов в операционной системе

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

  1. Проверим системный каталог C:\Windows\System32\drivers\ на наличие драйверов фильтрации HASP (например, haspflt.sys).
  2. Остановим соответствующую службу через командную строку с правами администратора и удалим файл драйвера.
  3. Перезагрузим сервер для полной очистки стека аппаратных драйверов ОС.
← На главную