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

24.04.2023      38752

Фирма «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С».


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


См. также

Новость Платформа 1С v8.3 Зазеркалье

Разработчики платформы рассказали о планах по оптимизации нагрузки при выполнении ресурсоемких операций, которые будут реализованы в версии 8.3.27. Администраторы смогут настраивать подключение определенных клиентов к выбранным серверам кластера.

17.07.2024    284    ЕленаЧерепнева    0       

1

Новость ИТ-Новость Кадры

Согласно прогнозу Министерства труда, к 2029 году потребность бизнеса в руководителях значительно снизится, а в высококвалифицированных специалистах возрастет. Также ведомство отметило, в каких сферах труда в целом уменьшится и повысится спрос на кадры.

15.07.2024    385    AnastasiaKl    0       

2

Новость Зазеркалье

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

10.07.2024    1029    ЕленаЧерепнева    0       

4

Новость Зазеркалье

В «1С:Предприятие 8.3.27» можно будет использовать форматированную строку для вывода в табличный документ. Можно будет определять внешний вид строк в табличном документе, задавая нужные параметры шрифта: размер, начертание, цвет.

03.07.2024    4259    ЕленаЧерепнева    0       

4

Новость Платформа 1С v8.3 Зазеркалье

Официальный технологический блог «Заметки из Зазеркалья» анонсировал новые возможности технологической платформы версии 8.3.27 для настройки быстрого обмена сообщениями с приложениями с использованием протокола WebSocket.

25.06.2024    3164    ЕленаЧерепнева    3       

6

Новость ИТ-Новость Отчетность

С 15 июля 2024 года отчет о движении финансов по зарубежным счетам ИП-резидентов и ЮЛ-резидентов нужно будет сдавать в новом формате. Предыдущие форматы из писем ФНС утратят актуальность.

21.06.2024    678    user1915669    0       

2

Новость Платформа 1С v8.3 Зазеркалье

Фирма «1С» анонсировала задачи, которые разработчики планируют реализовать в технологической платформе 1С:Предприятие 8.3.28. Всего в плане присутствует 20 пунктов. Пока все задачи имеют статус «Запланировано».

18.06.2024    3058    ЕленаЧерепнева    2       

1

Новость Зазеркалье

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

12.06.2024    5933    ЕленаЧерепнева    1       

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

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

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


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

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

ну и я также надеюсь, что не будут делать сложности с контролем всего стека )
9. 7OH 70 25.04.23 09:10 Сейчас в теме
"Заставь дурака богу молиться..." = "Попроси 1С сделать что-то простое"
Боюсь представить, как они "могут" реализовать АПИ.
jirtrest; MadB111; sandr13; +3 Ответить
21. siamagic 27.04.23 07:12 Сейчас в теме
(9) OData?
22. 7OH 70 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 42 25.04.23 10:18 Сейчас в теме
Сделали типа на: отстаньте?

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