Предопределенные значения и запрос к базе

1. user1401808 09.09.21 19:56 Сейчас в теме
Добрый день, прошу выручить по поводу одного вопроса. Если мы делаем обращение в коде к предопределенному элементу(например Справочники.Валюты.Рубль) первый раз , то это безусловно обращение к базе данных. Но что происходит если мы обращаемся еще раз к этому же элементу, ну например в цикле. Будет ли сделан еще один вызов базы, или значение закешируется? Знаю, что существует метод ПредЗнач(), в котором прописано, что кеш останется до конца сеанса, но значит ли это например в цикле мне нужно обязательно прописывать ПредЗнач(), чтобы не обращаться вечно к базе? Сразу вопрос вдогонку, про ПустаяСсылка(), это же по сути тоже предопределенный элемент, тогда его тоже нужно либо выносить за цикл, либо использовать ПредЗнач()?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 72 09.09.21 20:57 Сейчас в теме
(1)
Но что происходит если мы обращаемся еще раз к этому же элементу, ну например в цикле. Будет ли сделан еще один вызов базы, или значение закешируется?


Будет запрос в СУБД и СУБД вернет его из своего кэша в 1С.

(1)
Знаю, что существует метод ПредЗнач(), в котором прописано, что кеш останется до конца сеанса, но значит ли это например в цикле мне нужно обязательно прописывать ПредЗнач(), чтобы не обращаться вечно к базе?

Если ОЗУ сервера 1С условно "бесконечное", то можно делать и так, если позволит контекст выполнения.
Но такой код, как правило, исключают из цикла и присваивают переменной, которую уже присваивают куда нужно внутри цикла.

(1)
Сразу вопрос вдогонку, про ПустаяСсылка(), это же по сути тоже предопределенный элемент, тогда его тоже нужно либо выносить за цикл, либо использовать ПредЗнач()?


Значение пустой ссылки не хранится в БД, его платформа генерирует сама и выдает. Будет ли это значение закэшировано или нет - особой разницы, думаю, не заметите.
3. spec8s 830 09.09.21 21:09 Сейчас в теме
Можно проверить самому, например на файловой базе, настроив тех журнал:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
 <dump create="false"/>
 <log location="D:\log\" history="1">
  <event>
   <eq property="name" value="DBV8DBEng"/>
  </event>
  <property name="all"/>
 </log>
</config>
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот