По действительно многочисленным просьбам: пауза в 1С:Предприятие 8.3.25

По действительно многочисленным просьбам: пауза в 1С:Предприятие 8.3.25
24.04.2023
40532

Фирма «1С» сообщила о планах добавить во встроенный язык новый метод глобального контекста ВызватьПаузу (CallSleep). Хорошая новость здесь в том, что пауза будет, а не очень хорошая в том, что ожидать ее в платформе 1С можно только с версии 8.3.25.


Метод «ВызватьПаузу» в 1С:Предприятие: дождались

Разработчики прикладных решений на платформе 1С давно и настойчиво высказывали пожелание о добавлении паузы в платформу. Эта функциональность позволит существенно упростить интеграцию с внешними системами из серверного кода.

Фирма «1С» учла пожелания профессионального сообщества, и анонсировала реализацию нового метода глобального контекста ВызватьПаузу (CallSleep) в платформе 1С:Предприятие 8.3.25.

Метод будет останавливать выполнение потока сеанса на заданное время.

При этом использовать новую фичу следует все-таки с осторожностью: «Мы уверены, что многие разработчики, использующие платформу 1С:Предприятие, смогут с пользой применить новую функциональность в своих сценариях. Но мы рекомендуем внимательно подумать – нужно ли использовать ВызватьПаузу в каждом конкретном случае. Также мы не рекомендуем делать бесконечный цикл (пусть и с вызовом ВызватьПаузу), то есть количество ожиданий (вызовов ВызватьПаузу) должно быть небольшим», – говорится в заметке.

 

Фирма «1С» ранее намекала на то, что платформенный метод для паузы может появиться в 1С в самое ближайшее время. Например, публиковался вот такой ребус, в котором было зашифровано то самое долгожданное обновление.

 

Синтаксис нового метода: ВызватьПаузу(<Интервал>)

где параметр Интервал – интервал в миллисекундах.

Одна из наиболее важных особенностей нового метода «ВызватьПаузу» состоит в том, что он будет доступен только на сервере и может быть вызван только из серверных обработчиков и серверных модулей, например, из фоновых заданий, веб-сервисов, http-сервисов, ботов и т.п.

А при вызове с клиента серверного метода, содержащего ВызватьПаузу, будет сгенерировано исключение «Нельзя вызвать метод ВызватьПаузу в клиент-серверном вызове».

«Мы сделали это осознанно: метод ВызватьПаузу блокирует выполнение кода и, будучи вызван из клиентского кода, заблокирует пользовательский интерфейс. Мы же хотим, чтобы наш пользовательский интерфейс был максимально отзывчивым. Для реализации функциональности паузы в клиентском коде есть другие способы – например, можно воспользоваться механизмом фоновых заданий», – объясняют свое решение разработчики платформы.

Возникает вопрос, на который пока нет ответа: будет ли контролироваться вложенный вызов нового метода «ВызватьПаузу» в иерархии нескольких вызовов – клиент-сервер-сервер-сервер и т.д.?

 

 

Комментарий эксперта

Артур Аюханов, ИТ-директор компании «Инфостарт», так прокомментировал особенности реализации нового метода:

Новый метод ВызватьПаузу, исходя из анонса, имеет значительные ограничения. Запрет его вызова внутри клиент-серверного вызова и исключение его вызова на клиенте ставит крест на многих сценариях его использования.

Зато есть отличный повод реализовать новое правило статического анализа кода для BSL LS или для плагина v8-code-style к EDT

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

Мое мнение – новый метод будет использоваться намного реже уже существующих методов Пауза из различных конфигураций, как собственных от 1С, так и партнерских! Фактически, все старые методы Пауза придется оставить в конфигурации и глобальной замены их использования на новый метод не произойдет.

Проблемы нейминга: предложения сообщества

Новое имя для паузы в 1С вызвало не меньшую реакцию сообщества, чем анонс самого метода.

Фирма «1С» объяснила свое решение обозначить метод «ВызватьПаузу» тем, что во многих партнерских решениях уже есть метод «Пауза», реализующий подобную функциональность. Именно поэтому было выбрано название «ВызватьПаузу», чтобы избежать массовых изменений кода в уже существующих решениях.

Артур Аюханов также прокомментировал выбор названия для нового метода:

У меня возник вопрос – почему выбрано именно такое наименование метода, как «ВызватьПаузу»? В анонсе обозначено, почему не выбран вариант с максимально частотным названием «Пауза».

Я рад, что коллеги из 1С продумали вопрос совместимости с прикладными конфигурациями 1С и исключили возможность срабатывания мины при переходе на новую платформу. Но считаю, что не стоит добавлять часто употребляемые глаголы в начале имен методов. Например, «Получить», «Вызвать», «Выполнить» и т.п.

Мне нравится вариант «Приостановить». Это наименование максимально подходит к описанию метода из анонса «останавливающий выполнение потока сеанса на заданное время».

В конце концов, я видел и другие интересные варианты в комментариях к сообщениям «1С» о новом методе. Например, «ВызватьПазузу», а также «Зависнуть», «Покурить» и т.п.

А вообще я жду «Ждать ПаузаАсинх» или «Ждать ПриостановитьАсинх»!

В данном случае «Пазузу» – не описка, а креатив сообщества разработчиков 1С. Это имя повелителя демона ветров в ассирийской и вавилонской мифологии, который изображался с поднятой правой рукой и опущенной левой, что символизировало жизнь и смерть. Это по смыслу вполне соответствует содержанию нового метода.

В любом случае, уже скоро одна из наиболее ожидаемых возможностей технологической платформы будет реализована, и теперь фирма «1С» сообщила об этом официально.

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

Полный текст публикации о новом методе «ВызватьПаузу» в официальном блоге фирмы «1С».

Если вам удобнее смотреть новости в телеграме, то вот наша группа – ИНФОСТАРТ.

Автор:
Обозреватель

См. также

В платформе 8.5.3 новые возможности Механизма копий баз данных позволят оптимально определить состав объектов, которые требуется добавить из основной базы в копию для ускорения наиболее нагруженных операций чтения.

вчера в 17:02    765    ЕленаЧерепнева    0       

3

Фирма «1С» анонсировала изменения в работе механизма лицензирования. Начиная с версии технологической платформы 8.5.2 для выдачи лицензий больше не используется HASP License Manager. При этом сами правила лицензирования остаются без изменений.

11.04.2025    13028    ЕленаЧерепнева    3       

11

Фирма «1С» опубликовала финальные даты выпуска патчей для тиражных конфигураций 1С, которые обеспечивают работу с новым форматом УПД 5.03. Рассказываем, что и когда нужно обновить. И что делать, если установить обновление быстро не получается.

11.04.2025    3745    ЕленаЧерепнева    0       

3

Опубликована очередная версия платформы 1С:Предприятие 8.3.27. В релиз вошли 54 задачи, связанных с доработкой функциональности, и 12 задач по оптимизации функций и режимов работы. Рассказываем о наиболее значительных изменениях нового релиза.

10.04.2025    5512    ЕленаЧерепнева    2       

11

Фирма «1С» планирует оптимизировать процесс установки обновлений для пользователей платформы уровня КОРП: операции реструктуризации можно будет проводить при активных пользовательских сеансах, если они не затрагивают реструктурируемые таблицы.

09.04.2025    1386    ЕленаЧерепнева    0       

4

Налоговая ввела новый формат для универсального-передаточного документа и счетов-фактур. Читайте подробнее о том, какие изменения произошли в формате, что станет обязательным для ОСНО и УСН, и какие решения для этого предлагает Инфостарт Маркетплейс.

03.04.2025    12000    o_prohina    4       

21

С 1 апреля пользователи 1С, которым нужно сдавать отчетность только в ФНС, смогут перейти на новый экономичный тариф 1С-Отчетности. Главное преимущество тарифа – возможность контроля состояния ЕНС прямо из программы 1С.

02.04.2025    1578    ЕленаЧерепнева    6       

3

Приложение «1С:Простые продажи 8.5» не предназначено для реального учета, но позволяет убедиться, что работать с обновленным UX мобильной платформы 1С стало удобнее и быстрее. Скачать приложение можно во всех популярных маркетах.

31.03.2025    1616    Alisa_Brineva    0       

4

Комментарии

Инфостарт бот
1. ImHunter 24.04.23 15:27 Сейчас в теме
Веселится и ликует весь народ!
Кричали женщины Ура и в воздух чепчики бросали.
(с) Классики
Merkalov; DrAku1a; Innuil; jirtrest; sandr13; Sword; AnKonAlm; +7 Ответить
15. Darklight 26.04.23 12:13 Сейчас в теме
(1)куда ликуете ведь "доступен только на сервере и может быть вызван только из серверных обработчиков и серверных модулей, например, из фоновых заданий, веб-сервисов, http-сервисов, ботов и т.п." и это очень жёсткое ограничение - ставящие не решающее проблемы интеграции с клиентского контекста! Хотя на сервере это тоже востребовано - но как раз в бесконечных циклах - которые указаны как нежелательное применение!

Эх....запоздало это всё.... протухло (ибо для паузы уже давно найдено несколько вполне рабочих обходных альтернатив) - лучше бы асинхронность развивали и параллельность - в т.ч. в клиентском контексте - тогда паузу лучше делать как-то так "await Task.Delay(Timeout)" в рамках текущего контекста выполнения (на клиенте это может быть форма, или скоуп связанных форм, или отдельный фоновый поток - коли будут такие доступны а-ля "Task.Run(func_or_lymbda)"), и без общих фризов всего интерфейса (хотя попой зафризить и его целиком тоже может быть полезно - но это уже другая тема)
2. Torin 24.04.23 15:36 Сейчас в теме
ИМХО - мы так долго ждали этот метод , что научились жить без него.
rpgshnik; sevushka; feel_deep; Brawler; Darklight; Innuil; Merkalov; Tarlich; Jeka44; Sword; siamagic; AnKonAlm; +12 Ответить
3. frkbvfnjh 24.04.23 15:47 Сейчас в теме
Будет забавно, если метод будет грузить процессор на 100%, а корп версия не одно ядро, а все )))
erplab; Darklight; Innuil; jirtrest; Merkalov; sandr13; Sword; +7 Ответить
4. frkbvfnjh 24.04.23 16:04 Сейчас в теме
Это получается с клиента вызывать можно так будет?
&НаСервереБезКонтекста
Процедура ПриостановитьНаСервере(Интервал)
     ВызватьПаузу(Интервал);
КонецПроцедуры
5. artbear 24.04.23 17:17 Сейчас в теме
(4) как раз и не очень понятно, можно или нет.
1 если этот метод вызывается с клиента, точно нельзя
2 если этот код вызывается из серверного метода-обработчика события формы, то можно
3 как в статье указано, непонятно, что будет при вложенном вызове - клиентский метод - другой серверный метод - текущий серверный метод, будет исключение или нет?
20. Brawler 26.04.23 14:58 Сейчас в теме
(5) скорее всего типом сеанса будет регулироваться
7. dsdred 24.04.23 17:38 Сейчас в теме
(4судя по анонсу, нет.
Можно только через фоновые задания, http сервиса и как то ещё.

Собственно пауза получится с погрешность. То что вы описали можно как http сервис выставить.
16. Darklight 26.04.23 12:19 Сейчас в теме
(7)В фоновых задания я и сейчас могут поставить паузу через функцию "ОжидатьЗавершения(<Таймаут>)". И не только в фоновых заданиях, но и на сервере (если запустить отдельное фоновое задание и ждать так его завершения)
6. ImHunter 24.04.23 17:27 Сейчас в теме
(5) Собственно, почему нельзя п1 ? Мне кажется, как-то пофиг. Тормознется ведь поток пользователя, пусть и на сервере.
И еще мне кажется (уже про п3), ну не будут заморачиваться с анализом стека вызовов. Ведь большой риск где-то как-то накосячить в реализации условий, забыть потом учесть условия при изменении кода платформы.
8. artbear 24.04.23 18:18 Сейчас в теме
(6)
Собственно, почему нельзя п1 ? Мне кажется, как-то пофиг. Тормознется ведь поток пользователя, пусть и на сервере.
И еще мне кажется (уже про п3), ну не будут заморачиваться с анализом стека вызовов. Ведь большой риск где-то как-то накосячить в реализации условий, забыть потом учесть условия при изменении кода платформы.


п1 (вызов с клиента) нельзя, т.к. 1С явно об этом написала!

по п3 (вложенные вызовы) - не зная особенностей реализации вызовов 1С, нельзя точно сказать.
вдруг для КАЖДОГО серверного вызова есть признак, что он вызывается из клиентского метода? )
и тогда указанная проверка тривиальна

ну и я также надеюсь, что не будут делать сложности с контролем всего стека )
9. 7OH 25.04.23 09:10 Сейчас в теме
"Заставь дурака богу молиться..." = "Попроси 1С сделать что-то простое"
Боюсь представить, как они "могут" реализовать АПИ.
jirtrest; MadB111; sandr13; +3 Ответить
21. siamagic 27.04.23 07:12 Сейчас в теме
(9) OData?
22. 7OH 27.04.23 14:12 Сейчас в теме
(21) Снегопат )
10. ubnkfl 25.04.23 10:02 Сейчас в теме
Это когда тебя о чем-то просят и ты делаешь через Ж, чтобы больше не обращались.
Merkalov; TeMochkiN; Darklight; jirtrest; MadB111; semagin@gmail.com; Sword; +7 Ответить
11. Sword 25.04.23 10:18 Сейчас в теме
Сделали типа на: отстаньте?

А почему на клиенте то нельзя?
Опять скриптами делать?
MadB111; sandr13; ubnkfl; +3 Ответить
12. Feelthis 25.04.23 20:58 Сейчас в теме
В то время, как Илон Маск продумывает организацию первого поселения на Марсе в 1С планируют сделать... тадаам. А если серьезно это прямо топовая актуальная задача в платформе? Или с программистами и в 1С все плохо?
Какие могут быть кейсы использования паузы кроме дергания внешнего api с лимитами на request?
13. intehof 26.04.23 01:22 Сейчас в теме
Для клиента норм работает "ПодключитьОбработчикОжидания()"
Brawler; triviumfan; +2 Ответить
14. triviumfan 26.04.23 09:55 Сейчас в теме
Почему не в 8.3.30?
17. ImHunter 26.04.23 12:35 Сейчас в теме
(15) Да я так, больше поржать;) Ну действительно, как-то уже научились жить и без штатной паузы.
18. dsdred 26.04.23 12:40 Сейчас в теме
(16) из анонса мало что понятно, анонсы и документация это то чем фирма 1с не славится. Подождём посмотрим, что это будет.
19. Darklight 26.04.23 14:10 Сейчас в теме
Датой анонса они часом не опоздали на 23 дня?
23. N1ce 24.05.23 20:11 Сейчас в теме
14.03.2023 GPT 4 от OpenAI, 24.04.2023 анонс ВызватьПаузу от 1С. Что дальше? Я думаю в 2025 будет контекстная подсказка в редакторе текста запроса и выражений

Оставьте свое сообщение