Как полностью удалить информацию о старых программных лицензиях из базы 1С?

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

При реорганизации бизнеса, разделении компаний или переезде на новые сервера системные администраторы и программисты 1С часто сталкиваются с неприятным явлением. После покупки новой лицензии (например, аппаратного USB-ключа на 5 пользователей) и переноса рабочей базы на новый сервер в окне "Справка — О программе" продолжает отображаться информация о старой лицензии (например, многопользовательском программном ключе на 50 рабочих мест с реквизитами прежней организации), что часто требует удаления данных отдельной организации из базы 1С.

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

Почему старая лицензия «намертво» зависает в базе данных?

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

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

Простое накатывание нового файла конфигурации (.cf) поверх старой базы, сравнение и объединение или изменение настроек запуска (таких как галочка "Использовать аппаратный ключ защиты") не решают проблему, поскольку история уже зафиксирована во внутренних системных таблицах базы данных.

Где именно хранятся эти сведения?

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

  1. Внутри конфигурации базы данных: Информация кэшируется в служебном файле root, входящем в состав метаданных конфигурации.
  2. В системных таблицах СУБД (для клиент-серверного варианта): Данные записываются в таблицу Files под именем специального служебного файла параметров c01b78f6-1525-41b1-9cc1-69e3da58d2ac.pfl.

Официальный ответ технической поддержки фирмы 1С по этому поводу неутешителен: «Удалить информацию штатно из интерфейса программы нельзя. Требуется создавать чистую базу данных». Тем не менее, технические способы решения существуют, и мы рассмотрим их ниже.

---

Способ 1. Очистка истории через СУБД SQL (для клиент-серверных баз)

Если ваша информационная база развернута на сервере под управлением Microsoft SQL Server или PostgreSQL, мы можем напрямую очистить запись в системной таблице, которая отвечает за кэширование лицензий.

Важное предупреждение: Перед выполнением любых операций на уровне СУБД обязательно сделайте резервную копию (бэкап) базы данных! Неправильные действия в таблицах СУБД могут привести к полной неработоспособности конфигурации. Для этой цели можно автоматизировать создание архивов и обслуживание нескольких баз 1С в фоновом режиме.

Рассмотрим по шагам процедуру очистки:

  1. Полностью остановите службу сервера «1С:Предприятие» (Agent 1C:Enterprise). Если этого не сделать, служба удержит кэш в памяти и при перезапуске перезапишет старые данные обратно в SQL.
  2. Откройте среду управления вашей СУБД (например, SQL Server Management Studio).
  3. Создайте новый запрос к вашей базе данных. Обратите внимание, что запись в таблице Files нельзя полностью удалять физически (строка должна остаться, иначе возникнет критическая ошибка формата потока). Нам нужно именно обнулить бинарные данные в этой строке.

Для базы данных на MS SQL Server выполните следующий скрипт:


USE [Имя_Вашей_Базы_Данных]
GO
UPDATE Files 
SET BinaryData = CONVERT(varbinary(max),''), datasize = 0 
WHERE FileName = 'c01b78f6-1525-41b1-9cc1-69e3da58d2ac.pfl'
GO

Для базы данных на PostgreSQL используйте следующий запрос:


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

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

---

Способ 2. Перенос данных в чистую базу через XML (Безопасный метод)

Если ваша база данных файловая (формат .1CD), или вы не хотите вмешиваться в таблицы СУБД напрямую, оптимальным и полностью безопасным решением будет перенос данных в «чистую» информационную базу. Посмотрим на этот процесс по шагам:

  1. Откройте исходную рабочую базу в режиме Конфигуратора и выполните выгрузку конфигурации в файл (меню Конфигурация — Сохранить конфигурацию в файл...). Назовем полученный файл, например, base.cf.
  2. Создайте на новом сервере (желательно там, где физически установлен новый USB-ключ защиты) абсолютно новую, пустую информационную базу без конфигурации.
  3. Запустите Конфигуратор новой пустой базы. Загрузите в неё ранее сохраненный файл конфигурации через меню Конфигурация — Загрузить конфигурацию из файла.... Обновите конфигурацию базы данных (клавиша F7).
  4. Поскольку конфигурация была загружена в абсолютно чистую базу на сервере с новой лицензией, история старых ключей в ней отсутствует.
  5. Теперь нам необходимо перенести все учетные данные. Для этого воспользуйтесь универсальной обработкой «Выгрузка и загрузка данных XML» (ее можно найти на диске ИТС или в составе инструментов разработчика).
  6. В исходной базе запустите обработку, выберите все необходимые объекты (справочники, документы, константы, регистры сведений и накопления) и выгрузите их в XML-файл.
  7. В новой («чистой») базе запустите эту же обработку в режиме предприятия и выполните загрузку полученного XML-файла.

После завершения загрузки вы получите идентичную базу данных, но при открытии окна «О программе» там будет отображаться только действующая лицензия. Чтобы подтвердить целостность учёта после миграции, можно автоматически сравнить данные в двух базах для поиска расхождений на уровне проводок.

---

Способ 3. Очистка файловой базы с помощью распаковки метаданных

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

Рассмотрим этот алгоритм подробнее:

  1. Выгрузите конфигурацию вашей рабочей базы в файл metadata.cf.
  2. Используйте специализированные утилиты для работы с файлами контейнеров 1С (например, распаковщик v8unpack или аналогичные open-source инструменты). Распакуйте файл конфигурации metadata.cf в отдельную папку.
  3. Среди распакованных файлов найдите текстовый файл с именем root. Откройте его с помощью любого текстового редактора (например, Notepad++).
  4. Проанализируйте содержимое файла. Вы увидите структуру метаданных, среди которых будут присутствовать блоки, содержащие GUID-идентификаторы старых лицензий и хэш-строки параметров организаций. Аккуратно удалите строки, содержащие информацию о старой привязке к лицензиям.
  5. Соберите файлы обратно в контейнер metadata.cf с помощью утилиты упаковки.
  6. Загрузите очищенную конфигурацию обратно в базу через Конфигуратор (команда Загрузить конфигурацию из файла...) и примените изменения.

---

Юридический аспект: Насколько законно оставлять все как есть?

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

С точки зрения закона: Если у вашего нового юридического лица приобретена официальная коробка программы, имеется регистрационная карточка, лицензионное соглашение и физический USB-ключ (или легальный программный ПИН-код на 5 пользователей), то использование программы является полностью законным.

С точки зрения рисков при проверках: В случае визита правоохранительных органов или проведения официального ИТ-аудита со стороны представителей правообладателя (фирмы 1С) наличие записей о 50-пользовательской лицензии стороннего юридического лица вызовет множество вопросов. Вам придется документально доказывать факт реорганизации, объяснять происхождение этой записи и подтверждать, что вы фактически не используете программные продукты сверх оплаченного лимита.

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

← На главную