Skip to main content

Запросы

Стандарты 1С​

При разработке запросов нужно следовать стандартам 1С:

Дополнительные правила​

Излишнее индексирование временных таблиц​

На создание индекса нужно время. Это может иметь смысл если создаете очень большую врем. таблицу, а потом много много раз с ней соединяетесь в большом пакетном запросе или передаете МенеджерВремТаблиц дальше и она там активно используется, тогда индексация возможно будет оправданной. Рекомендация использовать индексацию только если явно видите ускорение от создания индекса.

Использование "В" в секции "ГДЕ"​

Заменять В() на внутреннее соединение. Тогда мы можем гарантировать использование индексов, мы можем управлять планом запросов, управлять тем, как это будет выполняться. И тем самым гарантировать стабильность – что это, по крайней мере, не деградирует.

Использовать «Выразить» для реквизитов составного типа в запросе​

Разыменование ссылочных полей в запросе. Если реквизит в запросе имеет составной тип, то необходимо использовать функцию «Выразить», иначе будет неявные соединения со всеми типами реквизита.

Используйте предопределенные значения в запросах​

К примеру, вместо создания параметра передающего пустую ссылку используйте выражение ЗНАЧЕНИЕ(Справочник.ИмяТаблицы.ПустаяСсылка).

Получение излишних данных в запросе​

Не выбирать данные в запросе, которые в дальнейшем не будут использоваться.

Сравнение ТИПЗНАЧЕНИЯ()=ТИП() в запросе​

Сравнение ТИПЗНАЧЕНИЯ()=ТИП() не используем, преобразуйте в стандартный метод ССЫЛКА.

Учитывать RLS при написании запросов​

При включении RLS должны работать все запросы поэтому не забывайте использовать РАЗРЕШЕННЫЕ при обращение к таблицам. Также не забывайте про ограничения на использование описанное в стандарте.

Вычисления полей делать в секции ВЫБРАТЬ​

Все вычисляемые поля предварительно рассчитывать в секции «ВЫБРАТЬ», не использовать отборы по вычисляемым полям. Даже когда есть какие-то математические операции, сначала их лучше во временной таблице выбрать и вычислить в секции ВЫБРАТЬ, проиндексировать, если нужно. И потом уже отберем по ним. Это работает быстрее, чем сразу вычислять в условиях, потому что при вычислении в условиях вычисление происходит для каждой строки, что крайне долго.

Излишнее разыменование в условии ГДЕ​

Использование более N точек в запросе может привести к понижению производительности.

АВТОНОМЕРЗАПИСИ​

Не забывать про особенность, что порядок не гарантируется с единицы:

Материалы​