![]() |
![]() |
![]() |
|
Сложный вопрос (наверно) (коды в 1С) Ø |
☑ | ||
---|---|---|---|---|
0
NAME2
11.08.05
✎
15:42
|
Сам вопрос в следующем: У справочника номеклатура есть поле код. Но условия задачи потребовали, что-бы данный код был смешенный - цифровой и буквенный (например 5005-ар). Теперь самое интересное. При вводе оператор может внести буквы ap - как английские и как русские ар. Визульно разницы нет. Но если делать в обработке поиск по коду, то ясно что для программы это разные коды. Как можно выявить, что конкретное значение кода состоит из английских букв, или из русских ? И наверно более сложный вопрос как их заменить "автоматом", т.е. русские буквы ар на английские ap и т.п. ("е" на "е", "c" на "с") ? Заранее спасибо !!!
|
|||
1
Мулька
11.08.05
✎
15:45
|
Проверять на диапазон кодов АСЦИИ символов.
|
|||
2
КонецЦикла
11.08.05
✎
15:48
|
По поводу замены... в глоб. модуле можно так:
Функция Преобр(Стр) Экспорт Вых=""; Размер=0; Стр1=Врег(СокрЛ(СокрП(Стр))); Размер=СтрДлина(Стр1); For Смв=1 to Размер do Рез=Найти(Русские,Сред(Стр1,Смв,1)); Если Рез<>0 Тогда Вых=Вых+Сред(Латинские,Рез,1); Иначе Вых=Вых+Сред(Стр1,Смв,1); КонецЕсли; EndDo; Возврат Вых; КонецФункции Объявляешь переменные русские, латинские, потом пишешь в конце глобальника Русские = "авбгд..." Латинские = "abcd..." Типа такого... код функции не мой, но вроде работает |
|||
3
smaharbA
11.08.05
✎
15:49
|
Перем глСпТранслит Экспорт; // СписокЗначений с соответствиями транслитерации Русский-Английский
Функция глТранслит(ПоРусски) Экспорт // Осуществляет побуквенную транслитерацию на латинский алфавит. ДРК06 // переданной строки. При этом строка приводится к верхнему регистру. Текст=СокрЛП(ПоРусски); ЛатТекст=""; Для к=1 по СтрДлина(Текст) Цикл ОбрБуква=ВРег(Сред(Текст,к,1)); ЛатБуква=глСпТранслит.Получить(ОбрБуква); Если ПустаяСтрока(ЛатБуква)=0 Тогда ЛатТекст=ЛатТекст+ЛатБуква; Иначе ЛатТекст=ЛатТекст+ОбрБуква; КонецЕсли; КонецЦикла; Возврат ЛатТекст; КонецФункции Процедура ЗаполнитьТаблицуТранслитерации() // Заполняет список транслитерации - соответствия русских и английских алфавитов глСпТранслит=СоздатьОбъект("СписокЗначений"); глСпТранслит.ДобавитьЗначение("A","А"); глСпТранслит.ДобавитьЗначение("B","Б"); глСпТранслит.ДобавитьЗначение("V","В"); глСпТранслит.ДобавитьЗначение("G","Г"); глСпТранслит.ДобавитьЗначение("D","Д"); глСпТранслит.ДобавитьЗначение("E","Е"); глСпТранслит.ДобавитьЗначение("YE","Ё"); глСпТранслит.ДобавитьЗначение("J","Ж"); глСпТранслит.ДобавитьЗначение("Z","З"); глСпТранслит.ДобавитьЗначение("I","И"); глСпТранслит.ДобавитьЗначение("Y","Й"); глСпТранслит.ДобавитьЗначение("K","К"); глСпТранслит.ДобавитьЗначение("L","Л"); глСпТранслит.ДобавитьЗначение("M","М"); глСпТранслит.ДобавитьЗначение("N","Н"); глСпТранслит.ДобавитьЗначение("O","О"); глСпТранслит.ДобавитьЗначение("P","П"); глСпТранслит.ДобавитьЗначение("R","Р"); глСпТранслит.ДобавитьЗначение("S","С"); глСпТранслит.ДобавитьЗначение("T","Т"); глСпТранслит.ДобавитьЗначение("U","У"); глСпТранслит.ДобавитьЗначение("F","Ф"); глСпТранслит.ДобавитьЗначение("H","Х"); глСпТранслит.ДобавитьЗначение("C","Ц"); глСпТранслит.ДобавитьЗначение("CH","Ч"); глСпТранслит.ДобавитьЗначение("SH","Ш"); глСпТранслит.ДобавитьЗначение("SCH","Щ"); глСпТранслит.ДобавитьЗначение("'","Ъ"); глСпТранслит.ДобавитьЗначение("Y","Ы"); глСпТранслит.ДобавитьЗначение("'","Ь"); глСпТранслит.ДобавитьЗначение("E","Э"); глСпТранслит.ДобавитьЗначение("YU","Ю"); глСпТранслит.ДобавитьЗначение("YA","Я"); КонецПроцедуры // ЗаполнитьТаблицуТранслитерации ... Вешай на код функцию, глТранслит(Код) ... |
|||
4
Джинн
11.08.05
✎
15:49
|
Смотри КодСимв, Симв, СтрЗаменить.
Но вообще-то это юзверские проблемы. Сами понавводили - сами пусть и геморроятся. Если, конечно, кодировку нельзя формализовать. |
|||
5
Мулька
11.08.05
✎
15:50
|
(2) не программерский подход.
|
|||
6
smaharbA
11.08.05
✎
15:51
|
+(3) толко таблицу заполняй не транслиттерацией, а по похожести буков/знаков...
|
|||
7
NAME2
11.08.05
✎
15:52
|
(2-6) Спасибо. Попробую. Смысл понятен.
|
|||
8
Мулька
11.08.05
✎
15:56
|
Формальный подход: Предоставить возможность выбора символов из заранее сформированного списка
|
|||
9
КонецЦикла
11.08.05
✎
15:58
|
2(5) Вах... написал же "код функции не мой"
|
|||
10
smaharbA
11.08.05
✎
15:59
|
(8) зато так даже еслиб 1Сэ в юникоде или/и других кодах общалась, вопрос будет снят...
|
|||
11
Хоменко Валерий
11.08.05
✎
16:00
|
У меня было что-то похожее на (2) со строками:
РусскиеНеотличимые="АВЕКМНОРСТУХаекорсух"; ЛатинскиеАналоги="ABEKMHOPCTYXaekopcyx"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |