Версия для печати темы (https://pro1c.org.ua/index.php?s=615fe0279c1f5a17dba63de4af3286e2&showtopic=66784)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Обновить данные реквизита формы владельца при изменении реквизита из справочника

Автор: Constantus 28.10.21, 12:20

Приветствую, Форумчане!
УПП 1.2, обычные формы, переписанный

На документе "РегистрацияКарты" имеется реквизит "Спецификация" с ссылкой на справочник "Спецификация"
Есть ситуации, когда в выбранную спецификацию внести изменения в самом документе.

При нажатии на лупу этого реквизита открываю форму с передачей владельца формы

ПроцедураСпецификацияОткрытие(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Форма = Спецификация.ПолучитьФорму("ФормаЭлемента");
Форма.ВладелецФормы = ЭтаФорма;
Форма.Открыть();

КонецПроцедуры


Далее в наименование "Спецификации" вношу изменения, сохраняю справочник и закрываю.

Как теперь в основной форме документа внести обновления наименования этого справочника после его закрытия?

Наименование то изменено, но на форме документа висит прежнее название справочника...

Автор: denis84 28.10.21, 12:42

Constantus @ Сегодня, 13:20 * ,

 ЭтаФорма.Прочитать();


вот ссылка можно глунуть тут: https://pro1c.org.ua/redirect.php?https://forum.infostart.ru/forum9/topic95539/

Автор: Constantus 28.10.21, 13:14

denis84 @ Сегодня, 16:42 * ,
Прочитать() так обновляет форму, что эта форма вообще пустой становиться.

Забыл самое главное сказать, что документ "РегистрацияКарты" создается программно и на момент изменения Спецификации еще не записан.

Т.е. Открывается новый заполненный данными документ, но не записанный.
Далее выбирается реквизит Спецификация (он существует), вносят туда изменения и измененный должен вернуться в незаписанный документ

Прошлось делать через оповещение

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

Если ИмяСобытия = "ТакоеТо" Тогда
Спецификация = Спецификация;
КонецЕсли;

КонецПроцедуры

Так сработало, но насколько это правильно, если отбросить принципа "и так сойдет раз сработало..."?

Автор: Vofka 28.10.21, 19:48

Цитата(Constantus @ 28.10.21, 14:14) *
Прошлось делать через оповещение

Оповещение как раз для этого сделано, что бы обмениваться сообщениями между открытыми формами. Правда в самом обработчике код как-то интересно выглядит:
Спецификация = Спецификация;

Автор: awp 28.10.21, 22:52

Constantus @ Сегодня, 13:20 * ,

ПроцедураСпецификацияОткрытие(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Форма = Спецификация.ПолучитьФорму("ФормаЭлемента");
Форма.ВладелецФормы = ЭтаФорма;

ВыбЭлемент = Форма.ОткрытьМодально();
Если ЗначениеЗаполнено(ВыбЭлемент) Тогда
     Элемент.Значение = ВыбЭлемент;
КонецЕсли;

КонецПроцедуры

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua