|
v7: Запрос в 7.7 с условием на счет. Туплю чего-то. | ☑ | ||
---|---|---|---|---|
0
fisher
08.07.20
✎
11:58
|
С 7.7 давно не работаю, да вот пришлось немножко.
Черный запрос. Добавляю условие на счет из карточки счета и запрос почему-то ничего не возвращает. Условие такого вида |ТМЦ = Документ.РасходнаяНакладная.ТМЦ; |СчетУчета = Документ.РасходнаяНакладная.ТМЦ.Счет; |СуммаБезНДС = Документ.РасходнаяНакладная.СуммаБезНДС; |Функция СуммаБезНДССумма = Сумма(СуммаБезНДС); |Условие(СчетУчета = ВыбСчетУчета); |Группировка ТМЦ без групп; ВыбСчетУчета - получаю через СчетПоКоду. Если выбросить условие то запрос отрабатывает. И фильтрация по этой же переменной в обходе результата запроса тоже работает корректно. А в запросе - никак. Чую, позабыл про какую-то тонкость. |
|||
1
Prog111
08.07.20
✎
13:01
|
Функцию надо добавить.
|
|||
2
ДенисЧ
08.07.20
✎
13:17
|
(1) она есть, вынимательней будь
|
|||
3
ДенисЧ
08.07.20
✎
13:17
|
Возможно, счёт неправильно задаёшь
|
|||
4
vladko
08.07.20
✎
13:51
|
(0)
1. В отладчике проверь, точно ли для ВыбСчетУчета сработало СчетПоКоду() 2. проверь типы реквизитов: в документе РасходнаяНакладная реквизит Счет, ну и твой ВыбСчетУчета |
|||
5
vladko
08.07.20
✎
13:52
|
(0) ну и в начале запроса конечно же, я думаю, что есть период выборки накладных.
|
|||
6
Vovik
08.07.20
✎
13:53
|
Я делаю иногда так
Функция СчетПодходит(Сч) Возврат 1; КонецФункции |Условие(СчетПодходит(СчетУчета)=1) |
|||
7
Vovik
08.07.20
✎
13:54
|
А там отлаживай и обрабатывай как хочешь
|
|||
8
vladko
08.07.20
✎
13:54
|
(0) Может быть, что в РасходнаяНакладная реквизит Счет отвечает за счет на оплату, а не за бух.счет.
|
|||
9
Злопчинский
08.07.20
✎
14:07
|
ну и если ВыбСчетУчета - группа, то случится обломс...
поэтому можно так написать: (СчетУчета в ВыбСчетУчета) |
|||
10
fisher
08.07.20
✎
14:43
|
(4) Как я уже сказал, в постобработке аналогичное условие успешно срабатывает. То есть со счетом все в порядке.
(5) Как я уже сказал, без условия запрос успешно отрабатывает. То есть с периодом все в порядке. (8) В постобработке аналогичное условие успешно срабатывает. (9) Нет, не группа. Фигня какая-то, в общем. Пока оставил запрос по всем счетам и фильтрую уже при обходе. Благо там 99% нужных данных. |
|||
11
Злопчинский
08.07.20
✎
14:48
|
СчетУчета - реквизит чего? шапки дока?
|
|||
12
Ёпрст
08.07.20
✎
14:50
|
(0)
ТМЦ - поди реквизит <Справочник>, неопределенного вида ? да ? если так, у таких ревизитов нельзя в запросе поиметь переменную для группировки, эти атрибуты будут пустыми. максимум, можно только в условия или в Когда у функций пихать через точку (плюя на производительность, особенно в скуле) |
|||
13
Ёпрст
08.07.20
✎
14:50
|
от так:
|Условие(ТМЦ.СчетУчета = ВыбСчетУчета); |
|||
14
fisher
08.07.20
✎
15:07
|
(11) СчетУчета - это реквизит справочника, ссылка на элемент которого в реквизите ТМЦ табличной части дока.
(12) Определенного. |
|||
15
fisher
08.07.20
✎
15:17
|
(13) Гы. Так работает. Но это ад и израиль. Судя по всему, в этом случае с сиквела вытягиваются данные без условия, а потом по каждой строчке в цикле выполняется обращение к БД за счетом учета.
Во всяком случае вытянуть значение счета запросом и отфильтровать по нему постобработкой без доп. обращений к БД на порядки быстрее выходит. Причем про порядки - это я не шучу. Если как в (13) - две минуты. Если без условия и пост-фильтрацией - несколько секунд. |
|||
16
fisher
08.07.20
✎
16:16
|
А может быть беда в том, что реквизит счет имеет тип просто "Счет", а на счет конкретного плана счетов?
|
|||
17
Somebody
08.07.20
✎
16:18
|
(16) вот это вряд ли.
|
|||
18
Злопчинский
08.07.20
✎
16:22
|
(17) ну как бы счет10 для хозяйственногопланасчетов и счеьт10 для корммерческоговыдуманногопланасчетов - это будут вообщето разные значения...
|
|||
19
Злопчинский
08.07.20
✎
16:23
|
(14) тогда должно работать...
|
|||
20
Ёпрст
08.07.20
✎
19:54
|
(14) точно определенного? Можно еще включитьsql(1) или 0 не помню, поиграться.. а так, переписать на прямой запрос и не парится
|
|||
21
Ёпрст
08.07.20
✎
19:56
|
Реквизит тмц в таб части, определенного вида? Типа справочник.вася? Или просто <справочник?
|
|||
22
fisher
09.07.20
✎
10:14
|
(20) Точно. "Спиравочник.ТМЦ"
|
|||
23
cyberandr
09.07.20
✎
10:37
|
ВыбСчетУчета через ПЕРЕМ в начале процедуры объявляешь?
|
|||
24
Ёпрст
09.07.20
✎
11:05
|
(22) тогда забей, перепиши на прямой запрос
|
|||
25
Ёпрст
09.07.20
✎
11:06
|
ну или с потерей производительностит, перед выполнением, Запрос.ВключитьSQL(0)
|
|||
26
fisher
09.07.20
✎
11:13
|
(23) Не. Без Перем. Сразу перед запросом.
|
|||
27
fisher
09.07.20
✎
11:16
|
(24) Да я сразу же забил :) Фильтрую уже при обходе. Все шустренько ибо фильтровать надо немного.
Просто интересно, в чем трабла. |
|||
28
vladko
09.07.20
✎
11:43
|
(27) ставлю на типизацию переменных. Запрос должен обрабатывать условие. Если глянуть твой .md тогда скорее всего станет ясно.
|
|||
29
cyberandr
09.07.20
✎
12:19
|
(26) Поставь у меня может помочь
|
|||
30
cyberandr
09.07.20
✎
12:20
|
Сорри (26) Поставь может помочь, мне помогало.
|
|||
31
victuan1
14.07.20
✎
05:45
|
(15) Это багофича запроса в 7.7 - нельзя вытянуть значение поля через две точки. Тип справочника роли не играет.
|
|||
32
victuan1
14.07.20
✎
05:46
|
Поэтому так не работает:
|СчетУчета = Документ.РасходнаяНакладная.ТМЦ.Счет; |Условие(СчетУчета = ВыбСчетУчета); а так - должно: |СчетУчета = Документ.РасходнаяНакладная.ТМЦ; |Условие(СчетУчета.Счет = ВыбСчетУчета); |
|||
33
fisher
14.07.20
✎
09:18
|
(31) Вытягивается без проблем. И группируется без проблем. А вот условие почему-то не работает. Возможно, какая-то комбинация нескольких точек и счета неопределенного типа.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |