Имя: Пароль:
1C
 
Правила регистрации объектов
0 cmex
 
16.04.15
15:39
Доброго дня!
Подскажите, нормальна ли следующая ситуация?
В типовых правилах регистрации объектов документы регистрируются только проведенные, а если проведенный документ пометить на удаление, то он не регистрируется. В результате при синхронизации баз, в одной базе документ может быть помечен на удаление, а в другой базе - проведен. Это нормально?
1 Naumov
 
16.04.15
15:45
не нормально.
2 cmex
 
16.04.15
15:50
(1) а как обычно в такой ситуации поступают?
3 cmex
 
16.04.15
15:52
(1) и не в курсе, чем разработчики руководствуются, когда такие правила пишут, ведь не просто же так. Может думают, что нельзя отменять проведение и удалять, если документ уже улетел? А как тогда быть?
4 Naumov
 
16.04.15
16:00
Может считают, что будет выполнено удаление помеченных и после удаления в корреспондента прилетит удаление и все само собой удалится.
5 Михаил Козлов
 
16.04.15
16:25
(0) " типовых правилах регистрации объектов документы регистрируются только проведенные": обычно регистрация делается при записи, а не при проведении.
6 cmex
 
16.04.15
16:29
(5) там "РежимЗаписи" вообще-то есть
7 Михаил Козлов
 
16.04.15
16:32
У меня в ПриЗаписи есть только Отказ.
8 cmex
 
16.04.15
16:39
(7) ПередЗаписью
9 Михаил Козлов
 
16.04.15
17:29
(8) Зачем регистрировать в ПередЗаписью?
В типовых регистрацию обычно (то, что я видел) делают в ПриЗаписи.
10 cmex
 
17.04.15
08:31
(4) странно, но у меня не регистрируются удаленные объекты, не проходят "ОбъектПрошелФильтрПравилРегистрацииПоСвойствам". Это правильно?
11 cmex
 
17.04.15
09:24
up
12 cmex
 
17.04.15
10:53
господа, вот какая штука получается:
1. проведенный объект помечаю на удаление.
2. выполняю синхронизацию и лезу в отладчик поглядеть, что там делается. При инициализации выгрузки заполняются правила по умолчанию, то есть в цикле обходятся все ПКО, и в соответствие с ключом "Тип источника" записывается правило. Правило пишется последнее встречающееся по типу источника.


Правила.Очистить();
    
    Если РежимОбмена = "Выгрузка" Тогда
    
        Для Каждого СтрокаТаблицы Из ТаблицаПравилКонвертации Цикл
            Правила.Вставить(СтрокаТаблицы.Имя, СтрокаТаблицы);

            Если СтрокаТаблицы.Источник <> Неопределено Тогда
                
                Попытка
                    Если ТипЗнч(СтрокаТаблицы.Источник) = ТипСтрока Тогда
                        Менеджеры[Тип(СтрокаТаблицы.Источник)].ПКО = СтрокаТаблицы;
                    Иначе
                        Менеджеры[СтрокаТаблицы.Источник].ПКО = СтрокаТаблицы;
                    КонецЕсли;            
                Исключение
                    ЗаписатьИнформациюОбОшибкеВПротокол(11, ОписаниеОшибки(), Строка(СтрокаТаблицы.Источник));
                КонецПопытки;
                
            КонецЕсли;

        КонецЦикла;
    
    КонецЕсли;


Затем, при обходе всех зарегистрированных объектов, еще раз проверяются правила регистрации и, если объект не проходит (а он не проходит, потому что только проведенные нужны), то он делает запись в файл обмена с типом узла "УдалениеОбъекта", а в качестве ПКО берет правило по умолчанию. Это ж косяк? Нет?
13 Naumov
 
17.04.15
11:47
(12) Нет, это фича. Задавал вопрос на партнерском, сказали, что так и задумывали.
14 cmex
 
17.04.15
13:09
Ура, победил я этот бред)) (13) а причину задуманного не раскрыли?
15 cmex
 
17.04.15
13:11
если кому интересно, напишу
16 Naumov
 
17.04.15
20:28
(14) Причина сказали в том, чтобы при  выгрузке проверялось на соответствие правилам даже зарегистрированные объекты.
Ошибка? Это не ошибка, это системная функция.