С выходом новых релизов платформы 1С:Предприятие 8.3.26 многие системные администраторы и программисты столкнулись с неожиданной блокировкой работы пользователей. Ошибка сопровождается текстом: «Операция не может быть выполнена с текущим составом лицензий. В информационной базе созданы дополнительные индексы. Использование этих функций возможно только для лицензий на платформу уровня КОРП». Особенно неприятно то, что проблема может проявиться внезапно, даже если вы не вносили никаких изменений в структуру метаданных. В данной статье мы подробно разберем, почему возникает эта ошибка, как работает механизм проверки лицензий и какими способами можно вернуть систему в рабочее состояние, попутно проанализировав состояние SQL сервера для поиска узких мест.
Для начала выясним причину возникновения данной ситуации. В версии платформы 8.3.26 разработчики 1С реализовали функционал создания дополнительных индексов базы данных без изменения метаданных конфигурации. Этот механизм предназначен для оптимизации производительности на крупных внедрениях. Чтобы лучше понять внутренние механизмы этого процесса, рекомендуем изучить структуру хранения базы данных. Однако, согласно лицензионной политике, данная возможность является прерогативой лицензий уровня КОРП (CORP). Если ваша организация использует лицензии уровня ПРОФ (PROF), использование таких индексов запрещено.
Проанализируем ситуацию, почему ошибка возникает не сразу и не у всех. Платформа 1С имеет встроенный механизм «тестового окна»: функции уровня КОРП позволяют запускать до 10 сеансов включительно даже на ПРОФ-лицензиях. Это сделано для того, чтобы разработчики могли ознакомиться с функционалом. Как только подключается 11-й сеанс, система инициирует строгую проверку состава используемых функций. Если платформа обнаруживает признаки использования дополнительных индексов, она блокирует вход всем пользователям, начиная с одиннадцатого.
Рассмотрим, почему ошибка возникает у тех, кто не создавал никаких индексов. Это происходит из-за критической ошибки в первых сборках платформы (например, 8.3.26.1150). Система ошибочно устанавливает флаг использования КОРП-функций в системных таблицах базы данных при обновлении или реструктуризации, даже если список индексов пуст.
Самый правильный и надежный метод решения — это установка версии платформы, в которой баг №000165534 был официально исправлен. Разберем этот процесс по шагам. На текущий момент исправления внесены в следующие ветки:
8.3.26.1521 и выше;8.3.27.1326 и выше (для тех, кто готов к переходу на следующую ветку).Проанализируем порядок действий при обновлении сервера:
1С:Предприятие 8.3 Server Agent.Если ваша конфигурация (например, старая УТ 10.3 или БП 2.0) не требует специфических функций 26-го релиза, наиболее безопасным вариантом будет откат на предыдущую стабильную ветку 8.3.25. Рассмотрим, как сделать это безболезненно:
Важно помнить, что если режим совместимости конфигурации установлен в значение ниже 8.3.25, то понижение версии платформы не вызовет проблем со структурой данных. Выясним причину, по которой это помогает: в ветке 8.3.25 функционала «Дополнительные индексы» еще не существовало, поэтому проверка лицензии КОРП по этому признаку просто не запустится.
Для выполнения отката:
8.3.26.8.3.25.xxxx.В некоторых случаях ошибка сохраняется даже после манипуляций с платформой, так как «мусорные» записи о дополнительных индексах остаются в самой базе данных. Разберем метод технологической очистки через файл выгрузки. Этот метод позволяет платформе при загрузке заново сформировать структуру таблиц SQL без учета ошибочных индексов.
Выполним следующие действия:
Конфигуратор (если количество сеансов позволяет это сделать)..dt.Конфигуратор новой базы и выберите Администрирование — Загрузить информационную базу....Важно: Для крупных баз (более 50-100 Гб) выгрузка в .dt может занять длительное время и привести к ошибкам нехватки памяти. В таких случаях используйте средства SQL Server для реиндексации, например, доработанное решение на базе MaintenanceSolution, но этот метод менее эффективен против данного конкретного бага платформы.
Если вы подозреваете, что кто-то из разработчиков действительно мог случайно создать дополнительные индексы, нам нужно проверить это вручную. Посмотрим на алгоритм проверки каждого объекта метаданных:
В современных релизах платформы у объектов (справочники, документы, регистры) в дереве конфигуратора появилась команда Дополнительные индексы. Рассмотрим пример того, как это выглядит в коде или свойствах. Хотя индексы задаются визуально, их наличие можно косвенно определить, используя обработку для анализа структуры хранения данных:
Конфигуратор.SQL.Многие системные администраторы забывают, что фоновое задание в 1С — это полноценный сеанс. Выясним, как это влияет на нашу ошибку. Если у вас куплено 10 лицензий ПРОФ и в базе работают 8 пользователей, кажется, что лимит в 11 сеансов не достигнут. Однако, если в этот момент запустятся:
Общее число сеансов станет равным 11, и система мгновенно заблокирует работу, выдав ошибку про дополнительные индексы. Для эффективной диагностики и управления процессами используйте консоль регламентных и фоновых заданий или следующий подход в коде:
// Пример логики для мониторинга количества сеансов (концептуально)
КоличествоСеансов = СоединенияИнформационнойБазы.ПолучитьСеансы().Количество();
Если КоличествоСеансов > 10 Тогда
ЗаписьЖурналаРегистрации("Лицензирование", УровеньЖурналаРегистрации.Предупреждение, , ,
"Внимание! Достигнут порог проверки КОРП-лицензий. Текущее количество: " + КоличествоСеансов);
КонецЕсли;
Проанализировав ситуацию, мы видим, что даже при малом штате сотрудников фоновые процессы могут спровоцировать ложное срабатывание системы защиты 1С. Поэтому при возникновении ошибки первым делом завершите все лишние сеансы в консоли сервера 1С, используя средства для автоматического удаления спящих сеансов — это позволит пользователям зайти в базу и даст вам время на обновление платформы.
Подводя итог, можно сказать, что ошибка «В информационной базе созданы дополнительные индексы» — это классический «баг первого релиза» новой ветки платформы. Чтобы обезопасить свою работу, следуйте правилам:
Если вы уже обновились и столкнулись с проблемой, самым быстрым решением будет откат версии платформы на сервере, так как это не требует изменения самой базы данных и занимает не более 15 минут.