|
перевести символы по ошибке написанные кирилицей в такие же латинские? | ☑ | ||
---|---|---|---|---|
0
dimm7310
05.04.12
✎
10:14
|
Существует ли возможность в 1С 8.2 перевести символы по ошибке написанные кирилицей в такие же латинские?
Например строка А6B - написана рускими символами, а надо переписать также английскими. Нужно загружать данные из файла и сопоставлять их с уже записанными данными в справочнике. По идее все строки в файле должно быть записаны латиницей, но встречаются написанные кириллицей. |
|||
1
Cube
05.04.12
✎
10:15
|
КодСимвола()?
|
|||
2
FIXXXL
05.04.12
✎
10:25
|
Функция ТранслитЛат(Имя) Экспорт
Рез = СокрЛП(Имя); Рез = СтрЗаменить(Рез,"а","a"); Рез = СтрЗаменить(Рез,"б","b"); Рез = СтрЗаменить(Рез,"в","v"); Рез = СтрЗаменить(Рез,"г","g"); Рез = СтрЗаменить(Рез,"д","d"); Рез = СтрЗаменить(Рез,"е","e"); Рез = СтрЗаменить(Рез,"ё","e"); Рез = СтрЗаменить(Рез,"ж","zh"); Рез = СтрЗаменить(Рез,"з","z"); Рез = СтрЗаменить(Рез,"и","i"); Рез = СтрЗаменить(Рез,"к","k"); Рез = СтрЗаменить(Рез,"л","l"); Рез = СтрЗаменить(Рез,"м","m"); Рез = СтрЗаменить(Рез,"н","n"); Рез = СтрЗаменить(Рез,"о","o"); Рез = СтрЗаменить(Рез,"п","p"); Рез = СтрЗаменить(Рез,"р","r"); Рез = СтрЗаменить(Рез,"с","s"); Рез = СтрЗаменить(Рез,"т","t"); Рез = СтрЗаменить(Рез,"у","u"); Рез = СтрЗаменить(Рез,"ф","f"); Рез = СтрЗаменить(Рез,"х","h"); Рез = СтрЗаменить(Рез,"ч","ch"); Рез = СтрЗаменить(Рез,"ш","sh"); Рез = СтрЗаменить(Рез,"щ","sch"); Рез = СтрЗаменить(Рез,"ъ",""); Рез = СтрЗаменить(Рез,"ь",""); Рез = СтрЗаменить(Рез,"э","e"); Рез = СтрЗаменить(Рез,"ю","yu"); Рез = СтрЗаменить(Рез,"й","i"); Рез = СтрЗаменить(Рез,"ц","c"); Рез = СтрЗаменить(Рез,"я","ya"); Рез = СтрЗаменить(Рез,"ы","i"); Рез = СтрЗаменить(Рез,"А","A"); Рез = СтрЗаменить(Рез,"Б","B"); Рез = СтрЗаменить(Рез,"В","V"); Рез = СтрЗаменить(Рез,"Г","G"); Рез = СтрЗаменить(Рез,"Д","D"); Рез = СтрЗаменить(Рез,"Е","E"); Рез = СтрЗаменить(Рез,"Ё","E"); Рез = СтрЗаменить(Рез,"Ж","ZH"); Рез = СтрЗаменить(Рез,"З","Z"); Рез = СтрЗаменить(Рез,"И","I"); Рез = СтрЗаменить(Рез,"К","K"); Рез = СтрЗаменить(Рез,"Л","L"); Рез = СтрЗаменить(Рез,"М","M"); Рез = СтрЗаменить(Рез,"Н","N"); Рез = СтрЗаменить(Рез,"О","O"); Рез = СтрЗаменить(Рез,"П","P"); Рез = СтрЗаменить(Рез,"Р","R"); Рез = СтрЗаменить(Рез,"С","S"); Рез = СтрЗаменить(Рез,"Т","T"); Рез = СтрЗаменить(Рез,"У","U"); Рез = СтрЗаменить(Рез,"Ф","F"); Рез = СтрЗаменить(Рез,"Х","H"); Рез = СтрЗаменить(Рез,"Ч","CH"); Рез = СтрЗаменить(Рез,"Ш","SH"); Рез = СтрЗаменить(Рез,"Щ","SCH"); Рез = СтрЗаменить(Рез,"Ъ",""); Рез = СтрЗаменить(Рез,"Ь",""); Рез = СтрЗаменить(Рез,"Ы","I"); Рез = СтрЗаменить(Рез,"Ц","C"); Рез = СтрЗаменить(Рез,"Э","E"); Рез = СтрЗаменить(Рез,"Ю","YU"); Рез = СтрЗаменить(Рез,"Я","YA"); Рез = СтрЗаменить(Рез,"Й","I"); Возврат(Рез); КонецФункции |
|||
3
FIXXXL
05.04.12
✎
10:25
|
(2) подреж маленько и в путь :)
|
|||
4
dimm7310
05.04.12
✎
10:26
|
(2) я так и думал, что только через СтрЗаменить
|
|||
5
dimm7310
05.04.12
✎
10:27
|
(1) не понял как применить в данном случае
|
|||
6
AmoreMe
05.04.12
✎
12:21
|
+ Code
Перем МассивСимволовЛатиницы; Процедура КнопкаВыполнитьНажатие(Кнопка) Кирилица = Истина; Для Индекс = 1 По СтрДлина(СтрокаСимволов) Цикл Если НайтиКод(КодСимвола(СтрокаСимволов, Индекс)) <> Неопределено Тогда Сообщить("Символ № " + Индекс + " не кирилица!",СтатусСообщения.Важное); Кирилица = Ложь; КонецЕсли; КонецЦикла; Если Кирилица Тогда Сообщить("Строка полностью состоит из символов кирилицы!",СтатусСообщения.Информация); КонецЕсли; КонецПроцедуры Функция НайтиКод(ВыбранныйКод) Возврат МассивСимволовЛатиницы.Найти(ВыбранныйКод); КонецФункции Процедура ОсновныеДействияФормыИсправить(Кнопка) Для Индекс = 1 По СтрДлина(СтрокаСимволов) Цикл Код = НайтиКод(КодСимвола(СтрокаСимволов, Индекс)); Если Код <> Неопределено Тогда Сообщить("Символ № " + Индекс + " исправлен на кирилицу!",СтатусСообщения.Информация); Если Код = 0 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"A","А"); ИначеЕсли Код = 1 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"a","а"); ИначеЕсли Код = 2 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"B","В"); ИначеЕсли Код = 3 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"b","в"); ИначеЕсли Код = 4 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"C","С"); ИначеЕсли Код = 5 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"c","с"); ИначеЕсли Код = 6 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"E","Е"); ИначеЕсли Код = 7 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"e","е"); ИначеЕсли Код = 8 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"H","Н"); ИначеЕсли Код = 9 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"h","н"); ИначеЕсли Код = 10 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"K","К"); ИначеЕсли Код = 11 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"k","к"); ИначеЕсли Код = 12 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"T","Т"); ИначеЕсли Код = 13 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"t","т"); ИначеЕсли Код = 14 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"O","О"); ИначеЕсли Код = 15 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"o","о"); ИначеЕсли Код = 16 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"X","Х"); ИначеЕсли Код = 17 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"x","х"); ИначеЕсли Код = 18 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"P","Р"); ИначеЕсли Код = 19 Тогда СтрокаСимволов = СтрЗаменить(СтрокаСимволов,"p","р"); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры МассивСимволовЛатиницы = Новый Массив; МассивСимволовЛатиницы.Добавить(КодСимвола("A")); МассивСимволовЛатиницы.Добавить(КодСимвола("a")); МассивСимволовЛатиницы.Добавить(КодСимвола("B")); МассивСимволовЛатиницы.Добавить(КодСимвола("b")); МассивСимволовЛатиницы.Добавить(КодСимвола("C")); МассивСимволовЛатиницы.Добавить(КодСимвола("c")); МассивСимволовЛатиницы.Добавить(КодСимвола("E")); МассивСимволовЛатиницы.Добавить(КодСимвола("e")); МассивСимволовЛатиницы.Добавить(КодСимвола("H")); МассивСимволовЛатиницы.Добавить(КодСимвола("h")); МассивСимволовЛатиницы.Добавить(КодСимвола("K")); МассивСимволовЛатиницы.Добавить(КодСимвола("k")); МассивСимволовЛатиницы.Добавить(КодСимвола("T")); МассивСимволовЛатиницы.Добавить(КодСимвола("t")); МассивСимволовЛатиницы.Добавить(КодСимвола("O")); МассивСимволовЛатиницы.Добавить(КодСимвола("o")); МассивСимволовЛатиницы.Добавить(КодСимвола("X")); МассивСимволовЛатиницы.Добавить(КодСимвола("x")); МассивСимволовЛатиницы.Добавить(КодСимвола("P")); МассивСимволовЛатиницы.Добавить(КодСимвола("p")); |
|||
7
nuctoh
05.04.12
✎
12:30
|
Кошмар пишете. Вот изящный вариант. Правда он решает обратную задачу, но адаптация займет не более минуты:
Функция НайтиОшибочныеСимволы(Строка) Экспорт ОшибСимволы = "abcdeghkmnoprtwxyuё"; НормСимволы = "авсдеднкмпорятшхуие"; ТмпСтрока = НРег(Строка); НовСтрока = ""; ДлинаСтроки = СтрДлина(Строка); Для Инд = 1 По ДлинаСтроки Цикл Символ = Сред(Строка, Инд, 1); ТмпСимвол = Сред(ТмпСтрока, Инд, 1); ПозСимвола = Найти(ОшибСимволы, ТмпСимвол); Если ПозСимвола = 0 Тогда НовСтрока = НовСтрока + Символ; Иначе НовСимвол = Сред(НормСимволы, ПозСимвола, 1); НовСтрока = НовСтрока + ?(Символ = ВРег(Символ), ВРег(НовСимвол), НовСимвол); КонецЕсли; КонецЦикла; Возврат НовСтрока; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |