Версия для печати темы (https://pro1c.org.ua/index.php?s=e360144059e8880d74ad819369ddf081&showtopic=42428)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Как проверить содержат ли регистры накопления регистратор конкретного документа?

Автор: Constantus 05.12.17, 7:29

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

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

Если саму реализацию можно запретить кодом

    Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда 
        ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
    Иначе
        ОтправкаЭлемента = ОтправкаЭлементаДанных.Авто;
    КонецЕсли;


То как запретить отправку РН с этими Реализациями никак не могу поймать мысль...

В "ЭлементДанных" входят все зарегистрированные для отправки данные, в том числе и все РН, принадлежащие Реализации и не принадлежащие...

Как правильно проверить "ЭлементыДанных" на то, что это РН и в этом РН проверить есть ли там Регистратор "Реализация"?

Автор: Constantus 05.12.17, 9:11

Вот, изобрел велосипед:

    ОбъектМетаданных=ЭлементДанных.Метаданные();
    Если Метаданные.Документы.Содержит(ОбъектМетаданных) И ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.ЗаказПокупателя") Тогда
        Сообщить("Документы: "+ОбъектМетаданных + "; Тип: " + ТипЗнч(ЭлементДанных));
        ОтправкаЭлемента=ОтправкаЭлементаДанных.Игнорировать;
    ИначеЕсли Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных) И
        ТипЗнч(ЭлементДанных.Отбор.Регистратор.Значение) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
        Сообщить("РегистрыНакопления:" + ОбъектМетаданных  + "; Тип: " + ТипЗнч(ЭлементДанных) + " //Непонятно:" + ЭлементДанных.Отбор.Регистратор.Значение);        
        ОтправкаЭлемента=ОтправкаЭлементаДанных.Игнорировать;
    ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) И
        ТипЗнч(ЭлементДанных.Отбор.Регистратор.Значение) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
        Сообщить("РегистрыСведений: "+ОбъектМетаданных  + "; Тип: " + ТипЗнч(ЭлементДанных));
        ОтправкаЭлемента=ОтправкаЭлементаДанных.Игнорировать;
    КонецЕсли;


Если делаю, например "ДокументОбъект.РеализацияТоваровУслуг", то код работает, ни документов, ни РН не переносит... Если работаю с Заказами, а там имеется регистр накопления, то выдает ошибку:
Ошибка при выполнении обработчика - 'ПриОтправкеДанныхПодчиненному': {ПланОбмена.Полный.МодульОбъекта(107)}: Поле объекта не обнаружено (Регистратор)


Строка 107 это:

Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) И
ТипЗнч(ЭлементДанных.Отбор.Регистратор.Значение) = Тип("ДокументСсылка.ЗаказПокупателя")


Т.е., похоже, что к "Регистратору" регистра сведений нужно обратиться как-то по-другому...

Как поступить с Регистром сведений?

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua