Имя: Пароль:
1C
1С v8
УРИБ: Потеря данных в процессе обмена
0 eryomin
 
03.12.13
12:03
Модуль плана обмена:

Перем мЭтоПодразделение;

Функция ЭтоСвойДокумент(Док,Лом)
    мНетКонтроля = Истина;
    МетаДок = Док.Метаданные();
    
    Если МетаДок.Реквизиты.Найти("Подразделение") <> Неопределено Тогда
        мНетКонтроля = Ложь;
        Если Док.Подразделение = Отдел Тогда                        
            Возврат Истина;
        КонецЕсли;
    КонецЕсли;
    
    Если МетаДок.Реквизиты.Найти("Отправитель") <> Неопределено Тогда
        мНетКонтроля = Ложь;
        Если Док.Отправитель = Отдел Тогда                        
            Возврат Истина;
        КонецЕсли;
    КонецЕсли;
    
    Если МетаДок.Реквизиты.Найти("Получатель") <> Неопределено Тогда
        мНетКонтроля = Ложь;
        Если Док.Получатель = Отдел Тогда                        
            Возврат Истина;
        КонецЕсли;
    КонецЕсли;

    Возврат мНетКонтроля;
    
КонецФункции


Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
    мТип = ТипЗнч(ЭлементДанных);
    
    Если Лев(мТип,8)="Документ" Тогда
        Если Не ЭтоСвойДокумент(ЭлементДанных,мЭтоПодразделение) Тогда
            ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
        КонецЕсли;
        Возврат;
    КонецЕсли;        

    Если Лев(мТип,7)="Регистр" Тогда
        Если ЭлементДанных.Отбор.Найти("Регистратор") = Неопределено Тогда
        ИначеЕсли Не ЭтоСвойДокумент(ЭлементДанных.Отбор.Регистратор.Значение,мЭтоПодразделение) Тогда
            ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
        КонецЕсли;
        Возврат;
    КонецЕсли;

КонецПроцедуры

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза)    

    мТип = ТипЗнч(ЭлементДанных);
    Если Лев(мТип,8)="Документ" Тогда
        Если Не ЭтоСвойДокумент(ЭлементДанных,Подразделение) Тогда
            ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
        КонецЕсли;
        Возврат;
    КонецЕсли;        

    Если Лев(мТип,7)="Регистр" Тогда
        Если ЭлементДанных.Отбор.Найти("Регистратор") = Неопределено Тогда
        ИначеЕсли Не ЭтоСвойДокумент(ЭлементДанных.Отбор.Регистратор.Значение,Подразделение) Тогда
            ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
        КонецЕсли;
        Возврат;
    КонецЕсли;

КонецПроцедуры

мЭтоПодразделение         = РегистрыСведений.GML_НастройкаСистемыПодразделение.Получить().ПодразделениеТекущий;

Изначально в ЦБ есть документы с изменениями, зарегистрированными для всех подразделений, и они попадают в нужную ПБ. Но при следующем обмене эти документы удаляются. Почему? Что неправильно?
1 eryomin
 
03.12.13
12:05
Функция ЭтоСвойДокумент(Док,Отдел) - так правильно
Программист всегда исправляет последнюю ошибку.