![]() |
![]() |
![]() |
|
Транслит в 1С | ☑ | ||
---|---|---|---|---|
0
Kudryashka
06.05.04
✎
12:32
|
я не сталкивалась, может кто подскажет кто сталкивался? вот в справочнике занесена фамилия сотрудника например Иванова Маша. а при выводе отчета нужно две графы где в одной пишется Иванова Маша, а во второй Ivanova Masha. Возможно ли это? и как?
|
|||
1
Valery
06.05.04
✎
12:44
|
В 1с такое используется часто. например справочник Номенклатуры или контрагентов
Там есть два поля : Наименование и Наименование для печати.Можно так же сделать по аналогии.Добавить еще одно поле. Одно с русским наименованием, другое с английским. |
|||
2
Kudryashka
06.05.04
✎
12:47
|
нет, два поля не пойдет. не буду же они вводить вручную все фамилии еще и не транслите.. это же моя задача как сделать чтобы так выводилось.
|
|||
3
At
06.05.04
✎
12:50
|
тада надо свою собственную фунцию писать...
или поискать в инете |
|||
4
Композитор
06.05.04
✎
12:54
|
Функция Исправить(Имя)
Рез = СокрЛП(Имя); Рез = СтрЗаменить(Рез,"а","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"); Возврат(Рез); КонецФункции Можно красивее сделать... |
|||
5
Kudryashka
06.05.04
✎
12:56
|
:) это и ежу понятно, что писать надо. я для того в форум и обратилась с таким вопросом. в инете я поискать всегда успею, но это следующий шаг. для чего тогда форумы нужны? :)
|
|||
6
Kudryashka
06.05.04
✎
12:59
|
(4) мда, такой вариант я знаю, а никто не знает ченить еще? но я все же склоняюсь к тому что такой вариант более всех других подходит в данном случае...
|
|||
7
At
06.05.04
✎
13:01
|
а чем такой вариант не нравится?
|
|||
8
Kudryashka
06.05.04
✎
13:06
|
(7) вариант неплохой, просто я думала что есть и другие пути, не перебирая каждую букву. просто я о них не знаю или недодумалась. значит нету.. нет, такие пути я знаю, но там проблемы с двойными буквами.. а вот чтобы и буквы не перебирая и проблем с двойными не было.. наверное слишком многого хочу :))
|
|||
9
At
06.05.04
✎
13:08
|
а я не наю... поэтому и счастлив :))
буду не против если мне о них тоже расскажут |
|||
10
Kudryashka
06.05.04
✎
13:19
|
примерно такое:
Функция Транслит(Стр) Рус = "абв.." Лат = "abv.." КоличБукв = СтрДлина(Рус); Для А = 1 по КоличБукв цикл Русск = Сред(Рус,А,1); Латин = Сред(Лат,А,1); Стр = СтрЗаменить(Стр,Русск,Латин) КонецЦикла; Возврат Стр КонецФункции но это только для простых букв |
|||
11
GrayT
06.05.04
✎
13:20
|
Полный изврат :)))))
Функция Транслит(Стр) СтрРус="АБВГД...Ю..."; стрЕнг="ABVGD...YU..."; КолСим="11111...2..."; Дл = СтрДлина(СтрРус); Для сч = 1 по Дл Цикл Стр = СтрЗаменить(Стр, Сред(СтрРус,сч,1), Сред(СтрЕнг,сч, Число(Сред(КолСим,сч,1)))); КонецЦикла; Возврат Стр КонецФункции //Транслит |
|||
12
At
06.05.04
✎
13:31
|
Понятно.. Спасибо.
Но вариант от Композитора(4) мне больше понравился. |
|||
13
Kudryashka
06.05.04
✎
13:31
|
:) спасибо.
|
|||
14
GrayT
06.05.04
✎
13:32
|
(12)Мне тоже ;)
|
|||
15
Фокусник
23.12.04
✎
17:15
|
(14) тем более, что 12 - не работающий вариант :) Ошибка в логике поднятия английской буквы.
Нужно так: Функция Транслитерация(Стр) Рез=СокрЛП(Стр); СтрРус="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; СтрАнг="ABVGDEEZHZIYKLMNOPRSTUFHTSCHSHSCH Y EYUYA"; КолСим="111111121111111111111112223111122"; СтрРус=СтрРус+Нрег(СтрРус); СтрАнг=СтрАнг+Нрег(СтрАнг); КолСим=КолСим+КолСим; Для сч = 1 по СтрДлина(СтрРус) Цикл Место=1; Для сч1=1 по сч-1 Цикл Место=Место+Число(Сред(КолСим,сч1,1)); КонецЦикла; Рез = СтрЗаменить(Рез, Сред(СтрРус,сч,1), СокрЛП(Сред(СтрАнг,Место, Число(Сред(КолСим,сч,1))))); КонецЦикла; Возврат Рез; КонецФункции |
|||
16
GrayT
23.12.04
✎
22:03
|
(15)Верно подмечено. Но может вместо лишнего цикла лучше пробелов напихать строку позиций и руских бухв?
|
|||
17
акули
23.12.04
✎
23:58
|
валщебник эту галимую матью запхал в базу.
И ни одна сволочь не вспомнила вариант транслита без Заменить и операторов Если просто тупым присвоением. Ибо этого уже просто никто не знает |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |