Имя: Пароль:
1C
1С v8
Исключить из запроса к регистру остатков и оборотов регистратора
0 squall84
 
01.04.20
16:32
Есть самописный отчет. Запрос состоит из нескольких временных таблиц, но меня интересует только запрос одной из них, который получает неверные данные.
Если таким запросом я обращаюсь к регистру, то получаю начальный количество и стоимость прихода не ту, которая установлена в документе оприходования. В моем случае документ оприходования - это поступление товаров. Т.е. я получаю сумму некоторых документов регистраторов. А мне нужно получить данные именно самого поступления. Вот запрос:

ВЫБРАТЬ
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура,
    СУММА(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход) КАК Количество,
    СРЕДНЕЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СтоимостьПриход) КАК Сумма,
    СУММА(ВЫБОР
            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход, 0) <> 0
                ТОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СтоимостьПриход, 0) / ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход, 0)
            ИНАЧЕ ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СтоимостьПриход, 0)
        КОНЕЦ) КАК Цена,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования.Контрагент КАК Контрагент,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СерияНоменклатуры
ПОМЕСТИТЬ ВТПоступления
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&Дата1, &Дата2, , , СерияНоменклатуры.Импорт = ИСТИНА) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты
ГДЕ
    ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования) = ТИП(Документ.ПоступлениеТоваровУслуг)

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

В регистре добавил периодичность по регистратору, и указал, что регистратор - это поступление. Показывает теперь вроде так, как нужно, но насколько это корректно? Возможно нужно по другому делать?

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

ВЫБРАТЬ
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура,
    СУММА(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход) КАК Количество,
    СРЕДНЕЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СтоимостьПриход) КАК Сумма,
    СУММА(ВЫБОР
            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход, 0) <> 0
                ТОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СтоимостьПриход, 0) / ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход, 0)
            ИНАЧЕ ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СтоимостьПриход, 0)
        КОНЕЦ) КАК Цена,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования.Контрагент КАК Контрагент,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СерияНоменклатуры
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , СерияНоменклатуры.Импорт = ИСТИНА) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты
ГДЕ
    ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования) = ТИП(Документ.ПоступлениеТоваровУслуг)
    И ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг

СГРУППИРОВАТЬ ПО
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования.Контрагент,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СерияНоменклатуры
1 ДенисЧ
 
01.04.20
16:33
Исчо один, желающий остатков по виду документа...
2 Cyberhawk
 
01.04.20
16:37
(1) Документы однозначно расположены на временной оси, поэтому в сием желании ничего крамольного нет
3 squall84
 
01.04.20
16:43
(1) А каким образом мне тогда получить из регистра партий чистый приход по документу?
4 ДенисЧ
 
01.04.20
16:45
(3) Приход получай из .Обороты() Остатки - из Остатки().
Не надо делать котлету из рябчика и коня...
5 squall84
 
01.04.20
16:54
(4) Так и в остатках и в оборотах тоже нет регистратора. И выдают они мне тоже не те данные, что мне нужны. Т.е. и по ним чистого прихода получить я не могу. Я уже проверял.
6 ДенисЧ
 
01.04.20
16:55
(5) В остатках регистратора нет.
В оборотах есть.
7 squall84
 
01.04.20
17:14
(6) Нет у меня там регистратора, там вообще нет реквизитов. Только в непериодическом регистре партий. Чтобы в оборотах или остатках он у меня появился нужно, включить периодичность по регистратору, как я делал во втором запросе. Об этом и был вопрос - корректно так делать или нет.
8 ДенисЧ
 
01.04.20
18:57
(7) А у меня есть... У тебя неправильный регистр... Хочешь, продам правильный? )))
9 ДенисЧ
 
01.04.20
18:58
(7) "Об этом и был вопрос - корректно так делать или нет."
Я сказал, как правильно - остатки из остатков... и так далее