|
Медленная перерисовка формы | ☑ | ||
---|---|---|---|---|
0
Прохожий
25.11.22
✎
07:11
|
Есть Справочник, элементы которого выводятся на форме другого объекта в СписокДинСписок просто запросом с отбором в колонку Ссылка.
Есть на этой форме кнопка УдалитьЭлемент и соответствующая команда. Если строк в списке нет кнопка должна становиться недоступной. Если на строке Элементы.СписокДинСписокУдалитьФайл.Доступность = НЕ Объект.Ссылка.Пу..... поставить точку останова, то элемент успевает удалиться, а список успевает перерисоваться. Но в реальном времени условие доступности проверяется раньще чем СписокДинСписок успевает обновиться. То есть кнопка по прежнему доступна. Кроме как задержку поставить на ум ничего приличного не приходит. &НаКлиенте Процедура УдалитьЭлемент(Команда) УдалитьНаСервере(Элементы.СписокДинСписок.ТекущиеДанные.Ссылка); Элементы.СписокДинСписок.Обновить(); Элементы.СписокДинСписокУдалитьФайл.Доступность = НЕ Объект.Ссылка.Пустая() И НЕ Элементы.СписокДинСписок.ТекущаяСтрока = Неопределено; КонецПроцедуры &НаСервереБезКонтекста Процедура УдалитьНаСервере(Элемент) Спр = Элемент.ПолучитьОбъект(); Спр.удалить(); КонецПроцедуры Как дождаться обновления Элементы.СписокДинСписок.Обновить() лучше всего? |
|||
1
Прохожий
25.11.22
✎
07:21
|
Беда в том, что Обновить не возвращает по завершении ничего
ТаблицаФормы (FormTable) Обновить (Refresh) Синтаксис: Обновить() Описание: Обновляет данные в таблице. Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент). Использование в версии: Доступен, начиная с версии 8.2. Методическая информация |
|||
2
АНДР
25.11.22
✎
07:23
|
Замени проверку списка на форме на проверку результата аналогичного запроса в условии видимости.
|
|||
3
PuhUfa
25.11.22
✎
07:39
|
(0) повесь проверку не в процедуру удаления а в событие ПриИзменении() динамического списка
|
|||
4
Прохожий
25.11.22
✎
07:53
|
(3) Срабатывает только при интерактивном изменении.
|
|||
5
Прохожий
25.11.22
✎
07:54
|
(2) Такая мысль была. Но это лишний запрос. А события никакого нет у элемента ПриОкончанииОбновленияМеня() ? типа такого...
|
|||
6
Прохожий
25.11.22
✎
07:55
|
Или у всей формы типа ФорамПерерисовалась, как модифицированность, только почти наоборот.
|
|||
7
Прохожий
25.11.22
✎
07:56
|
Или есть такое колдовство - командная панель. Я могу от нее чего-то узнавать в промежутке между отправкой Обновить и событием ПриОкончанииОбновленияЭтойТаблицы()
|
|||
8
PuhUfa
25.11.22
✎
08:22
|
(4) Если этим списком не слишком активно пользуются, то как вариант можно повесить еще в ПриАктивизацииСтроки
|
|||
9
asady
25.11.22
✎
08:28
|
(0) проверяй наличие элемента перед удалением - доступность и видимость это уже рюшечки
|
|||
10
PuhUfa
25.11.22
✎
08:46
|
Вот так вот работает нормально, только что проверил:
&НаСервере Процедура КомандаУдалитьНаСервере(УдЭлемент) УдЭлементОбъект = УдЭлемент.ПолучитьОбъект(); УдЭлементОбъект.Удалить(); КонецПроцедуры &НаКлиенте Процедура КомандаУдалить(Команда) КомандаУдалитьНаСервере(Элементы.ДинСписок.ТекущиеДанные.Ссылка); Элементы.ДинСписок.Обновить(); ОбновитьКнопки(); КонецПроцедуры &НаКлиенте Процедура ОбновитьКнопки() Элементы.КомандаУдалить.Доступность = Элементы.ДинСписок.ТекущиеДанные <> Неопределено; КонецПроцедуры |
|||
11
Прохожий
25.11.22
✎
08:53
|
(8) Да, этот ответ правильный. Все Спасибо.
|
|||
12
Прохожий
25.11.22
✎
08:56
|
(10) А так точно не работает. У меня есть кнопка добавить и удалить. Код идентичный. Но на Удалить не успевает. Курьез.
(8) Это правильно и просто. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |