Имя: Пароль:
1C
1С v8
регистратор у документа
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
Если это не разовая обработка, то лучше всего сделать динамический запрос. Что бы он за один раз определил отсутствие движений.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой