8.х Выбрать партнеров по которым движений небло боьше 30 дней

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

  1. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    277
    Симпатии:
    7
    Баллы:
    29
    На выходе надо иметь.
    - Партнера,
    - Дата последней реализации,
    - Количество дней с последней реализации,
    - Ссылку на документ последней реализации.

    Я хочу сделать так.

    Код:
      Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
        |   РеализацияТоваровУслуг.Партнер,
        |   МАКСИМУМ(РеализацияТоваровУслуг.Дата) КАК Дата
        |ПОМЕСТИТЬ втПоследниеДокументы
        |ИЗ
        |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |ГДЕ
        |   РеализацияТоваровУслуг.Дата < &Дата
        |
        |СГРУППИРОВАТЬ ПО
        |   РеализацияТоваровУслуг.Партнер
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ ПЕРВЫЕ 10
        |   РеализацияТоваровУслуг.Ссылка,
        |   втПоследниеДокументы.Дата,
        |   РАЗНОСТЬДАТ(втПоследниеДокументы.Дата, &Дата, ДЕНЬ) КАК ПрошлоДней,
        |   втПоследниеДокументы.Партнер
        |ИЗ
        |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |     ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПоследниеДокументы КАК втПоследниеДокументы
        |     ПО РеализацияТоваровУслуг.Дата = втПоследниеДокументы.Дата
        |       И РеализацияТоваровУслуг.Партнер = втПоследниеДокументы.Партнер";
       Запрос.УстановитьПараметр("Дата", ТекущаяДата() - (60*60*24*30));
       РезультатЗапроса = Запрос.Выполнить();
    
    
    Есть подозрения что можно лучше.По документам это делать наверное не правильно. Создать регистр сведений: изм. Партнер, рес. Дата, рекв. ПоследнийДокумент, Непереидический. Раз обработкой заполнить. А потом в реализацию в обработку проведения Добавить/Изменить запись если дата больше той-что была по измерению партнер. И запрос делать из регистра сведений. Так пойдет?
    Последнее редактирование: 14 апр 2017
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    7.515
    Симпатии:
    452
    Баллы:
    104
    Вы все правильно сделали.
    1) Удалите после использования таблицу втПоследниеДокументы
    2) Зачем во-второй выборке пишите первые 10? У Вас там всегда будет либо 0, либо 1. Это лишнее.
    3) Думаю, Вам нужна реальная реализация, а не любый документы. Поставьте в первой выборке дополнительные условия в ГДЕ на НЕ ПометкаУдаления И Проведен
    Объясню почему оба этих условия. Один раз в моей практике был случай, когда документ оказался помеченным на удаление и имевший движения одновременно. И консоле запросов он показывал что пометкаУдаления = истина и проведен = истина. Глючнуло программку. :).
  3. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    277
    Симпатии:
    7
    Баллы:
    29
    Пробую через регистр накопления тоже самое сделать. Не пойму почему у меня образовался NULL

    Код:
    ВЫБРАТЬ ПЕРВЫЕ 10
        РасчетыСКлиентамиОстатки.АналитикаУчетаПоПартнерам.Партнер КАК Партнер,
        МАКСИМУМ(ВЫРАЗИТЬ(РасчетыСКлиентамиОстатки.ЗаказКлиента КАК Документ.РеализацияТоваровУслуг).Дата) КАК ПоследняяДата
    ПОМЕСТИТЬ втКлиентДатаДокуметов
    ИЗ
        РегистрНакопления.РасчетыСКлиентами.Остатки(&Дата, ЗаказКлиента ССЫЛКА Документ.РеализацияТоваровУслуг) КАК РасчетыСКлиентамиОстатки
    
    СГРУППИРОВАТЬ ПО
        РасчетыСКлиентамиОстатки.АналитикаУчетаПоПартнерам.Партнер,
        РасчетыСКлиентамиОстатки.ЗаказКлиента
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВЫРАЗИТЬ(РасчетыСКлиентамиОстатки.ЗаказКлиента КАК Документ.РеализацияТоваровУслуг) КАК ПоследнийДокумент,
        втКлиентДатаДокуметов.Партнер,
        втКлиентДатаДокуметов.ПоследняяДата
    ИЗ
        втКлиентДатаДокуметов КАК втКлиентДатаДокуметов
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.Остатки(&Дата, ЗаказКлиента ССЫЛКА Документ.РеализацияТоваровУслуг) КАК РасчетыСКлиентамиОстатки
            ПО (втКлиентДатаДокуметов.Партнер = ВЫРАЗИТЬ(РасчетыСКлиентамиОстатки.ЗаказКлиента КАК Документ.РеализацияТоваровУслуг).Партнер)
                И (втКлиентДатаДокуметов.ПоследняяДата = ВЫРАЗИТЬ(РасчетыСКлиентамиОстатки.ЗаказКлиента КАК Документ.РеализацияТоваровУслуг).Дата)
    [​IMG]
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    8.592
    Симпатии:
    876
    Баллы:
    204
    Потому, что документ - не РТиУ.
  5. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    277
    Симпатии:
    7
    Баллы:
    29
    Не может такого быть, так как.
    Код:
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.Остатки(&Дата, ЗаказКлиента ССЫЛКА Документ.РеализацияТоваровУслуг) 
    И во временной таблице только
    Код:
    РегистрНакопления.РасчетыСКлиентами.Остатки(&Дата, ЗаказКлиента ССЫЛКА Документ.РеализацияТоваровУслуг) КАК РасчетыСКлиентамиОстатки
    --- Объединение сообщений, 17 апр 2017 ---
    Вот с этим полем связь не сработала
    Код:
    РасчетыСКлиентамиОстатки.АналитикаУчетаПоПартнерам.Партнер КАК Партнер,
    Последнее редактирование: 17 апр 2017

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