Всем доброго дня!
Готовлюсь к сдаче на специалиста по платформе и постоянно в голоке "запрос в цикле".
И тут на работе, попросили добавить печатную форму бух.справки в БУХ 3.0 к документу Корректировка долга.
Всё просто, берём данную печ.форму из документа Операции и делаем как внешнюю для нашего документа.
Всё сделал, сижу читаю код...
И тут в цикле Выборка.Следующий() вижу код

```1c
    АналитикаДт = ?(ЗначениеЗаполнено(Выборка.ПодразделениеДт), Строка(Выборка.ПодразделениеДт) + Символы.ПС, ")
    + ?(ЗначениеЗаполнено(Выборка.СубконтоДт1), Строка(Выборка.СубконтоДт1) + Символы.ПС, ")
    + ?(ЗначениеЗаполнено(Выборка.СубконтоДт2), Строка(Выборка.СубконтоДт2) + Символы.ПС, ")
    + ?(ЗначениеЗаполнено(Выборка.СубконтоДт3), Строка(Выборка.СубконтоДт3), ");

    АналитикаКт = ?(ЗначениеЗаполнено(Выборка.ПодразделениеКт), Строка(Выборка.ПодразделениеКт) + Символы.ПС, ")
    + ?(ЗначениеЗаполнено(Выборка.СубконтоКт1), Строка(Выборка.СубконтоКт1) + Символы.ПС, ")
    + ?(ЗначениеЗаполнено(Выборка.СубконтоКт2), Строка(Выборка.СубконтоКт2) + Символы.ПС, ")
    + ?(ЗначениеЗаполнено(Выборка.СубконтоКт3), Строка(Выборка.СубконтоКт3), ");
```

Разве это не запросы в цикле?
Или я чего-то не понимаю?
---
В реальной жизни всё несколько не так, как на экзаменах.
И где Вы тут увидели запрос в цикле - сложно понять. Разве что вот это - неявные запросы - "Строка(Выборка.СубконтоДт1)", потому что для ссылочного типа будет тянуться представление из базы (если Выборка.СубконтоДт1 - ссылочный тип, а не представление, конечно).
Но учитывая, что это печатная форма, а не какое-нибудь проведение по партиям - по барабану в целом.
---
Походу прав [2]. Представления будут тянуться из базы, это неявный запрос. Надо представления получать в самом запросе.

СКД, кстати, сама добавляет получение представлений в запрос.

А в типовых чего только не бывает.
---
Прошу прощения, преобразование к строке я не заметил

Если необходимо получить представление элемента справочника, то эффективнее не обращаться через ссылку к наименованию, а преобразовать ссылку к строке. В этом случае будет использоваться специальный механизм получения представлений (так же с кэшированием) и если представления объекта еще нет в кэше, то объект не будет считываться целиком, а будут считываться только поля, необходимые для получения представления.

Т.е. это все же неявное обращение к базе. В любом случае в данном примере получение представления ссылки запросом было бы эффективней
---
В реальной жизни всё несколько не так, как на экзаменах.
И где Вы тут увидели запрос в цикле - сложно понять. Разве что вот это - неявные запросы - "Строка(Выборка.СубконтоДт1)", потому что для ссылочного типа будет тянуться представление из базы (если Выборка.СубконтоДт1 - ссылочный тип, а не представление, конечно).
Но учитывая, что это печатная форма, а не какое-нибудь проведение по партиям - по барабану в целом.
---
P.S. когда до расчетных задач доберетесь - в ЗУП 3 загляните, ознакомьтесь со структурой регистра расчета (одного). То-то удивитесь.
---
Да, это ссылочный и да, я про не явный запрос в цикле. По барабану из-за отсутствия транзакций? Но засыпать субд множеством мини-запросов на мой взгляд тоже не айс.
Теперь понятно, почему типовая тормозит прям из коробки.
---
это явно не запросы в цикле.
Ориентироваться на типовые как на образец не стоит. Там нереально много невероятной фигни. Ни одна типовая никогда не пройдет сертификацию на "совместимо".
Ну и вообще нет смысла вникать в дурацкие постулаты типа "запрос в цикле нельзя". 1с чисто прикладная программа, надо делать, чтобы работало правильно и цена была приемлемой для клиента. Все остальное неважно. Сертификация этому не учит, поэтому надо сдать как они хотят и забыть.
---
здесь нет запроса в цикле.

Выборка получает все необходимые поля из базы данных: ПодразделениеДт, СубконтоДт1, СубконтоДт2, СубконтоДт3 и т.д.

 и в коде идет уже обращение к этим полям, полученным в запросе.

В данном примере запросом в цикле являлось бы обращения вида: Выборка.СубконтоДт1.Наименование.

Если чуть подробнее:
Выборка.СубконтоДт1 - это ссылка, она получена запросом из базы данных.
Выборка.СубконтоДт1.Наименование - это реквизит ссылки, значение этого реквизита запросом не получено, и происходит неявное обращение к базе для того, чтобы по ссылке получить значение ее реквизита.
---
Прошу прощения, преобразование к строке я не заметил

Если необходимо получить представление элемента справочника, то эффективнее не обращаться через ссылку к наименованию, а преобразовать ссылку к строке. В этом случае будет использоваться специальный механизм получения представлений (так же с кэшированием) и если представления объекта еще нет в кэше, то объект не будет считываться целиком, а будут считываться только поля, необходимые для получения представления.

Т.е. это все же неявное обращение к базе. В любом случае в данном примере получение представления ссылки запросом было бы эффективней
---
Походу прав [2]. Представления будут тянуться из базы, это неявный запрос. Надо представления получать в самом запросе.

СКД, кстати, сама добавляет получение представлений в запрос.

А в типовых чего только не бывает.
---
Выборка.СубконтоДт1 - ссылка.
Строка(Выборка.СубконтоДт1) - требуется получение представления ссылки, а это значит, что надо получению Номер/Дата/Наименование/Код (зависит от настройки представления) по ссылке.
И это и есть запрос.
---
Плохая идея смотреть в типовые при подготовке к спецу.