Имя: Пароль:
1C
1С v8
Как вывести реквизит формы в ее заголовок
0 travelekb
 
04.08.13
19:22
Доброго вечера.

Понимаю, что наверняка задача элементарна, но уже голову сломал - не могу разобраться.
Дано:
Управляемые формы
Есть форма обработки. У данной формы есть реквизит "Клиент" ссылочного типа (СправочникСсылка). У данного реквизита формы среди прочего есть параметр КодКлиента.

Никак не могу заставить вывести это значение в Заголовок моей формы.
Пытаюсь сформировать строку для вывода вот так:
Заголовок = Объект.Клиент.КодКлиента;
ругается ошибкой "Поле объекта не обнаружено КодКлиента"

Хотя в дереве реквизитов формы - присутствует.
http://joxi.ru/U3H-Udg5CbAJWQwUuMc

Буду признателен за подсказку!
1 НаборДанных
 
04.08.13
19:23
Не там пытаешься софримровать, даю 146%, что в отладчике Объект не совем то, что тебе нужно в момент формирования.
2 travelekb
 
04.08.13
19:25
Ну вот например, делаю так:
Заголовок = Объект.Клиент;
мне выводит наименование клиента.

А мне нужен именно КодКлиента, вот так:
Заголовок = Объект.Клиент.КодКлиента;
не работает
3 НаборДанных
 
04.08.13
19:26
(2)Засада, отладчик пробовал?
4 travelekb
 
04.08.13
19:32
(1), действительно, когда отладчиком смотрю - в Объект.Клиент уже нету реквизита КодКлиента. Подскажите - где копать?
5 НаборДанных
 
04.08.13
19:34
(4)Мб, КодКлиент = Рекивизт формы?
6 travelekb
 
04.08.13
19:38
(5), Заголовок = Объект.КодКлиента;
тоже не работает.

Верно ли я думаю, что нужно вызвать серверную функцию и получить этот КодКлиента из Справочника, затем вернуть на клиент и уже потом отобразить в заголовке?
7 НаборДанных
 
04.08.13
19:45
Форма рисуется при создаиинасеревере, думай дальше.
8 Defender aka LINN
 
04.08.13
19:47
Дано:
Управляемые формы
9 Aprobator
 
04.08.13
20:31
(8) народ походу пьянствует вовсю.
10 Aprobator
 
04.08.13
20:32
(0) к реквизитам значения ссылочного типа нельзя обратиться через точку на стороне клиента.
11 Aprobator
 
04.08.13
20:35
(5) абсолютно верно.
12 Aprobator
 
04.08.13
20:35
(12) (11) - > (6)
13 travelekb
 
04.08.13
20:40
Буду пробовать, спасибо, но пока все равно не врубаюсь.
Понял, что где-то на стороне Сервера зарыто что мне нужно.
14 Aprobator
 
04.08.13
21:17
пля.

...
&Клиент
Процедура КакаяТоТам()
      ......
      ЗначениеРеквизита = ПолучитьЗначениеРеквизита(Объект.Клиент, "Код")
КонецПроцедуры

&Сервер
Функция (ЗначениеТипаСсылка, ИмяРеквизита)
      Возврат ЗначениеТипаСсылка[ИмяРеквизита];
КонецФункции
15 Aprobator
 
04.08.13
21:23
Ошибся чуток. Вот так точнее будет

...
&Клиент
Процедура КакаяТоТам()
      ......
      ЗначениеРеквизита = ПолучитьЗначениеРеквизитаСервер(Объект.Клиент, "Код")
КонецПроцедуры

&Сервер
Функция ПолучитьЗначениеРеквизитаСервер(ЗначениеТипаСсылка, ИмяРеквизита)
      Возврат ЗначениеТипаСсылка[ИмяРеквизита];
КонецФункции
16 travelekb
 
04.08.13
21:49
Можно попробовать разобрать по частям?

