|
Реквизит формы заполненный на сервере не доступен на клиенте? | ☑ | ||
---|---|---|---|---|
0
alf2006x
09.04.21
✎
13:14
|
Но думаю что вопрос немного глубже.
Управляемая форма. Делаю такой финт: добавил на форму реквизит ОтборПоКонтрагенту с типом "Произвольный". Пихаю туда ЭлементОтбораКомпоновкиДанных вот так: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОтборПоКонтрагенту = Синонимы.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборПоКонтрагенту.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент"); ОтборПоКонтрагенту.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборПоКонтрагенту.Использование = Истина; ОтборПоКонтрагенту.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы; ОтборПоКонтрагенту.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; КонецПроцедуры В результате следующая процедура "фильтрации на лету" не работает: &НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) ТекущиеДанные = Элементы.Список.ТекущиеДанные; Если Не ТекущиеДанные = Неопределено Тогда ЭтаФорма.ОтборПоКонтрагенту.ПравоеЗначение = ТекущиеДанные.Владелец; Иначе ЭтаФорма.ОтборПоКонтрагенту.ПравоеЗначение = Неопределено; КонецЕсли КонецПроцедуры Точнее, процедура отрабатывает без ошибок, и даже правое значение устанавливается, но на форме ничего не меняется. Фильтрация не отрабатывает. А правильно всё работает только если инициализировать ОтборПоКонтрагенту не на сервере, а на клиенте. Например, в процедуре "ПриОткрытии". Вот и стало мне интересно: а почему собственно? Всем заранее спасибо за будущие комментарии |
|||
1
программистище
09.04.21
✎
13:20
|
Список.Обновить() не помогает?
отладчиком проверял, ОтборПоКонтрагенту твой отбор стоит или нет |
|||
2
alf2006x
09.04.21
✎
13:21
|
Да, в отладчике отбор устанавливается корректно.
Сейчас попробую обновить. |
|||
3
alf2006x
09.04.21
✎
13:29
|
Обновить() - не помогает.
Но заметил вот что: в переменной ОтборПоКонтрагенту отбор установлен. А в динамическом списке Синонимы.Отбор этого отбора нет. Похоже что отбор, сделанный к динамическому списку "Синонимы" на сервере видимо остаётся болтаться где-то между сервером и клиентом... |
|||
4
alf2006x
09.04.21
✎
13:31
|
Ладно, спишем на несовершенство механизма "Режим совместимости". )
|
|||
5
banco
09.04.21
✎
13:57
|
(0) А зачем этот лишний реквизит? Встал на текущую строку, установил отбор в динамическом списке.
|
|||
6
alf2006x
09.04.21
✎
14:06
|
Эээ нее... Тогда каждый раз придется искать (а если не найден - то создавать) нужный отбор.
ИМХО лишняя нагрузка (пусть и ничтожно малая). А так - всё уже создано - только значение поменял и вуаля. |
|||
7
hhhh
10.04.21
✎
20:11
|
(6) ну а так получается, отбор устанавливается в синонимах, а ваша переменная в итоге указывает в никуда.
|
|||
8
alf2006x
12.04.21
✎
16:08
|
(7) Сори, но понятнее не стало. У меня не переменная, а реквизит формы. Может быть где-то "глубоко в недрах" платформы это одно и то же, но я не уверен.
Тем не менее осадочек остался: отбор, созданный на сервере и положенный в реквизит формы превращается на клиенте в тыкву ) |
|||
9
alf2006x
13.04.21
✎
14:27
|
В продолжении этой же темы.
Сейчас обнажу свои скудные знания по клиент-серверной теме (слабонервным просьба далее не читать). Есть встроенная Обработка. В ней по кнопке Alt+F3 я вызываю свой поиск. Показываю строку для ввода куска текста. По окончании ввода вызывается серверная функция поиска (на выходе - булево: нашли /не нашли). В процедуре поиска, естессно на сервере, я делаю свой запрос и полученный результат хочу сохранить в реквизите Обработки, чтобы пока не тащить на клиента. Пусть, так сказать, полежит пока - потомится. Реквизит обработки называется "РезультатПоиска". Тип - ТаблицаЗначений. Важно: не реквизит формы, а именно реквизит обработки. После выполнения поиска, если результат на сервере не пустой - я открываю другую форму, в которой пользователь в таблице должен выбрать одно из найденных значений. Но вот незадача: в этой открываемой форме по адресу Объект.РезультатПоиска - пусто! (тип - ДанныеФормыКоллекция) Да как так то? Я же только что, прямо на сервере, туда запихнул результат выполнения своего мега-запроса. Прямо беда с этими клиентами... не уж то слишком многого от них хочу?.. |
|||
10
Kassern
13.04.21
✎
14:32
|
(9) "Прямо беда с этими клиентами... не уж то слишком многого от них хочу?." нет, просто ты очень мало о них знаешь, а это разные вещи
|
|||
11
Kassern
13.04.21
✎
14:33
|
(9) используй временное хранилище и через него передавай данные
|
|||
12
Cthulhu
13.04.21
✎
14:36
|
(11) зачем?
если можно в месте вызова создать композитный параметр (как правило - структуру), в которую напихать все что надо, а потом указать во вротом параметре "ОткрытьФорму(..)" ?.. |
|||
13
Cthulhu
13.04.21
✎
14:36
|
* во вротом = во втором
|
|||
14
Kassern
13.04.21
✎
14:38
|
(13) да я прост не совсем понял, что ТС вообще нужно то. Я подумал что из одной формы передать результирующую ТЗ в другую форму. В типовых обычно через временное хранилище такое мутят, а потом в обработке оповещения получают из хранилища и обрабатывают
|
|||
15
Cthulhu
13.04.21
✎
14:42
|
(14): а. если не передать а вернуть - то да. через хранилище+оповещение.
|
|||
16
alf2006x
13.04.21
✎
14:43
|
(14) Да, всё правильно. В одной форме вызывается поиск, результат которого надо отобразить в виде выбора из таблицы.
Эта таблица организована в другой форме, т.к. конструкцию ТЗ.Выбрать() для управляемых забыли дописать ) |
|||
17
Kassern
13.04.21
✎
14:43
|
(16) модальные штучки не камильфо на УФ запомни)
|
|||
18
Kassern
13.04.21
✎
14:44
|
(16) зато у тебя будет своя форма выбора с блекджеком и временным хранилищем)
|
|||
19
alf2006x
13.04.21
✎
14:45
|
(17) Давно смирился. И даже поддерживаю такой подход.
|
|||
20
alf2006x
13.04.21
✎
14:46
|
А табличная часть обработки прокатит вместо врем. хранилища?
|
|||
21
alf2006x
13.04.21
✎
14:47
|
Это если её ТАМ заполнить, а ТУТ просто открыть. Появится?
|
|||
22
Kassern
13.04.21
✎
14:48
|
(20) хреновый план
|
|||
23
alf2006x
13.04.21
✎
14:49
|
(22) Почему?
|
|||
24
alf2006x
13.04.21
✎
14:52
|
(22) В натуре хреновый. Совсем не работает.
|
|||
25
alf2006x
13.04.21
✎
14:52
|
Ладно, ВХ так ВХ.
|
|||
26
Kassern
13.04.21
✎
15:21
|
(24) ну вот сам понял что хреновый)
|
|||
27
alf2006x
13.04.21
✎
15:24
|
(26) Жаль. Так красиво могло получиться! ))
|
|||
28
alf2006x
13.04.21
✎
15:27
|
А так теперь надо номер строки вручную в цикле колхозить.
Может есть опыт как по-другому заполнить НомерСтроки без обхода в цикле? |
|||
29
Kassern
13.04.21
✎
15:27
|
(27) табчасть ты можешь использовать в обработке, для того, чтобы к примеру в модуле менеджера этой же обработки работать с данными из ТЧ.
|
|||
30
Kassern
13.04.21
✎
15:28
|
(28) а зачем тебе номер строки? Табчасть же сама его создаст, когда ты в нее загрузишь тз
|
|||
31
alf2006x
13.04.21
✎
15:33
|
(30) Хмм... Эт чё, я сам себя переплюнул что ли? )
Я то уже отказался от ТабличнойЧасти и добавил реквизит РезультатПоиска с типом ТЗ на ту самую форму, где идет выбор. Вот его и заполняю тем, что достал из Хранилища. |
|||
32
alf2006x
13.04.21
✎
15:34
|
(30) В общем, намёк понял, сейчас переделаю чтобы было красиво.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |