Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 15:53

Отбор при объединении запросов в СКД

Автор Golickoff, 13 апр 2015, 12:01

0 Пользователей и 1 гость просматривают эту тему.

Golickoff

Всем привет. Объединяю три запроса из документов при помощи СКД. Во втором и третьем запросе из объединения необходимо выбрать только те документы, которые проводились на основании документов из первого запроса. Делаю это следующим образом:
ВЫБРАТЬ
ОтчетКомитентуОПродажах.Ссылка КАК Ссылка,
ОтчетКомитентуОПродажах.Дата КАК ДатаИзмененияДолга,
ОтчетКомитентуОПродажах.ДолгКомитенту КАК Долг
ИЗ
Документ.ОтчетКомитентуОПродажах КАК ОтчетКомитентуОПродажах

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ПлатежноеПоручение.Ссылка,
ПлатежноеПоручение.Дата,
ПлатежноеПоручение.СуммаДокумента
ИЗ
Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
ГДЕ
ПлатежноеПоручение.ДокументОснование = &ОтчетКомитентуОПродажах

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
РасходныйКассовыйОрдер.Ссылка,
РасходныйКассовыйОрдер.Дата,
РасходныйКассовыйОрдер.СуммаДокумента
ИЗ
Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
ГДЕ
РасходныйКассовыйОрдер.ДокументОснование = &ОтчетКомитентуОПродажах

То есть, мне необходимы все документы ОтчетКомитентуОПродажах и только те документы ПлатежноеПоручение и РасходныйКассовыйОрдер, которые были проведены на основании документа ОтчетКомитентуОПродажах, однако при выполнении запроса я получаю список всех документов ОтчетКомитентуОПродажах , ПлатежноеПоручение и РасходныйКассовыйОрдер. Пробовал установить параметры запроса ГДЕ
ПлатежноеПоручение.ДокументОснование = &Ссылка
и ГДЕ
РасходныйКассовыйОрдер.ДокументОснование = &Ссылка
но так же получал список всех документов перечисленных в запросе типов. Что я делаю неправильно?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

1. Запрос к отчетам, помещаем во временную таблицу
2. Главный запрос:
    ВТ_Отчеты
    Объединить
    ПлатПор     (с отбором "ДокументОснование В (ВЫБРАТЬ ВТ.ссылка Из ВТ_Отчеты КАК ВТ)")
    Объединить
    РКО         (с отбором "ДокументОснование В (ВЫБРАТЬ ВТ.ссылка Из ВТ_Отчеты КАК ВТ)")
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Golickoff

Я пока не углублялся в запросы, поэтому конструкция (с отбором " мне незнакома и, само собой, я написал некорректный запрос. Я пытался найти что-то похожее в сети, но безуспешно и поэтому не смог разобраться. Сейчас "запрос" выглядит следующим образом и выдаёт ошибку Ожидается выражение "ВЫБРАТЬ", вежливо указывая на строку "Документ.ПлатежноеПоручение (с отбором "..."ВЫБРАТЬ
ВнешнаяяТаблицаОтчетов.ОтчетКомитенту.Ссылка КАК Ссылка,
ВнешнаяяТаблицаОтчетов.ОтчетКомитенту.Дата КАК ДатаИзмененияДолга,
ВнешнаяяТаблицаОтчетов.ОтчетКомитенту.ДолгКомитенту КАК Долг
ИЗ
&ВнешнаяяТаблицаОтчетов КАК ВнешнаяяТаблицаОтчетов

ОБЪЕДИНИТЬ
Документ.ПлатежноеПоручение (с отбором "ДокументОснование В (ВЫБРАТЬ ВнешнаяяТаблицаОтчетов.ссылка Из ВнешнаяяТаблицаОтчетов_Отчеты КАК ВТ)")
Объединить
Документ.РасходныйКассовыйОрдер (с отбором "ДокументОснование В (ВЫБРАТЬ ВнешнаяяТаблицаОтчетов.ссылка Из ВнешнаяяТаблицаОтчетов_Отчеты КАК ВТ)")
Не могли бы вы объяснить часть с объединениями немного подробнее, чтобы я смог найти и исправить ошибки?
На всякий случай добавлю: часть строки, содержащая данный текст "ДокументОснование В (ВЫБРАТЬ ВнешнаяяТаблицаОтчетов.ссылка Из ВнешнаяяТаблицаОтчетов_Отчеты КАК ВТ)", выделена красным цветом. Не знаю, нормально ли это.
Добавлено: 14 апр 2015, 04:09


Вот я чайник :bleh: Сейчас исправлю.
Добавлено: 14 апр 2015, 04:35


Текст запроса: ВЫБРАТЬ
ВнешняяТаблицаОтчетов.ОтчетКомитенту.Ссылка КАК Ссылка,
ВнешняяТаблицаОтчетов.ОтчетКомитенту.Дата КАК ДатаИзмененияДолга,
ВнешняяТаблицаОтчетов.ОтчетКомитенту.ДолгКомитенту КАК Долг
ИЗ
&ВнешняяТаблицаОтчетов КАК ВнешняяТаблицаОтчетов

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ПлатежноеПоручение.Ссылка,
ПлатежноеПоручение.Дата,
ПлатежноеПоручение.СуммаДокумента
ИЗ
Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
ГДЕ
ПлатежноеПоручение.ДокументОснование В
(ВЫБРАТЬ
ВТ.Ссылка
ИЗ
ВнешняяТаблицаОтчетов КАК ВТ)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
РасходныйКассовыйОрдер.Ссылка,
РасходныйКассовыйОрдер.Дата,
РасходныйКассовыйОрдер.СуммаДокумента
ИЗ
Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
ГДЕ
РасходныйКассовыйОрдер.ДокументОснование В
(ВЫБРАТЬ
ВТ.Ссылка
ИЗ
ВнешняяТаблицаОтчетов КАК ВТ)
Ошибка: "Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
Содержимое объекта данных может быть выбрано только во временную таблицу
"
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

перед запросом надо вставить вот это:

ВЫБРАТЬ
    ОтчетКомитентуОПродажах.Ссылка КАК Ссылка,
    ОтчетКомитентуОПродажах.Дата КАК ДатаИзмененияДолга,
    ОтчетКомитентуОПродажах.ДолгКомитенту КАК Долг
ПОМЕСТИТЬ ВнешняяТаблицаОтчетов
ИЗ
    Документ.ОтчетКомитентуОПродажах КАК ОтчетКомитентуОПродажах
;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Golickoff

Вот так работает:
ВЫБРАТЬ
    ОтчетКомитентуОПродажах.Ссылка КАК Ссылка,
    ОтчетКомитентуОПродажах.Дата КАК ДатаИзмененияДолга,
    ОтчетКомитентуОПродажах.СуммаДокумента КАК Долг
ПОМЕСТИТЬ ВнешняяТаблицаОтчетов
ИЗ
    Документ.ОтчетКомитентуОПродажах КАК ОтчетКомитентуОПродажах
;
ВЫБРАТЬ
    ВнешняяТаблицаОтчетов1.Ссылка КАК Ссылка,
    ВнешняяТаблицаОтчетов1.Дата КАК ДатаИзмененияДолга,
    ВнешняяТаблицаОтчетов1.ДолгКомитенту КАК Долг
ИЗ
    Документ.ОтчетКомитентуОПродажах КАК ВнешняяТаблицаОтчетов1
ГДЕ
ВнешняяТаблицаОтчетов1.Проведен

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПлатежноеПоручение.Ссылка,
    ПлатежноеПоручение.Дата,
    ПлатежноеПоручение.СуммаДокумента
ИЗ
    Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
ГДЕ
    ПлатежноеПоручение.ДокументОснование В
            (ВЫБРАТЬ
                ВТ.Ссылка
            ИЗ
                ВнешняяТаблицаОтчетов КАК ВТ) И ПлатежноеПоручение.Проведен

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    РасходныйКассовыйОрдер.Ссылка,
    РасходныйКассовыйОрдер.Дата,
    РасходныйКассовыйОрдер.СуммаДокумента
ИЗ
    Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
ГДЕ
    РасходныйКассовыйОрдер.ДокументОснование В
            (ВЫБРАТЬ
                ВТ.Ссылка
            ИЗ
                ВнешняяТаблицаОтчетов КАК ВТ) И РасходныйКассовыйОрдер.Проведен

Большое спасибо за помощь.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

А так? ;)
Как говорится найдите 10 отличий... :bleh:

ВЫБРАТЬ
    ОтчетКомитентуОПродажах.Ссылка КАК Ссылка,
    ОтчетКомитентуОПродажах.Дата КАК ДатаИзмененияДолга,
    ОтчетКомитентуОПродажах.СуммаДокумента КАК Долг
ПОМЕСТИТЬ ВнешняяТаблицаОтчетов
ИЗ
    Документ.ОтчетКомитентуОПродажах КАК ОтчетКомитентуОПродажах
;
ВЫБРАТЬ
    ВнешняяТаблицаОтчетов1.Ссылка КАК Ссылка,
    ВнешняяТаблицаОтчетов1.Дата КАК ДатаИзмененияДолга,
    ВнешняяТаблицаОтчетов1.ДолгКомитенту КАК Долг
ИЗ
    ВнешняяТаблицаОтчетов КАК ВнешняяТаблицаОтчетов1
ГДЕ
    ВнешняяТаблицаОтчетов1.Проведен

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПлатежноеПоручение.Ссылка,
    ПлатежноеПоручение.Дата,
    ПлатежноеПоручение.СуммаДокумента
ИЗ
    Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
ГДЕ
    ПлатежноеПоручение.ДокументОснование В
            (ВЫБРАТЬ
                ВТ.Ссылка
            ИЗ
                ВнешняяТаблицаОтчетов КАК ВТ) И ПлатежноеПоручение.Проведен

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    РасходныйКассовыйОрдер.Ссылка,
    РасходныйКассовыйОрдер.Дата,
    РасходныйКассовыйОрдер.СуммаДокумента
ИЗ
    Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
ГДЕ
    РасходныйКассовыйОрдер.ДокументОснование В
            (ВЫБРАТЬ
                ВТ.Ссылка
            ИЗ
                ВнешняяТаблицаОтчетов КАК ВТ) И РасходныйКассовыйОрдер.Проведен
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Golickoff

Цитата: cska-fanat-kz от 14 апр 2015, 08:21Как говорится найдите 10 отличий...
Я только одно нашёл. Так тоже работает :)
Добавлено: 15 апр 2015, 04:07


Приключения продолжаются. Запрос пришлось переделать, заменив объединение на соединения. Теперь он выглядит следующим образом:
ВЫБРАТЬ
   ОтчетКомитентуОПродажах.Ссылка КАК Документ,
   ОтчетКомитентуОПродажах.Дата КАК ДатаИзмененияДолга,
   ОтчетКомитентуОПродажах.СуммаДокумента КАК Долг
ПОМЕСТИТЬ ВнешняяТаблицаОтчетов
ИЗ
   Документ.ОтчетКомитентуОПродажах КАК ОтчетКомитентуОПродажах
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВнешняяТаблицаОтчетов1.Ссылка КАК Документ,
   ВнешняяТаблицаОтчетов1.Дата КАК ДатаУвеличенияДолга,
   ВнешняяТаблицаОтчетов1.ДолгКомитенту КАК Долг,
   ПлатежноеПоручение.Ссылка КАК ПлатёжноеПоручение,
   ПлатежноеПоручение.ДокументОснование,
   ПлатежноеПоручение.Дата КАК ДатаУменьшенияБезналом,
   ПлатежноеПоручение.СуммаДокумента КАК СуммаУменьшенияБезналом,
   РасходныйКассовыйОрдер.Ссылка КАК РасходныйКассовыйОрдер,
   РасходныйКассовыйОрдер.ДокументОснование КАК ДокументОснование1,
   РасходныйКассовыйОрдер.Дата КАК ДатаУменьшенияНалом,
   РасходныйКассовыйОрдер.СуммаДокумента КАК СуммаУменьшенияНалом
ИЗ
   Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
      ПОЛНОЕ СОЕДИНЕНИЕ Документ.ОтчетКомитентуОПродажах КАК ВнешняяТаблицаОтчетов1
      ПО (ВнешняяТаблицаОтчетов1.Ссылка = ПлатежноеПоручение.ДокументОснование)
      ПОЛНОЕ СОЕДИНЕНИЕ Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
      ПО (ВнешняяТаблицаОтчетов1.Ссылка = РасходныйКассовыйОрдер.ДокументОснование)
ГДЕ
   (ВнешняяТаблицаОтчетов1.Проведен = ИСТИНА
            И ВнешняяТаблицаОтчетов1.Контрагент = &Контрагент
         ИЛИ ПлатежноеПоручение.ДокументОснование В
               (ВЫБРАТЬ
                  ВТ.Документ
               ИЗ
                  ВнешняяТаблицаОтчетов КАК ВТ)
            И ПлатежноеПоручение.Проведен = ИСТИНА
            И ПлатежноеПоручение.Контрагент = &Контрагент
         ИЛИ РасходныйКассовыйОрдер.ДокументОснование В
               (ВЫБРАТЬ
                  ВТ.Документ
               ИЗ
                  ВнешняяТаблицаОтчетов КАК ВТ)
            И РасходныйКассовыйОрдер.Проведен = ИСТИНА
            И РасходныйКассовыйОрдер.Контрагент = &Контрагент)
Проблема заключается в следующем: я отчитался перед комитентом и провёл этот документ-отчёт, создал на его основе расходный кассовый ордер и его тоже провёл. Затем мне ударила в голову моча и я отменил проведение отчёта комитенту. Что я теперь хочу увидеть в отчёте: никаких увеличений долгов распроведённым документом-отчётом и уменьшение несуществующего долга расходным кассовым ордером, которое скажет просвящённому пользователю о том, что мы ни за что дали деньги комитенту. Что я вижу на самом деле: увеличение долга непроведённым документом и его уменьшение посредством РКО. В какую сторону копать?
Добавлено: 15 апр 2015, 04:12


На всякий случай дополню: если у нас есть проведённый документ и непроведённый, созданный на его основе, или непроведённый, на основе которого создан этот, то в таблицу добавляются оба документа. Если у нас был отчёт комитенту, на основе которго создали РКО, или платёжное поручение, но оба документа не проведены, они не добавляются и меня это устраивает.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

Зачем эти выкрутасы с Проведен/Непроведен?
Если отменили проведение Отчета и при этом РКО на основании проведен - ну так это дело бухгалтера.
По идее надо отмену проведения отчета как то отрабатывать - если есть доки на основании то ругнуться...

ЗЫ Новую тему с копированием последнего сообщения оценил и заслуженно удалил :thwrt:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Golickoff

Цитата: cska-fanat-kz от 15 апр 2015, 05:41
Зачем эти выкрутасы с Проведен/Непроведен?
Ситуация с не проведённым отчётом комитенту и проведённым на его основании РКО или ПП также возможна при авансовой выплате долга комитенту. Как бы мне ни хотелось изменить обработку распроведения, менять придётся запрос.

PS Спасибо что удалили, а то после подъёма этой темы я начал чувствовать себя неловко.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

Добавьте в секцию ГДЕ условие
"И (Отчет.Проведен И ПП.Проведен И РКО.Проведен)"
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск