![]() |
![]() |
![]() |
|
Вызвать программно "Перечитать данные объекта". | ☑ | ||
---|---|---|---|---|
0
mzelensky
01.08.11
✎
13:12
|
Доброго всем.
Есть форма. В верхней ее части имеется стандартная панель (там где "провести", "отмена проведения"ии т.д. и "Перечитать данные объекта"). Меня интересует эта самая процедура "Перечитать данные объекта", как ее вызвать программно??? Действие стандартное и не цепляется ни к какой процедуре...добработчик "ОбновлениеОтображения()" не прокатывает (не то, что нужно) |
|||
1
Maxus43
01.08.11
✎
13:18
|
Кто украл СП? вызывай полицейских
Форма (Form) Обновить (Refresh) Синтаксис: Обновить() Описание: Обновляет данные, представленные в форме. Доступность: Толстый клиент. Пример: Обновить(); |
|||
2
mikecool
01.08.11
✎
13:20
|
Прочитать()
|
|||
3
Maxus43
01.08.11
✎
13:22
|
(2) + у объекта
|
|||
4
mzelensky
01.08.11
✎
13:30
|
(1) просто обновить не прокатывает...вызываетс обработчик - "ОбновлениеОтображения()", при этом данные в ТЧ не обновляются. А сли нажать на форме "Перечитать данные объекта" - данные обновляются.
|
|||
5
mzelensky
01.08.11
✎
14:16
|
(2) не прокатило. ТАким образом обновляются данные объекта (т.е. переменной которая имеет его тип). А мне нужно чтобы форма обновилась.
|
|||
6
hhhh
01.08.11
✎
14:19
|
(5) ну намекни нам, чем отличается "перечитать данные объекта" и "обновляются данные объекта"?
|
|||
7
mzelensky
01.08.11
✎
14:21
|
(6) если бы знал - не создавал эту ветку.
Но кажется уже разобрался в чем косяк. |
|||
8
Ненавижу 1С
гуру
01.08.11
✎
14:23
|
это тонкий управляемый форм?
|
|||
9
mzelensky
01.08.11
✎
14:26
|
(8) нет, обычная 8.1
|
|||
10
mzelensky
01.08.11
✎
14:34
|
не, нифига не получается.
Смотри. Имеется документ. Из него открываю обработку, указываю форму дока как владелец формы обработки. В обработки произвожу заполнение Таб части документа и записываю сам документ из обработки. После этого открываю этот самый документ (во время всех этих действий форма была не закрыта, а свернута на панели) и там отображаются старые данные табличной части...нажимаю кнопку "Перечитать данные объекта" и только тогда в форме появляются актуальные данные. Понятно, что это вызвано тем, что я записываю док из обработки и у меня на форме получаются старые данные...но как сделать это самые обновление данных на форме ПРОГРАММНО...чтобы постоянно не нажимать кнопку "Перечитать данные объекта" ?!?!?! Вот в чем косяк :( |
|||
11
kosts
01.08.11
✎
14:42
|
(10) Смотри как в типовых сделано, там через оповещение. и в зупе и бух в документе зарплата к выплате.
|
|||
12
mzelensky
01.08.11
✎
14:53
|
(11) а на что там смотреть то хоть? После чего вызывается это оповещение??? после чего данные обновляются эти?!
|
|||
13
kosts
01.08.11
✎
14:55
|
(12) В обработке изменил. Оповестил. Открытый документ поймает сообщение. И обновится.
Вот так попробуй ЭтаФорма.Обновить(); |
|||
14
Axel2009
01.08.11
✎
14:56
|
(12) оповещение вызывается когда вызвал. а вот ловля этого оповещения только если ктото до этого вызвал.
|
|||
15
mzelensky
01.08.11
✎
15:03
|
(13) Нашел в типовых - сейчас попробую.
(14) "оповещение вызывается когда вызвал" - эт понятно "а вот ловля этого оповещения только если ктото до этого вызвал" - эта част ьфразы осталась ЗА ГРАНЬЮ ПОНИМАНИЯ. |
|||
16
Axel2009
01.08.11
✎
15:07
|
"оповещение вызывается когда вызвал"
при закрытии одной из форм Оповестить("трохтибидох_обновиться", , ЭтаФорма) "ловля этого оповещения", но ведь сначала нужно чтобы ктото вызвал. в форме документа прописать ОбработкаОповещения(<Имя события>, <Параметр>, <Источник>) если <Имя события> = "трохтибидох_обновиться" тогда ЭтаФорма.Обновить(); Конецесли; |
|||
17
mzelensky
01.08.11
✎
15:12
|
(16) по СП не совсем пойму как подключить обработчик оповещения. Чтобы потом можно было через "Оповестить("трохтибидох_обновиться", , ЭтаФорма)" сработать
|
|||
18
Axel2009
01.08.11
✎
15:16
|
(17) ниче не надо.
у формы документа, которая сворачивается, подключи процедуру к форму "ОбработкаОповещения" и зайдет само. |
|||
19
Axel2009
01.08.11
✎
15:19
|
(18) то что написано в СП про подключить - чтобы вызывать общую какую либо процедуру для любых оповещений, если таковое надо..
т.е. при вызове Оповестить - отладчик будет скакать по всем формам где заведена обработка оповещения И в процедуру подключенную, если есть. |
|||
20
mzelensky
01.08.11
✎
15:23
|
(19) Понял, спасибо!!! Попробую!
|
|||
21
Mort
01.08.11
✎
15:24
|
(10) нелогично. Если обработка вызывается из формы дока, она должна чисто заполнять док на форме (не записывая). Другое дело если обработка вызывается независимо и в ней указывается один либо перечень доков - тогда она сама должна записывать.
|
|||
22
Axel2009
01.08.11
✎
15:25
|
(21) ну она и записывает. а вот открытый документ то надо перечитать, чтобы там данные обновились
|
|||
23
mzelensky
01.08.11
✎
15:28
|
(22) сделал оповещение, все срабатывает как ножно, но данные не обновляются в форме открытого дока :(
В обработке пишу: Если ДокОб.Товары.Количество()>0 тогда ДокОб.Записать(РежимЗаписиДокумента.Запись); Оповестить("ОбновлениеИзЗаказа",истина,Этаформа ); КонецЕсли; В документе: Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) // Вставить содержимое обработчика. Если ИмяСобытия="ОбновлениеИзЗаказа" тогда ЭтаФорма.Обновить(); КонецЕсли; КонецПроцедуры |
|||
24
Axel2009
01.08.11
✎
15:30
|
(23) ага, знакомо
ЭтотОбъект.Прочитать(); |
|||
25
Mort
01.08.11
✎
15:30
|
(22) Я не о том как решить задачу, а о логике построения пользовательского интерфейса. Она в данном случае некорректная.
|
|||
26
mzelensky
01.08.11
✎
15:32
|
(25) там корректная цепочка. Просто полностью все расписывать долго...ну, просто поверь ,что так нужно :)
|
|||
27
Mort
01.08.11
✎
15:32
|
А кривая логика вечно порождает нестандартные задачи.
|
|||
28
Mort
01.08.11
✎
15:34
|
(26) Если пользователь открыл документ, он должен быть уверен, что пока не нажал конпку "записать" или "ок", он не внесет никаких изменений в базу.
|
|||
29
mzelensky
01.08.11
✎
15:56
|
(28) А если кнопка "записать" находится в этой самой обработке???
Короче, не парь мозги по поводу логики...тут проблема в другом, а с логикой я разбирусь |
|||
30
Axel2009
01.08.11
✎
15:58
|
(29) так сработало?
|
|||
31
mzelensky
01.08.11
✎
16:05
|
(30) ДА, сделал наверняка:
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) // Вставить содержимое обработчика. Если ИмяСобытия="ОбновлениеИзАнализаЗаказа" тогда ЭтотОбъект.Прочитать(); ЭтаФорма.Обновить(); ОбновлениеОтображения(); КонецЕсли; КонецПроцедуры |
|||
32
Axel2009
01.08.11
✎
16:05
|
(31) Прочитать вызывает следующий 2 строчки автоматом
|
|||
33
mzelensky
01.08.11
✎
16:09
|
(32) да, верно!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |