Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Виконання запиту в циклі... в яких випадках можна ?          
alex-l1904 Подменю пользователя
сообщение 12.05.23, 8:46
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 67
Спасибо сказали: 11 раз
Рейтинг: 11

Доброго дня,
всім відомо, що запит в циклі це погано...

Але... якщо обробка результату кожного запиту триває по кілька хвилин,
то можна вважати, що це просто послідовне виконання запитів?

Як вважаєте ?

Vofka Подменю пользователя
сообщение 12.05.23, 9:12
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4522 раз
Рейтинг: 3645.4

Цитата(alex-l1904 @ 12.05.23, 9:46) *
то можна вважати, що це просто послідовне виконання запитів?

Я так не вважаю. Але якщо
Цитата(alex-l1904 @ 12.05.23, 9:46) *
обробка результату кожного запиту триває по кілька хвилин

То пофігу. Але за можливості слід намагатися робити меншу кількість запитів в будь-якому випадку.

andr_andrey Подменю пользователя
сообщение 12.05.23, 9:14
Сообщение #3

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 626
Спасибо сказали: 166 раз
Рейтинг: 130.8

alex-l1904 @ Сегодня, 9:46 * ,
Завжди зважають на ситуацію, мислити догматами шкідливо для результату.
Результат майже завжди - компроміс.


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Moloko Подменю пользователя
сообщение 12.05.23, 11:48
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 95
Спасибо сказали: 22 раз
Рейтинг: 20

А що заважає поставити в самому запиті необхідне додаткове групування?

zay Подменю пользователя
сообщение 12.05.23, 12:53
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 164
Из: Киев
Спасибо сказали: 132 раз
Рейтинг: 138.1

alex-l1904 @ Сегодня, 9:46 * ,
Вважаю так: якщо ви бачите, що с самого початку запит виходить занадто складний, а у майбутньому може бути змінена бізнес логіка і це повністю поламає запит, то краще одразу розбивайте заповнення даних на окремі запити/функції
Вносити зміни в окремі функції потребує меньше часу ніж переписувати складні запити

Спасибо сказали: Cерый, kihor, nik389,

Batchir Подменю пользователя
сообщение 18.05.23, 9:34
Сообщение #6

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Цитата
Виконання запиту в циклі... в яких випадках можна ?

Запрос в цикле всегда зло. Если есть возможность вынести запрос за рамки цикла (не важно это будет одни запрос или как описали выше блоки), то всегда это нужно делать.
Например (сугубо в качестве кейса),
ТекстЗапроса = 
"
|Выбрать Н.Ссылка Из Справочник.Номенклатура КАК Н";
Пока Выборка.Следующий() Цикл
Сообщить(""+Выборка.Ссылка + " "+Выборка.Ссылка.Артикул);
КонецЦикла;


является ошибкой, т.к. обращение через точку к ссылке является неявным запросом к базе.
Будет выполнены неявные запросы на получение представления ссылки и получения артикула по ссылке чтобы выдать в Сообщить
Представление ссылки и артикул в данном кейсе нужно выносить в запрос.

Из практики вспомнил несколько кейсов использования запроса в цикле:
1. Запрос в цикле у меня использовался когда результат следующего запроса зависел от предыдущего.
Например (опять сугубо в качестве кейса),
Запросом формировалась первичная ВТ
Затем шел какой-то цикл
Пока Истина Цикл
// Выбрать * ПОМЕСТИТЬ ВТ_1 из ВТ
//
// Изменяем данные ВТ_1 в запросе по какой-то логике, которая определяется циклом
//
// - Уничтожить ВТ
// Выбрать * ПОМЕСТИТЬ ВТ из ВТ_1
// - Уничтожить ВТ_1
//
// в следующей итерации цикла используем обновленные данные ВТ
КонецЦикла;


2. Построение отчета ПНЛ, цифры (формулы, источники и прочее) которого определялись настройками справочника, но там по сути такой же подход был как и в 1 кейсе. Каждая следующая строка ПНЛ имела свою логику, которая могла (или не могла) зависеть от данных предыдущих строк.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 22.05.24, 10:22
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!