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