![]() |
|
v7: Отлавливать изменения родителя в справочнике | ☑ | ||
---|---|---|---|---|
0
Hans
11.10.13
✎
10:57
|
Как?
в процедуре ПриПереносеЭлементаВДругуюГруппу у элемента еще родитель старый. В этой процедуре перезаписать заранее родителя насколько я понял нельзя. После смены родителя должен смениться другой реквизит. |
|||
1
viktor_vv
11.10.13
✎
11:00
|
Там же в параметрах есть группа, куда переносится.
|
|||
2
viktor_vv
11.10.13
✎
11:02
|
(1)+ Хотя таки да, записать в этой процедуре не получится. разве что через глобальную переменную извратится.
|
|||
3
Hans
11.10.13
✎
11:05
|
Дело в том, что после смены родителя нужно выстроить всю новую иерархию до корня и решить каким будет реквилит. А так как родитель еще старый, то не видно как без извратов выстроить всю иерархию для элемента.
|
|||
4
viktor_vv
11.10.13
✎
11:07
|
(3) Может все-таки поможет
ПриПереносеЭлементаВДругуюГруппу(<Элемент>,<Группа>) Группа - группа в которую переносится элемент. |
|||
5
viktor_vv
11.10.13
✎
11:18
|
(4)+ Вот только записать новое значение реквизита в этой процедуре не получится, запись заблокирована.
|
|||
6
viktor_vv
11.10.13
✎
11:30
|
А, вот такой вариант работает.
Процедура ПриПереносеЭлементаВДругуюГруппу(Эл,Группа) ласСпрТМЦ = СоздатьОбъект("Справочник.ТМЦ"); ласСпрТМЦ.НайтиЭлемент(Эл); ласСпрТМЦ.Артикул = "111"; ласСпрТМЦ.Родитель = Группа ; ласСпрТМЦ.Записать(); СтатусВозврата(0); Возврат ; КонецПроцедуры |
|||
7
Ёпрст
гуру
11.10.13
✎
11:40
|
П...ц
|
|||
8
Ёпрст
гуру
11.10.13
✎
11:46
|
Процедура ПриПереносеЭлементаВДругуюГруппу(Эл,Группа)
Артикул = "111"; Наименование = "Вася"; КонецПроцедуры |
|||
9
Ёпрст
гуру
11.10.13
✎
11:46
|
Наслаждайся
|
|||
10
viktor_vv
11.10.13
✎
11:53
|
(8) От жеж :), чувствовал где-то подвох.
Попробовал через Эл.Арткул = "111", не ругнулось, но и не записало значение. Надо проще быть :). |
|||
11
Hans
11.10.13
✎
13:00
|
(8) а родителя все таки так нельзя сменить.
|
|||
12
viktor_vv
11.10.13
✎
13:04
|
(11) Зато можно в (6) :).
Но в принципе в (8) родитель и так новый запишется, или тебе надо при попытке переноса в какую-то группу, записать его при этом в третью группу, а не в ту, куда собирались перенести? |
|||
13
viktor_vv
11.10.13
✎
13:05
|
(12)+ Хотя я не пробовал записать родителя, отличного от того, куда собирались перенести, но думаю запишется.
|
|||
14
Калиостро
11.10.13
✎
13:06
|
(8) А если на вопрос "Перенести в группу ...?" пользователь ответит "Нет"?
|
|||
15
viktor_vv
11.10.13
✎
13:12
|
(14) Новое значение реквизита не запишется. Там запись элемента производится, если ответил "Да".
|
|||
16
viktor_vv
11.10.13
✎
13:16
|
(15)+ И (6) тоже не запишет. Там вопрос задается, до начала выполнения кода из
Процедура ПриПереносеЭлементаВДругуюГруппу(Эл,Группа) и при ответе "Нет" туда даже не заходит. |
|||
17
Hans
11.10.13
✎
13:47
|
(12) есть процедура которая выстраивает текущую иерархию элемента, и заменяет на основе этого реквизит. в нее передается только один параметр - номенклатура. желательно без усложнений алгоритма делать все это и при смене родителя и при смене структуры всей иерархии.
|
|||
18
1Сергей
11.10.13
✎
13:51
|
(11) при смене родителя сменить ещё раз родителя?
знатный изврат |
|||
19
viktor_vv
11.10.13
✎
13:52
|
(17) Ну так тогда сделай.
Процедура ПриПереносеЭлементаВДругуюГруппу(Эл,Группа) ласСпрТМЦ = СоздатьОбъект("Справочник.ТМЦ"); ласСпрТМЦ.НайтиЭлемент(Эл); //ласСпрТМЦ.Артикул = "111"; ласСпрТМЦ.Родитель = Группа ; ласСпрТМЦ.Записать(); // Тут уже у элемента будет новый родитель ПроцедураСменыТекущейИерерархии(ласСпрТМЦ.ТекущийЭлемент()); СтатусВозврата(0); Возврат ; КонецПроцедуры |
|||
20
viktor_vv
11.10.13
✎
13:53
|
(18) Я так понял, ему надо в собственную процедуру смены иерархии передать элемент уже с новым родителем.
|
|||
21
Hans
11.10.13
✎
13:59
|
(18) Ну т.е если у определенной папки меняется родитель но нужно менять реквизит у всей нижележащей ветке.
|
|||
22
ADirks
11.10.13
✎
14:31
|
я бы триггер уже зафигачил ...
|
|||
23
Hans
11.10.13
✎
14:48
|
(22) какой триггер?
|
|||
24
viktor_vv
11.10.13
✎
14:50
|
(23) Так (19) тоже не подходит, вроде так, как ты хотел.
|
|||
25
Ёпрст
гуру
11.10.13
✎
14:51
|
(21) надо что-то в консерватории поправить..
|
|||
26
Hans
11.10.13
✎
14:53
|
(24) Почему не подходит? Сделаем там разбивку на группу и элемент, если группа то выбираем все элементы ниже.
|
|||
27
viktor_vv
11.10.13
✎
15:03
|
(26) Это я знак вопроса в конце забыл поставить.
|
|||
28
Hans
11.10.13
✎
15:28
|
(27) Отлично все работает. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |