Транслитерация в 1с, на примере функции для версии 7.7.
Многие задавались вопросом организации транслитерации строк в 1с. Предлагаем ознакомится с одной из возможных схем.
Функция Транслит(Стр) Экспорт
Исх = СоздатьОбъект("СписокЗначений");
Кон = СоздатьОбъект("СписокЗначений");
Исх.ДобавитьЗначение("а");Кон.ДобавитьЗначение("a");
Исх.ДобавитьЗначение("б");Кон.ДобавитьЗначение("b");
Исх.ДобавитьЗначение("в");Кон.ДобавитьЗначение("v");
Исх.ДобавитьЗначение("г");Кон.ДобавитьЗначение("g");
Исх.ДобавитьЗначение("д");Кон.ДобавитьЗначение("d");
Исх.ДобавитьЗначение("е");Кон.ДобавитьЗначение("e");
Исх.ДобавитьЗначение("ж");Кон.ДобавитьЗначение("j");
Исх.ДобавитьЗначение("з");Кон.ДобавитьЗначение("z");
Исх.ДобавитьЗначение("и");Кон.ДобавитьЗначение("i");
Исх.ДобавитьЗначение("й");Кон.ДобавитьЗначение("i");
Исх.ДобавитьЗначение("к");Кон.ДобавитьЗначение("k");
Исх.ДобавитьЗначение("л");Кон.ДобавитьЗначение("l");
Исх.ДобавитьЗначение("м");Кон.ДобавитьЗначение("m");
Исх.ДобавитьЗначение("н");Кон.ДобавитьЗначение("n");
Исх.ДобавитьЗначение("о");Кон.ДобавитьЗначение("o");
Исх.ДобавитьЗначение("п");Кон.ДобавитьЗначение("p");
Исх.ДобавитьЗначение("р");Кон.ДобавитьЗначение("r");
Исх.ДобавитьЗначение("с");Кон.ДобавитьЗначение("s");
Исх.ДобавитьЗначение("т");Кон.ДобавитьЗначение("t");
Исх.ДобавитьЗначение("у");Кон.ДобавитьЗначение("u");
Исх.ДобавитьЗначение("ф");Кон.ДобавитьЗначение("f");
Исх.ДобавитьЗначение("х");Кон.ДобавитьЗначение("x");
Исх.ДобавитьЗначение("ц");Кон.ДобавитьЗначение("c");
Исх.ДобавитьЗначение("ч");Кон.ДобавитьЗначение("ch");
Исх.ДобавитьЗначение("ш");Кон.ДобавитьЗначение("sh");
Исх.ДобавитьЗначение("щ");Кон.ДобавитьЗначение("sch");
Исх.ДобавитьЗначение("ъ");Кон.ДобавитьЗначение("'");
Исх.ДобавитьЗначение("ы");Кон.ДобавитьЗначение("y");
Исх.ДобавитьЗначение("ь");Кон.ДобавитьЗначение("'");
Исх.ДобавитьЗначение("э");Кон.ДобавитьЗначение("e");
Исх.ДобавитьЗначение("ю");Кон.ДобавитьЗначение("yu");
Исх.ДобавитьЗначение("я");Кон.ДобавитьЗначение("ya");
Стр1 = Стр;
Для Инд=1 По Исх.РазмерСписка() Цикл
Истр = Исх.ПолучитьЗначение(Инд);
Кстр = Кон.ПолучитьЗначение(Инд);
Стр1 = СтрЗаменить(Стр1,Истр,Кстр);
Стр1 = СтрЗаменить(Стр1,Врег(Истр),Врег(Лев(Кстр,1))+?(СтрДлина(Кстр)=1,"",Сред(Кстр,2,СтрДлина(Кстр))));
КонецЦикла;
Возврат Стр1;
КонецФункции
21.12.2024