Почему не работает расширение 1С при подключении пользователей через RDP?

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

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

В этой статье мы подробно разберем, почему возникает данная проблема, как провести ее диагностику и какие шаги необходимо предпринять системному администратору и программисту 1С для ее успешного решения.

Симптомы и первичная диагностика проблемы

Рассмотрим классический сценарий. В расширение добавлена процедура-перехватчик перед созданием формы, например, для справочника Контрагенты:


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
    // Установка значений по умолчанию для новых элементов
    ЗначениеЗаполнения = "Новый контрагент";
КонецПроцедуры

При тестировании ситуации выявляются следующие закономерности:

  1. Если запустить 1С на самом сервере приложений под учетной записью администратора — расширение работает, код выполняется.
  2. Если запустить систему через RDP под обычным пользователем в толстом клиенте — расширение также работает.
  3. Если запустить систему через RDP под обычным пользователем в тонком клиенте — расширение не работает, предопределенные действия не выполняются, а точки останова при отладке в процедуре ПриСозданииНаСервере игнорируются (при этом отладка в ПриОткрытии на клиенте может срабатывать).

Проанализируем причины такого поведения и рассмотрим методы исправления по шагам.

Решение 1. Настройка политик ограничения запуска программ (AppLocker / SRP)

Это самая распространенная причина сбоя в работе расширений на терминальных серверах. Сама платформа 1С запускается, но операционная система блокирует компиляцию и выполнение временных библиотек расширения.

Выясним причину: Тонкий клиент 1С при работе с расширениями динамически компилирует их схемы и сохраняет временные файлы, включая динамические библиотеки (DLL), во вложенные каталоги профиля пользователя: %localappdata%\1C\1Cv8\ и системную папку %TEMP%.

В целях безопасности системные администраторы часто включают на RDP-серверах политики AppLocker или Software Restriction Policies (SRP), запрещающие обычным пользователям запуск исполняемого кода из пользовательских директорий (включая AppData и Temp). Администраторы домена под эти ограничения не попадают, поэтому у них все работает. Тонкий клиент 1С при блокировке этих библиотек операционной системой просто игнорирует расширение и продолжает работу без него, не записывая ошибок в Журнал регистрации 1С.

Что необходимо сделать системному администратору:

  1. Проверить логи службы AppLocker в просмотре событий Windows (путь: Applications and Services Logs -> Microsoft -> Windows -> AppLocker -> MSI and Script / EXE and DLL). Искать события блокировки файлов, связанных с процессами 1С.
  2. Добавить разрешающие правила (исключения) в AppLocker или SRP для каталогов кэша 1С. Разрешить выполнение файлов по следующим путям:
    • %OSDrive%\Users\*\AppData\Local\1C\1Cv8\*
    • %TEMP%\1C\*
  3. Перезапустить сессию пользователя RDP и проверить результат.

Решение 2. Проверка прав на папки временных файлов и виртуализация профилей

На современных терминальных фермах часто используются технологии виртуальных дисков профилей пользователей (например, User Profile Disks (UPD) или FSLogix). При их некорректной настройке или монопольной блокировке файлов процессы тонкого клиента 1С теряют возможность полноценно записывать и считывать кэшированные метаданные расширения.

Разберем по шагам процесс проверки прав:

  1. Запустите RDP-сессию под проблемным пользователем.
  2. Попробуйте вручную перейти в папку %localappdata%\1C\1Cv8\ и создать там текстовый файл, а затем удалить его.
  3. Очистите кэш 1С для данного пользователя. Для этого удалите все подпапки с буквенно-цифровыми наименованиями (UID) внутри каталогов %localappdata%\1C\1Cv8\ и %appdata%\1C\1Cv8\.
  4. Убедитесь, что у пользователя есть полные права (Запись, Изменение, Чтение) на его персональную папку %TEMP%. Если переменные окружения перенаправлены на общий темп-каталог, убедитесь, что сессии пользователей изолированы друг от друга.

Решение 3. Снятие безопасного режима расширения

По умолчанию при подключении нового расширения в базу данных платформа активирует для него свойство Безопасный режим и накладывает ограничения на профили безопасности.

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

Как исправить:

  1. Запустите базу данных под учетной записью с административными правами.
  2. Перейдите в меню Администрирование -> Печатные формы, отчеты и обработки -> Расширения (или откройте окно управления расширениями через Конфигуратор).
  3. Найдите нужное расширение в списке.
  4. Снимите флажок Безопасный режим (также рекомендуется снять флажок Защита от опасных действий).
  5. Перезапустите сеансы пользователей.

Решение 4. Очистка кэша и публикация на веб-сервере

Если терминальные пользователи подключаются к базе данных 1С не напрямую через локальный кластер, а по протоколу HTTP/HTTPS через веб-сервер (IIS или Apache), проблема может крыться в кэшировании метаданных самим веб-сервером.

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

Рекомендуемый порядок действий:

  1. Выполните перезапуск службы веб-сервера. Для IIS выполните в командной строке от имени администратора команду iisreset. Для Apache выполните перезапуск соответствующей службы в панели управления службами Windows.
  2. Проверьте файл публикации базы данных default.vrd. Откройте его в текстовом редакторе и убедитесь, что в блоке настроек разрешено использование расширений. Параметр должен выглядеть следующим образом:
    • publishExtensionsByDefault="true"
  3. Если используются конкретные расширения, проверьте, чтобы они не были принудительно отключены внутри тегов файла default.vrd.

Решение 5. Добавление процессов 1С в исключения антивирусного ПО

На терминальных серверах часто устанавливаются жесткие политики антивирусной защиты (например, Kaspersky Endpoint Security). Эвристический анализатор может блокировать создание и запуск бинарных файлов расширений в директории AppData для обычных пользователей, в то время как процессы администраторов домена могут находиться в доверенной зоне.

Решение: Добавьте исполняемый файл тонкого клиента 1cv8c.exe и папки хранения кэша 1С в список доверенных программ и исключений вашего серверного антивируса.

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

← На главную