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

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

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

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

Golickoff

Цитата: cska-fanat-kz от 15 апр 2015, 06:20
Добавьте в секцию ГДЕ условие
"И (Отчет.Проведен И ПП.Проведен И РКО.Проведен)"
Боюсь, всё не так просто. Если документ-основание проведён, а документ-следствие -- нет, или наоборот, то данное условие возвращает пустую строку.
Добавлено: 15 апр 2015, 06:45


Может, где-то в запросе можно прописать для каждого документа что-то вроде
ВЫБОР
КОГДА
Документ.Проведён=ЛОЖЬ
ТОГДА
Документ.Ссылка = NULL,
Документ. Дата = NULL,
Документ.Сумма = NULL
ИНАЧЕ
КОНЕЦ
?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

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

Golickoff

Если документ-основание проведён и документ-следствие проведён -- вывести оба документа.
Если документ-основание не проведён и документ-следствие не проведён -- пропускаем оба документа.
Если документ-основание проведён, а документ-следствие не проведён -- выводим только документ-основание.
Если документ-основание не проведён, а документ-следствие проведён -- выводим только документ-следствие.
Добавлено: 15 апр 2015, 06:58


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

cska-fanat-kz

Цитата: Golickoff от 15 апр 2015, 06:57Если документ-основание проведён и документ-следствие проведён -- вывести оба документа.
Если документ-основание не проведён и документ-следствие не проведён -- пропускаем оба документа.
Если документ-основание проведён, а документ-следствие не проведён -- выводим только документ-основание.
Если документ-основание не проведён, а документ-следствие проведён -- выводим только документ-следствие.

у вас же по каждому документу стоит условие на Проведен, соответственно и должно отрабатывать как перечислено!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Golickoff

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

cska-fanat-kz

всмотрелся повнимательней в секцию ГДЕ...

Цитата: Golickoff от 14 апр 2015, 09:57ГДЕ
   (ВнешняяТаблицаОтчетов1.Проведен = ИСТИНА
            И ВнешняяТаблицаОтчетов1.Контрагент = &Контрагент
         ИЛИ ПлатежноеПоручение.ДокументОснование В
               (ВЫБРАТЬ
                  ВТ.Документ
               ИЗ
                  ВнешняяТаблицаОтчетов КАК ВТ)
            И ПлатежноеПоручение.Проведен = ИСТИНА
            И ПлатежноеПоручение.Контрагент = &Контрагент
         ИЛИ РасходныйКассовыйОрдер.ДокументОснование В
               (ВЫБРАТЬ
                  ВТ.Документ
               ИЗ
                  ВнешняяТаблицаОтчетов КАК ВТ)
            И РасходныйКассовыйОрдер.Проведен = ИСТИНА
            И РасходныйКассовыйОрдер.Контрагент = &Контрагент)

что то тут понамешано...

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

Golickoff

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


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

cska-fanat-kz

Цитата: Golickoff от 15 апр 2015, 08:41ГДЕ
     ОтчетКомитентуОПродажах.Проведен В (ВЫБРАТЬ ВТ.Проведен ИЗ ВнешняяТаблицаОтчетов КАК ВТ)
   И ОтчетКомитентуОПродажах.Контрагент = &Контрагент
   ИЛИ ПлатежноеПоручение.ДокументОснование В (ВЫБРАТЬ ВТ.Документ ИЗ ВнешняяТаблицаОтчетов КАК ВТ)
   И ПлатежноеПоручение.Проведен В (ВЫБРАТЬ ВТ2.Проведен ИЗ ВнешняяТаблицаОтчетов2 КАК ВТ2)
   И ПлатежноеПоручение.Контрагент = &Контрагент
   ИЛИ РасходныйКассовыйОрдер.ДокументОснование В (ВЫБРАТЬ ВТ.Документ ИЗ ВнешняяТаблицаОтчетов КАК ВТ)
   И РасходныйКассовыйОрдер.Проведен В (ВЫБРАТЬ ВТ3.Проведен ИЗ ВнешняяТаблицаОтчетов3 КАК ВТ3)
   И РасходныйКассовыйОрдер.Контрагент = &Контрагент

what ta fuck is this? (c)

пересмотрел схему:
1. Запрос к отчетам (ко всем отчетам!), кладем в ВТ_Отчеты
2. ВТ_Отчеты2. Используем ВТ из п.1 только добавляем отборы на Проведен и прочее
3. ВТ_ПП с отбором на ДокументОснование В (ВТ из п.1!!!) и на Проведен и пр.
4. ВТ_РКО с отбором на ДокументОснование В (ВТ из п.1) и на Проведен и пр.
5. Соединяем ВТ_Отчеты2, ВТ_ПП и ВТ_РКО
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Golickoff

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВЫБОР КОГДА ВнешняяТаблицаОтчетов1.Проведен=ЛОЖЬ ТОГДА &ПустаяСсылка ИНАЧЕ ВнешняяТаблицаОтчетов1.Ссылка КОНЕЦ КАК Документ,
   ВнешняяТаблицаОтчетов1.Дата КАК ДатаУвеличенияДолга,
   ВЫБОР КОГДА ВнешняяТаблицаОтчетов1.Проведен=ЛОЖЬ ТОГДА &Ноль ИНАЧЕ ВнешняяТаблицаОтчетов1.ДолгКомитенту КОНЕЦ КАК Долг,
   ВЫБОР КОГДА ПлатежноеПоручение.Проведен=ЛОЖЬ ТОГДА &ПустаяСсылка ИНАЧЕ ПлатежноеПоручение.Ссылка КОНЕЦ КАК ПлатёжноеПоручение,
   ПлатежноеПоручение.ДокументОснование,
   ПлатежноеПоручение.Дата КАК ДатаУменьшенияБезналом,
   ВЫБОР КОГДА ПлатежноеПоручение.Проведен=ЛОЖЬ ТОГДА &Ноль ИНАЧЕ ПлатежноеПоручение.СуммаДокумента КОНЕЦ КАК СуммаУменьшенияБезналом,
   ВЫБОР КОГДА РасходныйКассовыйОрдер.Проведен=ЛОЖЬ ТОГДА &ПустаяСсылка ИНАЧЕ РасходныйКассовыйОрдер.Ссылка КОНЕЦ КАК РасходныйКассовыйОрдер,
   РасходныйКассовыйОрдер.ДокументОснование КАК ДокументОснование1,
   РасходныйКассовыйОрдер.Дата КАК ДатаУменьшенияНалом,
   ВЫБОР КОГДА РасходныйКассовыйОрдер.Проведен=ЛОЖЬ ТОГДА &Ноль ИНАЧЕ РасходныйКассовыйОрдер.СуммаДокумента КОНЕЦ КАК СуммаУменьшенияНалом
ИЗ
   Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
      ПОЛНОЕ СОЕДИНЕНИЕ Документ.ОтчетКомитентуОПродажах КАК ВнешняяТаблицаОтчетов1
      ПО (ВнешняяТаблицаОтчетов1.Ссылка = ПлатежноеПоручение.ДокументОснование)
      ПОЛНОЕ СОЕДИНЕНИЕ Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
      ПО (ВнешняяТаблицаОтчетов1.Ссылка = РасходныйКассовыйОрдер.ДокументОснование)
ГДЕ
   (ВнешняяТаблицаОтчетов1.Проведен = ИСТИНА
            И ВнешняяТаблицаОтчетов1.Контрагент = &Контрагент
         ИЛИ ПлатежноеПоручение.ДокументОснование В
               (ВЫБРАТЬ
                  ВТ.Документ
               ИЗ
                  ВнешняяТаблицаОтчетов КАК ВТ)
            И ПлатежноеПоручение.Проведен = ИСТИНА
            И ПлатежноеПоручение.Контрагент = &Контрагент
         ИЛИ РасходныйКассовыйОрдер.ДокументОснование В
               (ВЫБРАТЬ
                  ВТ.Документ
               ИЗ
                  ВнешняяТаблицаОтчетов КАК ВТ)
            И РасходныйКассовыйОрдер.Проведен = ИСТИНА
            И РасходныйКассовыйОрдер.Контрагент = &Контрагент)
//////////////////////////////////////////////////////////////////////////////////////////////////////////
&ПустаяСсылка -- тип Документ.Ссылка, значение Документ.Ссылка.ПустаяСсылка
&Ноль -- тип число, значение не задано
&Контрагент -- поле ввода, тип Справочник.Ссылка.Контрагенты, находится на форме, выбирается пользователем, в запрос значение передаётся через процедуру в модуле отчёта
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Если ЭтотОбъект.Контрагент.Пустая() Тогда
Предупреждение("Не выбран контрагент!");
Иначе
ПараметрКонтрагент = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Контрагент");
    ПараметрКонтрагент.Значение = ЭтотОбъект.Контрагент;
    ПараметрКонтрагент.Использование = Истина;
КонецЕсли;
КонецПроцедуры


Надеюсь, последний вопрос по данной теме: можно ли в вычисляемых полях задать сложные параметры вычисления? То есть, не просто КОГДА ТОГДА ИНАЧЕ КОНЕЦ, а КОГДА ТОГДА ИНАЧЕ КОГДА ТОГДА ИНАЧЕ КОГДА ТОГДА ИНАЧЕ КОНЕЦ? Нужна микроконсультация по данному синтаксису.

Уже после написания этого сообщения заметил негодование по поводу обращения к временным таблицам. cska-fanat-kz, я ведь не настоящий сварщик.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

(мысли вслух) зачем помогать, если все равно делают по своему?.....
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск