|   |   | 
| 
 | 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) Вытягивается без проблем. И группируется без проблем. А вот условие почему-то не работает. Возможно, какая-то комбинация нескольких точек и счета неопределенного типа.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |