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

Обновить динамический список управляемой формы

Обновить динамический список управляемой формы
Я
   dimm7310
 
25.03.12 - 15:31
есть динамический список формы справочника с произвольным запросом, если добавить новый элемент из это списка , то новый элемент отображается в списке только по нажатию F5 или при повторном открытии.

Видел рекомендации добавить:
Элементы.Список.Обновить();

но все равно не обновляет, может не там добавляю эту строку?

пробовал

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Список.Обновить();
КонецПроцедуры

&НаКлиенте
Процедура СписокПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    Элементы.Список.Обновить();
КонецПроцедуры


как правильно?
   Конфигуратор1с
 
1 - 25.03.12 - 15:56
&НаКлиенте
Процедура СписокПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
     Элементы.Список.Обновить();
КонецПроцедуры
   vde69
 
2 - 25.03.12 - 15:58
(1) обновить весь список - не комильфо, может тормозить (зависит от многих факторов),

правильно - послать уведомление об изменении и в параметре передать список элементов (в сабже 1 элемент)
   Конфигуратор1с
 
3 - 25.03.12 - 16:02
(2)а с этого места поподробнее, будь ласочка
   vde69
 
4 - 25.03.12 - 16:20
Глобальный контекст (Global context)
ОповеститьОбИзменении (NotifyChanged)
Вариант синтаксиса: Изменён один объект

Синтаксис:

ОповеститьОбИзменении(<Ссылка>)
Параметры:

<Ссылка> (обязательный)
   dimm7310
 
5 - 25.03.12 - 18:55
(1)  не понял, а чем отличается от моего кода? Я же тоже так пробовал
   dimm7310
 
6 - 25.03.12 - 18:57
(4) Где размешать вызов этой процедуры ?
   vde69
 
7 - 25.03.12 - 19:10
(6) после записи объекта
   experimentator76
 
8 - 25.03.12 - 21:46
(0) если ничего не поможет
то гарантировано обновляет после установки параметра произвольного запроса
   experimentator76
 
9 - 25.03.12 - 21:56
(0) может релиз древний?
вроде было такое же давно
   dimm7310
 
10 - 26.03.12 - 08:35
Никак не хочет обновляться.

релиз последний

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

 //Элементы.Список.Обновить();
 
КонецПроцедуры

 //вообще параметры в запросе не используются
 
&НаСервере
Процедура УстановитьПараметрСписка()
  Список.Параметры.УстановитьЗначениеПараметра("Параметр",111);
КонецПроцедуры



&НаКлиенте
Процедура СписокПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
     Элементы.Список.Обновить();
     ОповеститьОбИзменении(Список);
КонецПроцедуры
   vmv
 
11 - 26.03.12 - 08:47
добавляешь через "ж" потому что.

Если это добавление, но хочешь добавить по-своему, то нужно делать через обработчик, который для этого и служит, например я так делаю

&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
    
    Отказ = Истина;
    
    ПараметрыФормы = Новый Структура;
        
    Если Копирование И Элемент.ТекущиеДанные <> Неопределено Тогда
        
        ПараметрыФормы.Вставить("ЗначениеКопирования", Элемент.ТекущаяСтрока);
        
    Иначе
        
        ОбъектХХХ = Элементы.Список.ТекущаяСтрока;
        
        СтруктураЗначенияЗаполнения = Новый Структура;
        СтруктураЗначенияЗаполнения.Вставить("Родитель", ОбъектХХХ);
                
        ПараметрыФормы.Вставить("ЗначенияЗаполнения", СтруктураЗначенияЗаполнения);
        
    КонецЕсли;
    
    ОткрытьФормуМодально("Справочник.Add_CL_ОбъектыХХХ.Форма.ФормаЭлемента", ПараметрыФормы, ЭтаФорма);

КонецПроцедуры
   vmv
 
12 - 26.03.12 - 08:48
а через то в сабже, да ладно)
   dimm7310
 
13 - 26.03.12 - 08:55
&НаКлиенте
Процедура СписокПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
     Элементы.Список.Обновить();
     ОповеститьОбИзменении(Элемент);
КонецПроцедуры
   dimm7310
 
14 - 26.03.12 - 08:56
(12) ИМХО разница только в том, что ты передаешь в параметрах родителя
   vde69
 
15 - 26.03.12 - 12:05
(13) Обновить нужно вызывать только если динамический список не обновляется сам

и обновить должно стоять ПОСЛЕ!!

 // общий модуль
 
&Клиент
Процедура ПодписьДокументов (МассивЗадач, Режим, ТекстВопроса, Отказ, ТихийРежим = Ложь) Экспорт 

.....    
.....
.....
    Для Каждого Задача из МассивЗадач Цикл 
        БизнесПроцессыИЗадачиСервер.ПодписатьОднуЗадачу (Задача, Примечание, Режим, Отказ, РольПодписи, ,Истина, ПараметрыРегистрации);
        Если не Отказ Тогда 
            ОповеститьОбИзменении(Задача);     
        КонецЕсли;
    КонецЦикла;
   dimm7310
 
16 - 26.03.12 - 15:53
(15) если бы список сам обновлялся стал бы я заморачиватся

Так я и не понял.
Ты предлагаешь создать подписку на событие для этого ?
   ВикторП
 
17 - 26.03.12 - 16:01
Я сделал обработкой оповещения- работает хорошо. ОбновитьОтображениеДанных() не сработало
   vde69
 
18 - 26.03.12 - 16:05
(16) ни надо никаких подписок, блин...

1. ОповеститьОбИзменении - вызывается НА КЛИЕНТЕ
2. ВСЕ открытые формы получают это оповещение
3. все динамические списки с "автообновлением" сами обновляют все
4. для остальных динамических списков нужно вызвать .Обновить()
   dimm7310
 
19 - 26.03.12 - 17:21
(18) принцип я понял, просто скажи в какой процедуре вызывать
          ОповеститьОбИзменении()
   dimm7310
 
20 - 26.03.12 - 17:30
(17) Пожалуйста приведи пример кода
   5 Элемент
 
21 - 26.03.12 - 17:39
(2) Элементы.Список.Обновить() и прием оповещения работают одинаково при обновлении списка.
   5 Элемент
 
22 - 26.03.12 - 17:40
А у автора не работает потому что у него не модально отркывается окно
   dimm7310
 
23 - 26.03.12 - 17:42
(22) Пробовал я Модально - то же самое
   5 Элемент
 
24 - 26.03.12 - 17:43
(23) не обманывай
   Cmyk32
 
25 - 26.03.12 - 17:46
(0) Спрошу на всякий. В произвольном запросе "Основная таблица" установлена (снизу) ?
   dimm7310
 
26 - 26.03.12 - 17:46
(25) да только, что смотрел, выбрана под текстом запроса
   Cmyk32
 
27 - 26.03.12 - 17:47
(26) Произвольный запрос из нескольких таблиц?
   dimm7310
 
28 - 26.03.12 - 17:47
флажок динамическое считывание данных тоже установлен
   dimm7310
 
29 - 26.03.12 - 17:49
(25) да,  основные реквизиты справочника партнеры и табличная часть этого справочника с отбором по типу контактной информации
   dimm7310
 
30 - 26.03.12 - 17:50
просто нужно было вытащить телефон в форму списка (а он в табличной части этого справочника)
 
 
   5 Элемент
 
31 - 26.03.12 - 17:51
Версию платформы скажи
   dimm7310
 
32 - 26.03.12 - 17:53
1С:Предприятие 8.2 (8.2.15.294)
   Cmyk32
 
33 - 26.03.12 - 17:53
//У формы списка
 
&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ОткрытьФорму("Справочник.Партнеры.Форма.ПомощникНового",Новый Структура("ЗаголовокФормыВладельца",ЭтаФорма.Заголовок),ЭтаФорма);

КонецПроцедуры

 //У формы элемента
 
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
    Оповестить("Записан");
КонецПроцедуры


 //У формы списка
 
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если ИмяСобытия = "Записан" тогда
        Элементы.Список.Обновить();    
    КонецЕсли;
КонецПроцедуры
   dimm7310
 
34 - 26.03.12 - 18:21
у меня сейчас уже нервный тик начнется

Форма элемента в ПослеЗаписи не заходит (проверял через отладчик), видимо потому, что заполнение идет через ПомощникНового.
В форме ПомощникНового нет процедуры ПослеЗаписи, поэтому
пока поробовал:
&НаКлиенте
Процедура ПриЗакрытии()
Оповестить("Записан");
КонецПроцедуры

но не заходит в процедуру моей формы списка

 //У формы списка
 
 
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если ИмяСобытия = "Записан" тогда
        Элементы.Список.Обновить();    
    КонецЕсли;
КонецПроцедуры
   dimm7310
 
35 - 26.03.12 - 18:22
т.е. ОбработкаОповещения
не вызывается
   dimm7310
 
36 - 26.03.12 - 18:30
может нужно мою новую форму списка где-то прописывать, что бы на нее оповещения распространялись ?
   Cmyk32
 
37 - 26.03.12 - 18:34
(36) Не надо, только в свойствах формы должна быть привязка к обработчику оповещения
   dimm7310
 
38 - 26.03.12 - 19:25
(37) Да именно это и не было сделано

Все большое спасибо
   experimentator76
 
39 - 26.03.12 - 20:33
предопределенные процедуры лучше руками не прописывать
накалывался несколько раз - было "весело"
   ilpar
 
40 - 26.03.12 - 21:01
та же тема, только другое направление вопроса:

Есть возможность при записи элемента, чтоб форма динамического списка обновилась у все(исключая автообновлене списка)?
   ilpar
 
41 - 26.03.12 - 21:02
(40) всех пользователей


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