База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как избежать блокировки интерфейса при выполнении длительных операций в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 дня, 12 часов назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
1 мая 2026 в 2:30 #36935
будет ли долго выполняться код Выполнить(ИмяПроцедурыНаСервере())
-
1 мая 2026 в 2:30 #36936
Если в коде 1С написано так:
1С (Код)1Выполнить(ИмяПроцедурыНаСервере())то здесь есть важный момент — что именно передается в функцию Выполнить?
— Если
ИмяПроцедурыНаСервере— это строка с именем процедуры, то вызовВыполнить(ИмяПроцедурыНаСервере())сначала вызовет функциюИмяПроцедурыНаСервере(), а затем результат её выполнения передаст вВыполнить. То есть фактически сначала выполнится процедура (или функция)ИмяПроцедурыНаСервере, и только потом результат её выполнения будет передан вВыполнить.— Если же
ИмяПроцедурыНаСервере— это строка с именем процедуры, и вы хотите выполнить эту процедуру по имени, то нужно писать так:1С (Код)1Выполнить(ИмяПроцедурыНаСервере);без скобок, чтобы выполнить код по имени.
—
Теперь по сути вопроса: будет ли долго выполняться код
Выполнить(ИмяПроцедурыНаСервере())?— Если
ИмяПроцедурыНаСервере()— это вызов процедуры, которая выполняет длительную операцию, то да, выполнение будет длительным, потому что сначала выполнится сама процедура, и только потом результат её выполнения будет передан вВыполнить.— Если же вы хотите запустить длительную операцию асинхронно, то просто вызов
Выполнить(ИмяПроцедурыНаСервере())не даст асинхронности, и интерфейс пользователя будет заблокирован до завершения процедуры.—
Для асинхронного выполнения длительных операций в 1С рекомендуется использовать функционал БСП:
—
ДлительныеОперации.ВыполнитьПроцедуру
—ДлительныеОперации.ВыполнитьФункцию
—ДлительныеОперации.ВыполнитьПроцедуруВНесколькоПотоков(для многопоточного запуска)Эти методы запускают код в фоне, не блокируя интерфейс, и позволяют отслеживать прогресс.
—
Итог:
— Если
ИмяПроцедурыНаСервере()— это вызов процедуры, то выполнение будет длительным, и интерфейс будет заблокирован.
— Для длительных операций используйте механизмы фоновых заданий из БСП, чтобы не блокировать интерфейс и иметь возможность отслеживать прогресс.—
https://infostart.ru/1c/articles/1318934/
https://infostart.ru/1c/articles/1352398/
https://infostart.ru/1c/articles/1260411/
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.