|
Обновить форму из другой формы | ☑ | ||
---|---|---|---|---|
0
extrim-style
09.09.13
✎
09:49
|
Из второй формы записываю объект, форма которого открыта первой. Необходимо обновить первую форму. Пытаюсь:
&НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) //ВладелецФормы.Объект - здесь старые данные ДанныеФормыСтруктура тыц(ВладелецФормы.Объект.Ссылка); //ВладелецФормы.Объект - здесь старые данные ДанныеФормыСтруктура ВладелецФормы.ОбновитьОтображениеДанных(); //не помогает КонецПроцедуры &НаСервере Процедура тыц(Эл) //здесь в Эл - новые данные Эл.ПолучитьОбъект().Прочитать(); КонецПроцедуры |
|||
1
Нуф-Нуф
09.09.13
✎
09:49
|
оповести! будь мужиком, блеать!
|
|||
2
zladenuw
09.09.13
✎
09:50
|
поищи. уже на форуме спрашивали решение данной проблемы и в книге о управляемом интерфейсе описано
|
|||
3
extrim-style
09.09.13
✎
09:50
|
(1) пробовал. не помогает
|
|||
4
cw014
09.09.13
✎
09:52
|
Мда...
|
|||
5
extrim-style
09.09.13
✎
09:52
|
+(1)
&НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) ЭтаФорма.ОбновитьОтображениеДанных(); тыц(); ЭтаФорма.ОбновитьОтображениеДанных(); КонецПроцедуры &НаСервере Процедура тыц() Эл = Объект.Ссылка.ПолучитьОбъект(); Эл.Прочитать(); КонецПроцедуры не помогает |
|||
6
zladenuw
09.09.13
✎
09:55
|
(5)
Вызывать в форме после вызова обработки. Должно помочь. |
|||
7
extrim-style
09.09.13
✎
09:57
|
(6) вызываю после. В Эл уже новые данные.
|
|||
8
Нуф-Нуф
09.09.13
✎
09:59
|
что за бред
|
|||
9
Нуф-Нуф
09.09.13
✎
10:00
|
в обработке послезаписи вызвать Оповестить.
в первой форме в обработке оповещения вызвать ОбновитьОтображениеДанных |
|||
10
extrim-style
09.09.13
✎
10:03
|
(9) если в (9) - инструкция к действию, то в (0) и (5) ты видишь как раз то, что ты говоришь в (9)
|
|||
11
Нуф-Нуф
09.09.13
✎
10:04
|
(10) извини, но в (0) и (5) вижу что-то несвязное...
пройдись поиском по типовым конфигам с Оповестить("ОбновитьФорму" |
|||
12
extrim-style
09.09.13
✎
10:24
|
(11) +(10) кроме Оповестить отсутствующей в ПослеЗаписи
(11) поискал по Бух 3.0. Нашел Прочитать() или Элементы.Список.Обновить() или специфичные обработки. |
|||
13
extrim-style
09.09.13
✎
10:25
|
(11) что-то еще подразумевалось?
|
|||
14
extrim-style
09.09.13
✎
10:36
|
Ап
|
|||
15
Нуф-Нуф
09.09.13
✎
10:49
|
просто вызови оповещение после записи и поймай его в нужной тебе форме
|
|||
16
extrim-style
09.09.13
✎
10:57
|
(15) форма 2
&НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) Оповестить("111",,ЭтаФорма); КонецПроцедуры форма 1 &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) ЭтаФорма.ОбновитьОтображениеДанных(); тыц(); ЭтаФорма.ОбновитьОтображениеДанных(); КонецПроцедуры &НаСервере Процедура тыц() Эл = Объект.Ссылка.ПолучитьОбъект(); Эл.Прочитать(); КонецПроцедуры не работает. В Эл - новые данные. |
|||
17
extrim-style
09.09.13
✎
11:08
|
хелп
|
|||
18
Нуф-Нуф
09.09.13
✎
11:10
|
форма 2
&НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) Оповестить("111",,ЭтаФорма); КонецПроцедуры форма 1 &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) ОбновитьОтображениеДанных(); КонецПроцедуры |
|||
19
extrim-style
09.09.13
✎
11:44
|
(18) это тоже самое, что и в (16)
не работает. Протестировал в обработке, не работает: &НаКлиенте Процедура Команда1(Команда) Спр = ПоискЭлемента(); Ф = Спр.ПолучитьФорму("ФормаЭлемента"); Ф.Открыть(); ИзменитьЭлемент(Спр); Ф.ОбновитьОтображениеДанных(); КонецПроцедуры &НаСервере Функция ПоискЭлемента() Возврат Справочники.Контрагенты.НайтиПоКоду("000001978"); КонецФункции &НаСервере Функция ИзменитьЭлемент(Спр) СпрОбъект = Спр.ПолучитьОбъект(); СпрОбъект.Наименование = "ТестовоеНаименование"; СпрОбъект.Записать(); КонецФункции |
|||
20
Нуф-Нуф
09.09.13
✎
11:47
|
короче тушите свет
|
|||
21
extrim-style
09.09.13
✎
11:49
|
(20) чё?)) (всмысле почему)
|
|||
22
Нуф-Нуф
09.09.13
✎
11:51
|
(21)
1. с каких щей в (18) тоже самое что и в (16)? 2. где в (20) оповестить? 3. где код процедуры ОбработкаОповещения в форме элемента справочника Контрагенты? |
|||
23
Нуф-Нуф
09.09.13
✎
11:53
|
вообщем соберись! перечитай еще раз всю ветку, потом еще вот это вообщем держи https://www.google.ru/search?as_sitesearch=forum.mista.ru&q=%EE%E1%F0%E0%E1%EE%F2%EA%E0%EE%EF%EE%E2%E5%F9%E5%ED%E8%FF
и оповести! будь наконец мужиком, блеать! |
|||
24
Infsams654
09.09.13
✎
11:57
|
(21) обработка оповещения должна отрабатывать в форме, которую оповещаешь. При чем, надо в ней еще проверить параметры самого оповещения: Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник), а не то, она будет обрабатывать всякую ненужную хрень от чего-то другого
|
|||
25
extrim-style
09.09.13
✎
12:00
|
(23) (24) обработка:
&НаКлиенте Процедура Команда1(Команда) Спр = ПоискЭлемента(); Ф = Спр.ПолучитьФорму("ФормаЭлемента",ЭтаФорма); Ф.Открыть(); ИзменитьЭлемент(Спр); Ф.ОбновитьОтображениеДанных(); Оповестить("Заводись!", ЭтаФорма); //оповещаю! КонецПроцедуры &НаСервере Функция ПоискЭлемента() Возврат Справочники.Контрагенты.НайтиПоКоду("000001978"); КонецФункции &НаСервере Функция ИзменитьЭлемент(Спр) СпрОбъект = Спр.ПолучитьОбъект(); СпрОбъект.Наименование = "ТестовоеНаименование2"; СпрОбъект.Записать(); КонецФункции форма элемента справочника: &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) ОбновитьОтображениеДанных(); //сюда заходит КонецПроцедуры Не работает! |
|||
26
Нуф-Нуф
09.09.13
✎
12:03
|
у тебя отладчик заходит в
&НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) ОбновитьОтображениеДанных(); //сюда заходит КонецПроцедуры и ничего не обновляет? |
|||
27
extrim-style
09.09.13
✎
12:06
|
(26) именно. Данные на форме не меняются.
|
|||
28
Нуф-Нуф
09.09.13
✎
12:07
|
процедура ОбработкаОповещения - для формы элемента указана как обработчик события?
|
|||
29
extrim-style
09.09.13
✎
12:08
|
(28) да
|
|||
30
Infsams654
09.09.13
✎
12:09
|
(26) так у тебя же в Процедура Команда1(Команда) после
ИзменитьЭлемент(Спр); уже есть Ф.ОбновитьОтображениеДанных(); это раз, во 2-х, повторяю, в обработке оповещения надо проверять параметры |
|||
31
extrim-style
09.09.13
✎
12:10
|
+(27) плюс при дальнейшем дозаполнении первой формы вылазит вот эта ошибка v8: Данные были изменены или удалены другим пользователем, где также рекомендовали Оповестить и Прочитать();
но так тоже не работает: &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) тыц(); ОбновитьОтображениеДанных(); КонецПроцедуры &НаСервере Процедура тыц() Эл = Объект.Ссылка.ПолучитьОбъект(); Эл.Прочитать(); КонецПроцедуры |
|||
32
extrim-style
09.09.13
✎
12:11
|
(30) ну есть, а кули толку? я их уже не знаю куда тыкать.
(наоборот на каждом углу понаставил, чтобы вопросов не было, а тут еще вопросы) ). |
|||
33
extrim-style
09.09.13
✎
12:12
|
(30) зачем мне проверять параметры и какие параметры нужно проверить?
|
|||
34
Infsams654
09.09.13
✎
12:19
|
(33) ИмяСобытия - чтобы обработка оповещения поняла, что это её событие, а не от какой-то хз, Параметр - это могут быть какие-то данные, переданные для обработки оповещения, например, если в оповещающей форме что-то случилось нехорошее или еще что надо передать, Источник - проверка на то, что оповещатель - это тот, от которого нужно оповещение
|
|||
35
Нуф-Нуф
09.09.13
✎
12:21
|
дело в хешировании объекта
|
|||
36
Нуф-Нуф
09.09.13
✎
12:22
|
Код тестовой обработки
&НаСервере Функция ПолучитьСсылкуНаЭлементНаСервере() СсылкаНаЭлемент = Справочники.Контрагенты.НайтиПоКоду("654654553"); Возврат СсылкаНаЭлемент; КонецФункции &НаСервере Процедура ИзменитьОбъектНаСервере(СсылкаНаЭлемент) ОбъектКонтрагент = СсылкаНаЭлемент.ПолучитьОбъект(); ОбъектКонтрагент.Наименование = ТекущаяДата(); ОбъектКонтрагент.Записать(); КонецПроцедуры &НаКлиенте Процедура ОткрытьИИзменитьФорму(Команда) СсылкаНаЭлемент = ПолучитьСсылкуНаЭлементНаСервере(); ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлемент); Форма = ПолучитьФорму("Справочник.Контрагенты.Форма.ФормаЭлементаУправляемая", ПараметрыФормы); Форма.Открыть(); ИзменитьОбъектНаСервере(СсылкаНаЭлемент); Оповестить(); КонецПроцедуры Код модуля формы элемента &НаСервере Процедура ПеречитатьДанныеНаСервере() ОбъектИзБазы = Объект.Ссылка.ПолучитьОбъект(); ЗначениеВРеквизитФормы(ОбъектИзБазы, "Объект"); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) ПеречитатьДанныеНаСервере(); ОбновитьОтображениеДанных(); КонецПроцедуры |
|||
37
extrim-style
09.09.13
✎
12:25
|
(34) спасибо, кэп
|
|||
38
extrim-style
09.09.13
✎
12:33
|
(36) да. спс. этот вариант был напоследок, надеялся обойтись без него.
&НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) тыц(); КонецПроцедуры &НаСервере Процедура тыц() ЗначениеВРеквизитФормы(Объект.Ссылка.ПолучитьОбъект(), "Объект"); КонецПроцедуры ссылка в кучу - http://forum.infostart.ru/forum26/topic59758/ |
|||
39
extrim-style
09.09.13
✎
12:34
|
(38) вобщем на этом всё. всем спасибо за компетентную помощь)
|
|||
40
Нуф-Нуф
09.09.13
✎
12:47
|
кстати дело не в хешировании. а в том, что все таки требовалось обращение к серверу через Объект.Ссылка.ПолучитьОбъект(), чтобы обновленные данные объекта пришли в форму, а уже потом обновились через ОбновитьОтображениеДанных
|
|||
41
extrim-style
09.09.13
✎
13:14
|
(40) обрати внимание, что я не делал ОбновитьОтображениеДанных (я так и не понял как эта штука работает и почему она не работает).
И обращения к ПолучитьОбъект() недостаточно (см. (31)). В данном случае просто принудительная выгрузка объекта в данные формы. А как использовать стандартное обновление я так и не понял... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |