Сведения об ОС - отчет тормозит. Неоптимальный запрос или странное поведение платформы?

22.11.15

Учетные задачи - Учет ОС и НМА

Типовой отчет тормозит неподобно! В случае выполнения отчета с отбором по одному элементу справочника ОС. На больших объемах справочника ОС и при большом количестве бухгалтерских проводок.
Проведу небольшое исследование и исправлю типовой отчет.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Отчет "Сведения ОБ ОС"
.erf 27,55Kb ver:типовой
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Назначение

Функциональность была протестирована и отработана на основе конфигурации Бухгалтерия для Украины 1.2.33.2 и платформы версии 8.3.6.2363. На базе MSSQL

Но данный типовой отчет "СведенияОбОС" с идентичной функциональностью и проблемой встречается в УТП, УПП и прочих типовых конфигурациях на обычных формах.

Рассмотрена любопытная особенность поведения платформы, поэтому будет интересно всем получить небольшой опыт в оптимизации запросов.

История

История обычная,  обращается бухгалтер. Проблема с одной стороны пустяковая, но работать с основными средствами нормально не возможно.  Действительно, проблема встречается редко, т.к. запустить отчет "Сведения об ОС" из карточки справочника (или списка) многим достается редко, некоторые даже не знают о его существовании.

По делу

Есть база, большущая. На MSSQL. Огромное количество ОС в справочнике.  Заходим в справочник Основные средства, и нажимаем кн. "Перейти" - "Сведения об ОС".

Ждем.... Ждем минуту, две ...  - и вуаля, Сведения об ОДНОМ объекте сформированы!  Быстренько. ничего не скажешь.
А работать то надо!

Начинаю ковырять. Добираюсь до запроса, что видим: небольшой запрос, грамотные фильтры, выполненные как отборы построителя (фигурные скобки). Нет правда временных таблицы, ну да ладно, как оказалось это не главное в данной проблеме.

 Запрос

На первый взгляд не удалось обнаружить каких-то  проблем с запросом. Соединений масса, но содержимое виртуальных таблиц при наложении фильтров единичное, что не должно вызывать разрастание объема обрабатываемой информации.

Первое что повело по правильному пути - это понимание того, что отчет формируется одинаково медленно как при отборе по одному элементу основного средства, так и по всем без отборов. Ну почти. разница - не заметна. Получается, фильтры не работают? А уж когда фильтры не работают - вот тогда и получаются множественные соединения больших таблиц, например,  регистра "Хозрасчетный" виртуальная таблица которого огромна по определению, и регистра "СчетаБухгалтерскогоУчетаОС" - содержимое которого массивно при большом количестве ОС.

Для поиска проблемы решил последовательно отрабатывать в консоли запросов все вложенные подзапросы изнутри наружу. Проблема не показалась. Все подзапросы, все варианты соединений их от самых простых до полного запроса в консоли запросов отрабатывались быстро. С отбором по одном объекту естественно.

Вопрос: почему в консоли запросов все работает быстро, в этом отчете тормозит?

Ок, в консоли не было директив построителя - отборов в фигурных скобках. Совпадение, или нет, но в начале я писал о предположении что как раз отборы временных таблиц и не работают. И о чудо!

В тот момент, когда открыл исходный запрос в модуле отчета в конструкторе запросов и не внося изменений, подтвердил и закрыл конструктор - случайно заметил что ПРОПАЛ ФИЛЬТР в подзапросе другого ФИЛЬТРА виртуальной таблицы !!! То, что на рисунке выше выделено красным. Что это означает? То, что  Конструктор запроса отказался принимать эту директиву. Что сразу же навеяло на мысль, что данный фильтр НЕ РАБОТАЕТ!

Вывод созрел. Проблема найдена!

Фильтры виртуальной таблицы, которая использована как подзапрос в Фильтре другой виртуальной таблицы НЕ РАБОТАЮТ. Т.е. такого не бывает, т.е. использование их разработчиками было ошибочным.
Что это? баг платформы или фича?  документация не найдена. Прошу уважаемое сообщество прокомментировать данный факт.

Исправляем

Конфигурация заточена под 8.2 Поэтому смело решаю использовать временные таблицы в запросе.
Выбираем регистр "СчетаБухгалтерскогоУчетаОС" во временную таблицы, естественно используем фильтры, которые теперь сработают нормально, т.к. нет такой дикой вложенности.

Временная таблица:

 временная таблица

Заменяем в подзапросе виртуальную талицу временной:

 использование временной таблицы

Все, проблемы нет, на огромной базе отчет в случае отбора по одному ОС или небольшой группе работает МГНОВЕННО! Потому, что фильтры переданные построителем теперь работают нормально.
Собственно как и обязан.

с уважением.

Вступайте в нашу телеграмм-группу Инфостарт

Основные средства ОС Очеты по ОС СведенияОбОС Оптимизация запроса Виртуальные таблицы Временные талицы Фильтры в запросах Условия в запроса Фигурные скобки Отборы в построителе

См. также

Учетные задачи Учет доходов и расходов Взаиморасчеты Учет ОС и НМА 1С:Предприятие 8 Транспорт, автопарки, такси Россия Платные (руб)

Автоматизированная система управления финансовой деятельностью аэропорта в части учёта и анализа доходов от услуг, оказанных авиаперевозчикам в аэропорту (аэропортах) обслуживания. Конфигурация подходит для организаций, ведущих учет аэропортового и наземного обслуживания как в одном, так и в нескольких аэропортах-филиалах. Удобное ведение тарифных справочников. Возможность периодического изменения справочных данных организации: ответственных лиц, наименование организации, сотрудников, ввод и изменение тарифов в различных валютах.

10370 руб.

11.07.2025    1131    1    0    

1

Учет ОС и НМА Логистика, склад и ТМЦ Бухгалтер 1С 8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение и обработки для конфигурации 1С:Бухгалтерия предприятия версии ПРОФ и КОРП ред. 3 добавляет печатные формы МХ-1 «Акт о приеме ТМЦ на хранение» в документы Поступления и Перемещения товаров и МХ-3 «Акт о возврате ТМЦ с хранения» в документы Реализации товаров и Перемещения товаров. Версии для локальных программ и для 1С:ФРЕШ

12200 руб.

28.11.2025    1315    1    0    

3

Печатные формы Учет рабочего времени Учет ОС и НМА Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1C:ERP Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для автоматизации учета путевых листов в 1С - расширение, добавляющее в конфигурацию "ERP", документ Путевой лист и печатные формы установленных образцов для легковых и грузовых авто, расчет и списание нормативного количества топлива, отчет "Реестр путевых листов" с отбором по автомобилю и по водителю (через настройки) Позволит контролировать расход топлива, потому что сразу будет виден сверхнормативный расход.

25620 руб.

23.07.2025    5273    10    0    

10

Учет ОС и НМА Сканер штрих-кода Терминал сбора данных Логистика, склад и ТМЦ 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Приложение Инвентаризация ОС и ТМЦ предназначено для инвентаризации основных средств и товарно-материальных ценностей, закреплённых за конкретным материально ответственным лицом или складом. В конфигурации 1С:Бухгалтерии 3.0 отсутствуют возможности генерации и работы со штрих-кодами для основных средств. Приложение позволяет генерировать и обрабатывать штрих-коды как для основных средств, так и для товарно-материальных ценностей (материалы, товары). В новом релизе появилась возможность работы с фотографиями объектов учета.

07.07.2023    6271    3    alfanika    0    

7

Учет ОС и НМА Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бухгалтерский учет Бесплатно (free)

В данной статье рассмотрим особенности принятия к учету ОС по ФСБУ 06 в ERP 2.5. С учетом изменений по ФСБУ 06 и изменений в новой ERP 2.5.

22.03.2022    10456    Shining_ninja    1    

53

Учет ОС и НМА Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Абонемент ($m)

Внешний отчет "Ведомость по основным средствам" для конфигураций ERP 2.4, ERP 2.5, КА 2.4, КА 2.5 с выводом дополнительных колонок: Срок использования, Ликвидационная стоимость.

3 стартмани

17.02.2022    16036    100    SergAl    21    

22

Регламентированный учет и отчетность Учет ОС и НМА Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бухгалтерский учет Бесплатно (free)

Рекомендации по переходу и применение в 1С:ERP. Статья подготовлена Фроленковой Альфией - экспертом по регламентированному учету в 1С:ERP. Занимается автоматизацией на базе программ 1С более 15 лет. Имеет 5 сертификатов по 1С:ERP.

02.02.2022    106458    1СERP    18    

45
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 3272 22.11.15 14:11 Сейчас в теме
Сдается мне, что если проиндексировать ВТ по счету и вынести подзапрос во ВНУТРЕННЕЕ СОЕДИНЕНИЕ, то может получиться еще быстрее безотносительно количества выбираемых ОС.
2. dap 15 22.11.15 15:07 Сейчас в теме
(1) starik-2005, Да, спасибо. Там еще есть над чем поработать. Смотрите, там получается 4 раза выполняется запрос по "СчетаБухгалтерскогоУчетаОС". Там все соединения нужно переделать с использованием ВТ.
Но зачем ... если главная проблема решена ...
3. asved.ru 37 24.11.15 06:26 Сейчас в теме
Не факт, что "фильтры не работают" и это ошибка кода. Для того, чтобы в этом убедиться, нужно смотреть на фактические запросы к СУБД и их планы.

Зачастую бывает так, что условие соединения, указанное в фильтре, просто-напросто не оставляет оптимизатору иного выхода, кроме как сканить всю таблицу. Кроме того, для соединения с подзапросом оптимизатор часто не может просчитать статистику, особенно на сложных условиях, и применяет алгоритм соединения nested loops, сильно тормозной на больших количествах строк. И наконец, степень оптимальности планов зависит от состояния базы данных и нагрузки на СУБД.
4. dap 15 24.11.15 10:36 Сейчас в теме
(3) asved.ru, Спасибо.
А почему тогда конструктор запроса удаляет именно эти фильтры? Или это его предсказуемое поведение на таких вложенностях?
Или это не имеется значение, 1С передает запрос в БД без предварительного анализа и интерпретации?
Для отправки сообщения требуется регистрация/авторизация