Изменение раскладки текста на 1C EN в RU (ghbdtn => привет)

Постановка задачи

Иногда встречаются задачи, когда необходимо преобразовать текст с не верной раскладкой клавиатуры. Это тот случай, когда долго и упорно вводится текст, а потом мы смотрим на экран и видим, что был выбран другой язык ввода :)

Примеры:

  1. Ghbdtn vbh - Привет мир
  2. Hfcrkflrf - Раскладка

Думаю, суть понятна. Нужен этакий Punto Switcher но на 1С.

Готовая функция для 1С преобразования раскладки клавиатуры


// Изменить раскладку текста EN в RU.
// 
// Параметры:
//  ИсходныйТекст - Строка - Исходная строка в латинской раскладке
// 
// Возвращаемое значение:
//  Строка - Измененная раскладка текста в русской раскладке
Функция ИзменитьРаскладкуТекста(Знач ИсходныйТекст) Экспорт
		
	Соответствие = Новый Соответствие;
	Соответствие.Вставить("f", "а");
	Соответствие.Вставить(",", "б");
	Соответствие.Вставить("d", "в");
	Соответствие.Вставить("u", "г");
	Соответствие.Вставить("l", "д");
	Соответствие.Вставить("t", "е");
	Соответствие.Вставить("`", "ё");
	Соответствие.Вставить(";", "ж");
	Соответствие.Вставить("p", "з");
	Соответствие.Вставить("b", "и");
	Соответствие.Вставить("q", "й");
	Соответствие.Вставить("r", "к");
	Соответствие.Вставить("k", "л");
	Соответствие.Вставить("v", "м");
	Соответствие.Вставить("y", "н");
	Соответствие.Вставить("j", "о");
	Соответствие.Вставить("g", "п");
	Соответствие.Вставить("h", "р");
	Соответствие.Вставить("c", "с");
	Соответствие.Вставить("n", "т");
	Соответствие.Вставить("e", "у");
	Соответствие.Вставить("a", "ф");
	Соответствие.Вставить("[", "х");
	Соответствие.Вставить("w", "ц");
	Соответствие.Вставить("x", "ч");
	Соответствие.Вставить("i", "ш");
	Соответствие.Вставить("o", "щ");
	Соответствие.Вставить("m", "ь");
	Соответствие.Вставить("s", "ы");
	Соответствие.Вставить("]", "ъ");
	Соответствие.Вставить("'", "э");
	Соответствие.Вставить(".", "ю");
	Соответствие.Вставить("z", "я");
	Соответствие.Вставить("F", "А");
	Соответствие.Вставить("<", "Б");
	Соответствие.Вставить("D", "В");
	Соответствие.Вставить("U", "Г");
	Соответствие.Вставить("L", "Д");
	Соответствие.Вставить("T", "Е");
	Соответствие.Вставить("~", "Ё");
	Соответствие.Вставить(":", "Ж");
	Соответствие.Вставить("P", "З");
	Соответствие.Вставить("B", "И");
	Соответствие.Вставить("Q", "Й");
	Соответствие.Вставить("R", "К");
	Соответствие.Вставить("K", "Л");
	Соответствие.Вставить("V", "М");
	Соответствие.Вставить("Y", "Н");
	Соответствие.Вставить("J", "О");
	Соответствие.Вставить("G", "П");
	Соответствие.Вставить("H", "Р");
	Соответствие.Вставить("C", "С");
	Соответствие.Вставить("N", "Т");
	Соответствие.Вставить("E", "У");
	Соответствие.Вставить("A", "Ф");
	Соответствие.Вставить("{", "Х");
	Соответствие.Вставить("W", "Ц");
	Соответствие.Вставить("X", "Ч");
	Соответствие.Вставить("I", "Ш");
	Соответствие.Вставить("O", "Щ");
	Соответствие.Вставить("M", "Ь");
	Соответствие.Вставить("S", "Ы");
	Соответствие.Вставить("}", "Ъ");
	Соответствие.Вставить("""", "Э");
	Соответствие.Вставить(">", "Ю");
	Соответствие.Вставить("Z", "Я");
	Соответствие.Вставить("@", """");
	Соответствие.Вставить("#", "№");
	Соответствие.Вставить("$", ";");
	Соответствие.Вставить("^", ":");
	Соответствие.Вставить("&", "?");
	Соответствие.Вставить("/", ".");
	Соответствие.Вставить("?", ",");
	
	ИсходныйТекст = СокрЛП(ИсходныйТекст);
	ГотовоеЗначение = "";
	ТекущийСимвол = "";
	ТекущийГотовыйСимвол = "";
	Для Индекс = 1 по СтрДлина(ИсходныйТекст) Цикл
		ТекущийСимвол = Сред(ИсходныйТекст, Индекс, 1);
		ТекущийГотовыйСимвол = Соответствие.Получить(ТекущийСимвол);
		Если ТекущийГотовыйСимвол = Неопределено Тогда
			ГотовоеЗначение = ГотовоеЗначение + ТекущийСимвол;
		Иначе
			ГотовоеЗначение = ГотовоеЗначение + ТекущийГотовыйСимвол;
		КонецЕсли;		
	КонецЦикла;
	
	Возврат ГотовоеЗначение;
	
КонецФункции

При небольших правках, можно заставить функцию конвертировать в другую сторону.

Хочу заполнение описания номенклатуры с помощью ChatGPT в 1С УТ 11 / КА 2 / УНФ
Автоматизированное создание описания номенклатурных позиций Вашего каталога товаров и услуг
Перейти к покупке
Изображение автора статьи

Основатель и директор по развитию Софтонит. Практикующий руководитель разработки. Эксперт в области автоматизации техподдержки

Загрузка...
Поделитесь статьей