Версия для печати Поиск
Главная Для начинающих разработчиков Учимся программировать

Когда следует использовать запрос, а когда метод Остатки() для получения остатков регистра накопления?

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

С точки зрения производительности оба способа практически одинаковы. Платформа в обоих случаях использует один и тот же механизм обращения к записям и итогам регистров.

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

Кроме этого, запросы позволяют устанавливать блокировку считываемых данных на чтение их в других сеансах, что позволяет уменьшить вероятность возникновения конфликта блокировок данных.

Также запросы позволяют использовать один из двух режимов получения данных при использовании ограничений доступа на уровне записей и полей базы данных (ключевое слово РАЗРЕШЕННЫЕ), в то время как при работе в объектной технике операции над объектами встроенного языка 1С:Предприятия выполняются в режиме ВСЕ (без использования режима РАЗРЕШЕННЫЕ).

Таким образом, при выборе того или иного способа получения остатков следует исходить из следующих критериев:

  • нужна ли блокировка считываемых данных;
  • требуется ли управление режимом получения данных;
  • насколько гибкие возможности требуются для получения остатков.

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

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

Последнее обновление: 08.06.2012

Задать другой вопрос / Закрыть