Результаты запроса в консоли и в отчёте разные
Здравствуйте!
Ситуация очень странная и непонятная.
Делаю внешний отчёт. Предварительно разработал запрос по выборке данных. В запросе используется 5 временных таблиц, он получает данные по задолженности контрагентов.
Так вот, в консоли запросов данные получаются правильные (по нужному контрагенту 27000 руб. долга), а когда формирую внешний отчёт на основе универсального, то выводится сумма 29000 руб.
Всё что знал проверил. Параметры в запросе все правильные, запросы идентичные.
Вот ещё: в модуле универсального отчёта до строки
в отладчике показывает правильный результат, а после уже неправильный.
Почему так происходит?!
Ситуация очень странная и непонятная.
Делаю внешний отчёт. Предварительно разработал запрос по выборке данных. В запросе используется 5 временных таблиц, он получает данные по задолженности контрагентов.
Так вот, в консоли запросов данные получаются правильные (по нужному контрагенту 27000 руб. долга), а когда формирую внешний отчёт на основе универсального, то выводится сумма 29000 руб.
Всё что знал проверил. Параметры в запросе все правильные, запросы идентичные.
Вот ещё: в модуле универсального отчёта до строки
ПостроительОтчета.Выполнить();
в отладчике показывает правильный результат, а после уже неправильный.
Почему так происходит?!
По теме из базы знаний
- Видеозаписи онлайн-митапа "Практика применения СКД"
- Регистрация объектов по GUID для обмена данными. Загрузка списка идентификаторов или ссылок вида "Объект не найден" из файла
- Поиск и регистрация на узле ссылочных данных по ГУИДу или битой ссылке
- ChatGPT и 1С
- Применение 1С:Аналитики и Дата акселератора, или Как получить в 1С прозрачность и скорость обработки данных для прямого доступа и контроля руководителя
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) nodalt, может быть поможет:
Построитель отчета методом ПостроительОтчета.ПолучитьЗапрос() возвращает тот запрос (со всеми отборами и прочим) который будет выполняться, и этот запрос (из-за заданных параметров) может отличаться от первоначального (условиями и т.д.). Может быть стоит получить это запрос (перед выполнением команды (ПостроительОтчета.Выполнить), посмотреть его текст и параметры, и уже его сравнивать с запросом из консоли.
ЗЫ. Если честно я не сталкивался с "универсальным отчетом" так что если глупость ляпнул - виноват :)
Построитель отчета методом ПостроительОтчета.ПолучитьЗапрос() возвращает тот запрос (со всеми отборами и прочим) который будет выполняться, и этот запрос (из-за заданных параметров) может отличаться от первоначального (условиями и т.д.). Может быть стоит получить это запрос (перед выполнением команды (ПостроительОтчета.Выполнить), посмотреть его текст и параметры, и уже его сравнивать с запросом из консоли.
ЗЫ. Если честно я не сталкивался с "универсальным отчетом" так что если глупость ляпнул - виноват :)
(2) Ягг, не глупость, как раз так я и проверял. Параметры, текст запроса - всё копировал в консоль и опять тоже самое!!! Разные результаты! Причём если провести несколько документов "Платёжное поручение входящее", то результат может выровняться, потом провести ещё несколько и результат может опять различаться на непредсказуемую сумму. Кошмар!
(4) nodalt, может быть проблема в выводе (а не получении данных) отчета на основании универсального? По моему все татот же построитель отчета позволяет вывести данные в таблицу значений (подкорректируй код или в отладчике и посмотри правильные ли там цифры)?
Второе, возможно требуется тестирование и исправление информационной базы.
Второе, возможно требуется тестирование и исправление информационной базы.
(9) Ягг, вот как раз построитель выгружает данные в таблицу значений уже с неправильным результатом. Кстати, есть одна особенность - все строчки в таблице задвоены. Т.е. в самом отчёте в последствии они уже выводятся по одной, но при отладке в таблице значений видно, что они дублируются.
Тестирование и исправление учитывая реструктуризацию и пересчет итогов ситуацию не изменили.
Попробую теперь оптимизировать запрос или же просто как-то по-другому сделать выборку данных, может быть поможет. Больше ничего на ум не приходит.
Тестирование и исправление учитывая реструктуризацию и пересчет итогов ситуацию не изменили.
Попробую теперь оптимизировать запрос или же просто как-то по-другому сделать выборку данных, может быть поможет. Больше ничего на ум не приходит.
(11) nodalt, если есть соединения более чем двух таблиц одновременно, например трех (или четырех), попробуйте сначала две таблицы (или попарно) соединить во временную, а потом присоединить к ней третью (или соединить получившиеся). Разбираться было лень, но как-то столкнулся с тем при соединение более чем двух таблиц, в некоторых случаях, появляются дублирующиеся строки - ошибается (кто и где не разобрался) с ключом (с тем полем по которому идет соединение).
во всех других отчётах (типовых) суммы долга правильные?
может, попробовать сделать реиндексацию базы?
может, попробовать сделать реиндексацию базы?
(6) andrewks, по остальным отчётам проверить данные нет возможности так как разрабатываемый отчёт нужен для вывода колонки по задолженности с учетом отсрочки, а эта отсрочка проставляется у контрагента путём доработки справочника.
и ещё: повнимательнее с параметрами-датами, иногда глаз "замыливается", и долго удивляешься, почему запрос не даёт нужный результат, а в итоге потом находишь, что нужно подавать не 19.11.2012 0:00:00, а 19.11.2012 23:59:59 (или отрабатывать этот момент в самом запросе)
Проблема решена, по крайней мере пока данные правильные. Не знаю в чём конкретно было дело.
Проблему решил написав другой запрос, по другому алгоритму, включающий только 2 виртуальные таблицы.
А данные в отладчике задваивались из-за того что построитель отчёта модифицировал текст моего запроса, добавляя в него поле по расчету итогов, а сами ресурсы не включал.
Спасибо всем за участие.
Проблему решил написав другой запрос, по другому алгоритму, включающий только 2 виртуальные таблицы.
А данные в отладчике задваивались из-за того что построитель отчёта модифицировал текст моего запроса, добавляя в него поле по расчету итогов, а сами ресурсы не включал.
Спасибо всем за участие.
используем ПолучитьЗапрос() берем из него текст запроса смотрим каких ресурсов не хватает в виртуальных таблицах и в исходном запросе прокидываем их в конечную выборку иначе построитель их отсечет т.к. они не используются, а если исходная таблица остаточная тогда записи будут считаться с нулевым ресурсом.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот