|   |   | 
| 
 | Вызвать программно "Перечитать данные объекта". | ☑ | ||
|---|---|---|---|---|
| 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) да, верно!     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |