| 
    
        
     
     | 
    
  | 
регистратор у документа | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
         
        Если это не разовая обработка, то лучше всего сделать динамический запрос. Что бы он за один раз определил отсутствие движений.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |