Имя: Пароль:
1C
 
Транслит в 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
валщебник эту галимую матью запхал в базу.
И ни одна сволочь не вспомнила вариант транслита без Заменить и операторов Если

просто тупым присвоением.
Ибо этого уже просто никто не знает
Ошибка? Это не ошибка, это системная функция.