Имя: Пароль:
1C
 
Не обновляется ссылочное поле при изменении объекта
0 Авиейро
 
04.02.11
15:45
Здравствуйте.

Управляемые формы, 1С:Предприятие 8.2

Пусть у нас есть 2 спрвочника. (Спр1, Спр2).
В Спр1. есть реквизит - ссылка на Спр2 и кнопочка.
у выбранного элемента Спр2 - наименование "тест5".
Мы хотим, когда нажиимешь кнопочку, то чтобы наименвоание этого
элемента стало "тест3".
Когда нажимаешь эту кнопочку (комманда1), то там есть код;

&НаСервере
Процедура Привет(Спр2)
   
   СпрО = Спр2.ПолучитьОбъект();
   СпрО.Наименование = "тест3";
   СпрО.Записать();
   Об = РеквизитФормыВЗначение("Объект");
   Об.Реквизит1 = СпрО.Ссылка;
   ЗначениеВРеквизитФормы(Об, "Объект");
   
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
   
   Привет(Объект.Реквизит1);
   Ст = Новый Структура("Ключ", Объект.Реквизит1);
   Форма = ПолучитьФорму("Справочник.Справочник1.ФормаОбъекта", Ст);
   ЭтаФорма.ОбновитьОтображениеДанных();
   
КонецПроцедуры

Внимание, знатоки, теперь вопрос:
Наименование элемента Спр2 дейтсвительно изменятется, НО, в форме элемента Спр1, оно остается висеть старым, и, оно там тоже измениться, только после переотркытия формы. Как это исправить??

Наташа.
1 Авиейро
 
04.02.11
15:49
Ап
2 Авиейро
 
04.02.11
15:55
Ну, господа, помогите, девушке, я даже фотку новую залила... :(
3 igork1966
 
04.02.11
15:58
8.2 я не имел дела...
но врядли ЭтаФорма.ОбновитьОтображениеДанных();
перечитывает данные объекта. А меняете его на сервере.
4 Авиейро
 
04.02.11
16:02
А как тогда?
5 Авиейро
 
04.02.11
16:13
Ну, ребята, не }|{оптесь, меня же шеф ругать будет...:(
6 igork1966
 
04.02.11
16:14
(4) Ну не работал.... но может вот это поможет:


УправляемаяФорма (ManagedForm)
ОтобразитьИзменениеДанных (RepresentDataChange)
Синтаксис:
ОтобразитьИзменениеДанных(<Ссылка>, <ВидИзменения>)
Параметры:
<Ссылка> (обязательный)
Ссылка или ключ записи измененых данных.
<ВидИзменения> (обязательный)
Тип: ВидИзмененияДанных. Вид произведенного изменения данных.
Описание:
Отображает изменение данных.
Оповещает все динамические списки об изменениях.
Если было добавление или изменение данных, пользователь оповещается об этом всплывающим окном.

Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент.
Вызов метода выполняет обращение к серверу.
7 igork1966
 
04.02.11
16:15
(6) + не работал с 8.2
8 Ненавижу 1С
 
гуру
04.02.11
16:17
странно

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

может надо:

Форма = ПолучитьФорму("Справочник.Справочник1.ФормаОбъекта", Ст);
   Форма.ОбновитьОтображениеДанных();
9 Aston
 
04.02.11
16:18
10 Megas
 
04.02.11
16:19
С такой внешностью грех 1сом заниматься
11 Авиейро
 
04.02.11
16:22
2(10) Почему это? :(
12 Авиейро
 
04.02.11
16:28
Так какой код писать-то? :(
13 Megas
 
04.02.11
16:33
(11) А что (9) не работает?
14 Ненавижу 1С
 
гуру
04.02.11
16:33
(12) пробовала как в (8)?
15 Авиейро
 
04.02.11
16:34
2(14) НУ конечно пробовала, разницы никакой....:(((
16 Волесвет
 
04.02.11
16:35
тощщая-то ... иди в поварихи
17 Авиейро
 
04.02.11
16:35
2(13) 9 не работает...мне же код нужен...:(
18 Сергей Д
 
04.02.11
16:36
Эх... фотка - просто класс. С удовольствием бы помог, но управляемый режим еще не освоил. А наугад тыкать не хочется... :(
(10) Совсем не грех. Нам очень нужны такие красавицы в наших рядах. :)
19 zladenuw
 
04.02.11
16:36
а может элементы.Реквизит1.Обновить() ?
20 Авиейро
 
04.02.11
16:37
2(19) так не получается, ругается, что метода Обновить() нету....:(
21 Авиейро
 
04.02.11
16:38
Насколько я поняла, это только для картинки и календаря, метод Обновить() работает..(((
22 Авиейро
 
04.02.11
16:38
Помогите, шеф беснуется что не могу этого сделать (((
23 Stado_adama
 
04.02.11
16:41
&НаКлиенте
Процедура Команда1(Команда)
   записали = Объект.Реквизит1;
   Привет(Объект.Реквизит1);
   Объект.Реквизит1 = записали;  
КонецПроцедуры


:))))))
24 Авиейро
 
04.02.11
16:44
2(23) тоже не подходит (( не обновляется, хоть тресни. (((
25 Beduin
 
04.02.11
16:45
(0)
Оповестить("ИзменениеСостояния",Спр2);

ОбработкаОповещения
   Если ИмяСобытия = "ИзменениеСостояния" Тогда
Обновить()
Типа так
26 Волесвет
 
04.02.11
16:47
хех на вскидку " появляется после переоткрытия" при нажатии кнопки переоткрывай)))
можно еще так в форме намудрить при нажатии кнопки скрывать вывод из того справочника а выводить твою тест))
27 zladenuw
 
04.02.11
16:49
ЭтаФорма.ОтобразитьИзменениеДанных(Объект.Реквизит1,ВидИзмененияДанных.Изменение);
28 zladenuw
 
04.02.11
16:50
то есть в (6) был правильный ответ :)
29 abitfrosty
 
04.02.11
16:51
Ну в управляемых формах теперь все списки динамические - это значит, что то что ты видишь это результат запроса, который был выполнен, например при открытии, и не был еще раз выполнен при твоем событии.

Нужно этот запрос динамического списка еще раз выполнить.
30 Авиейро
 
04.02.11
16:52
2(27) спасибо, заработало.
31 Сергей Д
 
04.02.11
16:53
Сделал примерчик.
ОтобразитьИзменениеДанных действительно помогло.
Не совсем понял, зачем вот этот код (убрал - ничего не изменилось):
Ст = Новый Структура("Ключ", Объект.Реквизит1);
Форма = ПолучитьФорму("Справочник.Справочник1.ФормаОбъекта", Ст);
32 Авиейро
 
04.02.11
16:53
Мужики, всем спасибо, приятных выходных, хорошего вечера, удачи в программировании.
33 zladenuw
 
04.02.11
16:53
(31) для какого то шаманства :)
34 Сергей Д
 
04.02.11
16:54
(32) Тебе тоже. Ты это... заходи, если что ;)
35 zladenuw
 
04.02.11
16:54
(32) и тебе :)
36 Ненавижу 1С
 
гуру
04.02.11
16:56
.......................

&НаКлиенте
Процедура Команда1(Команда)
   Привет();
   ОтобразитьИзменениеДанных(Объект.Реквизит1,ВидИзмененияДанных.Изменение);
КонецПроцедуры


&НаСервере
Процедура Привет()
   Об = Объект.Реквизит1.ПолучитьОбъект();
   Об.Наименование = "Тынц";
   Об.Записать();
КонецПроцедуры
37 Авиейро
 
04.02.11
16:59
2(36) Спасибо! Так тоже работает!
38 Сергей Д
 
04.02.11
17:09
И это... убери уж лишние строчки.