8.х Запрос: объединение даты докум и параматра витруал таблицы

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем privet20044, 13 дек 2010.

  1. TopicStarter Overlay
    privet20044
    Offline

    privet20044

    Регистрация:
    13 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток, форумчане!!!
    Появилась небольшая проблема, а с ней и вопрос. Предыстория:
    Есть справочник "Автотранспорт": Тип машины и его гос номер. Есть регистр сведений с историей гос номеров (предполагается что гос номера меняются раз в 2-3 месяца). Смена номера происходит в справочнике, причем старый номер записывается в регистр, а текущий сохраняется в справочнике. Есть документ, в котором указывается машина (без гос номера) и ее маршрут. Необходимо создать отчет по маршрутам и используемым машинам. Вопрос: Как в отчете указать гос номер на дату документа. Т.е. если более просто рассмотреть ситуацию: в отчете должны быть дата документа, тип машины и ее гос номер, который вычисляется на дату документа. Как видится простое решение проблемы - это в параметре виртуальной таблицы указать "Период" как ДокументДата. Но ... нельзя. Указание в условии ГДЕ тоже дает неправильный результат. Подскажите пожалуста, как можно сделать. Или может как то все по другому сделать? Спасибо
  2. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Эммм... поясните смысл записывать текущее значение в справочник, а старые сохранять в РС? Почему нельзя все хранить в РС, смысл справочника?

    Если переделаете, так чтобы все хранилось в РС, то вот вам:
    http://www.1c-pro.ru/index.php?showtopic=26121
    http://www.1c-pro.ru/index.php?showtopic=2...mp;#entry113263
    1-я тема - идея.
    2-я тема - практическая реализация.
  3. TopicStarter Overlay
    privet20044
    Offline

    privet20044

    Регистрация:
    13 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Спасибо за ответ! Справочник нужен, тк там еще куча информации, но присвоить значение справочника не проблема. Проанализировав приведенные ссылки, пересмотрел запрос и пришел к решению:
    В связи указать
    РегистрСведений.ГосНомера КАК ГосНомера
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоМашинам КАК ПоМашинам
    ПО ПоМашинам.Машина = ГосНомера.Машина
    И (ПоМашинам.Дата > ГосНомера.Период)

    Но ... выдает все записи где (ПоМашинам.Дата > ГосНомера.Период), а нужна одна. Можно сделать ВЫБРАТЬ ПЕРВЫЕ 1 (с предварительным упорядовачиванием), это работает, если указать один документ. А нужен список документов. Вот не знаю как получить этот список с одной записью для каждого документа :angry:
  4. TopicStarter Overlay
    privet20044
    Offline

    privet20044

    Регистрация:
    13 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Выдает
    Док1__Маш1__Ном1
    Док1__Маш1__Ном2
    Док2__Маш2__Ном4

    А нужно
    Док1__Маш1__Ном1
    Док2__Маш2__Ном4
  5. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Эм. Плохо прочитали.
    Полный текст запроса приведите.
  6. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Метаданные ваши не знаю, как-то так должно быть.
    Код:
    "ВЫБРАТЬ
    ГосНомера.Период КАК ПериодНачало,
    МИНИМУМ(ГосНомераКопия.Период) КАК ПериодКонец,
    ГосНомера.Машина,
    ГосНомера.ГосНомер
    ПОМЕСТИТЬ ПредварительнаяВыборка
    ИЗ
    РегистрСведений.ГосНомера КАК ГосНомера
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГосНомера КАК ГосНомераКопия
    ПО ГосНомера.Машина = ГосНомераКопия.Машина
    И ГосНомера.Период < ГосНомераКопия.Период
    </span>
    СГРУППИРОВАТЬ ПО
    ГосНомера.Период,
    ГосНомера.Машина,
    ГосНомера.ГосНомер
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    НомераПоПериодам.ПериодНачало КАК ПериодНачало,
    КОНЕЦПЕРИОДА(ЕСТЬNULL(ДОБАВИТЬКДАТЕ(НомераПоПериодам.ПериодКонец, ДЕНЬ, -1), ДАТАВРЕМЯ(3999, 12, 31)), ДЕНЬ) КАК ПериодКонец,
    НомераПоПериодам.Машина КАК Машина,
    НомераПоПериодам.ГосНомер
    ПОМЕСТИТЬ Номера
    ИЗ
    ПредварительнаяВыборка КАК НомераПоПериодам
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ПоМашинам.Дата КАК ДатаДок,
    ПоМашинам.Машина КАК Машина,
    Номера.ГосНомер КАК ГосНомер
    ИЗ
    Документ.ПоМашинам КАК ПоМашинам
    ЛЕВОЕ СОЕДИНЕНИЕ Номера КАК Номера
    ПО ПоМашинам.Машина = Номера.Машина
    И ПоМашинам.Период >= Номера.ПериодНачало
    И ПоМашинам.Период <= Номера.ПериодКонец
    
    УПОРЯДОЧИТЬ ПО
    ДатаДок"
    </FONT></FONT></pre>
  7. TopicStarter Overlay
    privet20044
    Offline

    privet20044

    Регистрация:
    13 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Спасибо! Сейчас опробую

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