Имя: Пароль:
1C
 
УРБД Как определить тип регистратора при получении набора записей из подч.
0 Ланкастер
 
11.01.07
13:50
Коллеги! Нужно знать какой документ является регистратором записей загружаемого набора записей регистра накопления. Речь идет об обработчике ПриПолученииДанныхОтПодчиненного(). Как это сделать? Особенный интерес представляет случай, когда из подчиненного узла идет документ, у которого отменили проведение.
1 ТелепатБот
 
гуру
11.01.07
13:50
2 Vahe
 
11.01.07
13:53
ОбъектМД = Метаданные.НайтиПоТипу(ТипЗнч(ЭлементДанных));
   ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМД) Тогда
       
       ДокументыТипВсеСсылки = Документы.ТипВсеСсылки();
       ТаблицаПроверки       = ЭлементДанных.Выгрузить();
       КоллекцияКолонок      = ТаблицаПроверки.Колонки;
       КоличествоКолонок     = КоллекцияКолонок.Количество();
       Для каждого СтрокаТаблицы из ТаблицаПроверки Цикл//По строкам
           Для каждого Колонка из КоллекцияКолонок Цикл//По колонкам
               ТипЗначение = ТипЗнч(СтрокаТаблицы[Колонка.Имя]);  
               Если ДокументыТипВсеСсылки.СодержитТип(ТипЗначение) Тогда
                   Если ТипЗначение <> Тип("ДокументСсылка.ПоступлениеТоваров")
                      И ТипЗначение <> Тип("ДокументСсылка.ИзменениеЦенКомпании") Тогда
                    ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
                    Возврат;
                   КонецЕсли;  
               КонецЕсли;    
           КонецЦикла;    
       КонецЦикла;    
       
   КонецЕсли;    

Чуть измени код
3 Ланкастер
 
11.01.07
13:57
Если набор идет от документа после отмены проведения, то этот набор будет пустым?
4 Ланкастер
 
11.01.07
14:25
Набор действительно пустой. Ссылка на регистратор в сообщении присутствует. Как ее прочитать-то можно в обработчике? Или никак?
5 Vahe
 
11.01.07
14:27
ТаблицаПроверки       = ЭлементДанных.Выгрузить();

Читает же. Смотри в (2)
6 avmlvm
 
11.01.07
14:29
(4) А "проведение" и "обмен" - между собой нИкак не связаны... В обработчике
"ПриПолученииДанныхОтПодчиненного()" - вы получите ВСЕ "изменнённые" документы.. и их статус (проведён или нет) - пофик... Другой вопрос "ловить" - "удалённые" документы.. И это тоже можно.. но немного иначе чем в (2)

Удачи
7 Ланкастер
 
11.01.07
14:35
(6) Получу то, что поместил в таблицу регистрации, если уж на то пошло. У меня ручная регистрация изменений. Если в подчиненном узле отменили проведение документа, то он выгружается как непроведенный и также выгружается набор записей этого документа, но он пустой, то есть самих записей там нет. В обработчике я вижу, что загружается набор записей, вижу заполнен он или пуст. А алгоритм в (2), как я понял, даст мне пустую таблицу, по типам колонок которой можно и определить сабж. Так?
8 Vahe
 
11.01.07
14:37
(6) Метаданные.РегистрыСведений.Содержит(ОбъектМД) - Это про Регистр сведений а не тип "Удаленный объект"
9 Ланкастер
 
11.01.07
15:04
(5) Нет. Только сейчас сделал. Если набор пустой, то коллекция колонок выгруженной таблицы тоже пустая. Соответственно, регистратор хрен узнаешь.
10 Vahe
 
11.01.07
15:11
(9) что то не очень понятно. Если набор выгружается то врят ли она пустая. Каким то образом набор должен идентифицироватся при выгрузке - загрузке, а идентифицируется ключевыми полями. ключевое поле в данном случии регистратор. может не пуст набор?
11 Dionisious
 
11.01.07
15:21
Дак вроде все просто:

Если .... // определим является ли ЭлементДанных регистром
Регистратор = ЭлементДанных.Отбор.Регистратор.Значение;
КонецЕсли;
12 Ланкастер
 
11.01.07
15:24
(10) Все нормально. Коллекция колонок заполнена. Это я там просто кое-что недописал. Только в случае когда выгружен пустой набор записей, я получу составной тип. То есть все типы документов, которые у меня двигают регистр. Соответственно, опять же неясно к какому типу принадлежит данный пустой набор.
(11) Сейчас попробую.
13 Ланкастер
 
11.01.07
15:31
(11) Действительно просто. Что я как-то про отбор и забыл. Возвращает тип документа даже в случае пустого набора. Dionisious, спасибо за подсказку. Помог. Удачи тебе.
2 + 2 = 3.9999999999999999999999999999999...