Результаты запроса в консоли и в отчёте разные

1. Дмитрий Копейкин (nodalt) 3 19.11.12 17:01 Сейчас в теме
Здравствуйте!
Ситуация очень странная и непонятная.
Делаю внешний отчёт. Предварительно разработал запрос по выборке данных. В запросе используется 5 временных таблиц, он получает данные по задолженности контрагентов.
Так вот, в консоли запросов данные получаются правильные (по нужному контрагенту 27000 руб. долга), а когда формирую внешний отчёт на основе универсального, то выводится сумма 29000 руб.
Всё что знал проверил. Параметры в запросе все правильные, запросы идентичные.

Вот ещё: в модуле универсального отчёта до строки
ПостроительОтчета.Выполнить();

в отладчике показывает правильный результат, а после уже неправильный.

Почему так происходит?!
Ответы
2. Слава Кирлан (Ягг) 479 19.11.12 17:39 Сейчас в теме
(1) nodalt, может быть поможет:

Построитель отчета методом ПостроительОтчета.ПолучитьЗапрос() возвращает тот запрос (со всеми отборами и прочим) который будет выполняться, и этот запрос (из-за заданных параметров) может отличаться от первоначального (условиями и т.д.). Может быть стоит получить это запрос (перед выполнением команды (ПостроительОтчета.Выполнить), посмотреть его текст и параметры, и уже его сравнивать с запросом из консоли.

ЗЫ. Если честно я не сталкивался с "универсальным отчетом" так что если глупость ляпнул - виноват :)
корум; DimkoZah; nodalt; +3 Ответить 1
3. Lancer666 (PoZiTiFFF) 19.11.12 17:48 Сейчас в теме
(1) nodalt, очень внимательно проверьте параметры. Чаще всего такое бывает из за несовпадения параметров.
4. Дмитрий Копейкин (nodalt) 3 19.11.12 17:52 Сейчас в теме
(2) Ягг, не глупость, как раз так я и проверял. Параметры, текст запроса - всё копировал в консоль и опять тоже самое!!! Разные результаты! Причём если провести несколько документов "Платёжное поручение входящее", то результат может выровняться, потом провести ещё несколько и результат может опять различаться на непредсказуемую сумму. Кошмар!
5. Дмитрий Копейкин (nodalt) 3 19.11.12 17:53 Сейчас в теме
(3) Lancer666, проверял, копировал - бесполезно. Там 5 параметров, все даты, но правильные
6. andrewks 1208 19.11.12 18:01 Сейчас в теме
во всех других отчётах (типовых) суммы долга правильные?
может, попробовать сделать реиндексацию базы?
7. andrewks 1208 19.11.12 18:05 Сейчас в теме
и ещё: повнимательнее с параметрами-датами, иногда глаз "замыливается", и долго удивляешься, почему запрос не даёт нужный результат, а в итоге потом находишь, что нужно подавать не 19.11.2012 0:00:00, а 19.11.2012 23:59:59 (или отрабатывать этот момент в самом запросе)
8. Win98 Win98 (Win98) 19.11.12 18:55 Сейчас в теме
(1) nodalt,
В запросе используется 5 временных таблиц, он получает данные по задолженности контрагентов.
вот с этого места поподробнее: что именно делаете с этими таблицами? Соединения есть? Полные?
9. Слава Кирлан (Ягг) 479 20.11.12 07:37 Сейчас в теме
(4) nodalt, может быть проблема в выводе (а не получении данных) отчета на основании универсального? По моему все татот же построитель отчета позволяет вывести данные в таблицу значений (подкорректируй код или в отладчике и посмотри правильные ли там цифры)?

Второе, возможно требуется тестирование и исправление информационной базы.
10. Дмитрий Копейкин (nodalt) 3 20.11.12 09:49 Сейчас в теме
(6) andrewks, по остальным отчётам проверить данные нет возможности так как разрабатываемый отчёт нужен для вывода колонки по задолженности с учетом отсрочки, а эта отсрочка проставляется у контрагента путём доработки справочника.
11. Дмитрий Копейкин (nodalt) 3 20.11.12 09:50 Сейчас в теме
(8) Win98, соединения есть. Соединения все левые. Есть пара соединений виртуальной таблицы с регистром накопления (остатки, остатки и обороты) и пара соединений ещё с одной виртуальной таблицей.
12. Дмитрий Копейкин (nodalt) 3 20.11.12 10:40 Сейчас в теме
(9) Ягг, вот как раз построитель выгружает данные в таблицу значений уже с неправильным результатом. Кстати, есть одна особенность - все строчки в таблице задвоены. Т.е. в самом отчёте в последствии они уже выводятся по одной, но при отладке в таблице значений видно, что они дублируются.
Тестирование и исправление учитывая реструктуризацию и пересчет итогов ситуацию не изменили.

Попробую теперь оптимизировать запрос или же просто как-то по-другому сделать выборку данных, может быть поможет. Больше ничего на ум не приходит.
13. Win98 Win98 (Win98) 20.11.12 15:15 Сейчас в теме
(11) nodalt, если есть соединения более чем двух таблиц одновременно, например трех (или четырех), попробуйте сначала две таблицы (или попарно) соединить во временную, а потом присоединить к ней третью (или соединить получившиеся). Разбираться было лень, но как-то столкнулся с тем при соединение более чем двух таблиц, в некоторых случаях, появляются дублирующиеся строки - ошибается (кто и где не разобрался) с ключом (с тем полем по которому идет соединение).
14. Дмитрий Копейкин (nodalt) 3 21.11.12 11:00 Сейчас в теме
Проблема решена, по крайней мере пока данные правильные. Не знаю в чём конкретно было дело.
Проблему решил написав другой запрос, по другому алгоритму, включающий только 2 виртуальные таблицы.
А данные в отладчике задваивались из-за того что построитель отчёта модифицировал текст моего запроса, добавляя в него поле по расчету итогов, а сами ресурсы не включал.
Спасибо всем за участие.
15. Димко Захарофф (DimkoZah) 4 19.05.17 15:27 Сейчас в теме
используем ПолучитьЗапрос() берем из него текст запроса смотрим каких ресурсов не хватает в виртуальных таблицах и в исходном запросе прокидываем их в конечную выборку иначе построитель их отсечет т.к. они не используются, а если исходная таблица остаточная тогда записи будут считаться с нулевым ресурсом.
Оставьте свое сообщение