Имя: Пароль:
1C
1С v8
Регистр сведений последний регистратор
0 prtx
 
12.06.15
14:20
Добрый день, знатоки.
Вот я начинаю осваивать запросы, но опять тупик((

Суть задачи мне нужно на основании потребности сформировать заказ поставщику, и при этом нужно руководствоваться только последним прайсом.

Я делая следуещее:

запрос№1 - выбираю все нужные мне записи с учетом связи свой номенклатуры с номенклатурой поставщика и т.п. (углубляться не буду..)

Запрос№2 - выбираю максимальную дату регистратора(документа прайса).

Запрос№3 - левым соединение выбираю все записи из результата Запрос№1 где дата равна результату Запроса№2(т.е. максимальная дата).

Вот мой запрос:

ВЫБРАТЬ
    ПрайсыПоставщиковСрезПоследних.Поставщик КАК Поставщик,
    ПрайсыПоставщиковСрезПоследних.Код,
    Потребность.Номенклатура КАК Номенклатура,
    Потребность.КоличествоЦелое,
    ПрайсыПоставщиковСрезПоследних.ЦенаОптоваяБезНДС,
    ПрайсыПоставщиковСрезПоследних.Период КАК Период,
    ПрайсыПоставщиковСрезПоследних.Регистратор
ПОМЕСТИТЬ ТаблицаДвижений
ИЗ
    РегистрСведений.ПрайсыПоставщиков.СрезПоследних(&ТекДата, ) КАК ПрайсыПоставщиковСрезПоследних
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставляемаяНоменклатура КАК ПоставляемаяНоменклатура
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Потребность КАК Потребность
            ПО ПоставляемаяНоменклатура.Номенклатура = Потребность.Номенклатура
        ПО ПрайсыПоставщиковСрезПоследних.Код = ПоставляемаяНоменклатура.Код
            И ПрайсыПоставщиковСрезПоследних.Поставщик = ПоставляемаяНоменклатура.Поставщик
ГДЕ
    Потребность.Организация = &Организация
    И Потребность.Склад = &Склад

СГРУППИРОВАТЬ ПО
    ПрайсыПоставщиковСрезПоследних.Поставщик,
    ПрайсыПоставщиковСрезПоследних.Код,
    Потребность.Номенклатура,
    Потребность.КоличествоЦелое,
    ПрайсыПоставщиковСрезПоследних.ЦенаОптоваяБезНДС,
    ПрайсыПоставщиковСрезПоследних.Период,
    ПрайсыПоставщиковСрезПоследних.Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(ТаблицаДвижений.Период) КАК Период
ПОМЕСТИТЬ ТаблицаПериодов
ИЗ
    ТаблицаДвижений КАК ТаблицаДвижений
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаДвижений.Поставщик КАК Поставщик,
    ТаблицаДвижений.Код,
    ТаблицаДвижений.Номенклатура,
    ТаблицаДвижений.КоличествоЦелое,
    ТаблицаДвижений.ЦенаОптоваяБезНДС,
    ТаблицаДвижений.Период,
    ТаблицаДвижений.Регистратор КАК Регистратор
ИЗ
    ТаблицаПериодов КАК ТаблицаПериодов
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаДвижений КАК ТаблицаДвижений
        ПО (ТаблицаДвижений.Период = ТаблицаПериодов.Период)
ИТОГИ ПО
    Поставщик

Где моя ошибка? Не могу понять... Он мне падлюка все равно выдает все записи, т.е. я вижу что в последнем прайсе нет этой номенклатуры, она есть в предыдущих, а он мне все равно ее выдает...

зы может тут еще какие-то ошибки то исправляйте и критикуйте.

зыы сильно камнями не бросайтесь ибо это мой первый пакетный запрос или как его правильно)))
1 lEvGl
 
гуру
12.06.15
14:30
если правильно понял, то вы хотите получить срез последних, но только за какой то период? поставьте условие на срез последних Период Меджу, > < и т д
2 RomanYS
 
12.06.15
14:34
срез для того и служит собирать последние значения по всем имеющимся наборам измерений. Тебе просто надо взять ТЧ документа или его движения по регистру
3 prtx
 
12.06.15
14:50
(1) Мне вообще нужно получить всю номенклатуру из последнего прайса и на основании этого сформировать заказ.

Например:
прайс за 01.06.2015 в нем есть яблоки, груши, абрикосы

прайс за 02.06.2015 в нем есть яблоки, груши

и мне нужно получить только яблоки и груши, т.к. прайс за 01.06.2015 уже не актуален, и уже на основании того что есть в последнем прайсе сделать заказ.
4 NcSteel
 
12.06.15
14:53
(3)
Выбрать * Из
(
Выбрать
Максимум(Регистратор.МоментВремени) как МоментВремени
Из ТаблицаРегистра) Как ВложенныйЗапрос
Левое соединение ТаблицаРегистра
по ВложенныйЗапрос.МоментВремени = ТаблицаРегистра .МоментВремени

как то так.
5 prtx
 
12.06.15
15:13
(4) + в карму вам))) Спасибо, за указание верного направления!

Итак, сделал через вложенный запрос и все заработало.

Код запроса:

"ВЫБРАТЬ
                    |    ПрайсыПоставщиковСрезПоследних.Поставщик КАК Поставщик,
                    |    ПрайсыПоставщиковСрезПоследних.Код,
                    |    Потребность.Номенклатура КАК Номенклатура,
                    |    Потребность.КоличествоЦелое,
                    |    ПрайсыПоставщиковСрезПоследних.ЦенаОптоваяБезНДС
                    |ИЗ
                    |    (ВЫБРАТЬ
                    |        МАКСИМУМ(ПрайсыПоставщиков.Период) КАК Период
                    |    ИЗ
                    |        РегистрСведений.ПрайсыПоставщиков КАК ПрайсыПоставщиков) КАК ВложенныйЗапрос
                    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПрайсыПоставщиков.СрезПоследних(&ТекДата, ) КАК ПрайсыПоставщиковСрезПоследних
                    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставляемаяНоменклатура КАК ПоставляемаяНоменклатура
                    |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Потребность КАК Потребность
                    |                ПО ПоставляемаяНоменклатура.Номенклатура = Потребность.Номенклатура
                    |            ПО ПрайсыПоставщиковСрезПоследних.Код = ПоставляемаяНоменклатура.Код
                    |                И ПрайсыПоставщиковСрезПоследних.Поставщик = ПоставляемаяНоменклатура.Поставщик
                    |        ПО ВложенныйЗапрос.Период = ПрайсыПоставщиковСрезПоследних.Период
                    |ГДЕ
                    |    Потребность.Организация = &Организация
                    |    И Потребность.Склад = &Склад
                    |
                    |СГРУППИРОВАТЬ ПО
                    |    ПрайсыПоставщиковСрезПоследних.Поставщик,
                    |    ПрайсыПоставщиковСрезПоследних.Код,
                    |    Потребность.Номенклатура,
                    |    Потребность.КоличествоЦелое,
                    |    ПрайсыПоставщиковСрезПоследних.ЦенаОптоваяБезНДС
                    |ИТОГИ ПО
                    |    Поставщик"
6 prtx
 
12.06.15
15:16
(5) Сори вот окончательный запрос(там чутка лишнего было).

"ВЫБРАТЬ
                    |    ПрайсыПоставщиковСрезПоследних.Поставщик КАК Поставщик,
                    |    ПрайсыПоставщиковСрезПоследних.Код,
                    |    Потребность.Номенклатура КАК Номенклатура,
                    |    Потребность.КоличествоЦелое,
                    |    ПрайсыПоставщиковСрезПоследних.ЦенаОптоваяБезНДС
                    |ИЗ
                    |    (ВЫБРАТЬ
                    |        МАКСИМУМ(ПрайсыПоставщиков.Период) КАК Период
                    |    ИЗ
                    |        РегистрСведений.ПрайсыПоставщиков КАК ПрайсыПоставщиков) КАК ВложенныйЗапрос
                    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПрайсыПоставщиков.СрезПоследних КАК ПрайсыПоставщиковСрезПоследних
                    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоставляемаяНоменклатура КАК ПоставляемаяНоменклатура
                    |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Потребность КАК Потребность
                    |                ПО ПоставляемаяНоменклатура.Номенклатура = Потребность.Номенклатура
                    |            ПО ПрайсыПоставщиковСрезПоследних.Код = ПоставляемаяНоменклатура.Код
                    |                И ПрайсыПоставщиковСрезПоследних.Поставщик = ПоставляемаяНоменклатура.Поставщик
                    |        ПО ВложенныйЗапрос.Период = ПрайсыПоставщиковСрезПоследних.Период
                    |ГДЕ
                    |    Потребность.Организация = &Организация
                    |    И Потребность.Склад = &Склад
                    |
                    |СГРУППИРОВАТЬ ПО
                    |    ПрайсыПоставщиковСрезПоследних.Поставщик,
                    |    ПрайсыПоставщиковСрезПоследних.Код,
                    |    Потребность.Номенклатура,
                    |    Потребность.КоличествоЦелое,
                    |    ПрайсыПоставщиковСрезПоследних.ЦенаОптоваяБезНДС
                    |ИТОГИ ПО
                    |    Поставщик"