Я пишу в процедуре "При открытии" на Клиенте, т.к. мне нужно вывести имя реквизиты в шапку:
В параметрах функции передаем объект ссылочного типа и имя реквизита.

&Клиент
Процедура ПриОткрытии()
      ЭтаФорма.Заголовок = ПолучитьЗначениеРеквизитаСервер(Объект.Клиент, "КодКлиента");
КонецПроцедуры


Дальше, серверная часть и тут я не понимаю что происходит... Хочется не просто скопировать код, а разобраться.
&Сервер
Функция ПолучитьЗначениеРеквизитаСервер(ЗначениеТипаСсылка, ИмяРеквизита)
      Возврат ЗначениеТипаСсылка[ИмяРеквизита];
КонецФункции
17 Defender aka LINN
 
04.08.13
21:56
(15) Подставляй коленку
18 Aprobator
 
04.08.13
22:06
(17) за что?????
19 Aprobator
 
04.08.13
22:10
(16) тогда к учебникам.
20 travelekb
 
04.08.13
22:13
(19) завтра разберу внимательнее, думаю дойду.
Сегодня поздно уже.
Большое вам спасибо!
21 Aprobator
 
04.08.13
22:14
вот тебе даже тупо выдержка из СП.
....
СправочникСсылка.<Имя справочника>.<Имя реквизита> (CatalogRef.<Имя справочника>.<Attribute name>)
СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
<Имя реквизита> (<Attribute name>)
Использование:

Только чтение.
Описание:

Тип: Произвольный.
Набор свойств содержит значения реквизитов справочника. Доступ к значению осуществляется по имени, как оно задано в конфигураторе.

Доступность:

Сервер, толстый клиент, внешнее соединение. // Тонкого клиента тут нет.
22 Aprobator
 
04.08.13
22:16
(21) хотя не - этот пост тут не в тему нефига.
23 Aprobator
 
04.08.13
22:17
На стороне клиента и реквизитов то ссылочного типа нет )
Костя! Я осознал за что!!!!!! )))
24 Aprobator
 
04.08.13
22:24
хотя, чего то ты меня запутал. Колись, за что коленку подставлять?
25 Aprobator
 
04.08.13
22:26
вот св..лочь, я ж не усну тперь. Кто нить может мне объяснить- за что коленку?
26 Aprobator
 
04.08.13
22:26
)
27 zladenuw
 
04.08.13
23:04
(26) что что. прострелить тебе коленку.
28 Necessitudo
 
04.08.13
23:16
(16) И неправильно. Нужно писать НаСервереБезКонтекста.
29 Aprobator
 
04.08.13
23:17
(28) только это коленки не стоит )
30 Necessitudo
 
04.08.13
23:34
(29) Стоит)Тупая ошибка)
31 Aprobator
 
04.08.13
23:37
куда я попал. Одни садисты!
32 Aprobator
 
04.08.13
23:38
кстати, а что такое - не тупая ошибка?
33 Defender aka LINN
 
05.08.13
07:47
(24) 1. За &НаСервере
2. За [].
34 Aprobator
 
05.08.13
10:09
(33) я ему только суть показал. Уж разжевывать до того, что и значения реквзитов лучше тащить запросом - ну его нафиг. Доки есть - пусть сам читает.
35 travelekb
 
05.08.13
12:26
Мужики, спасибо большое. Все решил - все работает.
Правильно ли реализовал? Хочется не чтобы просто работало, а было правильно:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ЭтаФорма.Заголовок = ПолучитьЗаголовокНаСервере(Объект.Клиент);
КонецПроцедуры

&НаСервереБезКонтекста //контекст формы нам не нужен - так что без него
Функция ПолучитьЗаголовокНаСервере(Значение)
   Возврат Строка(Значение.КодКлиента);
КонецФункции

Еще раз спасибо всем. Действительно я совсем не учел вот это: (21)
>>Сервер, толстый клиент, внешнее соединение. // Тонкого клиента тут нет.<<