Имя: Пароль:
1C
1С v8
Как обновить форму динамического списка
,
0 spblrt
 
13.07.16
09:26
Добрый день! Подскажите пожалуйста как обновить форму. Имеется форма элемента справочника. На форме я создал динамический список и добавил команду для добавления в него номенклатуры.

&НаКлиенте
Процедура Добавить(Команда)    
ФормаВыбора = ПолучитьФорму("Справочник.Номенклатура.ФормаВыбора");
ВыбранноеЗначение = ФормаВыбора.ОткрытьМодально();    
ЗЧ = Объект.ЗапасныеЧасти.Добавить();
ЗЧ.Номенклатура = ВыбранноеЗначение;
КонецПроцедуры

При добавлении, номенклатура в форму не выводится. Необходимо обновить форму.
Элементы.СписокЗапЧасти.Обновить(); - не получается. Подскажите как быть?
1 aleks_default
 
13.07.16
09:32
Ты сделал динамический список для отображения табличной части справочника? WTF?
2 lodger
 
13.07.16
09:33
(1) не мешай, вдруг получится ))
3 spblrt
 
13.07.16
09:33
(1) Нельзя было по другому
4 Fedor-1971
 
13.07.16
09:40
(0) Элементы.СписокЗапЧасти.Обновить(); вызываешь НаКлиенте?
ДС читает данные из БД, т.е. что-бы что-то появилось его сначала нужно записать.
5 aleks_default
 
13.07.16
09:41
Интересно, что же это за объект, у которого настолько много запчастей, что для их отображения не подходит обычная таблица формы, а нужен именно список с динамической выборкой?
6 spblrt
 
13.07.16
09:43
(5) На форме нужно показать остатки на складе просто
7 spblrt
 
13.07.16
09:45
(4) Пробовал и на сервере. Т.е. при каждом добавлении номенклатуры, мне нужно записывать форму?
8 bodri
 
13.07.16
09:48
На клиенте можно попробовать:

ЭтаФорма.Элементы.СписокЗапЧасти.Обновить()
9 YurAnt
 
13.07.16
09:49
вешал когда то Обновить()
на "Оповещение"
про оповестить например вот v8: Как сделать, чтобы управляемая форма обновлялась при изменении регистра?
10 spblrt
 
13.07.16
09:49
(8) Пробовал(
11 Fedor-1971
 
13.07.16
09:49
(3) Словами задачку опиши на листке и поймёшь что нужно сделать.
(6) прямо динамически отсвечивающиеся при изменении данных о наличия?

(7) НаСервере обновление не сработает (8.2). Для использования ДС да, нужно записать. Посмотри в сторону реквизита формы "Остаток" в твоей ТЧ, заполни при открытии и обновляй по кнопке

(8) Сначала нужно записать.
12 Numerus Mikhail
 
13.07.16
09:50
Неправильный подход к решению задачи. Ты добавляешь в табличную часть справочника объекты, но они еще не записаны в базу, поэтому очевидно, что динамический список не сможет их получить.
Имхо он тут и не нужен. А если очень нужен - да, нужно записывать объект каждый раз и только потом обновлять дин. список
13 Nuobu
 
13.07.16
09:51
Записывай объект, а потом делай: ОповеститьОбИзменении.
14 aleks_default
 
13.07.16
09:52
(6) Кончай херней заниматься.
15 bodri
 
13.07.16
09:53
(0) а почему бы не сделать нажатие кнопки "показать остаток"?
16 aleks_default
 
13.07.16
09:54
(14) Динамическое отображение остатков не нужно никогда, от слова никогда. Делай кнопку с командой обновить остатки.
17 Fedor-1971
 
13.07.16
09:58
(16) есть редкие случаи, но это ближе к "никогда", тем более в форме справочника её не будут держать открытой значительное время, а если и будут - достаточно кнопки "Обновить остатки"
18 spblrt
 
13.07.16
10:00
Остатки не нужно обновлять. Я добавляю номенклатуру в список, и после добавления номенклатура не отображается. Она отображается после записи и открытия формы заново
19 Fedor-1971
 
13.07.16
10:02
(18) тем более, ДС тебе и задаром не нать.
20 Numerus Mikhail
 
13.07.16
10:02
(18) И это правильно, ведь до того как ты запишешь у тебя в базе не будет информации о том, что ты добавил номенклатуру.
Именно поэтому тебе и советуют использовать табличную часть.
21 spblrt
 
13.07.16
10:07
Решил вопрос записью формы. Всем огромное спасибо за советы.

&НаКлиенте
Процедура Добавить(Команда)    
ФормаВыбора = ПолучитьФорму("Справочник.Номенклатура.ФормаВыбора");
ВыбранноеЗначение = ФормаВыбора.ОткрытьМодально();    
ЗЧ = Объект.ЗапасныеЧасти.Добавить();
ЗЧ.Номенклатура = ВыбранноеЗначение;
ЭтаФорма.Записать();
Элементы.СписокЗапЧасти.Обновить();    
КонецПроцедуры
22 aleks_default
 
13.07.16
10:30
(21)Маразма мало не бывает. Т. е. у пользователя отказаться от сохранения внесенных изменений возможности нет.
23 spblrt
 
13.07.16
11:10
Новая проблема теперь.. не догоню, как строку удалить теперь
24 Fedor-1971
 
13.07.16
12:05
(23) Обалдеть, ровно так-же, удаляем её из ТЧ (только сначала нужно найти оную), записываем элемент и обновляем ДС.

Уже переделай на ТЧ и будет тебе щасце, не ищи приключений на пятую точку.
Хотя, на данном примере пройдёшь по всем граблям использования ДС и, в конце концов, сделаешь на ТЧ, сравнишь трудозатраты и больше ДС для работы с ТЧ использовать не станешь
Успехов.
25 bodri
 
13.07.16
12:31
(0) У меня вопросы: Зачем это надо? Может проще это сделать в обработке?
26 Fragster
 
гуру
13.07.16
12:34
(0) у таб части объекта в форме можно добавить реквизит. он  будет существовать только в форме, не будет записываться в БД. Его при чтении, при создании на сервере и при окончании редактирования строки/какого-либо элемента можно обновлять.
Ошибка? Это не ошибка, это системная функция.