Простенькая транслитерация

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

Для одного из банков при заказе карточек потребовалось указать транслитерированные имя и фамилию работников.

Пришлось провести исследования и написать простенькую функцию транслитерации почти 🙂 по стандарту ISO-R9-1968


Функция ЗаменитьОдниСимволыДругими(Что,Где,НаЧто) Экспорт
Рез = Где;
Для Сч = 1 По СтрДлина(Что) Цикл
Рез = СтрЗаменить(Рез,Сред(Что,Сч,1),Сред(НаЧто,Сч,1));
КонецЦикла;
Возврат Рез;
КонецФункции //ЗаменитьОдниСимволыДругими

Функция ТрЛит(Знач Слово)
Слово = ВРег(Слово);
Слово = ?(Лев(Слово,1) = "Е","YE"+Сред(Слово,2),Слово);
Слово=СтрЗаменить(Слово,"АЕ","AYE");
Слово=СтрЗаменить(Слово,"ЕЕ","EYE");
Пока Найти(Слово,"EЕ") > 0 Цикл
Слово = СтрЗаменить(Слово,"EЕ","EYE");
КонецЦикла;
Слово=СтрЗаменить(Слово,"ЕЁ","YEYO");
Слово=СтрЗаменить(Слово,"ЁЕ","YOYE");
Слово=СтрЗаменить(Слово,"ИЕ","IYE");
Слово=СтрЗаменить(Слово,"ОЕ","OYE");
Слово=СтрЗаменить(Слово,"УЕ","UYE");
Слово=СтрЗаменить(Слово,"ЫЕ","YYE");
Слово=СтрЗаменить(Слово,"ЭЕ","EYE");
Слово=СтрЗаменить(Слово,"ЮЕ","YUYE");
Слово=СтрЗаменить(Слово,"ЯЕ","YAYE");
Слово=СтрЗаменить(Слово,"ЬЕ","YE");
Слово=СтрЗаменить(Слово,"ЪЕ","YE");
Слово=СтрЗаменить(Слово,"Ё","YO");
Слово=СтрЗаменить(Слово,"Ж","ZH");
Слово=СтрЗаменить(Слово,"Х","KH");
Слово=СтрЗаменить(Слово,"Ц","TS");
Слово=СтрЗаменить(Слово,"Ч","CH");
Слово=СтрЗаменить(Слово,"Ш","SH");
Слово=СтрЗаменить(Слово,"Щ","CHSH");
Слово=СтрЗаменить(Слово,"Ъ","");
Слово=СтрЗаменить(Слово,"Ь","");
Слово=СтрЗаменить(Слово,"Ю","YU");
Слово=СтрЗаменить(Слово,"Я","YA");
Слово=ЗаменитьОдниСимволыДругими("АБВГДЕЗИЙКЛМНОПРСТУФЫЭ",Слово,"ABVGDEZIJKLMNOPRSTUFYE");
Возврат Слово;
КонецФункции

Пример использования функции приведен в прилагаемой обработке.

