При внедрении расширений конфигурации в среде 1С:Предприятие разработчики часто сталкиваются с ситуацией, когда доработки прекрасно функционируют на локальном компьютере или сервере разработки, но полностью игнорируются системой при работе пользователей через терминальный сервер (RDP). Особое удивление вызывает тот факт, что под учетной записью администратора домена всё работает корректно, а у обычных пользователей расширение не применяется. При этом в журнале регистрации 1С отсутствуют какие-либо ошибки.
В этой статье мы подробно разберем, почему возникает данная проблема, как провести ее диагностику и какие шаги необходимо предпринять системному администратору и программисту 1С для ее успешного решения.
Рассмотрим классический сценарий. В расширение добавлена процедура-перехватчик перед созданием формы, например, для справочника Контрагенты:
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
// Установка значений по умолчанию для новых элементов
ЗначениеЗаполнения = "Новый контрагент";
КонецПроцедуры
При тестировании ситуации выявляются следующие закономерности:
ПриСозданииНаСервере игнорируются (при этом отладка в ПриОткрытии на клиенте может срабатывать).Проанализируем причины такого поведения и рассмотрим методы исправления по шагам.
Это самая распространенная причина сбоя в работе расширений на терминальных серверах. Сама платформа 1С запускается, но операционная система блокирует компиляцию и выполнение временных библиотек расширения.
Выясним причину: Тонкий клиент 1С при работе с расширениями динамически компилирует их схемы и сохраняет временные файлы, включая динамические библиотеки (DLL), во вложенные каталоги профиля пользователя: %localappdata%\1C\1Cv8\ и системную папку %TEMP%.
В целях безопасности системные администраторы часто включают на RDP-серверах политики AppLocker или Software Restriction Policies (SRP), запрещающие обычным пользователям запуск исполняемого кода из пользовательских директорий (включая AppData и Temp). Администраторы домена под эти ограничения не попадают, поэтому у них все работает. Тонкий клиент 1С при блокировке этих библиотек операционной системой просто игнорирует расширение и продолжает работу без него, не записывая ошибок в Журнал регистрации 1С.
Что необходимо сделать системному администратору:
%OSDrive%\Users\*\AppData\Local\1C\1Cv8\*%TEMP%\1C\*На современных терминальных фермах часто используются технологии виртуальных дисков профилей пользователей (например, User Profile Disks (UPD) или FSLogix). При их некорректной настройке или монопольной блокировке файлов процессы тонкого клиента 1С теряют возможность полноценно записывать и считывать кэшированные метаданные расширения.
Разберем по шагам процесс проверки прав:
%localappdata%\1C\1Cv8\ и создать там текстовый файл, а затем удалить его.%localappdata%\1C\1Cv8\ и %appdata%\1C\1Cv8\.%TEMP%. Если переменные окружения перенаправлены на общий темп-каталог, убедитесь, что сессии пользователей изолированы друг от друга.По умолчанию при подключении нового расширения в базу данных платформа активирует для него свойство Безопасный режим и накладывает ограничения на профили безопасности.
Посмотрим на логику работы платформы: В безопасном режиме для пользователей без административных прав в 1С блокируется выполнение потенциально опасных операций, работа с внешними компонентами и файловой системой. У администраторов базы данных эти ограничения могут игнорироваться, что создает иллюзию «работающего расширения».
Как исправить:
Если терминальные пользователи подключаются к базе данных 1С не напрямую через локальный кластер, а по протоколу HTTP/HTTPS через веб-сервер (IIS или Apache), проблема может крыться в кэшировании метаданных самим веб-сервером.
Проанализируем ситуацию: Веб-сервер хранит структуру метаданных конфигурации для ускорения отдачи клиентам. При обновлении расширения веб-сервер может продолжать транслировать тонким клиентам старую версию структуры метаданных без учета добавленных обработчиков событий.
Рекомендуемый порядок действий:
iisreset. Для Apache выполните перезапуск соответствующей службы в панели управления службами Windows.default.vrd. Откройте его в текстовом редакторе и убедитесь, что в блоке настроек разрешено использование расширений. Параметр должен выглядеть следующим образом:
publishExtensionsByDefault="true"default.vrd.На терминальных серверах часто устанавливаются жесткие политики антивирусной защиты (например, Kaspersky Endpoint Security). Эвристический анализатор может блокировать создание и запуск бинарных файлов расширений в директории AppData для обычных пользователей, в то время как процессы администраторов домена могут находиться в доверенной зоне.
Решение: Добавьте исполняемый файл тонкого клиента 1cv8c.exe и папки хранения кэша 1С в список доверенных программ и исключений вашего серверного антивируса.
Применяя последовательно предложенные методы диагностики, мы сможем быстро определить уровень, на котором происходит блокировка (уровень прав Windows, настройки безопасности 1С или кэширование веб-сервера), и восстановить штатную работу расширения для всех терминальных пользователей.