Что делать, если после обновления платформы 1С УПП открывается в управляемых формах и возникают ошибки лицензирования?

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

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

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

Почему УПП запускается в режиме управляемого приложения?

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

На терминальном сервере с большим числом пользователей настраивать режим запуска вручную в свойствах подключения каждой базы крайне неэффективно. Рассмотрим системные и автоматизированные методы решения этой задачи.

Способ 1. Использование общего файла конфигурации списков баз (ibcommon.v8i)

Для массового исправления настроек у всех пользователей терминала лучшим решением является использование общего конфигурационного файла. Разберем этот процесс по шагам.

Создадим или отредактируем общий файл списков баз с расширением .v8i. В параметрах нужной информационной базы нам необходимо принудительно указать тип запуска клиента с помощью параметра DefaultApp. Пример конфигурации базы в файле должен выглядеть следующим образом:


[Управление производственным предприятием]
Connect=Srvr="Server1C";Ref="upp_prod";
ID=e5b7c7b8-1d41-477f-a64e-b5f76f4dae5e
OrderInList=16384
Folder=/
DefaultApp=ThickClient

Параметр DefaultApp=ThickClient принудительно указывает платформе запускать базу исключительно в режиме толстого клиента. Чтобы этот список баз автоматически появился у всех пользователей терминального сервера, пропишем путь к файлу в общем конфигурационном файле запуска 1CEStart.cfg (обычно он располагается по пути C:\Program Files\1cv8\common\1CEStart.cfg) с помощью параметра:

CommonInfoBases=C:\PathToSharedFolder\ibcommon.v8i

Способ 2. Изменение свойства «Основной режим запуска» в Конфигураторе

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

  1. Откроем информационную базу в режиме Конфигуратор.
  2. Кликнем правой кнопкой мыши по корневому узлу конфигурации и откроем его свойства.
  3. Найдем свойство «Основной режим запуска» (Default run mode).
  4. Установим его значение в «Обычное приложение».
  5. Выполним обновление конфигурации базы данных (клавиша F7).

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

Способ 3. Скриптовая автоматизация для терминального сервера

Если базы добавлены пользователям индивидуально и вы не используете общие списки .v8i, можно прибегнуть к автоматизации через PowerShell. Напишем простой скрипт, который обходит профили всех пользователей на терминальном сервере, находит их файлы настроек ibases.v8i и добавляет строку принудительного запуска толстого клиента.

Проанализируем пример скрипта:


$UsersDir = "C:\Users"
Get-ChildItem -Path $UsersDir -Filter "ibases.v8i" -Recurse -Force -ErrorAction SilentlyContinue | ForEach-Object {
    $filePath = $_.FullName
    $content = Get-Content -Path $filePath
    $updated = $false
    $newContent = @()

    foreach ($line in $content) {
        $newContent += $line
        if ($line -match "Connect=.*Ref=\"upp_prod\"") {
            # Проверяем, задан ли уже параметр DefaultApp
            $newContent += "DefaultApp=ThickClient"
            $updated = $true
        }
    }
    if ($updated) {
        Set-Content -Path $filePath -Value $newContent -Force
    }
}

Этот скрипт найдет настройки базы с именем upp_prod в профиле каждого пользователя и гарантирует запуск конфигурации в режиме обычного приложения.

Решение проблемы с КОРП-лицензиями на новой платформе

Перейдем ко второй важной проблеме, упомянутой в обсуждении. При переходе на новые релизы платформы (начиная с 8.3.15) система начинает жестко контролировать использование функций, предназначенных исключительно для лицензий уровня КОРП. Если у вас установлена лицензия ПРОФ, но в настройках кластера серверов задействованы параметры производительности, сервер начнет аварийно завершать процессы или выдавать ошибки лицензирования.

Чтобы восстановить корректную работу сервера 1С на лицензиях ПРОФ, выполним тонкую настройку свойств кластера через Консоль администрирования серверов 1С:Предприятия:

  1. Откроем утилиту администрирования серверов и перейдем в свойства нашего кластера.
  2. Обратим внимание на параметр «Режим распределения нагрузки». Для ПРОФ-лицензий здесь обязательно должно быть установлено значение «Приоритет по производительности». Любые другие ручные настройки распределения нагрузки заблокированы на уровне лицензионного контроля ПРОФ.
  3. Проанализируем параметры расхода памяти. Если они были изменены, вернем их к значениям по умолчанию (значение 0 означает "без ограничений"):
    • Безопасный расход памяти за один вызов — установим в 0.
    • Максимальный объем памяти рабочих процессов — установим в 0.
    • Объем памяти рабочих процессов, при котором процесс считается неисправным — установим в 0.
  4. Параметр «Количество ИБ на процесс» установим в значение 8 (или вернем к стандартному системному по умолчанию, чтобы избежать запуска выделенных под каждую базу процессов, что также является КОРП-функцией).

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

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

← На главную