|
Обновление данных в табличной части документа | ☑ | ||
---|---|---|---|---|
0
Barry
02.12.22
✎
23:43
|
Здравствуйте!
Сделал обработку, в которой выбираю документ и выбираю статус продукции для этого документа. И есть кнопка записать, чтобы можно было для каждой строки табличной части сменить указанный статус. Сам же статус находится в справочнике серии. А уже в документе для лучшего восприятия я его вытянул в табличную часть, через изменить форму. Вот в чем проблема, когда жму на записать, то статус меняется в самой серии, а в табличной части документа так и остается старый статус висеть. Вопрос, есть ли возможность как-то обновить табличную часть документа, чтобы он там также сменился. |
|||
1
Serg_1960
02.12.22
✎
23:54
|
Куда лучше всяческих объяснений, - строки алгоритма. А то великим, богатым и могучим у Вас как-то не очень получается :)
|
|||
2
Barry
03.12.22
✎
00:26
|
(1) ох уж этот могучий язык)) вообщем вот код на кнопку:
&НаКлиенте Процедура ИзменитьСтатус(Команда) ЗаполнитьСерверСтатус(); КонецПроцедуры &НаСервере Процедура ЗаполнитьСерверСтатус() ДокОбъект = Объект.Документ.ПолучитьОбъект(); ТЧСтатус = ДокОбъект.Товары; Для Каждого Стр Из ТЧСтатус Цикл СпрСерии = Стр.Серия.ПолучитьОбъект(); СпрСерии.СтатусПродукции = Объект.Статус; СпрСерии.Записать(); КонецЦикла; КонецПроцедуры |
|||
3
eddy_n
03.12.22
✎
00:31
|
● РеквизитФормыВЗначение() ‑ преобразует реквизит данных формы в объект прикладного типа.
● ЗначениеВРеквизитФормы() ‑ выполняет преобразование объекта прикладного типа в заданный реквизит формы. |
|||
4
Barry
03.12.22
✎
00:44
|
(3) как мне это применить в моем коде?
|
|||
5
Мимохожий Однако
03.12.22
✎
07:35
|
Попробуй ОповеститьОбИзменении(Объект.Документ) или что-нибудь аналогичное после процедуры изменения статусов
|
|||
6
hockeyist
03.12.22
✎
09:10
|
(4) Первое в начало, последнее в конец
|
|||
7
Barry
03.12.22
✎
18:33
|
(5) ничего не произошло
|
|||
8
Barry
03.12.22
✎
18:33
|
(3) тоже самое не помогло
|
|||
9
kubik_live
03.12.22
✎
18:41
|
Выгрузи ТЧ в ТЗ, обнови статусы в ТЗ и загрузи обратно в ТЧ.
Токо документ записать не забудь... |
|||
10
hawksib
03.12.22
✎
18:42
|
судя по описанию из (0) и коду из (2) вы пишите одно, а в виду имеете другое, вы обновляете не строки табличной части документа, а элементы справочника "Серия", содержащегося в строках. Мой совет: разберитесь с тем, чего вы хотите в итоге получить.
|
|||
11
Barry
03.12.22
✎
19:20
|
(10) Мне нужно изменить статус как в справочнике Серии, так и в самом документе табличной части. В справочнике Серии он изменяется без проблем, а вот в табличной части документа остается старый статус без изменений.
|
|||
12
kubik_live
03.12.22
✎
19:33
|
(11) Может все-таки пусть сначала мухи поменяются, а потом их на котлету посадить? :)))
|
|||
13
Остап Ибрагимович
03.12.22
✎
20:40
|
Если речь о реквизитах тч.
Ты показываешь в тч значения реквизитов тч. От того, что ты меняешь что-то где-то (но не эти самые реквизиты тч) - отображение этих реквизитов тч еа форме не изменится. Чтобы изменилось отображение этих реквизитов тч на форме - нужно менять (кроме или помимо изменений чего-то ещё где-то ещё) эти самые реквизиты тч. |
|||
14
Barry
03.12.22
✎
22:47
|
(9) Реквизита статус его вообще не существует в самом документе. Есть реквизит серия в табличной части документа. А из серии (справочник серии) уже тянется реквизит статус. Я этот реквизит вытянул через изменить форму в табличную часть документа для визуала. Итог в серии, где хранится сам статус меняется значение, а в документе нет. Возможно это как-то связано с кэшем, но я не уверен. Нужно как-то обновить данные тч в документе или как-то хитро перезаписать.
|
|||
15
ДедМорроз
03.12.22
✎
23:34
|
Оповестить об изменении и кеш обновится.
|
|||
16
Barry
04.12.22
✎
01:30
|
(15) вот так сделал и всеравно не работает:
&НаКлиенте Процедура ИзменитьСтатус(Команда) ЗаполнитьСерверСтатус(); ОповеститьОбИзменении(Объект.Документ) КонецПроцедуры &НаСервере Процедура ЗаполнитьСерверСтатус() ДокОбъект = Объект.Документ.ПолучитьОбъект(); ТЧСтатус = ДокОбъект.Товары; Для Каждого Стр Из ТЧСтатус Цикл СпрСерии = Стр.Серия.ПолучитьОбъект(); СпрСерии.СтатусПродукции = Объект.Статус; СпрСерии.Записать(); КонецЦикла; КонецПроцедуры |
|||
17
Остап Ибрагимович
04.12.22
✎
03:30
|
//будь проще - и к тебе потянутся!
&НаКлиенте Процедура ИзменитьСтатус(Команда) Для Каждого Стр Из Объект.ТЧСтатус Цикл УстановитьСтатусТовараНаСервере(Стр.Серия, Объект.Статус); ОповеститьОбИзменении(Стр.Серия); КонецЦикла; КонецПроцедуры &НаСервереБезКонтекста // так-то оно пошустрее будет Процедура УстановитьСтатусТовараНаСервере(СерияСсылка, СтатусСсылка) СерияОбъект = СерияСсылка.ПолучитьОбъект(); СерияОбъект.СтатусПродукции = СтатусСсылка; СерияОбъект.Записать(); КонецПроцедуры |
|||
18
Barry
04.12.22
✎
14:21
|
(17) Переменная не определена (ТЧСтатус)
|
|||
19
Barry
04.12.22
✎
14:29
|
(18) Забыл объект добавить. Спасибо! Теперь все в тч документа обновилось как нужно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |