При переходе на операционные системы семейства Linux пользователи 1С часто сталкиваются с неприятным эффектом: при открытии любого диалогового или модального окна (например, окна выбора файла, подтверждения действия или формы обмена данными) основное окно программы становится полностью «стеклянным». Кнопки «Ещё», элементы навигации и разделы панели функций перестают реагировать на клики мыши, хотя визуально они доступны. В этой статье мы подробно разберем, почему это происходит и как настроить систему и платформу для комфортной работы.
Для начала проанализируем ситуацию с технической стороны. В среде Windows механизм модальности окон отработан десятилетиями. Когда в 1С вызывается метод ОткрытьМодально(), операционная система четко понимает, какое окно является «родительским», а какое «дочерним», и блокирует ввод только там, где это необходимо. В Linux, особенно в связке с графическими оболочками типа Cinnamon (используется в Linux Mint), процесс управления фокусом реализован иначе.
Рассмотрим основные причины возникновения блокировки:
Выясним причину в настройках самой операционной системы. Если вы используете Linux Mint (Cinnamon), выполните следующие действия вместе с нами:
Откройте «Параметры системы» и перейдите в раздел «Окна». Здесь нас интересуют настройки фокуса. Попробуйте изменить режим передачи фокуса. В некоторых случаях помогает переключение с режима «Нажать для фокусировки» на «Фокус при наведении», хотя это и требует привыкания. Однако более действенным методом является отключение опции «Предотвращение передачи фокуса». Это позволит 1С более агрессивно управлять окнами, что в данном случае является правильным поведением.
Проанализируем ситуацию с графическим стеком. Часто 1С некорректно работает с прозрачностью и визуальными эффектами X11. Чтобы это исправить, мы можем запустить платформу с определенными параметрами, которые изменят способ отрисовки интерфейса. Для этого необходимо отредактировать ярлык запуска 1С или запускать её через терминал с указанием переменных.
Рассмотрим наиболее эффективные переменные:
XLIB_SKIP_ARGB_VISUALS=1 — эта переменная отключает использование прозрачности для окон X11. Именно некорректная прозрачность часто создает «невидимый барьер» над кнопками «Ещё».
GDK_BACKEND=x11 — принудительно заставляет приложения использовать бэкенд X11 вместо Wayland (актуально для новых версий дистрибутивов).
Пример команды для запуска тонкого клиента с этими параметрами:
export XLIB_SKIP_ARGB_VISUALS=1
/opt/1cv8/common/1cestart
Если после этого кнопки начали нажиматься, следует зафиксировать эти переменные в файле /etc/environment или в профиле пользователя .bashrc.
Посмотрим на проблему глазами разработчика 1С. В современных конфигурациях, таких как ERP 2.4 или Бухгалтерия предприятия 3.0, разработчики стараются уходить от модальных окон. В свойствах конфигурации обычно установлен режим использования модальности «Не использовать».
Однако старые обработки или специфические модули (как упомянутый в теме «Обмен с УПП») могут по-прежнему использовать старые методы. Если у вас есть доступ к конфигуратору, разберем по шагам, что можно исправить в коде:
Вместо функции Вопрос(), которая останавливает выполнение кода и ждет ответа пользователя, блокируя всё вокруг, следует использовать процедуру ПоказатьВопрос().
Пример замены кода:
// Старый модальный подход (проблемный для Linux)
Ответ = Вопрос("Выполнить обмен?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
ВыполнитьОбмен();
КонецЕсли;
// Новый асинхронный подход
ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершитьОбмен", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, "Выполнить обмен?", РежимДиалогаВопрос.ДаНет);
При использовании асинхронных методов 1С не создает жесткой блокировки на уровне операционной системы, и интерфейс остается отзывчивым.
Проблема, описанная для версии 8.3.18, является довольно известной. В этой ветке было много исправлений, связанных именно с работой под Linux. Мы рекомендуем рассмотреть возможность обновления платформы до более стабильных веток, таких как 8.3.21 или 8.3.22. В них была проведена значительная оптимизация работы с фокусом окон и исправлены ошибки отрисовки в среде GTK3.
Также важно убедиться, что в системе установлена библиотека libwebkit2gtk корректной версии. 1С использует её для отрисовки многих элементов управления. Если версия библиотеки конфликтует с требованиями платформы, это может приводить к «зависанию» событий мыши в формах.
Выясним, не виноват ли драйвер видеокарты. В Linux взаимодействие 1С с аппаратным ускорением графики иногда дает сбои. Чтобы проверить это, попробуйте временно отключить композитный менеджер (эффекты рабочего стола) или запустить 1С под другим пользователем с «чистыми» настройками рабочего стола. Если в упрощенном графическом режиме проблема исчезает, значит, корень зла кроется в настройках отрисовки оконного менеджера Muffin.
Подведем итог: проблема неактивных кнопок в Linux обычно решается сочетанием системных настроек фокуса окон и использованием переменных окружения XLIB_SKIP_ARGB_VISUALS. В долгосрочной перспективе наиболее правильным решением будет обновление платформы 1С и отказ от модальных вызовов в коде конфигурации.