Учебные версии 1С ограничены по функционалу и лицензированию, что делает их непригодными для боевых задач. Чтобы программно определить тип версии, необходимо обратиться к системной информации платформы через встроенные методы.
Основной способ – использовать свойство Кластер.ИнформационныеБазы и проанализировать параметры информационной базы. В частности, важен метод ПолучитьСвойство(«ТипЛицензии»), который возвращает значение типа «Учебная версия» для соответствующих экземпляров.
В прикладном коде удобно проверять признак учебной версии через глобальный контекст: ПараметрыИнформационнойБазы().ТипЛицензии. Если результат совпадает с «Учебная версия», значит, среда ограничена по лицензии. Это позволит заранее предусмотреть блокировку функций, требующих полной лицензии.
Для тонкой диагностики можно использовать метод ИнформационнаяБаза.ПолучитьПараметры() и проверить свойство «EducationalVersion», если оно доступно в текущей версии платформы. Такой подход особенно полезен при интеграции с внешними сервисами, где требуется исключить использование учебных баз.
Проверка наличия признака учебной версии в конфигурации 1С
Для определения учебной версии в конфигурации 1С необходимо анализировать свойство ТекущаяИнформационнаяБаза.УчебнаяВерсия. Это булево значение, которое возвращает Истина, если активна учебная лицензия.
Проверку следует выполнять в общем модуле, например, в процедуре инициализации сеанса:
Если ТекущаяИнформационнаяБаза.УчебнаяВерсия Тогда // Действия при учебной версии КонецЕсли;
Дополнительно рекомендуется учитывать, что в некоторых версиях платформы свойство может отсутствовать, поэтому вызов нужно оборачивать в конструкцию ТипЗнч или использовать метод Метаданные.Свойства() для проверки наличия свойства:
Если ТипЗнч(ТекущаяИнформационнаяБаза) = Тип("ИнформационнаяБаза") И ТекущаяИнформационнаяБаза.Свойство("УчебнаяВерсия") Тогда Если ТекущаяИнформационнаяБаза.УчебнаяВерсия Тогда // Логика для учебной версии КонецЕсли; КонецЕсли;
Такой подход позволяет корректно обработать ситуацию в разных версиях платформы 1С:Предприятие, исключая ошибки времени выполнения.
Использование системных функций для определения типа версии
В 1С определить, что запущена учебная версия, можно с помощью встроенных функций платформы, которые возвращают сведения о лицензии и типе клиента.
- Проверка свойства ТекущаяВерсияПрограммы
ФункцияОбщегоНазначения.ТекущаяВерсияПрограммы()
возвращает строку с информацией о версии платформы. Для учебной версии присутствует меткаУчебная версия
. - Использование метода ПолучитьПараметрыЗапуска
МетодПриложение.ПолучитьПараметрыЗапуска()
предоставляет данные о параметрах текущего сеанса. При запуске учебной версии среди параметров указывается признак ограниченной лицензии. - Анализ свойства Лицензия объекта ИнформацияОСистеме
ВызовИнформацияОСистеме().Лицензия
возвращает структуру с полемТипЛицензии
. Для учебной версии значение будет"Учебная"
.
Рекомендуется использовать проверку типа лицензии через объект ИнформацияОСистеме
как наиболее надёжный способ, исключающий ошибки интерпретации строковых значений версии программы.
- Создайте модуль общего назначения.
- Добавьте функцию, возвращающую булево значение при обнаружении учебной версии:
Функция ЭтоУчебнаяВерсия() Экспорт
Возврат ИнформацияОСистеме().Лицензия.ТипЛицензии = "Учебная";
КонецФункции
Такой подход позволяет централизованно контролировать логику проверки типа версии без необходимости анализа текста или параметров запуска.
Методы идентификации учебной версии через пользовательские метаданные
Учебная версия 1С оставляет характерные следы в пользовательских метаданных конфигурации, которые можно использовать для её программного определения. Один из надёжных способов – анализ свойств текущей информационной базы и проверка специфических признаков учебной лицензии.
Наиболее эффективный метод – использование метода ПолучитьИнформациюОВерсии() глобального контекста. В его результатах присутствует атрибут ЭтоУчебнаяВерсия, возвращающий Истина для учебной версии:
ИнформацияОВерсии = ПолучитьИнформациюОВерсии(); Если ИнформацияОВерсии.ЭтоУчебнаяВерсия Тогда // Действия при обнаружении учебной версии КонецЕсли;
Альтернативный подход – проверка метаданных конфигурации через глобальный объект Метаданные. Некоторые элементы (например, справочники, документы) в учебной версии могут иметь нестандартные значения свойств, либо содержать технические метки, устанавливаемые разработчиком конфигурации специально для учебных поставок.
Также возможно использование запроса к системной информации через объект ИнформационнаяБаза. Свойство Режим возвращает значение «УчебнаяВерсия» в соответствующем режиме:
Если ИнформационнаяБаза.Режим = "УчебнаяВерсия" Тогда // Учебная версия обнаружена КонецЕсли;
Важно учитывать, что использование прямых признаков (например, названий баз или специфичных объектов метаданных) ненадёжно, так как они могут изменяться. Поэтому предпочтение следует отдавать системным свойствам, возвращаемым встроенными методами платформы.
Таким образом, корректное определение учебной версии через пользовательские метаданные должно опираться на проверку атрибута ЭтоУчебнаяВерсия и свойства Режим объекта ИнформационнаяБаза. Дополнительный анализ метаданных конфигурации рекомендуется применять в нестандартных решениях, требующих повышенной точности идентификации.
Как определить учебную версию через системные журналы 1С
Системные журналы регистрации в 1С позволяют явно зафиксировать факт запуска учебной версии. Для этого необходимо анализировать события с определёнными характеристиками.
- Откройте «Журнал регистрации» в интерфейсе 1С:Предприятия или через конфигуратор (раздел «Администрирование» → «Журнал регистрации»).
- Отфильтруйте события по колонке «Комментарий» или выполните текстовый поиск по слову «Учебная версия».
- Ищите записи, содержащие текст вида: «Запуск в учебной версии» или «Ограничение функционала: учебная версия».
Такие события фиксируются автоматически при каждом запуске учебной конфигурации и при попытке выполнения недоступных операций (выгрузка данных, публикация и т.д.).
- Поле «Источник» обычно содержит значение «Платформа» или «Сеанс», что указывает на системную природу сообщения.
- Поле «Событие» может иметь значение «Информация» или «Ошибка», в зависимости от контекста вызова ограничений учебной версии.
При необходимости автоматизации проверки используйте обработку с запросом к регистру сведений ЖурналРегистрации или выполните анализ лог-файлов регистрации, если они настроены на уровне сервера.
Отслеживание этих записей позволяет достоверно определить работу в учебной версии без вмешательства в код конфигурации.
Проверка прав доступа и ограничений в учебной версии 1С
Учебная версия 1С имеет встроенные механизмы ограничений, которые можно отследить программно. Один из признаков – ограничение на количество подключений к базе данных. В режиме конфигуратора вызов метода ИнформационнаяБаза.ПолучитьСписокАктивныхПользователей() возвращает список не более одного пользователя, даже если подключены несколько сессий.
Ограничения на выгрузку и загрузку данных проявляются при использовании стандартных механизмов обмена. При попытке выполнить метод Каталог.Выгрузить() или Каталог.Загрузить() система генерирует исключение с текстом об ограничениях учебной версии.
Ограничение по количеству объектов в базе фиксируется при создании новых справочников или документов. В коде можно отследить превышение лимита через анализ результата метода Метаданные.Справочники().Количество() и сравнение с известным ограничением (например, 100 объектов для учебной версии).
Особенность прав доступа – невозможность изменения настроек безопасности. Попытка программного вызова МенеджерРолей.УстановитьПолномочия() в учебной версии приводит к отказу выполнения без генерации исключения, но с возвратом ложного значения.
Для надежного определения учебной версии целесообразно совмещать проверку этих ограничений с чтением системного свойства ИнформационнаяБаза.ТипИнформационнойБазы, которое принимает значение «Учебная» при соответствующей лицензии.
Использование специального кода для проверки учебной версии в момент запуска
Для программной проверки учебной версии 1С при старте конфигурации используется метод ПолучитьПараметрыИнформационнойБазы() объекта ИнформацияОбИнформационнойБазе. Этот метод возвращает структуру с данными о текущей базе, включая признак учебной версии.
Пример кода для проверки:
Если ЗначениеЗаполнено(ПараметрыИБ = ИнформацияОбИнформационнойБазе.ПолучитьПараметрыИнформационнойБазы()) Тогда Если ПараметрыИБ.Свойства.УчебнаяВерсия Тогда ВызватьИсключение "Запуск невозможен: используется учебная версия."; КонецЕсли; КонецЕсли;
Ключевое свойство структуры – УчебнаяВерсия. При значении Истина программа выполняет необходимые действия, например, завершает работу или отключает критичный функционал.
Важно размещать данный код в модуле объекта ОбщийМодуль с экспортной процедурой, вызываемой в ОбщийМодуль.ПриНачалеРаботыСистемы(). Это гарантирует проверку при каждом запуске.
Такой подход исключает обход проверки при обновлении конфигурации или запуске через внешние обработки.
Как настраивать уведомления о наличии учебной версии в процессе работы
Для автоматического оповещения о работе в учебной версии 1С необходимо реализовать проверку значения функции ПолучитьПризнакУчебнойВерсии()
. При обнаружении учебной лицензии следует инициировать пользовательское уведомление с помощью метода ПоказатьПредупреждение()
или добавить визуальный индикатор в интерфейс.
Рекомендуется размещать проверку в модуле сеанса или в общей форме, открывающейся при запуске. Для контроля в реальном времени используйте обработчик события ПриИзмененииПараметровСеанса
либо таймер с периодическим опросом состояния версии.
Сообщение должно быть коротким и четким: «Внимание! Используется учебная версия 1С. Сохранение данных ограничено.» Важно исключить возможность его скрытия пользователем до завершения сеанса.
При использовании управляемого интерфейса допускается динамическое отображение предупреждающего элемента на панели навигации. Реализуйте его обновление через подписку на событие изменения параметров сеанса, чтобы своевременно реагировать на переключение между лицензиями без перезапуска программы.
Вопрос-ответ:
Можно ли заблокировать определённый функционал при работе в учебной версии?
Да, можно. После проверки с помощью метода `ЭтоУчебнаяВерсия()` можно условно отключать отдельные разделы или команды интерфейса. Например, можно запретить выгрузку данных или использование внешних обработок, если используется учебная версия. Это делается через обычные конструкции `Если…Тогда`, а также настройку доступности команд и элементов интерфейса.
Поддерживается ли метод `ЭтоУчебнаяВерсия()` во всех редакциях 1С?
Метод `ЭтоУчебнаяВерсия()` доступен, начиная с определённых версий платформы 1С:Предприятие 8. В старых релизах его может не быть. Если важно обеспечить совместимость с разными версиями платформы, можно использовать конструкцию с проверкой наличия метода с помощью `Метаданные.ИнформационнаяБаза.Методы.Найти(«ЭтоУчебнаяВерсия»)` и вызывать его только при наличии.
Может ли пользователь сам понять, что он работает в учебной версии, без подсказок в коде?
Да, при использовании учебной версии платформа автоматически отображает соответствующее уведомление в строке заголовка окна. Однако это уведомление может быть незаметным или проигнорированным пользователем. Поэтому, если от этого зависит корректная работа функционала, лучше продублировать проверку внутри программы и показать сообщение явно.
Есть ли альтернативные способы определить учебную версию, если метод `ЭтоУчебнаяВерсия()` недоступен?
Если метод `ЭтоУчебнаяВерсия()` по каким-то причинам отсутствует, можно попробовать определить тип версии косвенно. Например, учебная версия часто не позволяет выгрузку конфигурации или содержит ограничения по длительности работы. Однако такой способ ненадёжен и требует тестирования. На практике, безопаснее ориентироваться на наличие метода или использовать конкретную версию платформы, где он точно реализован.
Как в коде определить, что используется именно учебная версия 1С?
Учебная версия 1С отличается тем, что в её интерфейсе отображается надпись «Учебная версия», а также существуют ограничения по количеству объектов и пользователей. Однако в коде приложения напрямую узнать тип лицензии стандартными средствами платформы нельзя. Обычно проверку выполняют косвенными способами: например, анализируют наличие специфичных ограничений или обращаются к диагностической информации через функции типа `ПолучитьИнформациюОСистеме()`. Такой метод позволяет получить данные о текущей конфигурации, среди которых может быть информация о варианте использования продукта. В пользовательских сценариях применяют отображение сообщений или блокировку функций, если обнаружены признаки учебной версии.