В ходе разработки постоянно приходится переключать регистры ввода. В результате зачастую в коде в названиях кода появляются символы не в той раскладке которая нужна, поиск их очень затруднителен поскольку визуально они ничем не отличаются от близнецов-зарубежной наружности.
Для этого предназначен небольшой фрагмент кода который помогает найти и вывести все различия в цвете на элемент с типом Поле HTML.
В разных версиях платформы длина выводимого HTML текста различается, поэтому пишу минимум (250). Разбираться почему - в отдельных темах.
Протестировано на платформе 8.3.10.2772, 8.3.15.19858.3.15 - толстый клиент обычные формы
Итак, код и форма:
Нужна Форма, на ней Поле ввода Строка(0) и ПолеHTML, ну и конечно командная кнопка "Выполнить".
Процедура КнопкаВыполнитьНажатие(Кнопка)
СтрокаHTML = "<html><head><body><meta content='text/html; charset=windows-1251'><body>"
//<met a http-equiv=""X-UA-Compatible"" content=""IE=9""/>
+ СформироватьHTML()
+"</body></html>";
ДокументHTML = ЭлементыФормы.ПолеHTML.Документ;
ДокументHTML.body.innerHTML = СтрокаHTML;
КонецПроцедуры
Функция СформироватьHTML()
СтрокаПараметр = ПолеВвода1;
КоличествоСимволов = СтрДлина(СтрокаПараметр);
//символы
СписокДопустимыхЗначений = Новый Массив;
СписокДопустимыхЗначений.Добавить(184); //ё
СписокДопустимыхЗначений.Добавить(168); //Ё
СписокДопустимыхЗначений.Добавить(10); //LF
СписокДопустимыхЗначений.Добавить(44); //,
СписокДопустимыхЗначений.Добавить(45); //-
СписокДопустимыхЗначений.Добавить(46); //.
СписокДопустимыхЗначений.Добавить(32); //SP (Пробел)
СписокДопустимыхЗначений.Добавить(48); //0
СписокДопустимыхЗначений.Добавить(49); //1
СписокДопустимыхЗначений.Добавить(50); //2
СписокДопустимыхЗначений.Добавить(51); //3
СписокДопустимыхЗначений.Добавить(52); //4
СписокДопустимыхЗначений.Добавить(53); //5
СписокДопустимыхЗначений.Добавить(54); //6
СписокДопустимыхЗначений.Добавить(55); //7
СписокДопустимыхЗначений.Добавить(56); //8
СписокДопустимыхЗначений.Добавить(57); //9
СписокДопустимыхЗначений.Добавить(95); //_
СтрHTML = "";
Для ИндексСимвола = 1 По СтрДлина(СтрокаПараметр) Цикл
Код = КодСимвола(СтрокаПараметр, ИндексСимвола);
Если (Код >= 1040 И Код <= 1103) ИЛИ Код = 1105 ИЛИ Код = 1025 Тогда
// русские буквы
НайденыРусскиеБуквы = Истина;
СтрHTML = СтрHTML+"<font color=green>"+Сред(СтрокаПараметр,ИндексСимвола,1);
ИначеЕсли (Код >= 65 И Код <= 90) ИЛИ (Код >= 97 И Код <= 122) Тогда
// Латинские буквы
НайденыЛатинскиеБуквы = Истина;
СтрHTML = СтрHTML+"<font color=red>"+Сред(СтрокаПараметр,ИндексСимвола,1);
ИначеЕсли (СписокДопустимыхЗначений.Найти(Код) = Неопределено) Тогда
// неразрешенные символы
СтрHTML = СтрHTML+"<font color=black>"+Сред(СтрокаПараметр,ИндексСимвола,1);
ИначеЕсли Сред(СтрокаПараметр,ИндексСимвола,1) = Символы.ПС Тогда
СтрHTML = СтрHTML+"<br>";
Иначе
СтрHTML = СтрHTML+"<font color=blue>"+Сред(СтрокаПараметр,ИндексСимвола,1);
КонецЕсли;
КонецЦикла;
СтрHTML = СтрHTML+"</font>";
Возврат СтрHTML;
КонецФункции