Предлагаемый вариант решения:
Функция ЗаменитьСимволы(Что,Где,НаЧто) Экспорт Рез = Где; Для Сч = 1 По СтрДлина(Что) Цикл Рез = СтрЗаменить(Рез,Сред(Что,Сч,1),Сред(НаЧто,Сч,1)); КонецЦикла; Возврат Рез; КонецФункции Функция Транслитерация(Слово, Направление) Rus = "АаВЕеКкМНОоРрСсТуХхЗО1тиа@пь"; Eng = "AaBEeKkMHOoPpCcTyXx30imu@anb";
//Rus = "АаВЕеКкМНОоРрСсТуХхтипь"; // Если цифры в строке означают цифры //Eng = "AaBEeKkMHOoPpCcTyXxmunb"; // Если цифры в строке означают цифры Слово=ЗаменитьСимволы(?(Направление="Rus/Eng", Rus, Eng),Слово,?(Направление="Rus/Eng", Eng, Rus )); Возврат Слово; КонецФункции
Использование:
// Для приведения строки к латинским символам: СтрокаЛат = Транслитерация(СтрокаДляЗамены, "Rus/Eng"); // Для приведения строки к кириллическим символам: СтрокаКириллица = Транслитерация(СтрокаДляЗамены, ""); // во втором передаваемом параметре любая строка не равная "Rus/Eng"
Использовать можно для сопоставления номеров оплаченных счётов например...
PS: Если строка для замены может содержать цифры а не только буквы, то желательно соответствия букв и цифр типа (Зэ-3три, 1-i) убрать...