Транслитерация в 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;
КонецФункции

 

17.08.2018