![]() |
|
Пометка удаления для 2-х справочников. | ☑ | ||
---|---|---|---|---|
0
breezee
14.12.15
✎
18:16
|
У меня есть 2 справочника. Справ1 и Справ2. Они связаны следующим образом: Справ2 является реквизитом Справ1. Связь 1 к 1. Нужно чтобы когда ставил пометку удаления на элементе 1 справочника - на связанном элементе 2 справочника тоже ставилась пометка. В 1 справочнике на процедуру при записи поставил процедуру, которая смотрит изменилась ли пометка: (Если Не Ссылка.ПометкаУдаления = ПометкаУдаления Тогда) я получаю получаю элемент из справочника 2, в нём изменяю пометку и записываю. Беда в том, что во втором справочнике содержится процедура, которая когда изменяю пометку во 2 справочнике - изменяет пометку в 1.
Т.е. алгоритм работает так: в 1 справочнике изменяю пометку - она изменяется во втором. Изменяется во втором - начинается процедура изменения в 1. Она не срабатывает, т.к. ссылка.пометкаудаления<>пометкаудаления. По идеи всё, но платформа выдает сообщения что "данные базы изменились" и не могут быть сохранены. |
|||
1
Господин ПЖ
14.12.15
✎
18:17
|
у вас рукож.пие обыкновенное (с) Хаус
|
|||
2
Живой Ископаемый
14.12.15
✎
18:19
|
2(0) Окей, запомнили.
|
|||
3
breezee
14.12.15
✎
18:21
|
(1) Дак что мне делать?
|
|||
4
Живой Ископаемый
14.12.15
✎
18:22
|
(3) так а что нужно, вопроса-то нет.
|
|||
5
breezee
14.12.15
✎
18:22
|
(4) Чтобы все заработало)
|
|||
6
breezee
14.12.15
✎
18:23
|
Т.е. чтобы когда я выставлял пометку в элементе первого справочнике - пометка во в связанном с ним элементе второго справочника изменялась на такую же
|
|||
7
Aceforg
14.12.15
✎
18:24
|
Групповая обработка тебе в помощь
|
|||
8
Живой Ископаемый
14.12.15
✎
18:25
|
ОбменДанными.Загрузка = истина.
В одном справочнике выставляй для другого, в другом проверяй, если заполнено, то процедуру не исполняй. Это вот просто самое простое, чтобы не думать вообще |
|||
9
breezee
14.12.15
✎
18:25
|
(8) Это новый реквизит создавать?
|
|||
10
breezee
14.12.15
✎
18:26
|
Или ОбменДанными это общий модуль?
|
|||
11
Живой Ископаемый
14.12.15
✎
18:26
|
2(9) Ну... если очень нужно, то создавай конечно, ктож тебе запретит, но зачем?
|
|||
12
Михаил Козлов
14.12.15
✎
18:27
|
(9) "Он" уже есть, создавать не нужно.
И, наверное, из ПриЗаписи перенести в ПередЗапись. |
|||
13
Живой Ископаемый
14.12.15
✎
18:27
|
||||
14
Живой Ископаемый
14.12.15
✎
18:31
|
2(12)"И, наверное, из ПриЗаписи перенести в ПередЗапись." почему?
Ну, если допустить что мы рациональные существа, а не какие-то предрассудочные двуутробки? |
|||
15
breezee
14.12.15
✎
18:33
|
(12) А ведь наверное в этом и вся проблема. Получается я при записи изменяю реквизит. Тем самым вызывая процедуру из другого объекта. Она в которой тоже изменяю этот же реквизит и записываю. В процедуру при записи дважды записываю. Тьфу. (13) Еще раз пересмотрю, чтобы понять что я делаю)
|
|||
16
Мимохожий Однако
14.12.15
✎
18:37
|
Не стесняйся. Код показывай.
|
|||
17
Живой Ископаемый
14.12.15
✎
18:38
|
ПриЗаписиПервогоСправочника()
Если ЭтотОбъект.Обменданными.загрузка Тогда Возврат; КонецЕсли; ДругойСправочник = ЭтотОбъект.РеквизитСоСылкойНаДругойСправочник.ПолучитьОбъект(); ДругойСправочник.ОбменДанными.Загрузка = Истина; ДргоуйСправочник.ПометкаУдаления = ЭтотОбъект.ПометкаУдаления; КонецПроцедуры ПриЗаписиВторогоСправочника() Если ЭтотОбъект.Обменданными.загрузка Тогда Возврат; КонецЕсли; ПервыйСправочник = ЭтотОбъект.РеквизитСоСылкойНаПервыйСправочник.ПолучитьОбъект(); ПервыйСправочник .ОбменДанными.Загрузка = Истина; ПервыйСправочник .ПометкаУдаления = ЭтотОбъект.ПометкаУдаления; КонецПроцедуры |
|||
18
Живой Ископаемый
14.12.15
✎
18:38
|
Ну вот что тут трудного?
|
|||
19
breezee
14.12.15
✎
18:38
|
Точно. А в перед записью лучше. Я перед записью изменяю реквизит, вызывается из другого модуля обработка, которая пред его записью изменяет и записывает мой реквизит. Но тут срабатывает процедура перед запись первого реквизита. (16) Уже всю конфу бы скинул, но все на работе осталось(
|
|||
20
Живой Ископаемый
14.12.15
✎
18:39
|
.
. . ДругойСправочник.записать(); КонецПроцедуры . . . ПервыйСправочник .записать(); КонецПроцедуры |
|||
21
breezee
14.12.15
✎
18:40
|
(20) Спасибо!
|
|||
22
breezee
14.12.15
✎
18:43
|
(20) А им потом нужно ложиь выставлять в .ОбменДанными.Загрузка?
|
|||
23
Живой Ископаемый
14.12.15
✎
18:46
|
Что?
|
|||
24
Живой Ископаемый
14.12.15
✎
18:48
|
Чувак... ОбменДанными - это не реквизит, которых хранится где-то в базе. Пока есть объект в памяти, у него есть определенное значение. Закрыл ты свою обработку или отработал твой код, и капец, они опять чистые...
Возьми лучше с полки букварь, не беси меня... |
|||
25
breezee
14.12.15
✎
18:48
|
Если ЭтотОбъект.Обменданными.загрузка Тогда
Возврат; КонецЕсли; ДругойСправочник = ЭтотОбъект.РеквизитСоСылкойНаДругойСправочник.ПолучитьОбъект(); ДругойСправочник.ОбменДанными.Загрузка = Истина; ДргоуйСправочник.ПометкаУдаления = ЭтотОбъект.ПометкаУдаления; ДругойСправочник.ОбменДанными.Загрузка = Ложь; КонецПроцедуры Он же все время будет истинным и после 1 прохода, когда я в след. раз захочу изменить пометку - он ничего не сделает |
|||
26
breezee
14.12.15
✎
18:48
|
(24) Ок, спасибо!
|
|||
27
FIXXXL
15.12.15
✎
10:17
|
сделать Спр1 владельцем Спр2
|
|||
28
Живой Ископаемый
15.12.15
✎
10:49
|
2(27)хм... Ему обоюдно нужно... два справочника могут быть друг другу владельцами?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |