1С на терминальном сервере: оптимизация тонкого клиента

Зачем публиковать 1С на терминальном сервере

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

Однако терминальный сервер для 1С требует правильной настройки — типовые параметры Windows Server RDS не оптимальны для тяжёлых бизнес-приложений. Проблемы начинаются при 15-20 одновременных сессиях: замедление интерфейса, зависание форм, исчерпание памяти, конфликты принтеров. В этой статье разберём все аспекты: от расчёта ресурсов до тонкой настройки Windows и платформы 1С.

Расчёт ресурсов сервера

Для планирования железа используйте следующие нормативы:

ПараметрНа 1 пользователя 1СПример на 30 пользователей
RAM500 МБ - 1 ГБ16-32 ГБ + 4 ГБ ОС
CPU0.3-0.5 ядра8-16 ядер (Xeon/EPYC)
Диск для профилей200-500 МБSSD 100 ГБ
Сеть (к серверу 1С)0.5-2 Мбит/с1 Гбит/с

Это нормативы для типовых конфигураций (Бухгалтерия, ЗУП, УТ). Для тяжёлых отчётов (закрытие месяца, формирование книги покупок) потребление памяти одной сессией может достигать 2-4 ГБ. Рекомендуется оставлять запас 30% от пиковой нагрузки.

Установка и настройка роли RDS

Настройка Remote Desktop Services на Windows Server 2019/2022:

# PowerShell: установка ролей RDS
Install-WindowsFeature -Name RDS-RD-Server, RDS-Licensing -IncludeManagementTools

# Настройка лицензирования
Import-Module RemoteDesktop
Set-RDLicenseConfiguration -LicenseServer "rds-lic.domain.local" -Mode PerUser

# Проверка
Get-RDLicenseConfiguration

Критически важные настройки GroupPolicy для 1С-сессий (gpedit.msc или GPO):

# Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services

# Session Host → Session Time Limits:
# - Set time limit for disconnected sessions: 4 hours
# - Set time limit for active but idle sessions: 2 hours
# - End session when time limit reached: Enabled

# Session Host → Device and Resource Redirection:
# - Do not allow clipboard redirection: Disabled (для копирования данных)
# - Do not allow drive redirection: Enabled (безопасность)
# - Allow audio and video playback redirection: Disabled (экономия)

# Session Host → Connections:
# - Restrict Remote Desktop Services users to a single session: Enabled

Настройка профилей пользователей

Для 1С на терминальном сервере рекомендуется использовать перемещаемые профили или UPD (User Profile Disks):

# Создание каталога для UPD
New-Item -Path "D:\UserProfileDisks" -ItemType Directory

# Настройка через Server Manager → Remote Desktop Services → Collections:
# Enable User Profile Disks
# Location: \\rds-server\UserProfileDisks$
# Maximum size: 2 GB

# Или перемещаемые профили через GPO:
# User Configuration → Windows Settings → Folder Redirection
# AppData/Roaming → \\fileserver\profiles$\%USERNAME%

Каталог кэша 1С (%LOCALAPPDATA%\1C\1cv8) может занимать 500 МБ и более. При перемещаемых профилях это серьёзно замедляет вход/выход. Решение — исключить этот каталог из перемещаемого профиля через GPO или хранить его локально:

# Исключение каталога 1С из роуминга
# GPO: User Configuration → Policies → Administrative Templates → System → User Profiles
# Exclude directories in roaming profile: AppData\Local\1C

Установка платформы 1С на терминальный сервер

Установка платформы 1С в терминальном режиме имеет особенности. Необходимо устанавливать платформу в режиме change user /install:

# Переключение в режим установки приложений
change user /install

# Запуск установки 1С
msiexec /i "1CEnterprise 8.3.24.1548.msi" /qn TRANSFORMS=adminstallrelogon.mst

# Или через setup.exe
setup.exe /S THINCLIENT=1 THINCLIENTFILE=1

# Возврат в режим выполнения
change user /execute

# Проверка режима
change user /query

Обязательно установите только тонкий клиент (без конфигуратора и толстого клиента для обычных пользователей). Конфигуратор устанавливается только для администратора 1С.

Публикация информационных баз

Для удобства пользователей создайте ярлыки к базам на общем рабочем столе:

# PowerShell: создание ярлыка 1С для всех пользователей
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("C:\Users\Public\Desktop\1С Бухгалтерия.lnk")
$Shortcut.TargetPath = "C:\Program Files\1cv8\8.3.24.1548\bin\1cv8s.exe"
$Shortcut.Arguments = 'ENTERPRISE /S "srv1c:1541\buh_prod" /N "" /P ""'
$Shortcut.IconLocation = "C:\Program Files\1cv8\8.3.24.1548\bin\1cv8s.exe,0"
$Shortcut.Save()

# Альтернатива — общий список баз через ibases.v8i
# Файл размещается в \\fileserver\1C_Config$\ibases.v8i
# В реестре каждого пользователя:
# HKCU\Software\1C\1CEStart\8.0\IBases → CommonInfoBases = \\fileserver\1C_Config$

Лицензирование 1С на RDS

При работе через терминальный сервер 1С использует аппаратный ключ HASP или программные лицензии. Важные нюансы:

  • HASP-ключ устанавливается на терминальный сервер или на сервер 1С (не на рабочие станции). Драйвер HASP LM распространяет лицензии по сети
  • Программные лицензии привязываются к оборудованию терминального сервера. При замене железа потребуется повторная активация
  • Клиентские лицензии RDS (CAL) — отдельное требование Microsoft, не связанное с лицензиями 1С. Нужны Per User или Per Device CAL
  • Одна сессия 1С = одна клиентская лицензия. Если пользователь открывает две базы — занимает две лицензии
# Проверка использования лицензий 1С (из консоли сервера 1С)
# rac session --cluster=... list
# Или через оснастку Администрирование серверов 1С

Оптимизация производительности 1С на RDS

Стандартные настройки Windows Server не оптимальны для интерактивных бизнес-приложений. Ключевые оптимизации:

# Отключение визуальных эффектов (GPO)
# User Configuration → Administrative Templates → Control Panel → Display
# Turn off display of thumbnails: Enabled

# Или через реестр для всех пользователей:
reg add "HKU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" /v VisualFXSetting /t REG_DWORD /d 2 /f

# Настройка параметров памяти
# Отключить Superfetch / SysMain для серверов:
Stop-Service -Name SysMain -Force
Set-Service -Name SysMain -StartupType Disabled

# Оптимизация файла подкачки
# Рекомендация: RAM × 1.5, на отдельном диске
wmic computersystem set AutomaticManagedPagefile=False
wmic pagefileset create name="D:\pagefile.sys"
wmic pagefileset where name="D:\\pagefile.sys" set InitialSize=32768,MaximumSize=49152

Настройка приоритетов процессов 1С

При 20+ сессиях процессы 1С начинают конкурировать за CPU. Используйте WSRM (Windows System Resource Manager) или скрипт распределения нагрузки:

# PowerShell: ограничение CPU для фоновых задач 1С
# Определяем «тяжёлые» процессы (отчёты, обмены)
$HeavyProcesses = Get-Process -Name "1cv8" | Where-Object {
    $_.WorkingSet64 -gt 1.5GB
}

foreach ($proc in $HeavyProcesses) {
    # Снижаем приоритет
    $proc.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::BelowNormal
    
    # Ограничиваем ядра (affinity mask — только 4 ядра из 16)
    $proc.ProcessorAffinity = 0x0F
}

# Запуск по расписанию через Task Scheduler каждые 5 минут

Оптимизация RDP-протокола

Для 1С важна отзывчивость интерфейса, а не качество графики. Настройки GPO для оптимального отображения форм 1С:

# Computer Config → Admin Templates → Remote Desktop Services → Session Host

# Remote Session Environment:
# - Limit maximum color depth: 16 bit
# - Use hardware graphics adapters: Enabled (если есть GPU)
# - Configure RemoteFX: Disabled (не нужен для 1С)

# Remote Session Environment → RemoteFX:
# - Configure image quality: Medium
# - Enable RemoteFX encoding: Disabled

# Для 1С критична задержка ввода, а не FPS:
# Session Host → Connections:
# - Select RDP transport protocols: Use both UDP and TCP
# UDP значительно снижает задержку ввода

Решение проблемы принтеров в RDS

Принтеры — главная головная боль 1С на терминальном сервере. При подключении RDP-сессии Windows перенаправляет локальные принтеры пользователя на сервер, что порождает множество проблем: медленный вход (установка драйверов), конфликты драйверов, некорректная печать бланков 1С, исчезновение принтеров.

Рекомендуемый подход — Easy Print с ограничением перенаправления:

# GPO для принтеров:
# Computer Config → Admin Templates → Remote Desktop Services → Printer Redirection

# Use Remote Desktop Easy Print printer driver first: Enabled
# Redirect only the default client printer: Enabled
# Do not allow client printer redirection: Disabled

# Для серверных принтеров (общих для всех):
# Установите принтер локально на RDS-сервере
# Назначьте через GPO:
# User Config → Preferences → Control Panel Settings → Printers
# → TCP/IP Printer → Action: Replace

Настройка принтера в 1С

1С запоминает настройки принтера внутри информационной базы (таблица PrintSettings). При смене принтера или его перенаправлении пользователь получает ошибку «Принтер не найден». Решение:

// В модуле формы документа (1С:Предприятие)
// Проверка доступности принтера перед печатью:

Процедура ПечатьНакладной(Команда)
    ТабДок = ПолучитьМакетПечати();
    
    // Установить принтер по умолчанию, если сохранённый недоступен
    Попытка
        ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
    Исключение
        // Сброс настроек принтера
        ТабДок.ИмяПринтера = "";
        ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
    КонецПопытки;
КонецПроцедуры

Альтернатива — печать через PDF: 1С формирует PDF, который открывается в браузере на локальной машине пользователя, и уже оттуда отправляется на принтер. Это полностью решает проблему перенаправления.

Мониторинг и обслуживание RDS-сервера

Для стабильной работы 1С на терминальном сервере необходим регулярный мониторинг и обслуживание:

# PowerShell: мониторинг ресурсов RDS-сессий
Get-RDUserSession | ForEach-Object {
    $proc = Get-Process -Id $_.UnifiedSessionID -ErrorAction SilentlyContinue
    [PSCustomObject]@{
        User     = $_.UserName
        Session  = $_.SessionId
        State    = $_.SessionState
        Memory   = [math]::Round(($proc.WorkingSet64 / 1MB), 0)
    }
} | Sort-Object Memory -Descending | Format-Table

# Автоматическое завершение зависших сессий
$stale = Get-RDUserSession | Where-Object {
    $_.SessionState -eq 'STATE_DISCONNECTED' -and
    $_.IdleTime -gt 14400000  # 4 часа в мс
}
foreach ($s in $stale) {
    Invoke-RDUserLogoff -HostServer $s.HostServer -UnifiedSessionID $s.UnifiedSessionID -Force
}

# Очистка кэша 1С (еженедельно, по расписанию)
Get-ChildItem "C:\Users\*\AppData\Local\1C\1cv8\*" -Directory | Where-Object {
    $_.LastWriteTime -lt (Get-Date).AddDays(-14)
} | Remove-Item -Recurse -Force

Часто задаваемые вопросы

Зависит от конфигурации сервера и типа работы. Ориентиры: сервер с 32 ГБ RAM и 16 ядрами Xeon комфортно обслуживает 25-35 сессий типовой бухгалтерии. Если пользователи формируют тяжёлые отчёты — не более 15-20 сессий. При превышении лимита добавляйте второй RDS-сервер в ферму через RD Connection Broker.

Тонкий клиент (1cv8s.exe) потребляет в 2-3 раза меньше памяти и CPU, так как вся бизнес-логика выполняется на сервере 1С. Толстый клиент (1cv8.exe) выполняет код на стороне клиента, то есть на терминальном сервере — нагрузка выше. Для RDS всегда используйте тонкий клиент. Толстый нужен только администратору для конфигуратора.

В ферме RDS из двух серверов: переведите новые подключения на сервер A (через RD Connection Broker drain mode), обновите платформу на сервере B, затем наоборот. На одиночном сервере — запланируйте обновление на нерабочее время. Перед обновлением: change user /install, установка новой версии поверх старой, change user /execute, перезагрузка сервера.

При первом запуске 1С компилирует и кэширует модули конфигурации в %LOCALAPPDATA%\1C\1cv8. Для крупных конфигураций (ERP, КА) этот процесс занимает 2-5 минут и потребляет значительный объём CPU/IO. Решение: предварительно прогрейте кэш — запустите 1С один раз из профиля каждого пользователя, или скопируйте каталог кэша из образцового профиля в Default User.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#1С терминальный сервер#1С RDS#тонкий клиент 1С#оптимизация 1С#RDP 1С#терминальный сервер Windows#1С лицензии RDS#профили 1С
Комментарии 0

Оставить комментарий

загрузка...