8.х СОЕДИНЕНИЯ в запросе

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

  1. TopicStarter Overlay
    ppv
    Offline

    ppv

    Регистрация:
    12 ноя 2008
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Привет друзья!
    Я новичек, помогите пожалуйста.
    Задача такая: есть документ расходная накладная, к ней подвязан регистр накоплений.

    Делаю обработку в ней запрос, где я перебираю расходные накладные (выбираю ССЫЛКУ на накладную и СУММУ по регистру) и ЛЕВЫМ СОЕДИНЕНИЕМ пытаюсь связаться с регистром по условию. В Результате получаются двойные записи в результате запроса, одна строчка с пустым полем реквизита регистра СУММА по накладной и вторя строчка с заполненным значением СУММЫ по регистру.
    КАК можно избавиться от этого, чтобы была одна строчка?

    ТЕКСТ ЗАПРОСА:

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

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    а на...х... вообще делать такое? ) Тут выбирать док вообще не надо а только по регистру...
  3. TopicStarter Overlay
    ppv
    Offline

    ppv

    Регистрация:
    12 ноя 2008
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Спасибо за ответ. Но дело в том, документ расходная накладная не всегда делает запись в регистр, поэтому, если выбирать по регистру - попадут не все расходные накладные, а только те, что сделали запись в регистр.
  4. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Если он проведен, как он может интересно не сделать запись в регистр???
  5. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Да в любом случае нужно по регистру делать, так и легче и надежнее, и быстрее.
  6. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Я вот тоже не понял как это НЕ ВСЕ???

    Если нужен список.. то воспользуйся просто универсальным журналом документов))
  7. TopicStarter Overlay
    ppv
    Offline

    ppv

    Регистрация:
    12 ноя 2008
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    При проведении документа Расходная накладная запись в регистр не всегда выполняется, потому что зависит от условий в документе, т.е. при определенных условиях в регистр нечего записывать, поэтому и нужно сделать обычную выборку документов с реквизитом из регистра сведений.
  8. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    а зачем он вообще тогда нужен?? Если не делает движения по регистрам???
    Ну сделай просто выборку по докам... не делай по регистру... ?? Смысл задваивать запись то?
  9. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Мне больше интересно другое.
    Если есть запись в регистре и, соответственно, документ, какую запись выводить?

    Как пример:
    Код:
    ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
    РеализацияТоваровУслуг.СуммаДокумента,
    РеализацияУслуг.Регистратор,
    РеализацияУслуг.Сумма
    ИЗ
    РегистрНакопления.РеализацияУслуг КАК РеализацияУслуг
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    ПО РеализацияУслуг.Регистратор = РеализацияТоваровУслуг.Ссылка
    ГДЕ
    РеализацияТоваровУслуг.Проведен
    
    
    Ты в одну строку выводишь записи сначала по документу, потом по регистру.
    Если в регистре нет записей, поля будут пустыми. Нафига мудрить с условиями?

    У меня не УТ, поэтому для примера брал бухгалтерские документы и регистры.

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