|
регистратор у документа | ☑ | ||
---|---|---|---|---|
0
Vvvvv
14.07.14
✎
14:39
|
надо программно узнать, есть ли движения по документу в регистрах. Написал код, вроде работает. В коде программно указывается регист.
А можно как то переделать, этот код, чтобы перебирался не один регист, а несколько. Пытался переделать, не получилось. Что бы знать по каким регистрам нет записи НаборЗаписей = РегистрыНакопления.ПартииТоваровКомпании.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Ссылка); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда // Возврат; Сообщить("Пустой "); Сообщить(Выборка.Ссылка); КонецЕсли; |
|||
1
anatoly
14.07.14
✎
14:42
|
обход метаданных?
|
|||
2
kosts
14.07.14
✎
14:42
|
ДокументОбъект.<Имя документа>.Движения (DocumentObject.<Имя документа>.RegisterRecords)
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>) Движения (RegisterRecords) Использование: Только чтение. Описание: Тип: КоллекцияДвижений. Предоставляет доступ к коллекции наборов записей движений документа. Свойства коллекции содержат наборы записей движений документа, которые включены для данного документа в конфигурации. Имена свойств совпадают с именами объектов конфигурации, по которым могут совершаться движения, как они заданы в конфигураторе. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
3
Vvvvv
14.07.14
✎
14:45
|
(1) что это?
|
|||
4
Vvvvv
14.07.14
✎
14:46
|
думал изменить как то так, но вариант, в переменную запихнуть какие то значения
НаборЗаписей = РегистрыНакопления[Переменная].СоздатьНаборЗаписей(); |
|||
5
barrgand
14.07.14
✎
14:48
|
(4) Конечная цель какая?
|
|||
6
Vvvvv
14.07.14
✎
14:51
|
(5) надо определить у каких документов нет движения
|
|||
7
Ganiev
14.07.14
✎
14:55
|
по всем регистрам или только по по определенному списку регистров?
|
|||
8
anatoly
14.07.14
✎
14:55
|
(3) открой СП, глобальный контекст - метаданные.
вобщем примерно так: Для Каждого Документ Из Метаданные.Документы Цикл ... |
|||
9
anatoly
14.07.14
✎
14:56
|
+ (8) ну то есть не документы конечно, это я просто скопипастил код...
|
|||
11
Лефмихалыч
14.07.14
✎
14:57
|
ТекстЗапроса = "";
Для каждого метаданныеНабора из СсылкаНаДокумент.Метаданные().Движения Цикл ТекстЗапроса = ТекстЗапроса + Символы.ПС + "ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ "+метаданныеНабора.ПолноеНаименование()+" ГДЕ Регистратор = &Ссылка"; КонецЦикла; ТекстЗапроса = СтрЗаменить(СокрЛП(ТекстЗапроса), Символы.ПС, " ОБЪЕДИНИТЬ ВСЕ "); обработать напильником, ибо написано на коленке |
|||
12
mikecool
14.07.14
✎
14:57
|
(6) прочитать коллекцию Движения документа
|
|||
13
Рэйв
14.07.14
✎
15:04
|
Об=ДокСсылка.ПолучитьОбъект();
Кол=0; Для Каждого ДвижениеИз Об.Движения Цикл Кол=Кол+Движение.количество(); КонецЦикла; Если Кол=0 Тогда Сообщить("Движений нет"); Иначе Сообщить("Движения есть "); КонецЕсли; |
|||
14
Vvvvv
14.07.14
✎
15:04
|
(8) это не подходит, это просто переберет все регистры, а обратиться не получится
|
|||
15
Михаил Козлов
14.07.14
✎
15:05
|
Если документ - регистратор для регистра, это не означает, что он обязан иметь по нему движения.
|
|||
16
barrgand
14.07.14
✎
15:07
|
(15) Это к чему?
|
|||
17
Лефмихалыч
14.07.14
✎
15:07
|
(13) во-первыз, без Прочитать() не взлетит. Во-вторых, с Прочитать() - это запрос в цикле, а за это в приличном обчестве канделябрами отоваривают
|
|||
18
barrgand
14.07.14
✎
15:08
|
(6) Я за запрос
|
|||
19
Рэйв
14.07.14
✎
15:08
|
(17)Да ладно!:-) Не надо быть столь зашоренным консерватором. Иногда и запрос в цикле уместен.
|
|||
20
Vvvvv
14.07.14
✎
15:16
|
(13) в этом случае переменная Кол всегда будет 0
|
|||
21
Рэйв
14.07.14
✎
15:21
|
(20)Да, .Прочитать() забыл.
|
|||
22
kosts
14.07.14
✎
15:40
|
Если это не разовая обработка, то лучше всего сделать динамический запрос. Что бы он за один раз определил отсутствие движений.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |