![]() |
![]() |
![]() |
|
ПодключитьОбработчикИзмененияДанных и изменение отбора | ☑ | ||
---|---|---|---|---|
0
live in sky dreams
23.06.16
✎
13:05
|
Чего то не могу сообразить как сделать правильно.
При открытии формы подцепляю обработку отслеживания ПодключитьОбработчикИзмененияДанных("ТаблицаФормыКонтрагенты.Отбор","ПриИзмененииОтбораВТаблицеКонтрагенты",Истина); Сделано для того, чтобы формировать таблицу с долгами контрагентов и затем ПриПолученииДанных() отображать долг контрагента в колонке таблицы формы. То есть задумка в чем - при изменении фильтра (или при открытии) происходит заполнение таблицы долгов контрагентов. И затем ПриПолученииДанных отображаем долг в таблице. Меняется фильтр(состав строк в таблице формы) - актуализируем таблицу долгов. Но есть одно "но" ПриИзмененииОтбораВТаблицеКонтрагенты выполняется каждый раз когда меняется любой реквизит фильтра будь то видСравнения, Значение, Использование.. Если за раз изменить несколько фильтров (допустим 4), то код построения таблицы долгов выполнится 4*3 (4 фильтр, 3 реквизита фильтра) = 12 раз. Как его обрубить после первого выполнения? |
|||
1
pessok
23.06.16
✎
13:07
|
реквизит сделай да и всё. проверяй его значение, и, в зависимости от него, делай
|
|||
2
live in sky dreams
23.06.16
✎
14:35
|
(1) Да зачем реквизит.. Могу сделать пременную модуля в альтернативу реквизиту
Но только как он решит этот вопрос? |
|||
3
live in sky dreams
23.06.16
✎
14:41
|
Сценарий
1) Изменяется отбор.. 2) Срабатывает процедура ПриИзмененииОтбораВТаблицеКонтрагенты для каждого изменившегося реквизита каждого фильтра. В теле этой процедуры как узнать, по какому признаку, обновлять таблицу долгов или нет? |
|||
4
Nuobu
23.06.16
✎
14:47
|
(3) Хранить все возможные отборы и проверять, не поменялись ли.
|
|||
5
live in sky dreams
24.06.16
✎
11:00
|
Да как то это через ж..у
|
|||
6
ovrfox
24.06.16
✎
11:23
|
(0) Просто сделай отложенный вызов действий, которые должны выполнится при изменении отбора (ПодключитьОбработчикОжидания), например на 0.2 секунды.
Пока пользователь меняет реквизиты чаще - утебя просто переподключается обработчик. Когда он закончил изменение реквизитов - отрабатывает необходимая процедура. |
|||
7
live in sky dreams
24.06.16
✎
11:39
|
(4) Попробовал результат тот же.
Процедура срабатывает для каждого изменившегося элемента отбора. Нужно поставить некий признак итерации. Началась итерация (пользователь поменял некие элементы отбора) - процедура запустилась, пометила итерацию как отработанную и для текущей итерации больше не запускается. Но как это сделать ума не приложу |
|||
8
live in sky dreams
24.06.16
✎
11:42
|
(6)хм.. вариант..
даже более подходящий. После изменения отбора запускать + каждые 15-20 минут к примеру (документы оплаты могут быть разнесены, данные по долгам теряют актуальность со временем). Спасибо. Это более верное решение |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |