![]() |
![]() |
![]() |
|
УРБД Как определить тип регистратора при получении набора записей из подч. ₽ |
☑ | ||
---|---|---|---|---|
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, спасибо за подсказку. Помог. Удачи тебе.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |