Имя: Пароль:
1C
1С v8
Управляемая форма. отображение элементов
,
0 jenny_tea
 
22.11.11
15:35
есть внешняя обработка. на ней в форме два элемента:
Стр: тип строка
Спр: тип СправочникСсылка.ххх (Представление справочника через наименование)
Есть кнопка "сменить наименование"

&НаКлиенте
Процедура СоздатьОбновитьНаименование(Команда)
   ЭтаФорма.Спр = ОбновитьНаименованиеНаСервере(Спр,Стр);
//пробовала и просто Спр = ...
КонецПроцедуры
&НаСервере
Функция ОбновитьНаименованиеНаСервере(ТекСпр,ТекСтр)
   СпрОбъект = ТекСпр.ПолучитьОбъект();
   СпрОбъект.Наименование = ТекСтр;
   Попытка
       СпрОбъект.Записать();
   Исключение
   КонецПопытки;
   Возврат СпрОбъект.Ссылка;
КонецФункции

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

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

Но если не выбирать, а оставить старое отображение. то даже при переоткрытии формы отображение остается прежним.
1 Mort
 
22.11.11
15:46
Если закрыть глаза на остальной ужас, то должно помочь
ОбновитьОтображениеДанных()
2 jenny_tea
 
22.11.11
15:54
(1) не помогает. Я конечно утрированный пример написала, но суть передает абсолютно правильно. проверено на нескольких справочниках
3 Юрий Лазаренко
 
22.11.11
16:00
(0) А эти элементы к каким данным формы привязаны? Есть у формы реквизиты Спр и Стр?
4 jenny_tea
 
22.11.11
16:01
Нашла
ЭтаФорма.ОтобразитьИзменениеДанных(Объект.Реквизит1,ВидИзмененияДанных.Изменение);
но почему сам не обновляет автоматом не понятно
5 jenny_tea
 
22.11.11
16:02
у формы есть реквизиты и спр и стр
6 Рыцарь
 
22.11.11
16:06
&НаКлиенте
Процедура СоздатьОбновитьНаименование(Команда)
   ОбновитьНаименованиеНаСервере();
   ОбновитьОтображениеДанных();
КонецПроцедуры
&НаСервере
Функция ОбновитьНаименованиеНаСервере()
   СпрОбъект = Спр.ПолучитьОбъект();
   СпрОбъект.Наименование = Стр;
   Попытка
       СпрОбъект.Записать();
   Исключение
   КонецПопытки;
КонецФункции

Так не работает?
7 Рыцарь
 
22.11.11
16:07
Вместо функции процедура конечн..
8 jenny_tea
 
22.11.11
16:11
ОбновитьОтображениеДанных();
кстати тоже не так работает. она перерисовывает все данные при этом переходит на основное окно программы, но не обновляет отображение изменения. тоже опробовано уже
9 Рыцарь
 
22.11.11
16:25
Да, вместо
ОбновитьОтображениеДанных();

нужно

ОповеститьОбИзменении(Спр);
10 Юрий Лазаренко
 
22.11.11
16:30
(0) Так, давай сначала. У тебя на форме обработки есть поле с типом СправочникСсылка и поле с типом строка. Ты вводишь в поле с типом строка наименование, жмакаешь кнопку, у справочника должно установиться это наименование, а затем новое наименование должно отобразиться в полях с типом СправочникССылка и Строка. Верно?
11 jenny_tea
 
22.11.11
16:40
Народ я ж написала уже решение
&НаКлиенте
Процедура СоздатьОбновитьНаименование(Команда)
   ЭтаФорма.Спр = ОбновитьНаименованиеНаСервере(Спр,Стр);
   ЭтаФорма.ОтобразитьИзменениеДанных(Спр,ВидИзмененияДанных.Изменение);

//пробовала и просто Спр = ...

КонецПроцедуры
&НаСервере
Функция ОбновитьНаименованиеНаСервере(ТекСпр,ТекСтр)
   СпрОбъект = ТекСпр.ПолучитьОбъект();
   СпрОбъект.Наименование = ТекСтр;
   Попытка
       СпрОбъект.Записать();
   Исключение
   КонецПопытки;
   Возврат СпрОбъект.Ссылка;
КонецФункции
12 jenny_tea
 
22.11.11
16:41
ЭтаФорма.ОтобразитьИзменениеДанных(Спр,ВидИзмененияДанных.Изменение)
этот метод переотображает конкретный реквизит