Запрос в цикле, в типовой?

1. Sakhatyr_Vitaliy 21.02.19 11:55 Сейчас в теме
Всем доброго дня!
Готовлюсь к сдаче на специалиста по платформе и постоянно в голоке "запрос в цикле".
И тут на работе, попросили добавить печатную форму бух.справки в БУХ 3.0 к документу Корректировка долга.
Всё просто, берём данную печ.форму из документа Операции и делаем как внешнюю для нашего документа.
Всё сделал, сижу читаю код...
И тут в цикле Выборка.Следующий() вижу код
АналитикаДт = ?(ЗначениеЗаполнено(Выборка.ПодразделениеДт), Строка(Выборка.ПодразделениеДт) + Символы.ПС, "")
				+ ?(ЗначениеЗаполнено(Выборка.СубконтоДт1), Строка(Выборка.СубконтоДт1) + Символы.ПС, "")
				+ ?(ЗначениеЗаполнено(Выборка.СубконтоДт2), Строка(Выборка.СубконтоДт2) + Символы.ПС, "")
				+ ?(ЗначениеЗаполнено(Выборка.СубконтоДт3), Строка(Выборка.СубконтоДт3), "");
			
			АналитикаКт = ?(ЗначениеЗаполнено(Выборка.ПодразделениеКт), Строка(Выборка.ПодразделениеКт) + Символы.ПС, "")
				+ ?(ЗначениеЗаполнено(Выборка.СубконтоКт1), Строка(Выборка.СубконтоКт1) + Символы.ПС, "")
				+ ?(ЗначениеЗаполнено(Выборка.СубконтоКт2), Строка(Выборка.СубконтоКт2) + Символы.ПС, "")
				+ ?(ЗначениеЗаполнено(Выборка.СубконтоКт3), Строка(Выборка.СубконтоКт3), "");
Показать

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

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

А в типовых чего только не бывает.
8. Montirey 21.02.19 12:59 Сейчас в теме
(6) Прошу прощения, преобразование к строке я не заметил

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

Т.е. это все же неявное обращение к базе. В любом случае в данном примере получение представления ссылки запросом было бы эффективней
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user774630 21.02.19 12:02 Сейчас в теме
В реальной жизни всё несколько не так, как на экзаменах.
И где Вы тут увидели запрос в цикле - сложно понять. Разве что вот это - неявные запросы - "Строка(Выборка.СубконтоДт1)", потому что для ссылочного типа будет тянуться представление из базы (если Выборка.СубконтоДт1 - ссылочный тип, а не представление, конечно).
Но учитывая, что это печатная форма, а не какое-нибудь проведение по партиям - по барабану в целом.
4. user774630 21.02.19 12:04 Сейчас в теме
P.S. когда до расчетных задач доберетесь - в ЗУП 3 загляните, ознакомьтесь со структурой регистра расчета (одного). То-то удивитесь.
5. Sakhatyr_Vitaliy 21.02.19 12:13 Сейчас в теме
(2) Да, это ссылочный и да, я про не явный запрос в цикле. По барабану из-за отсутствия транзакций? Но засыпать субд множеством мини-запросов на мой взгляд тоже не айс.
Теперь понятно, почему типовая тормозит прям из коробки.
3. starjevschik 21.02.19 12:03 Сейчас в теме
это явно не запросы в цикле.
Ориентироваться на типовые как на образец не стоит. Там нереально много невероятной фигни. Ни одна типовая никогда не пройдет сертификацию на "совместимо".
Ну и вообще нет смысла вникать в дурацкие постулаты типа "запрос в цикле нельзя". 1с чисто прикладная программа, надо делать, чтобы работало правильно и цена была приемлемой для клиента. Все остальное неважно. Сертификация этому не учит, поэтому надо сдать как они хотят и забыть.
6. Montirey 21.02.19 12:29 Сейчас в теме
здесь нет запроса в цикле.

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

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

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

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

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

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

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

А в типовых чего только не бывает.
9. Sakhatyr_Vitaliy 21.02.19 13:00 Сейчас в теме
Выборка.СубконтоДт1 - ссылка.
Строка(Выборка.СубконтоДт1) - требуется получение представления ссылки, а это значит, что надо получению Номер/Дата/Наименование/Код (зависит от настройки представления) по ссылке.
И это и есть запрос.
10. singlych 21.02.19 13:16 Сейчас в теме
Плохая идея смотреть в типовые при подготовке к спецу.
Оставьте свое сообщение

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