При реорганизации бизнеса, разделении компаний или переезде на новые сервера системные администраторы и программисты 1С часто сталкиваются с неприятным явлением. После покупки новой лицензии (например, аппаратного USB-ключа на 5 пользователей) и переноса рабочей базы на новый сервер в окне "Справка — О программе" продолжает отображаться информация о старой лицензии (например, многопользовательском программном ключе на 50 рабочих мест с реквизитами прежней организации), что часто требует удаления данных отдельной организации из базы 1С.
Это вызывает обоснованную панику у бухгалтеров и руководства, особенно в преддверии налоговых или аудиторских проверок. В этой статье мы подробно разберем, почему платформа «1С:Предприятие» так себя ведет, где хранятся эти данные и какими техническими методами можно полностью очистить историю старых лицензий.
Выясним причину этого поведения платформы. Многие технические специалисты ошибочно полагают, что информация о лицензиях считывается исключительно в режиме реального времени с локального компьютера или сервера лицензирования. Однако платформа «1С:Предприятие» устроена сложнее.
В целях защиты авторских прав и контроля лицензионной чистоты платформа сохраняет историю абсолютно всех лицензий, под которыми когда-либо выполнялось изменение (обновление) конфигурации базы данных. Эти сведения записываются непосредственно в структуру самой информационной базы. Когда вы обновляете конфигурацию, платформа фиксирует параметры текущей лицензии и привязывает их к метаданным.
Простое накатывание нового файла конфигурации (.cf) поверх старой базы, сравнение и объединение или изменение настроек запуска (таких как галочка "Использовать аппаратный ключ защиты") не решают проблему, поскольку история уже зафиксирована во внутренних системных таблицах базы данных.
Проанализируем структуру хранения лицензионной информации. Данные о ранее использованных программных ключах дублируются платформой в двух ключевых местах:
root, входящем в состав метаданных конфигурации.Files под именем специального служебного файла параметров c01b78f6-1525-41b1-9cc1-69e3da58d2ac.pfl.Официальный ответ технической поддержки фирмы 1С по этому поводу неутешителен: «Удалить информацию штатно из интерфейса программы нельзя. Требуется создавать чистую базу данных». Тем не менее, технические способы решения существуют, и мы рассмотрим их ниже.
---
Если ваша информационная база развернута на сервере под управлением Microsoft SQL Server или PostgreSQL, мы можем напрямую очистить запись в системной таблице, которая отвечает за кэширование лицензий.
Важное предупреждение: Перед выполнением любых операций на уровне СУБД обязательно сделайте резервную копию (бэкап) базы данных! Неправильные действия в таблицах СУБД могут привести к полной неработоспособности конфигурации. Для этой цели можно автоматизировать создание архивов и обслуживание нескольких баз 1С в фоновом режиме.
Рассмотрим по шагам процедуру очистки:
Agent 1C:Enterprise). Если этого не сделать, служба удержит кэш в памяти и при перезапуске перезапишет старые данные обратно в SQL.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-ключ) и запишет в эту строку только актуальные и легитимные данные. Старая информация из окна «О программе» полностью исчезнет.
---
Если ваша база данных файловая (формат .1CD), или вы не хотите вмешиваться в таблицы СУБД напрямую, оптимальным и полностью безопасным решением будет перенос данных в «чистую» информационную базу. Посмотрим на этот процесс по шагам:
base.cf.F7).После завершения загрузки вы получите идентичную базу данных, но при открытии окна «О программе» там будет отображаться только действующая лицензия. Чтобы подтвердить целостность учёта после миграции, можно автоматически сравнить данные в двух базах для поиска расхождений на уровне проводок.
---
Для продвинутых администраторов файловых баз существует еще один метод, позволяющий обойтись без переноса данных. Он заключается в ручной очистке конфигурационного файла root.
Рассмотрим этот алгоритм подробнее:
metadata.cf.v8unpack или аналогичные open-source инструменты). Распакуйте файл конфигурации metadata.cf в отдельную папку.root. Откройте его с помощью любого текстового редактора (например, Notepad++).metadata.cf с помощью утилиты упаковки.---
Выясним, грозит ли чем-то компании ситуация, при которой в базе данных продолжает висеть «мусорная» информация о лицензии старого предприятия.
С точки зрения закона: Если у вашего нового юридического лица приобретена официальная коробка программы, имеется регистрационная карточка, лицензионное соглашение и физический USB-ключ (или легальный программный ПИН-код на 5 пользователей), то использование программы является полностью законным.
С точки зрения рисков при проверках: В случае визита правоохранительных органов или проведения официального ИТ-аудита со стороны представителей правообладателя (фирмы 1С) наличие записей о 50-пользовательской лицензии стороннего юридического лица вызовет множество вопросов. Вам придется документально доказывать факт реорганизации, объяснять происхождение этой записи и подтверждать, что вы фактически не используете программные продукты сверх оплаченного лимита.
Чтобы избежать затяжных разбирательств и двусмысленных ситуаций во время проверок, мы настоятельно рекомендуем своевременно проводить очистку истории лицензирования одним из предложенных выше способов.