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

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Не обновляется реквизит формы (платформа 8.2.19.106)

Автор: andrew76 01.08.17, 9:36

Добрый день !

Имеется следующая проблема: на форме элемента справочника имеется элемент управления –объект Надпись.
В заголовок этого объекта пишется строковое значение места рождения сотрудника- страна ,область , район, город:



Редактирование реквизитов места рождения сотрудника происходит через дополнительную форму, вызываемую по нажатию
кнопки на форме элемента справочника:




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

Автор: podcast 01.08.17, 9:53

andrew76 @ Сегодня, 10:36 * ,
После заполнение реквизита нужно перечитать и обновить форму.

ЭтотОбъект.Прочитать();
ЭтаФорма.Обновить();

Автор: andrew76 01.08.17, 10:12

Цитата(podcast @ 01.08.17, 12:53) *
andrew76 @ Сегодня, 10:36 * ,
После заполнение реквизита нужно перечитать и обновить форму.
ЭтотОбъект.Прочитать();
ЭтаФорма.Обновить();


Не получается что-то...
Вот процедура которая записывает обновленные реквизиты:
(за код не пинайте)

form =Справочники.ФизическоеЛицо.ПолучитьФорму("ФормаСпискаДляОк");
form1=Справочники.ФизическоеЛицо.ПолучитьФорму("ФормаЭлементаДляОК");

obj=form.ЭлементыФормы.СправочникСписок.ТекущиеДанные.Ссылка;
obj_reg=obj.ПолучитьОбъект();

Если ЭлементыФормы.Страна_рож1.Значение <> obj.СтранаРождения.Ссылка тогда
     obj_reg.СтранаРождения=ЭлементыФормы.Страна_рож1.Значение;
     obj_reg.Записать();
     form1.Обновить();
КонецЕсли;

Закрыть();


Автор: podcast 01.08.17, 10:53

andrew76 @ Сегодня, 11:12 * ,
Не очень понятно что происходит в коде, но примерно так.

form =Справочники.ФизическоеЛицо.ПолучитьФорму("ФормаСпискаДляОк");
form1=Справочники.ФизическоеЛицо.ПолучитьФорму("ФормаЭлементаДляОК");

obj=form.ЭлементыФормы.СправочникСписок.ТекущиеДанные.Ссылка;
obj_reg=obj.ПолучитьОбъект();

Если ЭлементыФормы.Страна_рож1.Значение <> obj.СтранаРождения.Ссылка тогда
     obj_reg.СтранаРождения=ЭлементыФормы.Страна_рож1.Значение;
     obj_reg.Записать();
     obj_reg.Прочитать();
     ЭтаФорма.Обновить();
КонецЕсли;

Закрыть();

Автор: andrew76 01.08.17, 11:54

Нет,надпись не обновляется,объект надпись расположен на форме form1=Справочники.ФизическоеЛицо.ПолучитьФорму("ФормаЭлементаДляОК")
может надо писать так :

 form1.Обновить()
вместо
 ЭтаФорма.Обновить()
?


Цитата(andrew76 @ 01.08.17, 14:25) *
Нет,надпись не обновляется,объект надпись расположен на форме form1=Справочники.ФизическоеЛицо.ПолучитьФорму("ФормаЭлементаДляОК")
может надо писать так :
 form1.Обновить()
вместо
 ЭтаФорма.Обновить()
?


Так даже тупо записать значение в заголовок текстового реквизита не получается:

form1.ЭлементыФормы.Наз_местаРождения.Заголовок="1111";

Автор: andrew76 01.08.17, 15:12

Проверил в отладчике - на самом деле всё присваивается как мне нужно.Просто форма не желает обновляться.
И ещё -текстовый реквизит , в заголовок которого я пишу , расположен на панели,которая расположена на форме эл-та
справочника.Может здесь какой-то подвох ? Никто с таким не сталкивался ?

Автор: sava1 01.08.17, 16:40

Почитайте про Оповестить()

Автор: andrew76 02.08.17, 5:30

Спасибо ! Только через оповещение формы и сработало её обновление.

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