|
Изменяется содержимое поля, почему? | ☑ | ||
---|---|---|---|---|
0
YVGroshkov
04.01.13
✎
01:28
|
В форме группы справочника есть помимо всех прочих есть 2 поля: Наименование и Адрес. Пытаюсь в поле Адрес впихнуть транслит текста поля Наименование: вешаю процедуру на событие ПриИзменении, но транслитирируются значения ОБЕИХ ПОЛЕЙ. Почему?
Вот модуль формы: //Транслитирация Функция ЭмбоссируемоеИмя(ФИО) Экспорт сзПеревод = Новый СписокЗначений; сзПеревод.Добавить("а","a"); сзПеревод.Добавить("б","b"); сзПеревод.Добавить("в","v"); сзПеревод.Добавить("г","g"); сзПеревод.Добавить("д","d"); сзПеревод.Добавить("е","e"); сзПеревод.Добавить("ж","zh"); сзПеревод.Добавить("з","z"); сзПеревод.Добавить("и","i"); сзПеревод.Добавить("й","y"); сзПеревод.Добавить("к","k"); сзПеревод.Добавить("л","l"); сзПеревод.Добавить("м","m"); сзПеревод.Добавить("н","n"); сзПеревод.Добавить("о","o"); сзПеревод.Добавить("п","p"); сзПеревод.Добавить("р","r"); сзПеревод.Добавить("с","s"); сзПеревод.Добавить("т","t"); сзПеревод.Добавить("у","u"); сзПеревод.Добавить("ф","f"); сзПеревод.Добавить("х","h"); сзПеревод.Добавить("ц","ts"); сзПеревод.Добавить("ч","ch"); сзПеревод.Добавить("ш","sh"); сзПеревод.Добавить("щ","sch"); сзПеревод.Добавить("ь",""); сзПеревод.Добавить("ы","y"); сзПеревод.Добавить("ъ",""); сзПеревод.Добавить("э","e"); сзПеревод.Добавить("ю","yu"); сзПеревод.Добавить("я","ya"); сзПеревод.Добавить("-","-"); сзПеревод.Добавить(",",""); сзПеревод.Добавить(" ","-"); Для Каждого Строка Из сзПеревод Цикл ФИО = СтрЗаменить(НРег(ФИО), Строка.Значение, ВРег(Строка.Представление)); КонецЦикла; Возврат НРег(ФИО); КонецФункции Процедура НаименованиеПриИзменении() // Обработчик события Наименование = ЭлементыФормы.Наименование.Значение; ЭлементыФормы.Адрес.Значение = ЭмбоссируемоеИмя(Наименование); КонецПроцедуры |
|||
1
Кокос
04.01.13
✎
01:33
|
дык Наименование = ЭлементыФормы.Наименование.Значение вроде тавталогия. это раз. хотя хз. В УФ не помню как.
во вторых ФИО передается не по значению. сответственно в функции ФИО тоже меняет параметр функции. |
|||
2
Кокос
04.01.13
✎
01:34
|
Функция ЭмбоссируемоеИмя(Знач ФИО) Экспорт
|
|||
3
YVGroshkov
04.01.13
✎
01:38
|
По замечаниям исправил, но следующий код также изменяет значения обоих полей: получается транслитирированный текст и в Наименовании и в Адрес
//Транслитирация Функция ЭмбоссируемоеИмя(ФИО) сзПеревод = Новый СписокЗначений; сзПеревод.Добавить("а","a"); сзПеревод.Добавить("б","b"); сзПеревод.Добавить("в","v"); сзПеревод.Добавить("г","g"); сзПеревод.Добавить("д","d"); сзПеревод.Добавить("е","e"); сзПеревод.Добавить("ж","zh"); сзПеревод.Добавить("з","z"); сзПеревод.Добавить("и","i"); сзПеревод.Добавить("й","y"); сзПеревод.Добавить("к","k"); сзПеревод.Добавить("л","l"); сзПеревод.Добавить("м","m"); сзПеревод.Добавить("н","n"); сзПеревод.Добавить("о","o"); сзПеревод.Добавить("п","p"); сзПеревод.Добавить("р","r"); сзПеревод.Добавить("с","s"); сзПеревод.Добавить("т","t"); сзПеревод.Добавить("у","u"); сзПеревод.Добавить("ф","f"); сзПеревод.Добавить("х","h"); сзПеревод.Добавить("ц","ts"); сзПеревод.Добавить("ч","ch"); сзПеревод.Добавить("ш","sh"); сзПеревод.Добавить("щ","sch"); сзПеревод.Добавить("ь",""); сзПеревод.Добавить("ы","y"); сзПеревод.Добавить("ъ",""); сзПеревод.Добавить("э","e"); сзПеревод.Добавить("ю","yu"); сзПеревод.Добавить("я","ya"); сзПеревод.Добавить("-","-"); сзПеревод.Добавить(",",""); сзПеревод.Добавить(" ","-"); Для Каждого Строка Из сзПеревод Цикл ФИО = СтрЗаменить(НРег(ФИО), Строка.Значение, ВРег(Строка.Представление)); КонецЦикла; Возврат НРег(ФИО); КонецФункции Процедура НаименованиеПриИзменении() // Вставить содержимое обработчика. Адрес = ЭмбоссируемоеИмя(Наименование); КонецПроцедуры |
|||
4
YVGroshkov
04.01.13
✎
01:39
|
По идее в Адрес должен падать транслитирированный текст Наименования, но с самим наименованием ничего не должно призходить.
|
|||
5
Кокос
04.01.13
✎
01:40
|
(3) не учел (2) либо сделать можно еще так
Для Каждого Строка Из сзПеревод Цикл Результат = СтрЗаменить(НРег(ФИО), Строка.Значение, ВРег(Строка.Представление)); КонецЦикла; Возврат НРег(Результат); |
|||
6
GROOVY
04.01.13
✎
01:40
|
ЭлементыФормы - это коллекция для управления видимостью и свойствами элементов формы. Но никак не значений реквизитов.
|
|||
7
GROOVY
04.01.13
✎
01:41
|
ЭмбоссируемоеИмя(ЗНАЧ ФИО)
|
|||
8
GROOVY
04.01.13
✎
01:42
|
Учите мат часть. Передача параметров по ссылке и по значению.
|
|||
9
GROOVY
04.01.13
✎
01:42
|
Чтоб совсем понятно было:
//Транслитирация Функция ЭмбоссируемоеИмя(ЗНАЧ ФИО) сзПеревод = Новый СписокЗначений; сзПеревод.Добавить("а","a"); |
|||
10
YVGroshkov
04.01.13
✎
01:46
|
(9) Спасибо! Кто-ж знал-то, что по-умолчанию параметры предаются по ссылке. :0)
Работает. |
|||
11
YVGroshkov
04.01.13
✎
11:50
|
(9) GROOVY, а где в матчасти это описано?
|
|||
12
GROOVY
06.01.13
✎
20:09
|
Описание встроенного языка, том1. Под рукой нет. Но там где про объявление процедур и функций. Не далее чем страниц 50 от начала.
|
|||
13
rozer76
06.01.13
✎
20:19
|
(10) это чтоб "жизнь медом не казалась" при переходе с "нормальных" языков - в одинэс с этим все наоборот :)
|
|||
14
mikecool
06.01.13
✎
20:36
|
(13) почему? кажись один в один
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |