Имя: Пароль:
1C
1С v8
Конвертация данных. Правила регистрации.
0 Oleg-and-reevich
 
19.08.15
10:16
Доброго времени суток. Есть БП3.0 распределенная информационная база.
Корень, от него подчиненный узел, от подчиненного узла свой подчиненный узел. Из последнего подчиненного данные обратно не идут(в правилах регистрации прописано отказ = истина перед выгрузкой).
В последний подчиненный узел тоже не все должны данные идти. Вопрос: как в обработчике условие прописать и что с чем сравнить? Попробовал так
Если Приемник.ПланыОбмена.Полный.НайтиПоНаименованию("Склад") Тогда
    Отказ = Истина;
КонецЕсли;
Чушь, наверное. Подскажите пожалуйста, в каком направлении двигаться.
1 Oleg-and-reevich
 
20.08.15
18:11
Если вдруг кому понадобится. В обработчике "После обработки" добавить следующий код, например:

Для Каждого Узел Из Получатели Цикл
    Если Узел.Наименование = "Склад" Тогда
        Отказ = Истина;
    КонецЕсли;
КонецЦикла;

Вообще здесь собственная невнимательность, плохо смотрел в информацию по обработчикам в конвертации данных.
2 Oleg-and-reevich
 
07.09.15
09:17
То, что было описано выше не работает. Но нашел все-таки как решить. Чтобы к примеру перенести только один документ "Поступление" в обработчике "После обработки" всех документов пишем:

Для Каждого Узел Из Получатели Цикл
   Если Узел.Наименование = "ПодчиненныйУзел" Тогда
      Если НЕ ТипЗнч(Объект.Ссылка) = ТипЗнч(Документы.ПоступлениеТоваровУслуг.ПустаяСсылка()) Тогда
         Массив = Новый Массив;
         Массив.Добавить(Получатели[Получатели.Найти(ПланыОбмена.Полный.НайтиПоНаименованию("Корень"))]);
       Получатели.Очистить();
       Получатели.Добавить(Массив[0]);
      КонецЕсли;    
   КонецЕсли;
КонецЦикла;

Чтобы данные регистров шли только по этому документу, в обработчике "После обработки" регистров пишем:

Для Каждого Узел Из Получатели Цикл
   Если Узел.Наименование = "ПодчиненныйУзел" Тогда
      Если НЕ ТипЗнч(Объект.Отбор.Регистратор.Значение) = ТипЗнч(Документы.ПоступлениеТоваровУслуг.ПустаяСсылка()) Тогда
     Массив = Новый Массив;
     Массив.Добавить(Получатели[Получатели.Найти(ПланыОбмена.Полный.НайтиПоНаименованию("Корень"))]);
     Получатели.Очистить();
     Получатели.Добавить(Массив[0]);
      КонецЕсли;    
   КонецЕсли;
КонецЦикла;

Есть стандартные процедуры, которые можно вызывать из обработчиков правил регистрации такие как "Сократить получателей", "Добавить получателей". Но они не сработали(возможно созданы не для таких целей).