Обновление формы элемента справочника

1. alexie.j 23.08.17 11:46 Сейчас в теме
Добрый день.
Помогите, пожалуйста понять что не правильно.
Есть форма, которая открывает другую. Во второй вводятся данные, сохраняются, но при закрытии второй формы в первой изменения не отражаются. А если я закрою и заново открою элемент, то данные будут записаны.
Хотелось бы сразу чтобы они обновлялись.

Я попробовала несколько способов, но так и не пришла к решению. В последней из попыток использовала:

Во второй форме:
&НаКлиенте
Процедура ПриЗакрытии()
	Оповестить("ОбновитьФормуЭлемента");
КонецПроцедуры


А в первой:
&НаКлиенте 
Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

	Если ИмяСобытия= "ОбновитьФормуЭлемента"
		Тогда
			ЭтаФорма.ОбновитьОтображениеДанных(Объект.ПолеHTMLДоступы);      
        КонецЕсли;

КонецПроцедуры  
Показать

Обновление не происходит. Что я делаю не так?
По теме из базы знаний
Найденные решения
25. alexie.j 23.08.17 18:20 Сейчас в теме
(24)
(22) Спасибо большое за помощь!
В моём случае правда пришлось сделать иначе.
У меня есть процедура
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
---------
КонецПроцедуры


Сделала так
 &НаКлиенте 
Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

	Если ИмяСобытия= "ОбновитьФормуЭлемента" Тогда
		
		ПриСозданииНаСервере(ложь, истина);	
		
    КонецЕсли;

КонецПроцедуры   
Показать


Не знаю насколько это правильно с точки зрения программирования, но работает)
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. DAL 23.08.17 11:55 Сейчас в теме
(1)
Следует понимать, что у каждой формы свой экземпляр объекта.
После закрытия второй формы в первую очередь нужно перечитать данные объекта первой формы.
7. DAL 23.08.17 12:01 Сейчас в теме
(1)

Попробуйте так:

&НаКлиенте 
Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

    Если ИмяСобытия= "ОбновитьФормуЭлемента"
        Тогда
            ЭтотОбъект.Прочитать();     
        КонецЕсли;

КонецПроцедуры  
Показать
alexie.j; +1 Ответить
8. alexie.j 23.08.17 12:05 Сейчас в теме
(7) пробовала, так же всё..
Ещё вот так думала

Если ИмяСобытия= "ОбновитьФормуЭлемента"
		Тогда
			//ЭтаФорма.ОбновитьОтображениеДанных(Объект.ПолеHTMLДоступы);
		ЭтотОбъект.Прочитать();
		ЭтаФорма.Обновить();
		ЭтаФорма.ОбновлениеОтображенияДанных();
        КонецЕсли; 
10. DAL 23.08.17 12:12 Сейчас в теме
(8) Метод "Прочитать" автоматом обновляет форму.

Кстати попробуйте ЭтаФорма.Прочитать();
alexie.j; +1 Ответить
26. Xershi 1474 23.08.17 18:28 Сейчас в теме
(1) связь форм можно реализовать через параметры формы. Если вы программно меняете данные объекта формы, то нужно его перечитать потом!
2. Boneman 298 23.08.17 11:53 Сейчас в теме
отладчик поставь, перед
ЭтаФорма.ОбновитьОтображениеДанных(Объект.ПолеHTMLДоступы);

оно сюда вообще не попадает, или попадает, но обновление не срабатывает ?
alexie.j; +1 Ответить
3. alexie.j 23.08.17 11:54 Сейчас в теме
5. DAL 23.08.17 11:58 Сейчас в теме
Форма 1 - Объект 1 данные сформированы.

Открывается форма 2, Объект 2. изменяется реквизит МойHTMLДокумент. Сохраняется, закрывается.

Форма 1. Объект все еще 1 (не обновленный). Даем команду "Форма.ОбновитьОтображение". Данные для обновления берутся из Объект1, который все еще не обновлен.
6. alexie.j 23.08.17 12:01 Сейчас в теме
(5) Значит я в начале во втором элементе должна прочитать данные?
9. EVKash 14 23.08.17 12:08 Сейчас в теме
11. alexie.j 23.08.17 12:13 Сейчас в теме
(9)
(7) К сожалению, нет..Мне кажется я очень близка к правильному варианту, но что то упускаю.
У меня отладчик не попадает в процедуру обработки. Может её нужно вызвать где-то?
Я просто на форме элемента написала
12. DAL 23.08.17 12:16 Сейчас в теме
(11) А у формы в событии "Обработка оповещения" эта процедура подключена?
13. alexie.j 23.08.17 12:17 Сейчас в теме
16. Boneman 298 23.08.17 12:23 Сейчас в теме
(13)
вот так подключена ?
Прикрепленные файлы:
18. alexie.j 23.08.17 12:25 Сейчас в теме
(16) да,да)
Прикрепленные файлы:
21. DAL 23.08.17 12:30 Сейчас в теме
(18)

У формы элемента справочника однозначно есть сущность "ЭтотОбъект" и "ЭтаФорма".
У этих сущностей однозначно есть метод "Прочитать".
Этот метод однозначно перечитывает данные и обновляет форму.

Где-то что-то не так написано.
14. alexie.j 23.08.17 12:20 Сейчас в теме
(12) Отладчик уже попадает!

при вычислении ЭтаФорма.Прочитать(); пишет, что поле объекта не обнаружено
15. DAL 23.08.17 12:23 Сейчас в теме
(14)
Так. Давайте по порядку.

Есть (например) элемент справочника.

У него две формы - форма 1 и форма 2.
Форма 2 вызывается из формы 1. Так?
19. alexie.j 23.08.17 12:28 Сейчас в теме
(15) Давайте, расскажу
У меня есть элемент справочника оборудование. Например компьютер.
Открываю его и хочу редактировать данные. Нажимаю на кнопку, открывается вторая форма где можно редактировать эти данные. Ввожу там какие-то записи, а потом сохранив закрываю.
И в первой форме должны показаться эти новые данные. Их нет. Закрываю этот элемент, открываю опять, данные есть) И вот это не очень нужное действие с открытием и закрытием я бы хотела исключить, чтобы пользователю было удобнее.
22. Boneman 298 23.08.17 12:30 Сейчас в теме
(19)
Нажимаю на кнопку, открывается вторая форма где можно редактировать эти данные. Ввожу там какие-то записи, а потом сохранив закрываю.
И в первой форме должны показаться эти новые данные

тебе надо во второй форме, ввести данные, и параметром в обработке оповещения передать их в первую форму.
Там, этот новый текст (или что у тебя там), должен вставится в твое поле..
а сохранится в базу он должен когда, ты нажмешь ОК уже в первой форме, твоего справочника обороудование

примерно так
&НаКлиенте
Процедура ПриЗакрытии()
    Оповестить("ОбновитьФормуЭлемента", ПолеСДанными);
КонецПроцедуры


на первой
&НаКлиенте 
Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

    Если ИмяСобытия= "ОбновитьФормуЭлемента"
        Тогда
            Объект.ПолеHTMLДоступы = парамер;  
alexie.j; +1 Ответить
23. DAL 23.08.17 12:32 Сейчас в теме
(22)
оповещения

(20)

С точки зрения технологии соглашусь с 22.

Смысл дважды редактировать один объект?


Во второй форме вводятся данные и передаются в первую форму. И там уже записываются.

Но с точки зрения текущей проблемы - все должно работать.
17. Boneman 298 23.08.17 12:24 Сейчас в теме
(14)
ЭтаФорма.Прочитать();

так эта форма, или ЭтотОбъект ?
20. alexie.j 23.08.17 12:29 Сейчас в теме
(17) я и Объект пробовала, а именно Объект.ПолеHTMLДоступы
И форму...
24. DAL 23.08.17 12:39 Сейчас в теме
В первой форме.


Форма2 = ПолучитьФорму("ПутьКФорме",,ЭтаФорма);
КопироватьДанныеФормы(Объект,Форма2.Объект);
Форма2.Открыть();

Во второй форме

При Закрытии

КопироватьДанныеФормы(Объект, ЭтаФорма.Владелец.Объект);
Оповестить("Я все сделала!");

В первой форме

Обработка оповещения
Если ИмяСобытия = "Я все сделала!" тогда ЭтаФорма.Прочитать(); КонецЕсли;
alexie.j; +1 Ответить
25. alexie.j 23.08.17 18:20 Сейчас в теме
(24)
(22) Спасибо большое за помощь!
В моём случае правда пришлось сделать иначе.
У меня есть процедура
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
---------
КонецПроцедуры


Сделала так
 &НаКлиенте 
Процедура ОбработкаОповещения(ИмяСобытия,Параметр, Источник)

	Если ИмяСобытия= "ОбновитьФормуЭлемента" Тогда
		
		ПриСозданииНаСервере(ложь, истина);	
		
    КонецЕсли;

КонецПроцедуры   
Показать


Не знаю насколько это правильно с точки зрения программирования, но работает)
27. DAL 23.08.17 19:53 Сейчас в теме
(25) )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
28. Kinestetik 23 24.08.17 16:48 Сейчас в теме
(25) С точки зрения программирования это плохой стиль - явно вызывать обработчики событий. Если это сработало, значит, нужно посмотреть, какой код из "ПриСозданииНаСервере" обновляет данные формы. И вынести этот код в отдельный метод, например, ОбновитьДанныеФормы() или как-то так назвать. И вызывать этот метод в "ПриСозданииНаСервере" и в обработке оповещения
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)