Имя: Пароль:
1C
 
помогите прочитать верно запрос
0 lamme
 
11.01.17
16:45
как я считаю ..
запрос находит цену товаров (по документу) по последнему приходу, с учетом того - что в РС цены контрагентов цены есть и они пересчитываются по курсу на дату документа

не понимаю каким боком тут РС цены контрагентов

"ВЫБРАТЬ
                   |    &ДокументДвижения
                   |ПОМЕСТИТЬ втДокумент
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ВТ.Номенклатура,
                   |    ВТ.Количество
                   |ПОМЕСТИТЬ втТовары
                   |ИЗ
                   |    &ВТ КАК ВТ
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    втТовары.Номенклатура,
                   |    СУММА(втТовары.Количество) КАК Количество
                   |ПОМЕСТИТЬ втТоварыСгруппированы
                   |ИЗ
                   |    втТовары КАК втТовары
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    втТовары.Номенклатура
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ ПЕРВЫЕ 1
                   |    ПартииТоваровНаСкладах.Номенклатура,
                   |    МАКСИМУМ(ПартииТоваровНаСкладах.Регистратор.Дата) КАК РегистраторДата
                   |ПОМЕСТИТЬ втПоследнийРегистратор
                   |ИЗ
                   |    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
                   |ГДЕ
                   |    ПартииТоваровНаСкладах.ВидДвижения = &Приход
                   |    И ПартииТоваровНаСкладах.Номенклатура В
                   |            (ВЫБРАТЬ
                   |                Т.Номенклатура
                   |            ИЗ
                   |                втТоварыСгруппированы КАК Т)
                   |    И ПартииТоваровНаСкладах.Склад = &Склад
                   |    И ПартииТоваровНаСкладах.Стоимость > 0
                   |    И ПартииТоваровНаСкладах.Количество > 0
                   |    И ПартииТоваровНаСкладах.Регистратор.Дата < &ДатаПродажи
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ПартииТоваровНаСкладах.Номенклатура
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    втПоследнийРегистратор.Номенклатура,
                   |    МАКСИМУМ(ПартииТоваровНаСкладах.Стоимость / ПартииТоваровНаСкладах.Количество) КАК Цена
                   |ПОМЕСТИТЬ втЦены
                   |ИЗ
                   |    втПоследнийРегистратор КАК втПоследнийРегистратор
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
                   |        ПО втПоследнийРегистратор.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
                   |            И втПоследнийРегистратор.РегистраторДата = ПартииТоваровНаСкладах.Регистратор.Дата
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    втПоследнийРегистратор.Номенклатура
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ТипыЦенНоменклатурыКонтрагентов.Ссылка КАК ТипЦен
                   |ПОМЕСТИТЬ втТипыЦен
                   |ИЗ
                   |    Справочник.ТипыЦенНоменклатурыКонтрагентов КАК ТипыЦенНоменклатурыКонтрагентов
                   |ГДЕ
                   |    НЕ ТипыЦенНоменклатурыКонтрагентов.ПометкаУдаления
                   |    И ТипыЦенНоменклатурыКонтрагентов.Владелец = &Контрагент
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    втЦены.Номенклатура,
                   |    втЦены.Цена КАК ЦенаПоступления,
                   |    втДокумент.ДокументДвижения КАК ДокументПродажи,
                   |    ЕСТЬNULL(втТоварыСгруппированы.Количество, 0) КАК Количество,
                   |    ВЫБОР
                   |        КОГДА ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта <> &Рубль
                   |            ТОГДА ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена * КурсыВалютСрезПоследних.Курс
                   |        ИНАЧЕ ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена
                   |    КОНЕЦ КАК ЦенаИзЗакупки
                   |ИЗ
                   |    втЦены КАК втЦены
                   |        ЛЕВОЕ СОЕДИНЕНИЕ втТоварыСгруппированы КАК втТоварыСгруппированы
                   |        ПО втЦены.Номенклатура = втТоварыСгруппированы.Номенклатура
                   |        ЛЕВОЕ СОЕДИНЕНИЕ втДокумент КАК втДокумент
                   |        ПО (ИСТИНА)
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(
                   |                &ДатаПродажи,
                   |                ТипЦен В
                   |                    (ВЫБРАТЬ
                   |                        Т.ТипЦен
                   |                    ИЗ
                   |                        втТипыЦен КАК Т)) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
                   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПродажи, ) КАК КурсыВалютСрезПоследних
                   |            ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта
                   |        ПО втЦены.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура";
1 Kolls
 
11.01.17
16:49
"не понимаю каким боком тут РС цены контрагентов " могу предположить, что целью было сравнение факт. цен прихода с заявленными прайсовыми поставщиков
2 Kolls
 
11.01.17
16:50
только вот пакет "втПоследнийРегистратор" вернет  1 запись, и след. пакет "втЦены" как следствие тоже 1 запись, а не список из ТЧ документа
3 lamme
 
11.01.17
16:52
там я уже баловался
поставил лишнее
   |ВЫБРАТЬ ПЕРВЫЕ 1
                   |    ПартииТоваровНаСкладах.Номенклатура,
4 lamme
 
11.01.17
16:52
лишнее - первые 1
5 lamme
 
11.01.17
16:53
те если цена отличается от заявленной поставщиком - то такая запись не найдется
6 Kolls
 
11.01.17
16:57
(5) нет, если убрать "первые 1" то найдутся все из документа, но куда тут далее идет запрос? если в скд, то там отбор может быть навешен, или в ТЗ и обходом далее идет какое либо сравнение, на выходе этого запроса будет просто список номенклатуры, с двумя ценами из партий и контрагентов. зачем правда на выходе "втДокумент.ДокументДвижения КАК ДокументПродажи" если он и так идет параметром, непонятно
7 lamme
 
11.01.17
16:59
в ТЗ
на выходе - товар/колво/цена/дата

все
8 lamme
 
11.01.17
17:00
спасибо
общая идея понятна

зачем только так сложно
дергать РН Партиитоваров - долго .. слабое место
9 Kolls
 
11.01.17
17:00
(7) смотри лучше, должна быть еще "ЦенаИзЗакупки"
10 lamme
 
11.01.17
17:04
да. правильно. а еще и "валюта"
11 lamme
 
11.01.17
17:05
(9)
Спасибо