Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:43

Способы получения реквизитов объекта (Помогите разобраться)

Автор Nikolai999, 22 сен 2019, 14:22

0 Пользователей и 1 гость просматривают эту тему.

Nikolai999

Здравствуйте!

Только начинаю программировать в 1С, поэтому есть несколько (возможно простых) вопросов:

У меня имеется ссылка на объект, и мне нужно получить несколько его реквизитов. Что будет работать быстрее: получение каждого реквизита отдельно "через точку", или запрос?

Второй вопрос: у меня имеется ссылка на документ, и мне нужно скопировать его табличную часть в другой документ. Как это правильно реализовать? Через ссылку или запросом? И если запросом, то как его правильно написать?

Третий вопрос: когда лучше использовать запрос, а когда получение "через точку"?

Большое спасибо!

wise

(0) если реквизиты нужны МНОГО раз, то лучше СРАЗУ их из базы запросом достать и использовать, а если ПРОСТО Ссылка.Наименование, то запрос ДОЛЬШЕ писать...

если другой документ вводится на основании исходного, то ЕСТЬ ОбработкаЗаполнения, а если ПРОСТО копируешь, то Выгрузить() - Загрузить()

у каждой задачи есть ОПТИМАЛЬНОЕ решение, когда запрос, когда "через точку"...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Z.spb

Получение любого реквизита ссылки "через точку" приводит к тому, что весь объект целиком (включая табличные части) считывается из базы данных и где-то там в памяти кэшируется. Поэтому в большинстве случаев целесообразно пользоваться запросом.
А если более подробно то:
Всегда нужно думать о том, что дальше происходит в коде и о размере прочитанных данных. Если это справочник из 3х реквизитов и вы получаете один из них через точку - да и пускай. Данные не того объёма чтоб городить запрос, гораздо легче Ссылка.ИмяРеквизита написать.
Или допустим это ДокументСсылка, с которой вы далее в коде будете активно работать, читать табличные части, в цикле обходить строки и т.д. - тут смело получаете нужный вам реквизит через точку.
Во всех остальных случаях я бы рекомендовал использовать запрос. В Стандартных Подсистемах есть функции "ПолучитьЗначениеРеквизита" и "ПолучитьЗначенияРеквизитов", предназначенные специально для чтения всех нужных реквизитов за раз запросом.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск