|
8.2. Обновить дерево значений на форме | ☑ | ||
---|---|---|---|---|
0
Tymoha
05.09.11
✎
16:26
|
Коллеги, нужна помощь. Проблема в следующем:
Есть обработка, на ней есть дерево значений. При открытии формы, заполняем дерево на сервере (элементы справочника) передаем на клиента. Все ОК. Работаем с деревом (добавляем, удаляем элементы) - перезаполняем на сервере, возвращаем на клиента - все ОК. НО ЕСЛИ ПЕРЕИМЕНОВАТЬ элемент, то на сервере заполняется нормально, а вот на клиенте получаю старое (не переименованное) значение ... В чем может быть загвоздка? Обмен сервер-клиент ходит: Дерево = РеквизитФормыВЗначение("ДеревоСборки"); //заполняем ЗначениеВРеквизитФормы(Дерево, "ДеревоСборки"); |
|||
1
acsent
05.09.11
✎
16:28
|
ЗАЧЕМ переименовывать реквизит?
|
|||
2
Tymoha
05.09.11
✎
16:34
|
(1) не реквизит. элемент справочника ...
|
|||
3
Tymoha
05.09.11
✎
17:18
|
ап
|
|||
4
mikecool
05.09.11
✎
17:18
|
оповестить - обработкаоповещения?
|
|||
5
Tymoha
05.09.11
✎
17:21
|
(4) и что по ней делать? возможно я не совсем точно описал проблему: пользователь нажимает кнопку "Переименовать", вводит строку-новое наименование, на сервере я переименовываю, а вот при возврате дерева назад (на клиента) возвращается старое наименование ...
|
|||
6
Tymoha
05.09.11
✎
17:49
|
вверх
|
|||
7
Tymoha
05.09.11
✎
18:27
|
апну еще разочек. Прикольная вообще картина получается:
переименованный справочник обновляется только при выходе из 1С и снова заходе. Просто закрыть/открыть форму обработки недостаточно .... |
|||
8
kosts
05.09.11
✎
18:37
|
(7) видимо клиент не знает про изменение. нужно как-то ему сообщить.
|
|||
9
Tymoha
05.09.11
✎
18:39
|
(8) использую:
ЭтаФорма.ДеревоСборки.ПолучитьЭлементы().Очистить(); Дерево = РеквизитФормыВЗначение("ДеревоСборки"); Выборка = Справочники.КалкСборки.Выбрать(,НПК.Ссылка); Пока Выборка.Следующий() Цикл Сборка = Дерево.Строки.Добавить(); Сборка.ТМЦ = Выборка.Ссылка; Для Каждого СтрЭС Из Выборка.СоставСборки Цикл ТМЦ = Сборка.Строки.Добавить(); ТМЦ.ТМЦ = СтрЭС.ЭлементСборки; ТМЦ.Количество = СтрЭС.Количество; КонецЦикла; КонецЦикла; ЗначениеВРеквизитФормы(Дерево, "ДеревоСборки"); знаешь другие способы? |
|||
10
Tymoha
05.09.11
✎
18:40
|
+(9) причем: Сборка.ТМЦ получает ВЕРНОЕ значение (по отладчику)... почему в дереве старое?????????
|
|||
11
nicxxx
06.09.11
✎
03:12
|
а если попробовать обмен с сервером через ДанныеФормы?
вот так: ДеревоФорма = ДанныеФормыВЗначение(Дерево,Тип("ДеревоЗначений")); ... ЗначениеВДанныеФормы(ДеревоФорма, Дерево); |
|||
12
Tymoha
06.09.11
✎
07:00
|
(11) к сожалению, легче не стало ... насколько я смог разобраться: эта скотина (1С) производит сверку переданного дерева с тем что было раньше, и в случае совпадения (ид элементов справочника чтоль) дерево и не обновляет ... другого объяснения не вижу ... (((
|
|||
13
nicxxx
06.09.11
✎
07:08
|
(12) а что-то непонятно, как у тебя происходит процесс переименования?
я вот щас сделал такую же обработку, как у тебя, активирую элемент, в поле появляются 2 кнопки - для открытия списка и для открытия элемента, открываю элемент (сразу или через список, не важно), переименовываю его - он сразу в дереве отображается с новым названием, и при следующем открытии также показывается новое название |
|||
14
Tymoha
06.09.11
✎
07:18
|
(13) у меня в дереве, не собсвтенно сам справочник, а сборная солянка ... то есть, источник данных не напрямую справочник
|
|||
15
Tymoha
06.09.11
✎
07:18
|
+(14) и не спрашивай почему я так сделал ... вчера казалось что так надо ... сейчас уже не могу придумать/вспомнить )))
|
|||
16
nicxxx
06.09.11
✎
07:21
|
да мне пофиг твои причины, сам так же делаю :) дай код, которым дерево заполняешь
|
|||
17
Tymoha
06.09.11
✎
07:24
|
(16) см в (9)
|
|||
18
Tymoha
06.09.11
✎
07:24
|
ну поменялось там:
Дерево = ДанныеФормыВЗначение(ЭтаФорма.ДеревоСборки,Тип("ДеревоЗначений")); ЗначениеВДанныеФормы(Дерево, ЭтаФорма.ДеревоСборки); |
|||
19
nicxxx
06.09.11
✎
07:28
|
элементСборки - это че? не ссылка?
|
|||
20
Tymoha
06.09.11
✎
07:30
|
структура справочника для дерева:
Спр "КалкСборки". Имеет табличную часть "Состав сборки". В ней: Элемент сборки = ссылка спр. "КалкТМЦ", кол-во |
|||
21
nicxxx
06.09.11
✎
07:34
|
ну т.е. в колонке ТМЦ у тебя везде ссылки?
значит чтобы переименовать элемент, ты его открываешь и редактируешь наименование в форме? ( у меня это так происходит) |
|||
22
Tymoha
06.09.11
✎
07:42
|
(21) неа. в том то и дело ... передаю наименование на сервер, и там переименовыаю, записываю, строю дерево и передаю взад. вот тут то и затык (с кешем сеанса получается?)
|
|||
23
nicxxx
06.09.11
✎
08:07
|
поведение, описанное в (0) подтверждаю. как решить щас поищу
|
|||
24
nicxxx
06.09.11
✎
09:10
|
даже программное создание реквизитов формы не помогает
|
|||
25
Tymoha
06.09.11
✎
09:16
|
(24) таки где-то хранится кеш?
|
|||
26
nicxxx
06.09.11
✎
09:18
|
да хер его знает.
экспериментальным путем выяснилось что помогает только метод ОбновитьИнтерфейс(), попробуй. правда дохрена вызово сервера делается, но кроме него ничто не работает, дажет ОбновитьОтображениеДанных() |
|||
27
Tymoha
06.09.11
✎
09:38
|
(26) понял ... спасибо, буду пробовать :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |