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

22.11.15

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

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

Скачать файлы

Наименование Файл Версия Размер
Отчет "Сведения ОБ ОС"
.erf 27,55Kb
0
.erf типовой 27,55Kb Скачать

Назначение

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

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

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

История

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

По делу

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

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

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

 Запрос

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

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

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

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

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

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

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

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

Исправляем

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

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

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

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

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

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

с уважением.

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

См. также

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Позволит автоматически и наиболее полно ввести данные в программу для начала работы. 

15600 руб.

08.12.2011    81570    128    123    

147

Переоценка основных средств для БП 2.0, 3.0, УПП 1.3 с карточкой ОС-6. Отдельная конфигурация на платформе 8.3 с интерфейсом такси.

Учет ОС и НМА Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Переоценка основных средств для БП 2.0, БП 3.0, УПП 1.3. Отдельная конфигурация на платформе 1С Предприятие 8.3 с интерфейсом такси. Позволяет осуществлять переоценку основных средств в автоматическом режиме быстро и безошибочно, а главное, не внося вообще никаких изменений в конфигурацию Вашей рабочей базы. Есть возможность хранения и печати карточек ОС-6 с автоматическим заполнением. Подходит для типовых и измененных конфигураций Бухгалтерия Предприятия 2.0, 3.0 и Управление производственный предприятием 1.3.

16500 руб.

01.10.2014    56049    22    17    

14

Инвентаризация ОС и ТМЦ для конфигурации 1С:Бухгалтерия 3.0

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

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

07.07.2023    2674    1    alfanika    0    

3

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

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

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

22.03.2022    6089    Shining_ninja    0    

53

Ведомость по основным средствам (ERP 2.4, ERP 2.5, КА 2.4, КА 2.5)

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

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

1 стартмани

17.02.2022    10377    51    SergAl    0    

21

Переход на ФСБУ 6/2020 и ФСБУ 26/2020 с 01.01.2022

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

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

02.02.2022    92428    1СERP    18    

45

Использование сканера штрихкодов для инвентаризации основных средств

Учет ОС и НМА Сканер штрих-кода Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

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

2 стартмани

24.01.2022    9470    35    1Cergey    4    

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

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