Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Код расположен после асинхронного вызова #1224

Closed
iArtemv opened this issue Dec 9, 2022 · 0 comments · Fixed by #1234
Closed

Код расположен после асинхронного вызова #1224

iArtemv opened this issue Dec 9, 2022 · 0 comments · Fixed by #1234
Assignees
Labels
standards Поддержка стандартов

Comments

@iArtemv
Copy link
Collaborator

iArtemv commented Dec 9, 2022

Название проверки

Код расположен после асинхронного вызова

Английское название проверки

The code is located after the asynchronous call

Правило анализа кода/метаданных

При асинхронном подходе вызов метода выполняется как обычно, но управление возвращается вызывающему коду до того, как асинхронный метод завершит свою работу. После этого вызывающий код продолжает свое выполнение.
Особенность асинхронного выполнения: исполнение на стороне вызывающего кода продолжится до того, как полностью закончилось исполнение вызванного метода

Для правильного решения нужно вынести весь код, который должен быть выполнен после выполнения асинхронного действия, в экспортный метод и указать его имя в обработке оповещения, которая будет вызвана после завершения асинхронного действия. Или использовать асинхронность через обещания, например, Ждать ПредупреждениеАсинх(Текст);

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: например: 124
  • Код проверки: code-after-async-call
  • Тип ошибки: WARNING
  • Критичность: MAJOR
  • Код ошибки АПК: например: 539, если аналогичная проверка существует

Параметры проверки

Текст ошибки

Код выполняются без ожидания выполнения асинхронного метода.

Пример некорректного решения

Текст = "Текст предупреждения";
ПоказатьПредупреждение( , Текст);
Сообщить("Закрыли предупреждение");

Описание, почему так делать нельзя

Пример корректного решения

Текст = "Текст предупреждения";
Ждать ПредупреждениеАсинх(Текст);
Сообщить("Закрыли предупреждение");
&НаКлиенте
Процедура Команда1(Команда)
    Оповещение = Новый ОписаниеОповещения("ПредупреждениеЗавершение", ЭтотОбъект);
    Текст = "Текст предупреждения";
    ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры

&НаКлиенте
Процедура ПредупреждениеЗавершение(ДополнительныеПараметры) Экспорт
    Сообщить("Закрыли предупреждение");
КонецПроцедуры;

Дополнительные материалы

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
standards Поддержка стандартов
Projects
None yet
2 participants