6 Comments

  1. lock73

    Для одного из банков при заказе карточек понадобилось транслитерировать имя и фамилию работника.

    Пришлось написать простенькую функцию.

    Перейти к публикации

    Reply
  2. no_registration

    Прикольно. Все простое гениально.

    Reply
  3. lock73

    Функция задумывалась и была написана в расчете на пословное транслитерирование. Но, если после строки

    Слово = ?(Лев(Слово,1) = «Е»,»YE»+Сред(Слово,2),Слово);

    вставить

    Слово = СтрЗаменить(Слово,» Е»,» YE»+Сред(Слово,2),Слово);

    то получим функцию для многословных конструкций. А если еще вставить и строку

    Слово = СтрЗаменить(Слово,»-Е»,»-YE»+Сред(Слово,2),Слово);

    то и для составных фамилий.

    Reply
  4. NPMar

    Спасибо большое! Мне очень пригодится для передачи в банк данных о сотрудниках. Обязательно воспользуюсь. Предстоит переход из семерки на восьмерку.

    Reply
  5. quebracho

    Спасибо вам. Следует также заметить, что для получения титульного регистра

    ARISTARKH ZMEYEYEDOV

    Aristarkh Zmeyeyedov

    можно воспользоваться встроенной функцией ТРег.

    Reply
  6. capitan

    Для любителей копипастить я бы добавил нижний регистр

    Функция фТранслит(Знач Слово)
    //по стандарту ISO-R9-1968
    Слово = ?(Лев(Слово,1) = «Е»,»YE»+Сред(Слово,2),Слово);
    Слово = ?(Лев(Слово,1) = «е»,»ye»+Сред(Слово,2),Слово);
    Слово=СтрЗаменить(Слово,»ае»,»aye»);
    Слово=СтрЗаменить(Слово,»ее»,»eye»);
    Пока Найти(Слово,»eе») > 0 Цикл
    Слово = СтрЗаменить(Слово,»eе»,»eye»);
    КонецЦикла;
    Слово=СтрЗаменить(Слово,»её»,»yeyo»);
    Слово=СтрЗаменить(Слово,»ёе»,»yoye»);
    Слово=СтрЗаменить(Слово,»ие»,»iye»);
    Слово=СтрЗаменить(Слово,»ое»,»oye»);
    Слово=СтрЗаменить(Слово,»уе»,»uye»);
    Слово=СтрЗаменить(Слово,»ые»,»yye»);
    Слово=СтрЗаменить(Слово,»эе»,»eye»);
    Слово=СтрЗаменить(Слово,»юе»,»yuye»);
    Слово=СтрЗаменить(Слово,»яе»,»yaye»);
    Слово=СтрЗаменить(Слово,»ье»,»ye»);
    Слово=СтрЗаменить(Слово,»ъе»,»ye»);
    Слово=СтрЗаменить(Слово,»ё»,»yo»);
    Слово=СтрЗаменить(Слово,»ж»,»zh»);
    Слово=СтрЗаменить(Слово,»х»,»kh»);
    Слово=СтрЗаменить(Слово,»ц»,»ts»);
    Слово=СтрЗаменить(Слово,»ч»,»ch»);
    Слово=СтрЗаменить(Слово,»ш»,»sh»);
    Слово=СтрЗаменить(Слово,»щ»,»chsh»);
    Слово=СтрЗаменить(Слово,»ъ»,»»);
    Слово=СтрЗаменить(Слово,»ь»,»»);
    Слово=СтрЗаменить(Слово,»ю»,»yu»);
    Слово=СтрЗаменить(Слово,»я»,»ya»);
    Слово=ЗаменитьОдниСимволыДругими(«абвгдезийклмнопрстуфыэ»,Слово,»abvgdezijklmnoprstufye»);
    Слово=СтрЗаменить(Слово,»АЕ»,»AYE»);
    Слово=СтрЗаменить(Слово,»ЕЕ»,»EYE»);
    Пока Найти(Слово,»EЕ») > 0 Цикл
    Слово = СтрЗаменить(Слово,»EЕ»,»EYE»);
    КонецЦикла;
    Слово=СтрЗаменить(Слово,»ЕЁ»,»YEYO»);
    Слово=СтрЗаменить(Слово,»ЁЕ»,»YOYE»);
    Слово=СтрЗаменить(Слово,»ИЕ»,»IYE»);
    Слово=СтрЗаменить(Слово,»ОЕ»,»OYE»);
    Слово=СтрЗаменить(Слово,»УЕ»,»UYE»);
    Слово=СтрЗаменить(Слово,»ЫЕ»,»YYE»);
    Слово=СтрЗаменить(Слово,»ЭЕ»,»EYE»);
    Слово=СтрЗаменить(Слово,»ЮЕ»,»YUYE»);
    Слово=СтрЗаменить(Слово,»ЯЕ»,»YAYE»);
    Слово=СтрЗаменить(Слово,»ЬЕ»,»YE»);
    Слово=СтрЗаменить(Слово,»ЪЕ»,»YE»);
    Слово=СтрЗаменить(Слово,»Ё»,»YO»);
    Слово=СтрЗаменить(Слово,»Ж»,»ZH»);
    Слово=СтрЗаменить(Слово,»Х»,»KH»);
    Слово=СтрЗаменить(Слово,»Ц»,»TS»);
    Слово=СтрЗаменить(Слово,»Ч»,»CH»);
    Слово=СтрЗаменить(Слово,»Ш»,»SH»);
    Слово=СтрЗаменить(Слово,»Щ»,»CHSH»);
    Слово=СтрЗаменить(Слово,»Ъ»,»»);
    Слово=СтрЗаменить(Слово,»Ь»,»»);
    Слово=СтрЗаменить(Слово,»Ю»,»YU»);
    Слово=СтрЗаменить(Слово,»Я»,»YA»);
    Слово=ЗаменитьОдниСимволыДругими(«АБВГДЕЗИЙКЛМНОПРСТУФЫЭ»,Слово,»ABVGDEZIJKLMNOPRSTUFYE»);
    Возврат Слово;
    КонецФункции

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *