Имя: Пароль:
1C
1С v8
УФ. Как получить данные через элемент управления на клиенте?
0 fisher
 
18.02.14
12:23
Есть ссылка на поле ввода формы справочника, источником данных у которого - реквизит справочника (ссылочного типа).
Как можно на клиенте получить значение этого реквизита справочника (ссылку) без серверных вызовов? Или это невозможно?
Зная имя реквизита, могу сделать это напрямую: Объект.ИмяРеквизита.
А если есть только ссылка на поле ввода? ПутьКДанным непонятно какого рожна только на сервере доступен...
1 fisher
 
18.02.14
12:44
Ммм?
2 1Сергей
 
18.02.14
12:45
>>Есть ссылка на поле ввода формы справочника

дальше можно не читать
3 fisher
 
18.02.14
12:55
>>дальше можно не читать
Ага. Давай, до свиданья.
4 Fedor-1971
 
18.02.14
12:57
(3) Это ты зря.
Что сделать то хочешь, напиши словами без привязки к формам 1С
5 Жан Пердежон
 
18.02.14
13:00
(0) если элементы управления именовать согласованно, то объект[f(Элемент.Имя)]
6 grigo
 
18.02.14
13:12
На клиенте доступна ТОЛЬКО ССЫЛКА. Все остальное - на сервере.
7 Жан Пердежон
 
18.02.14
13:28
(6) да ладно?
8 VikingKosmo
 
18.02.14
13:33
(7) а что есть способ получить значение реквизита объекта прямо таки на клиенте?!
9 grigo
 
18.02.14
13:44
(7) Ну-ка, продемонстрируй.
10 grigo
 
18.02.14
13:47
Автор, если тебе нужно получить Реквизит реквизита, то это сделать можно на клиенте, если заранее знаешь, какой реквизит реквизита тебе нужен. Создай элемент управления с источником данных - реквизит реквизита. И вуаля, после создания формы у тебя в элементе управления значение реквизита реквизита.

Но если тебе заранее не известно - тогда не получится.
11 Feunoir
 
18.02.14
13:52
(0) В любом серверном общем модуле:

Функция ПолучитьРеквизит(Ссылка, Реквизит) Экспорт
    Возврат Ссылка[Реквизит];
КонецФункции

Только тс-с-с. Я тебе этого не говорил.
12 grigo
 
18.02.14
14:25
(11) не бойся, мы не кому не скажем, что ты читать не умеешь. Вопрос был в том,  как это сделать, НЕ ВЫЗЫВАЯ СЕРВЕР. Но мы, повторяю, никому не скажем, что ты не умеешь читать.
13 Жан Пердежон
 
18.02.14
14:31
(12) ты читаешь не лучше, вопрос совсем не про вызов сервера
14 Feunoir
 
18.02.14
14:57
(12) Ах-ах. Мне-то казалось, что то, что нельзя получить произвольный реквизит без вызова сервера, уже выяснили. Ну да ладно.
15 fisher
 
18.02.14
15:17
(14) Я только присел на плотную разработку под УФ. Раньше по-мелочам приходилось. Поэтому не все шишки еще набиты.
Ну что ж... Еще одна несуразность в копилку...
16 fisher
 
18.02.14
15:20
Если сабж неясно изложен, поясню с другого бока:
Есть поле ввода на форме, через которое происходит редактирование реквизита справочника. Реквизит хранит ссылку на элемент другого справочника.
Можно ли получить значение этой ссылки, зная имя элемента управления на форме без обращения к серверу?
Как я понял - нельзя.
17 fisher
 
18.02.14
15:24
Чорд. Все равно могут неправильно понять... Итак:
1) есть справочники "Номенклатура" и "Категория"
2) в справочнике "Номенклатура" есть реквизит "Категория" и поле ввода на форме с именем "ВыборКатегории", которое его редактирует
3) можно ли зная имя поля ввода ("ВыборКатегории") получить ссылку на категорию без обращению к серверу?
18 Fedor-1971
 
18.02.14
16:18
(17) Посмотри в отладчике Форма.ВыборКатегории.ТекущиеДанные, на сервере туда записана ссылка на справочник Категории. Аналогично будет Объект.Категория - та же ссылка.
&НаКлиенте можно получить ссылку, но полноценно работать с оной не получится, если только передать как параметр куда нить.
19 Жан Пердежон
 
18.02.14
16:27
(18) ТекущиеДанные у поля ввода?
(17) в (5) не ответ? если имена менять нельзя - можно соответствие хранить имяэлемента-имяреквизита, костыль конечно...
20 Fedor-1971
 
18.02.14
16:41
Да лажанулся, через форму ссылку получить не получится, можно только через Объект.
21 fisher
 
18.02.14
16:47
(19) Я просто не могу придумать ни одного логического объяснения тому, что свойство "ПутьКДанным" не транслируется на клиента. Это же гребанная строка! Думал, может я не вкуриваю чего. Оказалось - таки просто еще одна милая фича.
22 grigo
 
18.02.14
19:16
(13) см. (0) строка 2 "без серверных вызовов". И тоже учись читать. )))
23 PiVa123
 
18.02.14
19:24
(21) Это только начало пути УФ. Еще много подобного придется понять и простить ... или ругаться на форуме. :-D
24 Torquader
 
18.02.14
19:26
Да, пока они не поймут, что нужно иметь возможность с клиента обращаться к любому объекту на сервере, как это сделано через указатели на нормальных системах - будет ещё много сюрпризов и огорчений.
25 Feunoir
 
18.02.14
19:45
(24) В толстом клиенте таких проблем вообще нет. Проблема только в тонком и web. И то, что так сделано в некотором смысле может быть логичным. Тащить все поля на клиента через кучу промежуточных узлов и тормозных каналов неправильно.
26 Torquader
 
18.02.14
19:52
(25) Тащить надо то, что нужно.
Просто, в нормальных системах есть "Proxy-объекты" для таких целей.
27 grigo
 
18.02.14
19:53
(24) Была такая возможность. И все (ну, почти все) то и дело ОБРАЩАЛИСЬ К ОБЪЕКТУ НА СЕРВЕРЕ. А потом плакали, что у них 1с тормозит.
Поэтому разрабы неявные вызовы сервера сделали явными.
Но не волнуйтесь - тяжело только первые полгода. Дальше все на автомате пойдет.
28 Feunoir
 
18.02.14
19:56
(26) Ну так и делай себе прокси. Сам руками именно то, что нужно. Дернул сервер - он тебе в ответ структуру со всеми реквизитами переданной ссылки. Ты данные на клиенте в кеш положил и пользуешься когда надо. Нормальный взрослый принцип, когда ты сам думаешь, а не система за тебя.
29 Torquader
 
18.02.14
19:58
(28) Ну, тогда, быть может, вместо рисования формы тоже самому думать - тогда зачем 1С.
30 Feunoir
 
18.02.14
20:00
(29) Вот тут соглашусь, конечно. Возможностей по управлению внешним видом управляемых форм частенько не хватает.
31 Torquader
 
18.02.14
20:06
(30) Да там вообще мало чего хватает - хочешь данные - пихай в хранилище - передавай и там обрабатывай - а то, что это "матрёшка" и размер растёт - это никому не важно.
Опять же, события с сервера на клиента - а это в идеологию не вписывается - то есть в html-5 Web-сокеты вписываются, а у 1С - ещё не вписывается.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс