[РЕШЕНО] Проблема с запросом

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

  1. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    152
    Симпатии:
    1
    Баллы:
    29
    Добрый день.

    Подскажите , такая задача, найти всю номенклатуру, для которой не меняли цену в течении заданного периода.

    Вроде простой запрос. Но что то не работает.

    Вижу его вот так.
    Дата ставлю для примера 01/12/16

    Код:
    ВЫБРАТЬ РАЗЛИЧНЫЕ
        спрНоменклатура.Ссылка,
        ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Номенклатура, 0) КАК ПростоПоле
    ИЗ
        Справочник.Номенклатура КАК спрНоменклатура
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
            ПО спрНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
    ГДЕ
        ЦеныНоменклатурыСрезПоследних.Период >= &Период
        И ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Номенклатура, 0) = 0
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    За зачем?
    делайте через ВТ
    Первым запросом получаете номекнлатуру которую меняли за период,
    Вторым запросом делает выборку номеклатуры в условии она не та что в запросе 1

    Код:
    ВЫБРАТЬ
        ЦеныНоменклатуры.Номенклатура
    ПОМЕСТИТЬ ВТНомеклатураВПериоде
    ИЗ
        РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    ГДЕ
        ЦеныНоменклатуры.Период МЕЖДУ &Нач И &Кон
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        Номенклатура.Ссылка
    ИЗ
        Справочник.Номенклатура КАК Номенклатура
    ГДЕ
        НЕ Номенклатура.Ссылка В
                    (ВЫБРАТЬ
                        ВТНомеклатураВПериоде.Номенклатура
                    ИЗ
                        ВТНомеклатураВПериоде КАК ВТНомеклатураВПериоде)
    Miller нравится это.
  3. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    152
    Симпатии:
    1
    Баллы:
    29

    p.s.

    Вот этот текст, я так понимаю написан ручками в условии ? при конструировании запроса

    Код:
    ГДЕ
        НЕ Номенклатура.Ссылка В
                    (ВЫБРАТЬ
                        ВТНомеклатураВПериоде.Номенклатура
                    ИЗ
                        ВТНомеклатураВПериоде КАК ВТНомеклатураВПериоде)
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    почему? ручками в условии пока ничего нет можно запрос конструктором стдлать он вам там сделает текст запроска, а потом перед ним уже условие поставите
  5. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    152
    Симпатии:
    1
    Баллы:
    29
    Да, понял уже =)
    Вообщем запросы ручками тоже писать надо уметь =)

    Спасибо большое.
    Вроде все решилось.
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    Ну такие простые - однозначно.
    не за что
  7. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    152
    Симпатии:
    1
    Баллы:
    29
    Пичаль, но не работает :(
    Перечитал ваш запрос раза 3 ... вроде все понятно , но вот не понятно почему не работает.

    Код:
    ВЫБРАТЬ РАЗЛИЧНЫЕ
        ЦеныНоменклатурыСрезПоследних.Номенклатура
    ПОМЕСТИТЬ втЦены
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
    ГДЕ
        ЦеныНоменклатурыСрезПоследних.Период >= &Период
        И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        Номенклатура.Ссылка
    ИЗ
        Справочник.Номенклатура КАК Номенклатура
    ГДЕ
        Номенклатура.МЮС_ДатаСозданияКарточки >= &МЮС_ДатаСозданияКарточки
        И НЕ Номенклатура.Ссылка В
                    (ВЫБРАТЬ
                        втЦены.Номенклатура
                    ИЗ
                        втЦены КАК втЦены)
        
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    Ну невнимательно ты мой запрос читал.
    НАФИГА ТЕБЕ СРЕЗ ПОСЛЕДНИХ.
    У тебя же задача написанна "для которой не меняли цену в течении заданного периода" ПЕРИОД это вообще две даты.

    Срез же тебе дает дату изменения ВСЕЙ НОМЕКЛАТУРЫ.

    У меня в запросе просто есть РС, оттуда выбираются номеклатуры которые попадаю во временной интервал, а потом идет отбор НЕ ПО НИМ.


    У тебя же. Ты даты изменения ВСЕЙ номеклатуры.
    затем условием ЦеныНоменклатурыСрезПоследних.Период >= &Период
    ты говоришь,а оставька мне из среза номеклатуры, цена которых менялась после 01.12.16.


    Чувствуешь задача по разному звучит. у меня запрос который за период, у тебя до определенной даты
    Miller нравится это.
  9. 1с-ник
    Offline

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

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    значит недостаточно. перечитай ещё 3 раза.
    у него в примере выборка из основной таблицы, а у тебя из виртуальной "СрезПоследних"
    апдейт: опоздал =\
    Miller нравится это.
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.899
    Симпатии:
    1.035
    Баллы:
    204
    Потому что не нужно использовать СрезПоследних, а брать данные из реальной таблицы регистра сведений.
  11. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    152
    Симпатии:
    1
    Баллы:
    29

    Чую свою глупость и ошибки =) Хорошо хоть на них учаться =)

    Спасибо еще раз
    --- Объединение сообщений, 6 дек 2016 ---
    И вам спасибо =)

    Вообщем всем спасибо , за то, что отвечают на такие глупые вопросы =)