|
УФ. Динамический список. Изменение текста запроса. | ☑ | ||
---|---|---|---|---|
0
Lama12
25.06.14
✎
16:16
|
Есть УФ. На ней расположен динамический список. В зависимости от действий пользователя меняю текст запроса к динамическому списку. почему-то данные в списке не меняются. Это нормально?
|
|||
1
butterbean
25.06.14
✎
16:17
|
обновить данные надо-бы
|
|||
2
Lama12
25.06.14
✎
16:20
|
(1) Элементы формы Обновить()?
Не помогает. |
|||
3
acsent
25.06.14
✎
16:21
|
Список.Обновить() или ОбновитьСтроки()
|
|||
4
Lama12
25.06.14
✎
16:28
|
(3) Не помогает.
|
|||
5
Вызвать Исключение
25.06.14
✎
16:33
|
ОповеститьОбИзменении(); (4)
|
|||
6
kosts
25.06.14
✎
16:52
|
(0) А что мешает сделать один запрос, но рулить параметрами.
|
|||
7
Lama12
25.06.14
✎
16:53
|
(6) Запрос тяжелый получается. Много фильтров которые нельзя наложить отборами на конечный результат.
В общем как раз пытаюсь от этого избавиться. |
|||
8
toypaul
гуру
25.06.14
✎
16:55
|
может ОбновитьОтображениеДанных()
|
|||
9
kosts
25.06.14
✎
16:55
|
Как вариант. Сделай несколько закладок с разными списками
|
|||
10
Lama12
25.06.14
✎
16:58
|
(9) Это крайний вариант. Но идею принял. Спасибо.
|
|||
11
toypaul
гуру
25.06.14
✎
16:59
|
(9) была информация, что даже если дин. список не показывается, запрос всеравно отправляется на сервер. при открытии формы, например. или при обновлении формы.
|
|||
12
Lama12
26.06.14
✎
12:54
|
И так...
Внешняя обработка с примером воспроизведения ситуации. https://yadi.sk/d/TP82RvHdUxUQa В обработке на управляемую форму выведен динамический список с именем ДС. Также две кнопки "Номенклатура" и "Контрагенты". Отладчиком проверял. Текст запроса меняется. Вопрос - что за фигня и где моя ошибка? Как сделать что б менялись источники данных для динамического списка? Код в форме. &НаКлиенте Процедура Номенклатура(Команда) // Вставить содержимое обработчика. СменитьЗапрос(ДС, Истина); Элементы.ДС.Обновить(); КонецПроцедуры &НаСервереБезКонтекста Процедура СменитьЗапрос(ДС, НоменклатураКонтрагент) ДС.ТекстЗапроса = ?(НоменклатураКонтрагент, "ВЫБРАТЬ | Номенклатура.Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура", "ВЫБРАТЬ | Контрагенты.Наименование |ИЗ | Справочник.Контрагенты КАК Контрагенты"); ДС.ОсновнаяТаблица = ?(НоменклатураКонтрагент, "Справочник.Номенклатура", "Справочник.Контрагенты"); КонецПроцедуры &НаКлиенте Процедура Контрагенты(Команда) // Вставить содержимое обработчика. СменитьЗапрос(ДС, Ложь); Элементы.ДС.Обновить(); КонецПроцедуры |
|||
13
Lama12
26.06.14
✎
13:38
|
ап?
|
|||
14
jsmith82
26.06.14
✎
13:39
|
динамический список ващет сам обновляется. на то он и динамический
|
|||
15
jsmith82
26.06.14
✎
13:39
|
если на сервере меняешь, на клиенте форма прыгает
было такое |
|||
16
Lama12
26.06.14
✎
13:40
|
(14) Так выходит что не меняется.
(15) Неа. Вот как ее заставить прыгать? |
|||
17
jsmith82
26.06.14
✎
13:41
|
(16) такого быть не может в принципе
|
|||
18
jsmith82
26.06.14
✎
13:42
|
ещё раз. динамический список так и назван, потому что он с интервалом в секунду читает данные из базы
если у тебя не обновляется, значит ты не присваиваешь списку текст запроса |
|||
19
Lama12
26.06.14
✎
13:44
|
(18) В отладчике видно что запрос изменен. На клиенте видно.
|
|||
20
acsent
26.06.14
✎
13:45
|
попробуй менять на сервере С КОНТЕКСТОМ
|
|||
21
Lama12
26.06.14
✎
13:45
|
Похоже нашел почему не работает. Надо всю форму передавать на сервер. :(
Если передавать форму на сервер, все работает. Но это же криво!? Нет разве? И в справке не написано что так делать нельзя. |
|||
22
Lama12
26.06.14
✎
13:46
|
(20) Ага... с контекстом работает. Только не пойму почему без контекста не работает.
|
|||
23
jsmith82
26.06.14
✎
13:46
|
(21) потому что блеять данные из базы читаются на сервере. при этом форма перерисовывается
|
|||
24
acsent
26.06.14
✎
13:47
|
(23) не по этому )))
|
|||
25
jsmith82
26.06.14
✎
13:48
|
потому что разрабы платформы так присудили, что без контекста формы хрен вытянешь данные из базы
|
|||
26
Lama12
26.06.14
✎
13:48
|
(24) Могу предположить что форма перестраивается на сервере. Но блин хоть бы написали в справке :)
|
|||
27
jsmith82
26.06.14
✎
13:48
|
и при этом форма перерисовывается на клиенте
|
|||
28
jsmith82
26.06.14
✎
13:49
|
(26) на сервере, потом на клиенте
|
|||
29
Segate
26.06.14
✎
13:50
|
&НаКлиентеНоЕслиЧтоТоИНаСервере(с)
|
|||
30
vde69
модератор
26.06.14
✎
13:53
|
по тому, что по новому запросу изменяются отборы, а это может менятся только на сервере, так-как требуется запрос к метаданным.
|
|||
31
vde69
модератор
26.06.14
✎
13:56
|
кстати часть условий можно наложить через RLS, была у меня такая идея, единственный "нюанс" это то что будет действовать на все а не на конкретную форму...
|
|||
32
Lama12
26.06.14
✎
14:00
|
(31) Да, про RLS тоже думал. Но как-то совсем сыкотно было их использовать :)
|
|||
33
vde69
модератор
26.06.14
✎
14:14
|
(32) я реально использую v8: как ограничить полнотекстовый поиск выборкой из регистра
|
|||
34
vmv
26.06.14
✎
14:37
|
(0) идея менять запрос ДСписка не верна в корне.
я делал так - упрощал запрос ДСписка максимально для отображения полного набора данных - оптимизоировал запрос посредством ограниченного числа параметров. Классические "ДатаНачала, ДатаОкончания" - отключал стандартную установку отборов в форме - вешал на панель команд три кнопки "Отбор", "Стандарт", "Выбрать вариант..." - по кнопке "Отбор" вызывал форму: где есть поле отбора компоновки данных и группа модификации параметров "ДатаНачала, ДатаОкончания,...". Пользователь получает возможность в одинт клик открыть формы модификации и параметров и отборов и закрывая форму запрос "работает" всего раз по прорисовке. ну там небольшие тонкости с: передачей отбора СКД между формами, сохранении вариантов, "прошитие" предопределенных отборов "Стандарт"...,но они решаються без проблем Время освоения пользователями этого интерфейса - полчасика и контрольная фраза "да - это оно" Время затраченное на этот вариант реализации исчезающе мало по сравнению выбранным мной ранее - адский наворот в запросе. Вывод: работать с динамикой отображения ДСписка без Формы настроек СКД - от лукавого |
|||
35
Lama12
27.06.14
✎
09:00
|
(34) Это конечно здорово когда можно так сделать. Но вот что делать если в зависимости от поведения пользователя, данные для ДС должны браться из разных источников (один раз документы, другой раз справочники, третий раз РН, четвертый РС и т.д.)?
Можно конечно написать суперсложный запрос с логическими тригеррами и кучей таблиц, но оно медленнее работает. Как раз ушел от большого запроса к куче маленьких. Работает минимум раза в 2 быстрее, а в некоторых случаях ускорение и в 6 раз выше. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |