Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Реквизит формы заполненный на сервере не доступен на клиенте?

Реквизит формы заполненный на сервере не доступен на клиенте?
Я
   alf2006x
 
09.04.21 - 13:14
Но думаю что вопрос немного глубже.

Управляемая форма.
Делаю такой финт: добавил на форму реквизит ОтборПоКонтрагенту с типом "Произвольный".
Пихаю туда ЭлементОтбораКомпоновкиДанных вот так:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   ОтборПоКонтрагенту = Синонимы.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ОтборПоКонтрагенту.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
   ОтборПоКонтрагенту.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
   ОтборПоКонтрагенту.Использование = Истина;
   ОтборПоКонтрагенту.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы;
   ОтборПоКонтрагенту.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
КонецПроцедуры

В результате следующая процедура "фильтрации на лету" не работает:

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
    
    ТекущиеДанные = Элементы.Список.ТекущиеДанные;
    Если Не ТекущиеДанные = Неопределено Тогда
        ЭтаФорма.ОтборПоКонтрагенту.ПравоеЗначение = ТекущиеДанные.Владелец;
    Иначе
        ЭтаФорма.ОтборПоКонтрагенту.ПравоеЗначение = Неопределено;
    КонецЕсли
    
КонецПроцедуры

Точнее, процедура отрабатывает без ошибок, и даже правое значение устанавливается,
но на форме ничего не меняется. Фильтрация не отрабатывает.

А правильно всё работает только если инициализировать ОтборПоКонтрагенту не на сервере, а на клиенте.
Например, в процедуре "ПриОткрытии".

Вот и стало мне интересно: а почему собственно?

Всем заранее спасибо за будущие комментарии
   программистище
 
1 - 09.04.21 - 13:20
Список.Обновить() не помогает?
отладчиком проверял, ОтборПоКонтрагенту твой отбор стоит или нет
   alf2006x
 
2 - 09.04.21 - 13:21
Да, в отладчике отбор устанавливается корректно.
Сейчас попробую обновить.
   alf2006x
 
3 - 09.04.21 - 13:29
Обновить() - не помогает.

Но заметил вот что: в переменной ОтборПоКонтрагенту отбор установлен.
А в динамическом списке Синонимы.Отбор этого отбора нет.

Похоже что отбор, сделанный к динамическому списку "Синонимы" на сервере видимо остаётся болтаться где-то
между сервером и клиентом...
   alf2006x
 
4 - 09.04.21 - 13:31
Ладно, спишем на несовершенство механизма "Режим совместимости". )
   banco
 
5 - 09.04.21 - 13:57
(0) А зачем этот лишний реквизит? Встал на текущую строку, установил отбор в динамическом списке.
   alf2006x
 
6 - 09.04.21 - 14:06
Эээ нее... Тогда каждый раз придется искать (а если не найден - то создавать) нужный отбор.
ИМХО лишняя нагрузка (пусть и ничтожно малая).
А так - всё уже создано - только значение поменял и вуаля.
   hhhh
 
7 - 10.04.21 - 20:11
(6) ну а так получается, отбор устанавливается в синонимах, а ваша переменная в итоге указывает в никуда.
   alf2006x
 
8 - 12.04.21 - 16:08
(7) Сори, но понятнее не стало. У меня не переменная, а реквизит формы. Может быть где-то "глубоко в недрах" платформы это одно и то же, но я не уверен.
Тем не менее осадочек остался: отбор, созданный на сервере и положенный в реквизит формы превращается на клиенте в тыкву )
   alf2006x
 
9 - 13.04.21 - 14:27
В продолжении этой же темы.
Сейчас обнажу свои скудные знания по клиент-серверной теме (слабонервным просьба далее не читать).

Есть встроенная Обработка. В ней по кнопке Alt+F3 я вызываю свой поиск. Показываю строку для ввода куска текста.
По окончании ввода вызывается серверная функция поиска (на выходе - булево: нашли /не нашли).
В процедуре поиска, естессно на сервере, я делаю свой запрос и полученный результат хочу сохранить в реквизите Обработки, чтобы пока не тащить на клиента.
Пусть, так сказать, полежит пока - потомится.
Реквизит обработки называется "РезультатПоиска". Тип - ТаблицаЗначений.
Важно: не реквизит формы, а именно реквизит обработки.

После выполнения поиска, если результат на сервере не пустой - я открываю другую форму, в которой пользователь в таблице должен выбрать одно из найденных значений.
Но вот незадача: в этой открываемой форме по адресу Объект.РезультатПоиска - пусто!  (тип - ДанныеФормыКоллекция)

Да как так то? Я же только что, прямо на сервере, туда запихнул результат выполнения своего мега-запроса.
Прямо беда с этими клиентами... не уж то слишком многого от них хочу?..
   Kassern
 
10 - 13.04.21 - 14:32
(9) "Прямо беда с этими клиентами... не уж то слишком многого от них хочу?." нет, просто ты очень мало о них знаешь, а это разные вещи
   Kassern
 
11 - 13.04.21 - 14:33
(9) используй временное хранилище и через него передавай данные
   Cthulhu
 
12 - 13.04.21 - 14:36
(11) зачем?
если можно в месте вызова создать композитный параметр (как правило - структуру), в которую напихать все что надо, а потом указать во вротом параметре "ОткрытьФорму(..)" ?..
   Cthulhu
 
13 - 13.04.21 - 14:36
* во вротом = во втором
   Kassern
 
14 - 13.04.21 - 14:38
(13) да я прост не совсем понял, что ТС вообще нужно то. Я подумал что из одной формы передать результирующую ТЗ в другую форму. В типовых обычно через временное хранилище такое мутят, а потом в обработке оповещения получают из хранилища и обрабатывают
   Cthulhu
 
15 - 13.04.21 - 14:42
(14): а. если не передать а вернуть - то да. через хранилище+оповещение.
   alf2006x
 
16 - 13.04.21 - 14:43
(14) Да, всё правильно. В одной форме вызывается поиск, результат которого надо отобразить в виде выбора из таблицы.
Эта таблица организована в другой форме, т.к. конструкцию ТЗ.Выбрать() для управляемых забыли дописать )
   Kassern
 
17 - 13.04.21 - 14:43
(16) модальные штучки не камильфо на УФ запомни)
   Kassern
 
18 - 13.04.21 - 14:44
(16) зато у тебя будет своя форма выбора с блекджеком и временным хранилищем)
   alf2006x
 
19 - 13.04.21 - 14:45
(17) Давно смирился. И даже поддерживаю такой подход.
   alf2006x
 
20 - 13.04.21 - 14:46
А табличная часть обработки прокатит вместо врем. хранилища?
   alf2006x
 
21 - 13.04.21 - 14:47
Это если её ТАМ заполнить, а ТУТ просто открыть. Появится?
   Kassern
 
22 - 13.04.21 - 14:48
(20) хреновый план
   alf2006x
 
23 - 13.04.21 - 14:49
(22) Почему?
   alf2006x
 
24 - 13.04.21 - 14:52
(22) В натуре хреновый. Совсем не работает.
   alf2006x
 
25 - 13.04.21 - 14:52
Ладно, ВХ так ВХ.
   Kassern
 
26 - 13.04.21 - 15:21
(24) ну вот сам понял что хреновый)
   alf2006x
 
27 - 13.04.21 - 15:24
(26) Жаль. Так красиво могло получиться! ))
   alf2006x
 
28 - 13.04.21 - 15:27
А так теперь надо номер строки вручную в цикле колхозить.
Может есть опыт как по-другому заполнить НомерСтроки без обхода в цикле?
   Kassern
 
29 - 13.04.21 - 15:27
(27) табчасть ты можешь использовать в обработке, для того, чтобы к примеру в модуле менеджера этой же обработки работать с данными из ТЧ.
   Kassern
 
30 - 13.04.21 - 15:28
(28) а зачем тебе номер строки? Табчасть же сама его создаст, когда ты в нее загрузишь тз
 
 
   alf2006x
 
31 - 13.04.21 - 15:33
(30) Хмм... Эт чё, я сам себя переплюнул что ли? )
Я то уже отказался от ТабличнойЧасти и добавил реквизит РезультатПоиска с типом ТЗ на ту самую форму, где идет выбор.
Вот его и заполняю тем, что достал из Хранилища.
   alf2006x
 
32 - 13.04.21 - 15:34
(30) В общем, намёк понял, сейчас переделаю чтобы было красиво.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.