TGViewer
Жёлтый чайник 1С (Черненко Виталий) Жёлтый чайник 1С (Черненко Виталий) @juniorones · 5.29K subscribers
Post #672 6.69K
😱 ОткрытьФормуАсинх() .

➖ Асинхи в 1С уже давно, но до сих пор в платформе нет асинхронного открытия формы. Чтобы можно было сделать "как раньше" - открыть форму, подождать её закрытия и обработать результат. И всё это в одном методе без перепрыгиваний и разрезания кода обработчиками оповещения.

🤔 Но, как оказывается, в платформе уже есть такая возможность. Просто её используют только методы самой платформы, а обычным программистам 1С она недоступна.

Однако, не зря же я начал про это писать, верно?) 😁
Подъехала рубрика с недокументированными возможностями и вагоном костылей! 🩼

🕵️ Во-первых, надо убедиться, что существует такая возможность. Для этого можно взять один из методов Асинх платформы.
И вот мой неожиданный выбор:
КЗ = Новый КонструкторЗапроса;
Результат = Ждать КЗ.ОткрытьАсинх();


Этот код откроет форму с конструктором запроса. Чем нам поможет этот метод?
➖ Открывает неблокирующую форму
➖ Не прерывает работу интерфейса. Мы можем вообще больше не трогать конструктор запроса и работать в других формах сеанса
➖ Метод доступен и в тонком и в веб клиенте (не все асинх работают в вебе)
➖ Конструктор запроса - это внешняя обработка, которую можно подменить

Так может эта особая форма использует какой-то особый механизм для асинхронности? Чтобы это узнать, достаточно извлечь конструктор запроса во внешнюю обработку и посмотреть его содержимое (спойлер - ничего необычного).
Далее мы можем подменить конструктор запроса на любую свою внешнюю обработку. Напоминаю про свой инструмент для Управления платформенными обработками


❕И теперь этот код откроет нашу любую форму асинхронно. И будет ждать её закрытия. И получит результат, который форма передаёт при закрытии
КЗ = Новый КонструкторЗапроса;
Результат = Ждать КЗ.ОткрытьАсинх();


Таким образом мы можем убедиться, что платформа технически может открыть любую форму асинхронно и ждать её результата.

❓ А что это нам даёт?

😁 А ничего =)
Просто небольшой пост про хитрости работы платформы и очередной пример того как она скрывает свои возможности от нас (обычных 1Сников).

😎 P.S.: а ещё при помощи более жутких костылей можно сделать свой общий метод "ОткрытьФормуАсинх()". Он будет под капотом открывать конструктора запроса, потом на его место в окне подставлять целевую форму и ожидать закрытия окна.
А для использующего метод программиста это будет просто как Ждать ОткрытьФормуАсинх("МояФорма",,,). Реализацию в виде внешней обработки приложил в комментарии (но лучше бы сжёг)

😎😎 P.S.S.: ещё можно ухитриться сделать ПаузаАсинх(), которая бы позволила прерывать на время выполнение клиентского метода без "зависания" сеанса пользователя. Но костылей будет больше =) Это тоже умеет платформа, но нам пользоваться не даёт.

⬇️ А если у вас есть интересные необычности в платформе, которые можно разобрать, то пишите в комментариях
  • 🔥 80
  • 👍 18
  • 👏 8
  • 👀 1
More from @juniorones
  1. Sep 7, 2026🤖 1С-разработка с ИИ По советам прошел обучение на курсе Владимира Харина. Могу сказать,…
  2. Jul 15, 2026Post #768
  3. Jun 11, 2026🚀 Записался на вахту 18 июня стартует уже третий поток у Владимира Харина на курсе «1С-ра…
  4. Jun 5, 2026Нашел себе новое задротское хобби (а планировал пойти в спортзал) - ардуино. Давно погляды…
  5. Jun 1, 2026📈 Оптимизация настроек СКД 🧲😺 Внутри Магнита огромный лес легаси кода. И иногда мы им д…
  6. Apr 27, 2026⚫️️️️️️️️️️️️️️️️️️️️️️ 1С DAY от MAGNIT TECH: погружение в практику и технологии! ️️️️Вст…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →