Как исправить ошибку лицензии «В информационной базе созданы дополнительные индексы» в 1С?

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

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

Анализируем причину появления ошибки

Для начала выясним причину возникновения данной ситуации. В версии платформы 8.3.26 разработчики 1С реализовали функционал создания дополнительных индексов базы данных без изменения метаданных конфигурации. Этот механизм предназначен для оптимизации производительности на крупных внедрениях. Чтобы лучше понять внутренние механизмы этого процесса, рекомендуем изучить структуру хранения базы данных. Однако, согласно лицензионной политике, данная возможность является прерогативой лицензий уровня КОРП (CORP). Если ваша организация использует лицензии уровня ПРОФ (PROF), использование таких индексов запрещено.

Проанализируем ситуацию, почему ошибка возникает не сразу и не у всех. Платформа 1С имеет встроенный механизм «тестового окна»: функции уровня КОРП позволяют запускать до 10 сеансов включительно даже на ПРОФ-лицензиях. Это сделано для того, чтобы разработчики могли ознакомиться с функционалом. Как только подключается 11-й сеанс, система инициирует строгую проверку состава используемых функций. Если платформа обнаруживает признаки использования дополнительных индексов, она блокирует вход всем пользователям, начиная с одиннадцатого.

Рассмотрим, почему ошибка возникает у тех, кто не создавал никаких индексов. Это происходит из-за критической ошибки в первых сборках платформы (например, 8.3.26.1150). Система ошибочно устанавливает флаг использования КОРП-функций в системных таблицах базы данных при обновлении или реструктуризации, даже если список индексов пуст.

Способ 1: Обновление платформы до исправленного релиза

Самый правильный и надежный метод решения — это установка версии платформы, в которой баг №000165534 был официально исправлен. Разберем этот процесс по шагам. На текущий момент исправления внесены в следующие ветки:

Проанализируем порядок действий при обновлении сервера:

  1. Остановите службу 1С:Предприятие 8.3 Server Agent.
  2. Выполните установку нового дистрибутива платформы на сервер и на рабочие станции пользователей.
  3. Если вы используете серверную лицензию, убедитесь, что версия драйвера защиты или программного ключа актуальна.
  4. Запустите службу сервера и проверьте количество сеансов через консоль администрирования, при необходимости используя инструменты для удаления спящих сеансов на кластере 1С.

Способ 2: Откат на стабильную версию 8.3.25

Если ваша конфигурация (например, старая УТ 10.3 или БП 2.0) не требует специфических функций 26-го релиза, наиболее безопасным вариантом будет откат на предыдущую стабильную ветку 8.3.25. Рассмотрим, как сделать это безболезненно:

Важно помнить, что если режим совместимости конфигурации установлен в значение ниже 8.3.25, то понижение версии платформы не вызовет проблем со структурой данных. Выясним причину, по которой это помогает: в ветке 8.3.25 функционала «Дополнительные индексы» еще не существовало, поэтому проверка лицензии КОРП по этому признаку просто не запустится.

Для выполнения отката:

  1. Удалите текущую версию 8.3.26.
  2. Установите последний стабильный релиз 8.3.25.xxxx.
  3. Перезапустите сервер 1С.

Способ 3: Очистка системных признаков через выгрузку в .dt

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

Выполним следующие действия:

  1. Зайдите в Конфигуратор (если количество сеансов позволяет это сделать).
  2. Выберите пункт меню Администрирование — Выгрузить информационную базу... и сохраните файл .dt.
  3. Создайте новую пустую информационную базу.
  4. Зайдите в Конфигуратор новой базы и выберите Администрирование — Загрузить информационную базу....
  5. После загрузки проверьте работу системы при количестве пользователей более десяти.

Важно: Для крупных баз (более 50-100 Гб) выгрузка в .dt может занять длительное время и привести к ошибкам нехватки памяти. В таких случаях используйте средства SQL Server для реиндексации, например, доработанное решение на базе MaintenanceSolution, но этот метод менее эффективен против данного конкретного бага платформы.

Способ 4: Ручной поиск и удаление индексов

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

В современных релизах платформы у объектов (справочники, документы, регистры) в дереве конфигуратора появилась команда Дополнительные индексы. Рассмотрим пример того, как это выглядит в коде или свойствах. Хотя индексы задаются визуально, их наличие можно косвенно определить, используя обработку для анализа структуры хранения данных:

  1. Откройте Конфигуратор.
  2. Перейдите в меню Администрирование — Управление дополнительными индексами.
  3. Проанализируйте открывшееся окно. Если там присутствуют какие-либо записи, их необходимо удалить для работы на ПРОФ-лицензии.
  4. Нажмите кнопку «Применить» или «ОК», чтобы платформа инициировала реструктуризацию и физически удалила индексы из SQL.

Учет влияния фоновых заданий

Многие системные администраторы забывают, что фоновое задание в 1С — это полноценный сеанс. Выясним, как это влияет на нашу ошибку. Если у вас куплено 10 лицензий ПРОФ и в базе работают 8 пользователей, кажется, что лимит в 11 сеансов не достигнут. Однако, если в этот момент запустятся:

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


// Пример логики для мониторинга количества сеансов (концептуально)
КоличествоСеансов = СоединенияИнформационнойБазы.ПолучитьСеансы().Количество();
Если КоличествоСеансов > 10 Тогда
    ЗаписьЖурналаРегистрации("Лицензирование", УровеньЖурналаРегистрации.Предупреждение, , , 
        "Внимание! Достигнут порог проверки КОРП-лицензий. Текущее количество: " + КоличествоСеансов);
КонецЕсли;

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

Резюме и рекомендации

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

Если вы уже обновились и столкнулись с проблемой, самым быстрым решением будет откат версии платформы на сервере, так как это не требует изменения самой базы данных и занимает не более 15 минут.

← На главную