Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Исключить из запроса к регистру остатков и оборотов регистратора

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.