|
Получение реквизитов справочника по ссылке | ☑ | ||
---|---|---|---|---|
0
Iater
19.06.15
✎
20:23
|
Всем привет! Кто может растолковать мне вот это волшебство:
&НаКлиенте Процедура ФИОПриИзменении(Элемент) ФИО = Объект.ФИО; ЗаполнениеКод(ФИО); КонецПроцедуры Функция ЗаполнениеКод(ФИО) Объект.Код = ФИО.Код; КонецФункции Вот что меня сильно смущает: Объект.ФИО содержит ссылку на справочник Сотрудники. Я передаю эту ссылку в функцию и заполняю поле Код нужным мне значением реквизита, полученного по этой ссылке. Вроде логично. Но я не понимаю почему не работает вот такой код: &НаКлиенте Процедура ФИОПриИзменении(Элемент) ФИО = Объект.ФИО; Объект.Код = ФИО.Код; КонецПроцедуры Я вижу, что при передачи ссылке в функцию она магическим образом действительно работает как ссылка. А когда я точно также обращаюсь к справочнику без функции, то ссылка почему-то не передается. На картинке можно увидеть, что если нажать "вычислить выражение", то можно раскрыть ФИО и добраться до Кода (в случай с функцией): http://i.imgur.com/Fq6VmeY.png А если функцию не использовать, то раскрыть список невозможно |
|||
1
Iater
19.06.15
✎
22:35
|
Я задал слишком сложный или слишком тупой вопрос? )))) Чего никто не отвечает?
|
|||
2
mehfk
19.06.15
✎
22:40
|
Нет здесь никого. В понедельник приходи.
|
|||
3
Lexey_
19.06.15
✎
23:04
|
(0) потому, что функция без явного указания директивы компиляции выполняется на сервере, а на клиенте значение через точку не получишь
|
|||
4
Iater
20.06.15
✎
00:28
|
(3) через точку не получишь? или вообще никак не получишь кроме как через функцию?
|
|||
5
Elatiell
20.06.15
✎
00:39
|
(4) Обращение через точку, это по сути запрос. Запросы на клиенте не доступны = > На клиенте через точку не получишь. Да, только через функцию, которая выполняется на сервере.
|
|||
6
Shrek_yar
20.06.15
✎
00:43
|
(0) деградация какая то, я бы еще понял если раньше с 7-кой работал или с 8.1.
|
|||
7
Elatiell
20.06.15
✎
00:44
|
(0) "раскрыть ФИО и добраться до Кода (в случай с функцией)"
Отлаживаешь код, скорее всего, в толстом клиенте, в толстом клиенте, грубо говоря, ты всегда находишься на сервере и все вычисления производишь там ну и т.к. запросы на сервере доступны, то и через точку ты можешь достучаться до кода. |
|||
8
Elatiell
20.06.15
✎
00:45
|
(6) Все мы учились когда - то. =)
|
|||
9
Zhuravlik
20.06.15
✎
00:45
|
(4) Обращение через точку - это по сути запрос к ИБ, для получения значения реквизита.
Т.е. ФИО.Код - это запрос, вида ВЫБРАТЬ * Из Справочник.Сотрудники КАК Сотрудник ГДЕ Сотрудник.Ссылка = &ФИО (5) опередил) Дополню лишь, что на сервере невыгодно обращаться через точку, т.к. точка от ссылки - это неявный запрос к ИБ, который получает ВСЕ реквизиты ссылки. Для избежания этого рекомендуется создавать свой запрос. В типовых - везде практически есть функция ОМ: ОбщегоНазначения.ПолучитьЗначениеРеквизита(ИмяРеквизита, Ссылка). |
|||
10
Elatiell
20.06.15
✎
00:46
|
А кто-то до сих пор учится. -_- Век живи, век учись.
|
|||
11
Iater
21.06.15
✎
20:35
|
(9) Спасибо, Zhuravlik, очень помог! (5) тоже спасибо!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |