|   |   | 
| 
 | Вложенный запрос к регистру сведений | ☑ | ||
|---|---|---|---|---|
| 0
    
        Gsoom2010 23.01.12✎ 19:36 | 
        Добрый вечер господа.
  Своим умом осилить не выходит, нужна помощь. Есть регистр сведений, переодический по регистратору, зависимый. Имеет структуру из трёх измерений: Документ Статус ПунктНахождения // и стандартные реквизиты Регистратор Дата Разные документы (регистраторы) создают движения в этом регистре, каждое движение отражает изменение Статуса по Документу, и его Местонахождение на момент изменения. Я хочу получить список всех Документов с последним "актуальным" статусом и местонахождением на дату в запросе. Судя по тому что я читал это делается вложенными запросами, но я не понял ( Книга знаний: Срез последних на каждую дату в запросе ). Могу ошибаться и тупить. Пример строк в регистре: - Накладная № 3; Оформлена; Москва; 19.01.01 - Накладная № 3; Выехала; Москва; 20.01.01 - Накладная № 3; Прибыла; Китай; 21.01.01 - Накладная № 3; Выдана; Китай; 22.01.01 - Накладная № 4; Оформлена; Москва; 17.01.01 - Накладная № 4; Выехала; Москва; 18.01.01 - Накладная № 4; Прибыла; Китай; 19.01.01 - Накладная № 4; Выдана; Китай; 23.01.01 Вот запрос на дату 20.01.01 должен мне вернуть: - Накладная № 3; Выехала; Москва; 20.01.01 - Накладная № 4; Прибыла; Китай; 20.01.01 т.е. выбрать "актуальные" на дату в запросе строки. | |||
| 1
    
        Rie 23.01.12✎ 19:38 | 
        (0) СрезПоследних именно это и вернёт, если в нём указать нужную дату.     | |||
| 2
    
        Wobland 23.01.12✎ 19:39 | 
        а что, просто СерзПоследних на период не работает?     | |||
| 3
    
        Gsoom2010 23.01.12✎ 19:40 | 
        Сред последних пробовал так:
  Запрос = Новый Запрос (" | ВЫБРАТЬ | Регистр.Статус, | Регистр.Регистратор, | Регистр.ПунктНахождения, | Регистр.Период | ИЗ РегистрСведений.РегистрПеремещений.СрезПоследних(&Дата,) КАК Регистр | ГДЕ | Регистр.Документ= &Накладная"); | |||
| 4
    
        Wobland 23.01.12✎ 19:41 | 
        (3) и что получилось?     | |||
| 5
    
        Gsoom2010 23.01.12✎ 19:42 | 
        Такой запрос выдаёт мне из:
  - Накладная № 4; Оформлена; Москва; 17.01.01 - Накладная № 4; Выехала; Москва; 18.01.01 - Накладная № 4; Прибыла; Китай; 19.01.01 - Накладная № 4; Выдана; Китай; 23.01.01 на дату 20.01.01: - Накладная № 4; Оформлена; Москва; 17.01.01 - Накладная № 4; Выехала; Москва; 18.01.01 - Накладная № 4; Прибыла; Китай; 19.01.01 | |||
| 6
    
        Wobland 23.01.12✎ 19:42 | 
        (3) Документ  в параметры вирт. таблицы засунь     | |||
| 7
    
        ssh2006 23.01.12✎ 19:44 | 
        Срез последних помог бы если бы измерением был только документ     | |||
| 8
    
        Wobland 23.01.12✎ 19:46 | 
        (7) кстати, да ;)     | |||
| 9
    
        Gsoom2010 23.01.12✎ 19:46 | 
        Как тогда сделать?     | |||
| 10
    
        Wobland 23.01.12✎ 19:47 | 
        кривое проектирование регистра?     | |||
| 11
    
        Wobland 23.01.12✎ 19:47 | 
        (9) тебе по какому статусу и пункту надо СрезПоследних?     | |||
| 12
    
        Gsoom2010 23.01.12✎ 19:49 | 
        Пока что я могу его перепроектировать если пойму в чём соль.
  Мне нужно получать список всех документов по "атуальному" статусу на дату в запросе. И тоже самое получать с фильтром по документу или по статусу | |||
| 13
    
        Чайник Рассела 23.01.12✎ 19:49 | 
        можно сделать три запроса по каждому статусу и их объединить     | |||
| 14
    
        Wobland 23.01.12✎ 19:50 | 
        имхо статус и пункт ресурсами должны быть. регистр отражает состояние документа и только, да?     | |||
| 15
    
        Gsoom2010 23.01.12✎ 19:51 | 
        Да     | |||
| 16
    
        Gsoom2010 23.01.12✎ 19:51 | 
        Логично...     | |||
| 17
    
        Classic 23.01.12✎ 19:52 | 
        (15)
  Других ресурсов нет? | |||
| 18
    
        Wobland 23.01.12✎ 19:52 | 
        (15) перепроектировывай давай ;)     | |||
| 19
    
        Чайник Рассела 23.01.12✎ 19:53 | 
        у меня такой регистр на 30 ресурсов     | |||
| 20
    
        Gsoom2010 23.01.12✎ 19:53 | 
        Ресурсов других нету.
  Уникальность записей обеспечат Регистратор и измерение Документ. А Статус и ПунктНахождения сделаю ресурсами. | |||
| 21
    
        Gsoom2010 23.01.12✎ 19:54 | 
        Когда я это сделаю запрос мой будет правильно работать? Или что-то я всё равно не догоняю?     | |||
| 22
    
        Wobland 23.01.12✎ 19:55 | 
        (21) да. период забыл в (20)     | |||
| 23
    
        Wobland 23.01.12✎ 19:56 | 
        +(22) всё-таки (6)     | |||
| 24
    
        Gsoom2010 23.01.12✎ 19:56 | 
        Период как стандартный реквизит пойдёт. А как сделать (6) ?     | |||
| 25
    
        Wobland 23.01.12✎ 19:57 | 
        (24) кнопка есть в конструкторе. вроде второй параметр в СрезеПоследних     | |||
| 26
    
        Gsoom2010 23.01.12✎ 19:58 | 
        Да я конструктор не трогаю, а то ещё взорвётся     | |||
| 27
    
        Wobland 23.01.12✎ 19:59 | 
        (26) а ничего так штучка, упрощает ;)     | |||
| 28
    
        Gsoom2010 23.01.12✎ 20:00 | 
        А без него как сделать подскажите пожалуйста?     | |||
| 29
    
        Wobland 23.01.12✎ 20:02 | 
        (28) лично мне для этого надо как минимум запустить 1Ску - лениво. стесняешься конструктора? вторая справа кнопка на среднем "подокне"     | |||
| 30
    
        JesteR 23.01.12✎ 20:03 | 
        Либо:
  Переделай структуру регистра, статус и пункт перенеси в ресурсы, тогда нормуль должно отработать. Либо: С помощью вложенного запроса вытаскивай максимальный период и документ, потом по нему и документу соединяй с рабочей таблицей. Как-то так.... | |||
| 31
    
        Wobland 23.01.12✎ 20:04 | 
        (30) да решили уже всё, читай (12)     | |||
| 32
    
        Gsoom2010 23.01.12✎ 20:07 | 
        Запрос по всем документам работает:
  Запрос = Новый Запрос (" | ВЫБРАТЬ | Регистр.Статус, | Регистр.Регистратор, | Регистр.ПунктНахождения, | Регистр.Период | ИЗ РегистрСведений.РегистрПеремещений.СрезПоследних(&Дата,) КАК Регистр"); Сейчас проверю с фильтрацией по Документу. | |||
| 33
    
        Wobland 23.01.12✎ 20:10 | 
        (32) ИЗ РегистрСведений.РегистрПеремещений.СрезПоследних(&Дата, Документ=&ТвойДокумент) КАК Регистр
  кстати, Документ - плохое слово. так, на всякий случай | |||
| 34
    
        Gsoom2010 23.01.12✎ 20:10 | 
        Всё работает, огромное спасибо.
  Документом я обозвал для вас, чтобы удобнее было читать... | |||
| 35
    
        Wobland 23.01.12✎ 20:11 | 
        +(33) я тут реквизит у документа обзывал "ПО" (программный объект), что вы думаете? не взлетело на УниверсальнойЗагрузкеXML, т.к. запрос формировался динамически и "ПО" он просто не понял ;)     | |||
| 36
    
        Gsoom2010 23.01.12✎ 20:12 | 
        ))))     | |||
| 37
    
        Gsoom2010 03.02.12✎ 18:20 | 
        Подскажите как сделать.
  Запросом я получил выборку Накладных с определённым статусом. У меня есть документ "Транспортная накладная" в одно из её табличных полей я добавляю "Накладные", но во время выбора меня интересуют не все Накладные в журнале, а только те которые я получил в запросе. Как использовать результаты запроса для такой задачи? | |||
| 38
    
        n koretsky 03.02.12✎ 19:48 | 
        Отбор не помогает?     | |||
| 39
    
        Gsoom2010 04.02.12✎ 18:01 | 
        помог :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |