Имя: Пароль:
1C
1С v8
РИБ, правила обмена, удаление объекта
,
0 alisto
 
11.12.13
19:01
Добрый вечер!
Уважаемые, прошу помощи.
Как можно с помощью правил регистрации исключить удаляемые объекты из регистрации?
1 alisto
 
11.12.13
19:09
В настроке правил есть обработчики "Перед оработкой", "При обработке" и т.д., все они выполняются "Перед записью объекта". Т.е. получается что объект еще не удалён из БД. Есть ли у такого (удаляемого) объекта признак что он будет удален после записи?
2 zladenuw
 
11.12.13
19:22
так вроде в обработке же обмена указывается очищать или не очищать регистрацию
3 alisto
 
11.12.13
19:24
Это понятно. Только для этого нужно обновление конфигурации. А мне бы конфу не обновлять, а правилами выкрутиться.
4 alisto
 
11.12.13
19:26
Дополнительный вопрос. Где хранится регистрация изменений (не журнал регистрации)? Можно ли к этой информации делать запрос?
5 zladenuw
 
11.12.13
19:28
(3) а при чем к конфе. это в обработке устанавливаешь в режиме предприятия.
6 alisto
 
11.12.13
19:30
(5) в обработке? Немного не понял...
Знаю есть методы плана обмена "При отправке данных подчиненному", "При отправке данных главному" .... про них речь идет?
7 zladenuw
 
11.12.13
19:34
8 alisto
 
12.12.13
12:54
Задачу решил.
Решение, на мой взгляд, не красивое, но тем не менее оно работает. Может кому пригодится.

Взял самый часто проводимый документ мигрирующий по РИБу и в правилах обмена, в обработчике "Перед обработкой" поместил следующий код:

ГлавныйУз = ПланыОбмена.ГлавныйУзел();
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    Изм.Узел,
               |    Изм.НомерСообщения,
               |    Изм.Ссылка,
               |    ВЫБОР
               |        КОГДА ЕСТЬNULL(Изм.Ссылка.Ссылка, 0) = 0
               |            ТОГДА ИСТИНА
               |        ИНАЧЕ ЛОЖЬ
               |    КОНЕЦ КАК ОбъектУдален,
               |    Изм.Ссылка.ПометкаУдаления КАК ПометкаУдаления
               |ИЗ
               |    Документ._НужныйДок_.Изменения КАК Изм
               |ГДЕ
               |    Изм.Ссылка.Ссылка ЕСТЬ NULL
               |АВТОУПОРЯДОЧИВАНИЕ";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
    ПланыОбмена.УдалитьРегистрациюИзменений(ГлавныйУз, Результат.Ссылка);    
КонецЦикла;

Где "_НужныйДок_" это название документа для которого нужно очистить регистрацию (для удаленных документов).
9 ilpar
 
12.12.13
13:01
Нафиг оно нам?

Объект в одной базе удален - в другой нет получится.
10 alisto
 
12.12.13
13:55
(9) а вдруг будет такая задача у кого нибудь.
Будет искать человек, мучаться, босс его будет прессовать, зп лишит. А так посмотрит, увидит тему на мисте, прочитает и всё сделает. Еще и премию дадут, и мне спасибо мысленно скажет. Хорошо же это... Добро делать.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.