Вопрос связанный с запросами

Новая тема
"ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с НачДата по КонДата;
|Обрабатывать НеПомеченныеНаУдаление;
|СБ = Документ.СБ.ТекущийДокумент;
|ТТН = Документ.СБ.ТТН.ТекущийДокумент;
|Контрагент = Документ.СБ.ТТН.Контрагент;
|Сумма = Документ.СБ.Всего;
|ПостСБ = Документ.СБ.ДатаДок;
|Функция СуммаВсего = Сумма(Сумма);          
|Группировка СБ;
|Группировка ТТН;
|Условие((ТТН.Вид() = """"РасходнаяНакладная"""") или (ТТН.Вид() = """"РозничнаяТорговля""""));
|Условие(Контрагент в ВыбКонтрагент);
|"//}}ЗАПРОС
//--------------------------------------------------------------------------------------
Свойства реквизита ТТН документа СБ в табличной части - "Документ"

Вываливается ошибка на переменную - Контрагент.
**Контрагент = Документ.СБ.ТТН. <> Контрагент
**Неверно заданный путь 'Контрагент'

Help My!!!"
"|Контрагент = Документ.СБ.ТТН.Контрагент.Наименование;"
"> |Контрагент = Документ.СБ.ТТН.Контрагент.Наименование;

Если сделать так, то невозможно обработать условие |Условие(Контрагент в ВыбКонтрагент);

А проблема как раз с тем, что ТТН имеет тип Документ. При такой ситуации механизм запросов обращается к ВСЕМ документам для анализа их структуры, и получается, что возникает ошибка от того, что реквизит "Контрагент" есть не в каждом документе, а точнее, все бы работало, если бы Контрагент являлся общим реквизитом документов.

Боюсь, что в данной ситуации способов решения 2.
1) Не проверял, может и не выход! Сделать реквизит ТТН документом определенного вида, если это представляется возможным. Если же нет и ТТН может быть документом любого вида, то
2) Переработать текст запроса и сделать его примерно таким:

Функция НамПодходит(ТТН)
Если ВыбКонтрагент.НатиЗначение(ТТН.Контрагент)>0 Тогда
Возврат(1);
Иначе
Возврат(0);
КонецЕсли;
КонецФункции

...

"//{{ЗАПРОС(Сформировать)
|Период с НачДата по КонДата;
|Обрабатывать НеПомеченныеНаУдаление;
|СБ = Документ.СБ.ТекущийДокумент;
|ТТН = Документ.СБ.ТТН.ТекущийДокумент;
|Сумма = Документ.СБ.Всего;
|ПостСБ = Документ.СБ.ДатаДок;
|Функция СуммаВсего = Сумма(Сумма);          
|Группировка СБ;
|Группировка ТТН;
|Условие((ТТН.Вид() = """"РасходнаяНакладная"""") или (ТТН.Вид() = """"РозничнаяТорговля""""));
|Условие(НамПодходит(ТТН)=1);
|"//}}ЗАПРОС

"
Свойства реквизита ТТН документа СБ просто "Документ"

Запрос не понимает - Документ.СБ.ТТН. <> Контрагент.
Т.к. ТТН не является конкретным документом.
Как сделать, чтоб он заработал?
Такая вложенность в запросе не возможна, придется сначала отобрать список ТТН по выбранному контрагенту, а уже потом по этому условию собрать все СБ
Читают тему
(гостей: 2)

Быстрый переход