Имя: Пароль:
1C
1С v8
Запрос к регистру сведения. Местонахождения ОС
0 zladenuw
 
22.05.14
17:48
Параметры отбора МОЛ и период.

Нужно получить все ос которые были или есть на этом Моле за периода и вывести количество дней нахождения у Мола.

Как правильно сформировать запрос.

Срезом можем получить остатки на дату окончания, а вот как быть с теме что переместили в этом периоде ?
1 shuhard
 
22.05.14
17:52
(0) а при чем здесь срез последних ?
2 zladenuw
 
22.05.14
17:54
(1) еще раз прочитай "Нужно получить все ос которые были или есть на этом Моле за периода"

если они были перемещены. датой царя гороха. все равно нужно получить эту ОС
3 galimova_alsou
 
22.05.14
17:55
Не используйте срез. Используйте полный регистр.

Сначала выбираете Номенклатуру, Период, Период1
Группируете по Номенклатуре.

Потом во втором пакете ищете минимум по первому периоду и максимум по второму

Третьим пакетом высчитываете разность дат
4 zladenuw
 
22.05.14
17:58
(3) а отбор где делать ?
5 zladenuw
 
22.05.14
18:05
(3) спасибо. но тут без отбора мола.
как добавить отбор мола
6 zladenuw
 
22.05.14
18:10
решил так
всем спасибо

ВЫБРАТЬ
    МестонахождениеОС.Период,
    МестонахождениеОС.Период КАК Период1,
    МестонахождениеОС.ОсновноеСредство
ПОМЕСТИТЬ вт
ИЗ
    РегистрСведений.МестонахождениеОС КАК МестонахождениеОС

СГРУППИРОВАТЬ ПО
    МестонахождениеОС.ОсновноеСредство,
    МестонахождениеОС.Период,
    МестонахождениеОС.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вт.ОсновноеСредство,
    МИНИМУМ(вт.Период) КАК Период,
    МАКСИМУМ(вт.Период1) КАК Период1,
    ВложенныйЗапрос.МОЛ
ИЗ
    вт КАК вт
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            МестонахождениеОС.ОсновноеСредство КАК ОсновноеСредство,
            МестонахождениеОС.МОЛ КАК МОЛ
        ИЗ
            РегистрСведений.МестонахождениеОС КАК МестонахождениеОС
        ГДЕ
            МестонахождениеОС.МОЛ = &МОЛ
        
        СГРУППИРОВАТЬ ПО
            МестонахождениеОС.ОсновноеСредство,
            МестонахождениеОС.МОЛ) КАК ВложенныйЗапрос
        ПО вт.ОсновноеСредство = ВложенныйЗапрос.ОсновноеСредство

СГРУППИРОВАТЬ ПО
    вт.ОсновноеСредство,
    ВложенныйЗапрос.МОЛ
7 galimova_alsou
 
22.05.14
18:16
Отлично. Я уж про отбор не писала, т.к. мне казалось это очевидным...
Условие на МОЛ и на период, если нужно, можно сделать и в первом запросе, чтобы меньше данных обрабатывать в последующих пакетах.
8 zladenuw
 
22.05.14
18:18
мне МОЛ нужен в дальнейшем. отчет в СКД.
9 zladenuw
 
22.05.14
18:21
так. все равно не верно.

есть ОС. ее переместили только 1205 и забрали 2005

если без мола то период(минимум) когда ее переместили не важно на кого и максимум почему то дата 1205.

если делать отбор в первом пакете по молу. то минимум верный. а вот максимум нет
10 zladenuw
 
22.05.14
18:24
(9) если делаем отбор в первом пакете по молу. то максимум и минимум почему то одни и те же даты. с ОС. которые пришли к молу 12, ушли 20. а в запросе 12 ,12
11 zladenuw
 
22.05.14
22:27
получалось вот так. можно ли проще ?

ВЫБРАТЬ
    МАКСИМУМ(МестонахождениеОС.Период) КАК Период1,
    МестонахождениеОС.ОсновноеСредство,
    МестонахождениеОС.МОЛ
ПОМЕСТИТЬ втПришло
ИЗ
    РегистрСведений.МестонахождениеОС КАК МестонахождениеОС

СГРУППИРОВАТЬ ПО
    МестонахождениеОС.ОсновноеСредство,
    МестонахождениеОС.МОЛ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МестонахождениеОС.ОсновноеСредство,
    МИНИМУМ(МестонахождениеОС.Период) КАК Период,
    МестонахождениеОС.МОЛ
ПОМЕСТИТЬ вт
ИЗ
    РегистрСведений.МестонахождениеОС КАК МестонахождениеОС

СГРУППИРОВАТЬ ПО
    МестонахождениеОС.ОсновноеСредство,
    МестонахождениеОС.МОЛ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вт.ОсновноеСредство,
    ВложенныйЗапрос.МОЛ,
    вт.Период1 КАК ДатаНачало,
    вт3.Период КАК ДатаОкончания
ИЗ
    втПришло КАК вт
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            МестонахождениеОС.ОсновноеСредство КАК ОсновноеСредство,
            МестонахождениеОС.МОЛ КАК МОЛ
        ИЗ
            РегистрСведений.МестонахождениеОС КАК МестонахождениеОС
        ГДЕ
            МестонахождениеОС.МОЛ = &МОЛ
        
        СГРУППИРОВАТЬ ПО
            МестонахождениеОС.ОсновноеСредство,
            МестонахождениеОС.МОЛ) КАК ВложенныйЗапрос
            ЛЕВОЕ СОЕДИНЕНИЕ вт КАК вт3
            ПО (вт3.ОсновноеСредство = ВложенныйЗапрос.ОсновноеСредство)
                И (вт3.МОЛ <> ВложенныйЗапрос.МОЛ)
        ПО вт.ОсновноеСредство = ВложенныйЗапрос.ОсновноеСредство
            И вт.МОЛ = ВложенныйЗапрос.МОЛ
12 zladenuw
 
22.05.14
22:42
теперь нужно получить цены на каждый день ос у мола. и посчитать сумму
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.