Вопрос связанный с запросами
01.08.2008
12:38
#1
"ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с НачДата по КонДата;
|Обрабатывать НеПомеченныеНаУдаление;
|СБ = Документ.СБ.ТекущийДокумент;
|ТТН = Документ.СБ.ТТН.ТекущийДокумент;
|Контрагент = Документ.СБ.ТТН.Контрагент;
|Сумма = Документ.СБ.Всего;
|ПостСБ = Документ.СБ.ДатаДок;
|Функция СуммаВсего = Сумма(Сумма);
|Группировка СБ;
|Группировка ТТН;
|Условие((ТТН.Вид() = """"РасходнаяНакладная"""") или (ТТН.Вид() = """"РозничнаяТорговля""""));
|Условие(Контрагент в ВыбКонтрагент);
|"//}}ЗАПРОС
//--------------------------------------------------------------------------------------
Свойства реквизита ТТН документа СБ в табличной части - "Документ"
Вываливается ошибка на переменную - Контрагент.
**Контрагент = Документ.СБ.ТТН. <>> Контрагент
**Неверно заданный путь 'Контрагент'
Help My!!!"
"//{{ЗАПРОС(Сформировать)
|Период с НачДата по КонДата;
|Обрабатывать НеПомеченныеНаУдаление;
|СБ = Документ.СБ.ТекущийДокумент;
|ТТН = Документ.СБ.ТТН.ТекущийДокумент;
|Контрагент = Документ.СБ.ТТН.Контрагент;
|Сумма = Документ.СБ.Всего;
|ПостСБ = Документ.СБ.ДатаДок;
|Функция СуммаВсего = Сумма(Сумма);
|Группировка СБ;
|Группировка ТТН;
|Условие((ТТН.Вид() = """"РасходнаяНакладная"""") или (ТТН.Вид() = """"РозничнаяТорговля""""));
|Условие(Контрагент в ВыбКонтрагент);
|"//}}ЗАПРОС
//--------------------------------------------------------------------------------------
Свойства реквизита ТТН документа СБ в табличной части - "Документ"
Вываливается ошибка на переменную - Контрагент.
**Контрагент = Документ.СБ.ТТН. <>> Контрагент
**Неверно заданный путь 'Контрагент'
Help My!!!"
01.08.2008
13:02
#3
"> |Контрагент = Документ.СБ.ТТН.Контрагент.Наименование;
Если сделать так, то невозможно обработать условие |Условие(Контрагент в ВыбКонтрагент);
А проблема как раз с тем, что ТТН имеет тип Документ. При такой ситуации механизм запросов обращается к ВСЕМ документам для анализа их структуры, и получается, что возникает ошибка от того, что реквизит "Контрагент" есть не в каждом документе, а точнее, все бы работало, если бы Контрагент являлся общим реквизитом документов.
Боюсь, что в данной ситуации способов решения 2.
1) Не проверял, может и не выход! Сделать реквизит ТТН документом определенного вида, если это представляется возможным. Если же нет и ТТН может быть документом любого вида, то
2) Переработать текст запроса и сделать его примерно таким:
Функция НамПодходит(ТТН)
Если ВыбКонтрагент.НатиЗначение(ТТН.Контрагент)>0 Тогда
Возврат(1);
Иначе
Возврат(0);
КонецЕсли;
КонецФункции
...
"//{{ЗАПРОС(Сформировать)
|Период с НачДата по КонДата;
|Обрабатывать НеПомеченныеНаУдаление;
|СБ = Документ.СБ.ТекущийДокумент;
|ТТН = Документ.СБ.ТТН.ТекущийДокумент;
|Сумма = Документ.СБ.Всего;
|ПостСБ = Документ.СБ.ДатаДок;
|Функция СуммаВсего = Сумма(Сумма);
|Группировка СБ;
|Группировка ТТН;
|Условие((ТТН.Вид() = """"РасходнаяНакладная"""") или (ТТН.Вид() = """"РозничнаяТорговля""""));
|Условие(НамПодходит(ТТН)=1);
|"//}}ЗАПРОС
"
Если сделать так, то невозможно обработать условие |Условие(Контрагент в ВыбКонтрагент);
А проблема как раз с тем, что ТТН имеет тип Документ. При такой ситуации механизм запросов обращается к ВСЕМ документам для анализа их структуры, и получается, что возникает ошибка от того, что реквизит "Контрагент" есть не в каждом документе, а точнее, все бы работало, если бы Контрагент являлся общим реквизитом документов.
Боюсь, что в данной ситуации способов решения 2.
1) Не проверял, может и не выход! Сделать реквизит ТТН документом определенного вида, если это представляется возможным. Если же нет и ТТН может быть документом любого вида, то
2) Переработать текст запроса и сделать его примерно таким:
Функция НамПодходит(ТТН)
Если ВыбКонтрагент.НатиЗначение(ТТН.Контрагент)>0 Тогда
Возврат(1);
Иначе
Возврат(0);
КонецЕсли;
КонецФункции
...
"//{{ЗАПРОС(Сформировать)
|Период с НачДата по КонДата;
|Обрабатывать НеПомеченныеНаУдаление;
|СБ = Документ.СБ.ТекущийДокумент;
|ТТН = Документ.СБ.ТТН.ТекущийДокумент;
|Сумма = Документ.СБ.Всего;
|ПостСБ = Документ.СБ.ДатаДок;
|Функция СуммаВсего = Сумма(Сумма);
|Группировка СБ;
|Группировка ТТН;
|Условие((ТТН.Вид() = """"РасходнаяНакладная"""") или (ТТН.Вид() = """"РозничнаяТорговля""""));
|Условие(НамПодходит(ТТН)=1);
|"//}}ЗАПРОС
"
Читают тему
(гостей: 1)