При повседневной разработке и администрировании баз 1С мы часто используем удобный механизм перетаскивания файлов: например, переносим внешнюю обработку (.epf), внешний отчет (.erf) или файл конфигурации напрямую из проводника Windows в окно конфигуратора или в режим «1С:Предприятие». Однако иногда мы можем столкнуться с ситуацией, когда курсор мыши при наведении показывает значок «плюс», но после отпускания кнопки мыши файл не открывается и ничего не происходит.
Выясним причину такого поведения операционной системы и платформы, а также разберем по шагам, как вернуть работоспособность механизма drag and drop.
Проанализируем ситуацию: начиная с Windows Vista и во всех современных версиях (Windows 8, 10, 11) на уровне операционной системы функционирует механизм контроля учетных записей (UAC), частью которого является User Interface Privilege Isolation (UIPI) — изоляция привилегий пользовательского интерфейса.
Механизм UIPI предназначен для защиты системы от передачи потенциально опасных оконных сообщений. Стандартный проводник Windows (explorer.exe) всегда запускается с обычным уровнем прав (Medium Integrity Level). Если исполняемый файл 1С (1cv8.exe или 1cv8c.exe) запущен в режиме «От имени администратора» (High Integrity Level), операционная система блокирует обмен системными сообщениями WM_DROPFILES и протокол OLE drag-and-drop между процессом с низким уровнем прав и процессом с высоким уровнем прав. В результате визуальный курсор может сигнализировать о возможности бросить файл, но сама передача данных полностью блокируется ядром Windows.
Важно отметить: простое опускание ползунка уведомлений UAC на минимальный уровень в панели управления Windows не отключает механизм изоляции интерфейса — разница в правах процессов сохраняется.
Разберем по шагам, как вернуть стандартный запуск платформы:
C:\Program Files\1cv8\8.3.X.XXXX\bin\) и проверим свойства непосредственно файлов 1cv8s.exe, 1cv8.exe и 1cv8c.exe, убедившись, что у них также отключен запуск от администратора.Часто режим запуска от администратора включается программистами или системными администраторами вынужденно — например, если при работе конфигурации происходит распаковка внешних файлов, компонент или работа с временными каталогами, вызывающая ошибки доступа. Рассмотрим правильные способы устранения таких ошибок без повышения привилегий всего процесса 1С:
КаталогВременныхФайлов():
ИмяВременногоФайла = КаталогВременныхФайлов() + "unpacked_data.tmp";
// Дальнейшая работа с файлом в доступном каталоге
Если специфика задач строго требует работы 1С с повышенными привилегиями, рассмотрим способы сохранения функции перетаскивания:
regedit), перейти в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System, установить параметр EnableLUA равным 0 и перезагрузить компьютер. Обратите внимание: данный способ снижает общую безопасность операционной системы.Проанализируем дополнительные сценарии, влияющие на работу механизма перетаскивания в 1С:
РазрешитьПеретаскивание в значение Истина, а в свойствах указан СпособПеретаскиванияФайлов (например, Как файл). В коде формы при этом должны быть определены обработчики событий ПроверкаПеретаскивания и Перетаскивание.