Имя: Пароль:
1C
1С v8
Обновить динамический список управляемой формы
0 dimm7310
 
25.03.12
15:31
есть динамический список формы справочника с произвольным запросом, если добавить новый элемент из это списка , то новый элемент отображается в списке только по нажатию F5 или при повторном открытии.

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

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

пробовал

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


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

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


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

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

Синтаксис:

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

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

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

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

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

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



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

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

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

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

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


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

.....    
.....
.....

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

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

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

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

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


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

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

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

//У формы списка

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

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

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