8.х Правильно ли построен запрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Bkmz, 4 авг 2017.

  1. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    430
    Симпатии:
    12
    Баллы:
    29
    Что надо сделать словами. Выбрать документы ПоступленияТоваровУслуг которые делают движения по регистру накопления. В регистре 3 измерения: Номенклатура, Склад, СчетНаОплатуПоставщика. Условие отбора Где остаток больше нуля. Я пишу так:

    Код:
    ВЫБРАТЬ ПЕРВЫЕ 20
        ПоступлениеТоваровУслугТовары.Ссылка
    ИЗ
        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.АВИС_КонтрольЗакрытияТМЦ.Остатки(, ) КАК АВИС_КонтрольЗакрытияТМЦОстатки
            ПО ПоступлениеТоваровУслугТовары.Номенклатура = АВИС_КонтрольЗакрытияТМЦОстатки.Номенклатура
                И ПоступлениеТоваровУслугТовары.Ссылка.Склад = АВИС_КонтрольЗакрытияТМЦОстатки.Склад
                И ПоступлениеТоваровУслугТовары.Ссылка.Сделка = АВИС_КонтрольЗакрытияТМЦОстатки.СчетНаОплатуПоставщика
                И (АВИС_КонтрольЗакрытияТМЦОстатки.КоличествоБухОстаток > 0)
    Правильно или нет? Мучают смутные сомнения что не правильно.
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.408
    Симпатии:
    973
    Баллы:
    204
    И (АВИС_КонтрольЗакрытияТМЦОстатки.КоличествоБухОстаток > 0) - смысла не имеет.
    Последнее редактирование: 4 авг 2017
  3. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.408
    Симпатии:
    973
    Баллы:
    204
    Либо задача не описана до конца, либо опять наворотили непонятно для чего.

    Все движения по регистру можно узнать с помощью виртуальной таблицы Обороты, даже с документом соединять не нужно.

    Для чего лазить в таблицу Остатки - я ума не приложу.
  4. AlexeyKh
    Offline

    AlexeyKh Опытный в 1С

    Регистрация:
    27 июл 2012
    Сообщения:
    148
    Симпатии:
    18
    Баллы:
    29
    очень даже имеет смысл! в результате косяков, легко могут быть отрицательные остатки! от которых автор и уходит с помощью этой команды.


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

    ВЫБРАТЬ //ПЕРВЫЕ 20
    Док.Ссылка
    ИЗ
    РегистрНакопления.АВИС_КонтрольЗакрытияТМЦ.Остатки( ) КАК Рег
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    Документ.ПоступлениеТоваровУслуг КАК Док
    ПО Док.Склад = Рег.Склад //если партия моноскладная можно это условие убрать
    И Док.Сделка = Рег.СчетНаОплатуПоставщика
    И Рег.КоличествоБухОстаток > 0
    1с-ник нравится это.
  5. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    430
    Симпатии:
    12
    Баллы:
    29
    Забыл написать это произвольный запрос динамического списка. Динамический список делается для того чтобы была доступна кнопка на основании.

    Предложенный коллегой вариант:

    Код:
    ВЫБРАТЬ
        ПоступлениеТоваровУслуг.Ссылка,
    ИЗ
        Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                АВИС_КонтрольЗакрытияТМЦОстатки.СчетНаОплатуПоставщика КАК СчетНаОплатуПоставщика,
                СУММА(АВИС_КонтрольЗакрытияТМЦОстатки.КоличествоБухОстаток) КАК КоличествоБухОстаток
            ИЗ
                РегистрНакопления.АВИС_КонтрольЗакрытияТМЦ.Остатки КАК АВИС_КонтрольЗакрытияТМЦОстатки
           
            СГРУППИРОВАТЬ ПО
                АВИС_КонтрольЗакрытияТМЦОстатки.СчетНаОплатуПоставщика
           
            ИМЕЮЩИЕ
                СУММА(АВИС_КонтрольЗакрытияТМЦОстатки.КоличествоБухОстаток) <> 0) КАК ВложенныйЗапрос
            ПО ПоступлениеТоваровУслуг.Сделка = ВложенныйЗапрос.СчетНаОплатуПоставщика
    Под запрос для группировки, а СУММА(АВИС_КонтрольЗакрытияТМЦОстатки.КоличествоБухОстаток) <> 0) наверное для контроля отрицательных
  6. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    162
    Баллы:
    104
    Если "КоличествоБухОстаток" является ресурсом, то суммирование и условие на проверку 0 избыточно, т.к. ВТ Остатки всегда вернет остаток, отличный от 0.

Поделиться этой страницей