При разработке под операционные системы на базе Linux, такие как Ред ОС или Astra Linux, разработчики 1С часто сталкиваются с нестабильным поведением графических элементов интерфейса. Одной из наиболее частых проблем является некорректная работа элемента ФорматированныйДокумент: текст в поле не виден, курсор отсутствует, а содержимое обновляется только при переключении окон или открытии предпросмотра. Разберем, почему это происходит и какие существуют пути решения данной задачи.
Основная сложность заключается в том, что ФорматированныйДокумент в платформе 1С для Linux использует движок WebKit, интегрированный в библиотеку Qt. При запуске платформы на дистрибутивах Linux часто возникают конфликты между системными библиотеками ОС и библиотеками, поставляемыми в составе самой платформы 1С.
Ярким примером такого конфликта является файл libgcc_s.so. Часто для того, чтобы приложение вообще запустилось на современном Linux-дистрибутиве, разработчикам приходится удалять или перемещать эту библиотеку из папки платформы. Это заставляет 1С обращаться к системным версиям библиотек. Хотя запуск становится возможным, это приводит к «замораживанию» графического потока специфических элементов, таких как ФорматированныйДокумент, так как они критически зависят от совместимости версий движка рендеринга.
Учитывая, что стандартный элемент ФорматированныйДокумент на платформе 1С в среде Linux ведет себя нестабильно, профессиональное сообщество рекомендует отказаться от его использования в пользу более предсказуемых инструментов.
Наиболее надежным способом отображения и редактирования текста в формах 1С при работе в Linux является использование ПолеHTMLДокумента. Данный подход позволяет избежать прямых конфликтов графических библиотек платформы с интерфейсными элементами.
ПолеHTMLДокумента полноценный JS-редактор, такой как CKEditor или TinyMCE.Рассмотрим пример того, как можно инициализировать ПолеHTMLДокумента для базовых задач:
// Пример упрощенной инициализации HTML поля
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.МоеHTMLПоле.Документ.Write("<html><body><h3>Редактор текста</h3><div contenteditable='true'>Здесь можно писать текст</div></body></html>");
КонецПроцедуры
Если вам все же необходимо минимизировать влияние проблем с библиотеками, проанализируйте следующие шаги:
LD_LIBRARY_PATH, чтобы платформа видела именно те версии, с которыми она скомпилирована. Однако, будьте осторожны: это может привести к нарушению работы других компонентов 1С.Работа с ФорматированныйДокумент в толстом клиенте 1С на Linux — это техническая задача, связанная с глубокими зависимостями графических библиотек. Если вы столкнулись с описанными «мистическими» явлениями (пропадание текста, отсутствие курсора), не тратьте время на попытки «починить» компонент конфигурацией. Лучшей практикой является замена его на ПолеHTMLДокумента, что обеспечит стабильную работу интерфейса для конечного пользователя и предсказуемое поведение системы в целом.