Поле ввода при работе в Web клиенте в релизах 8.2.9 и 8.3.5 в некоторых браузерах работает плохо - значение поле ввода в 1С при обращении не соответствует реально введенному тексту. А для 1С 8.5.1 выяснилась крайне неприятная проблема - настройка шрифта, цвета для поля ввода, форматированного документа, текстового документа и т.д. была убрана в режиме интерфейса 8.5. Более того, это теперь утверждено (судя по анализу 2-х бета версий релиза 8.5.1 - в первой версии эта информация загоралась красным, а в последней на июль 2025 поставлена как стандарт).
Для обхода таких ситуаций, осталось использовать поле HTML документа, сформировать которое можно 2-мя вариантами:
- Design mode. HTML редактор для документа. Не самый простой способ, и больше нужен когда идет разработка редакторов, а не ввод данных.
- Textarea. Стандартный редактор текста, который появился ещё во времена HTML 2.0. Проверен на огромном числе браузеров.
Поэтому, второй вариант подходит наилучшим образом, так как подсветка и прочее здесь не требуются. Полный код такого протеза на языке HTML выглядит таким образом:
<!-- saved from url=(0014)about:internet -->
<html>
<head>
<style>
textarea {
width: 100%;
height: 100%;
margin-top: 0px; margin-left:0px; margin-right: 0px;margin-bottom: 0px; // align browser css-1.0
margin: 0;
padding: 0;
display:block;
border: none;
outline: none;
display: inline-block;
font-size: 14px;
resize:none;/*Add this if you dont want users to resize */
}
form, html, body {
width: 100%;
height: 100%;
position: absolute;
margin-top: 0px; margin-left:0px; margin-right: 0px;margin-bottom: 0px; // align browser css-1.0
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
display:block;
resize:none;/*Add this if you dont want users to resize */
font-size: 14px;
}
</style>
</head>
<body marginheight='0' marginwidth='0' topmargin='0' rightmargin='0' leftmargin='0' bottommargin='0' autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false">
<form method="POST" name='form1' action="--WEBBOT-SELF--">
<TEXTAREA name="text" COLS=50 ROWS=15 autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"></TEXTAREA>
</form>
</body>
<SCRIPT>
function SetTextEditor(TEXT)
{
document.form1.text.value = TEXT;
}
</SCRIPT>
</html>
Оформление протестировано на браузерах:
- Gecko - Mozilla 1.5 и старше.
- WebKit - Safari 3.x и новее. Chrome любой версии.
- Trident - Internet Explorer 5.0 И выше.
- Presto - opera 8.0 и новее.
- Konqueror 3.4 и новее.
- Netscape Navigator 4.
Этот код обеспечивает базовую функциональность для замены поля ввода без получения выделенного текста (это отдельный функционал, и его можно реализовать без всяких проблем при знании javascript). Функция SetTextEditor выполняет установку текста в поле (можно обратиться в отдельном случае и напрямую).
В браузере Edge это выглядит таким образом (WEB клиент 1С):
Скриншот версии 8.5.1 в тёмной теме (dark side 1С):
На интерфейсе Такси 8.3.27 выглядит таким образом:
Также для обычных форм был сделан тест на 1С 8.0.14, как дополнительный отлов ошибок и косяков интерфейса.
К сожалению, полоса прокрутки отображается не очень хорошо для данной версии.
Теперь, возникает вопрос - а как-же настроить шрифты для использования на платформе, если обработки имеют различное назначение?
Для настройки шрифтов нужно использовать таблицы стилей CSS, который для нужд 1С поддерживается аж с версии 1.0 (IE 3.0). Для читателей кратко прикладываю такие настройки (код упрощен):
ДокументБр = Элементы.ПолеВВОДАHTML.Документ;
ОкноБраузера = ДокументПервогоБраузера.parentWindow;
Если ОкноБраузера = Неопределено Тогда
ОкноБраузера = ДокументБраузера.defaultView;
КонецЕсли;
//css 1.0 specification - Internet explorer 3.0 and new browser:
Стили = ДокументБраузера.forms["form1"].text.style;
Стили.fontFamily = СписокFontsForTheWeb; //Arial, Verdana ...
Стили.fontWeight = ?(Полужирный,"bold","normal");
Стили.fontStyle = ?(Курсив,"italic","normal");
Стили.fontSize =РазмерШрифта+"px";
//Подчеркивание и Зачеркивание текста - реализовано через CSS
СтрСт = "";
СтрСт = СтрСт +?(Подчеркнутый,"underline","");
СтрСт = СтрСт +?(Зачеркнутый," line-through ","");
Стили.textDecoration =?(ПустаяСтрока(СтрСт),"none", СокрЛ(СтрСт));
Настройка цветов осуществляется стандартными css свойствами, которые можно найти в спецификации css 1.0, или более новой.
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.255, 3.1.10.479
- Управление торговлей, редакция 10.3, релизы 10.2.8.2
- Зарплата и управление персоналом КОРП, редакция 3.1, релизы 3.1.32.66
Вступайте в нашу телеграмм-группу Инфостарт