При отправке SMSок из 1С столкнулся с тем, что текст отправлялся только латиницей, а данные-то в кириллице. В результате написал функцию перевода текста в латиницу.
Может, кому-нибудь пригодится
Может, кому-нибудь пригодится
Функция глТранслит(Слово)Экспорт
НовоеСлово= "";
спТранслит = СоздатьОбъект("СписокЗначений");
спТранслит.ДобавитьЗначение("j","й");
спТранслит.ДобавитьЗначение("c","ц");
спТранслит.ДобавитьЗначение("u","у");
спТранслит.ДобавитьЗначение("k","к");
спТранслит.ДобавитьЗначение("e","е");
спТранслит.ДобавитьЗначение("n","н");
спТранслит.ДобавитьЗначение("g","г");
спТранслит.ДобавитьЗначение("sh","ш");
спТранслит.ДобавитьЗначение("sch","щ");
спТранслит.ДобавитьЗначение("z","з");
спТранслит.ДобавитьЗначение("h","х");
спТранслит.ДобавитьЗначение("#","ъ");
спТранслит.ДобавитьЗначение("f","ф");
спТранслит.ДобавитьЗначение("y","ы");
спТранслит.ДобавитьЗначение("v","в");
спТранслит.ДобавитьЗначение("a","а");
спТранслит.ДобавитьЗначение("p","п");
спТранслит.ДобавитьЗначение("r","р");
спТранслит.ДобавитьЗначение("o","о");
спТранслит.ДобавитьЗначение("l","л");
спТранслит.ДобавитьЗначение("d","д");
спТранслит.ДобавитьЗначение("zh","ж");
спТранслит.ДобавитьЗначение("je","э");
спТранслит.ДобавитьЗначение("ja","я");
спТранслит.ДобавитьЗначение("ch","ч");
спТранслит.ДобавитьЗначение("s","с");
спТранслит.ДобавитьЗначение("m","м");
спТранслит.ДобавитьЗначение("i","и");
спТранслит.ДобавитьЗначение("t","т");
спТранслит.ДобавитьЗначение("'","ь");
спТранслит.ДобавитьЗначение("b","б");
спТранслит.ДобавитьЗначение("ju","ю");
спТранслит.ДобавитьЗначение("jo","ё");
//Укр
спТранслит.ДобавитьЗначение("je","є");
спТранслит.ДобавитьЗначение("i'","ї");
спТранслит.ДобавитьЗначение("i","і");
//Лат
спТранслит.ДобавитьЗначение("i","i");
спТранслит.ДобавитьЗначение("q","q");
спТранслит.ДобавитьЗначение("w","w");
спТранслит.ДобавитьЗначение("e","e");
спТранслит.ДобавитьЗначение("r","r");
спТранслит.ДобавитьЗначение("t","t");
спТранслит.ДобавитьЗначение("y","y");
спТранслит.ДобавитьЗначение("u","u");
спТранслит.ДобавитьЗначение("i","i");
спТранслит.ДобавитьЗначение("o","o");
спТранслит.ДобавитьЗначение("p","p");
спТранслит.ДобавитьЗначение("","");
спТранслит.ДобавитьЗначение("a","a");
спТранслит.ДобавитьЗначение("s","s");
спТранслит.ДобавитьЗначение("d","d");
спТранслит.ДобавитьЗначение("f","f");
спТранслит.ДобавитьЗначение("g","g");
спТранслит.ДобавитьЗначение("h","h");
спТранслит.ДобавитьЗначение("j","j");
спТранслит.ДобавитьЗначение("k","k");
спТранслит.ДобавитьЗначение("l","l");
спТранслит.ДобавитьЗначение("z","z");
спТранслит.ДобавитьЗначение("x","x");
спТранслит.ДобавитьЗначение("c","c");
спТранслит.ДобавитьЗначение("v","v");
спТранслит.ДобавитьЗначение("b","b");
спТранслит.ДобавитьЗначение("n","n");
спТранслит.ДобавитьЗначение("m","m");
спТранслит.ДобавитьЗначение(" "," ");
спТранслит.ДобавитьЗначение("""","""");
спТранслит.ДобавитьЗначение("-","-");
спТранслит.ДобавитьЗначение(".",".");
спТранслит.ДобавитьЗначение(",",",");
спТранслит.ДобавитьЗначение("/","/");
спТранслит.ДобавитьЗначение("","");
спТранслит.ДобавитьЗначение("*","*");
спТранслит.ДобавитьЗначение("#","#");
спТранслит.ДобавитьЗначение("#","№");
спТранслит.ДобавитьЗначение("|","|");
спТранслит.ДобавитьЗначение("!","!");
спТранслит.ДобавитьЗначение("?","?");
спТранслит.ДобавитьЗначение("$","$");
спТранслит.ДобавитьЗначение("%","%");
спТранслит.ДобавитьЗначение("@","@");
спТранслит.ДобавитьЗначение("&","&");
спТранслит.ДобавитьЗначение("=","=");
спТранслит.ДобавитьЗначение("+","+");
спТранслит.ДобавитьЗначение("~","~");
спТранслит.ДобавитьЗначение("'","'");
спТранслит.ДобавитьЗначение("`","`");
спТранслит.ДобавитьЗначение(":",":");
спТранслит.ДобавитьЗначение(";",";");
спТранслит.ДобавитьЗначение("(","(");
спТранслит.ДобавитьЗначение(")",")");
спТранслит.ДобавитьЗначение("[","[");
спТранслит.ДобавитьЗначение("]","]");
спТранслит.ДобавитьЗначение("}","}");
спТранслит.ДобавитьЗначение("{","{");
спТранслит.ДобавитьЗначение("0","0");
спТранслит.ДобавитьЗначение("1","1");
спТранслит.ДобавитьЗначение("2","2");
спТранслит.ДобавитьЗначение("3","3");
спТранслит.ДобавитьЗначение("4","4");
спТранслит.ДобавитьЗначение("5","5");
спТранслит.ДобавитьЗначение("6","6");
спТранслит.ДобавитьЗначение("7","7");
спТранслит.ДобавитьЗначение("8","8");
спТранслит.ДобавитьЗначение("9","9");
Для а=1 по СтрДлина(Слово) Цикл
НовоеСлово = НовоеСлово + спТранслит.Получить(НРЕГ(Сред(Слово,а,1)))
КонецЦикла;
Возврат ВРЕГ(НовоеСлово);
КонецФункции
а через массив не быстрее?
Примерно так:
Перем транслит[256] Экспорт;
Процедура ДобавитьСимвол(Символ,ВСимвол)
транслит[КодСимв(Символ) + 1] = ВСимвол;
Если Врег(Символ) <> Символ Тогда
транслит[КодСимв(ВРЕГ(Символ)) + 1] = ВРЕГ(Лев(ВСимвол,1))+Сред(ВСимвол,2);
КонецЕсли;
КонецПроцедуры
Функция ЗаполнитьТранслит();
Для Сч = 1 По 256 Цикл
транслит[сч] = Симв(сч-1);
КонецЦикла;
ДобавитьСимвол(«й»,»j»);
//.. и т.п. — только маленькие, и только то что надо транслитерировать
ДобавитьСимвол(«щ»,»tsh»);
КонецФункции
//*******************************************
Процедура Сформировать()
ЗаполнитьТранслит();
Стр = «?????????????»;
РезСтр = «»;
Для Сч = 1 По СтрДлина(Стр) Цикл
РезСтр = РезСтр + транслит[КодСимв(Сред(Стр,Сч,1)) + 1];
КонецЦикла;
КонецПроцедуры
Что-то близкое
http://infostart.ru/public/57742/
(0) и тоже близкое
Функция Transliterate(srtRusWord)
/O///P///R///S///T///U///F///KH//TS//CH//SH//SHCH’///Y////// /E///YU//JA//»;
strRUS = «АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ»;
strENG = «A///B///V///G///D///E///YO//ZH//Z///I///Y///K///L///M///N//
strResult = «»;
Для i = 1 по СтрДлина(srtRusWord) Цикл
s = Сред(srtRusWord, i,1);
s=ВРег(s);
k = Найти(strRUS, s);
Если k = 0 тогда
strResult = strResult + s;
Иначе
strResult = strResult + СтрЗаменить(Сред(strENG, (k — 1) * 4 + 1, 4), «/», «»);
КонецЕсли
КонецЦикла ;
Возврат strResult;
КонецФункции
(0)http://infostart.ru/public/18352/
А почему не использовать посылку сразу латиницей но в UNICODE.
http://infostart.ru/public/16088/
Например:
Спасибо, мне пригодилось при создании пользователя в 1с8 почту писать, немного подшаманил, т.к. 8-ка и 7-ка все таки немного разные :). А так спасибо, просто и понятно.
(7) kiros, Аналогично. т.к. регистры важны
Очень быстрая функция транслитерации. Работает с символами как верхнего, так и нижнего регистра. Встречающиеся латинские буквы и знаки препинания оставляет нетронутыми.
Показать
Спасибо автору! Самому впадлу было бы писать. Чуть под себя переделал.
(9)
Толково!
Вставлю и свои 5 копеек 🙂
Показать
В массиве смотрится красивей
Показать
Некропостну своей функцией по госту ISO 9:
Показать
Mozhet, komu-nibud` prigoditsya
(14)
Быстрофикс, должно быть ТРег:
(14)
Получился не только некропостинг, но и мимопостинг: публикация находится в разделе «Платформа 7.7».
(16)
Прошу прощения. Существование семерки уже стерлось из памяти.
Спасибо за простой и понятный код.
(3) все преобразует в верхний регистр. немного модифицировал
Показать