OneS
OneS copied to clipboard
Метод Пауза()
В 1С нет встроенного метода Пауза(). С одной стороны, утверждают, что метод никому не нужен. С другой же... Про него постоянно спрашивают. Есть несколько несовершенных костыльных попыток решения. В том числе и в типовых конфигурациях.
Кейсы где это необходимо:
- Интеграции с апи, имеющие предельную нагрузку в минуту/секунду. И таких немало.
- Когда надо часто получать данные из БД, а старт регламентного задания - очень тяжел. Останавливать исполнение. Живой пример. Надо в стороннюю шину выгружать только гарантированно проведенные документы, причем быстро. Подписка на событие и любая попытка сделать это в транзакции - удорожание транзакции и отсутствие гарантий, что после передачи управления среде 1с после транзакции ошибок не будет. Старт отдельного сеанса от 3 секунд, что часто за гранью требований. А повесить паузу после обработки порции, что бы получать гарантированно измененные объекты с малым временем отклика в специальном объекте метаданных - рабочая схема. И да это совсем не экзотические кейсы на больших системах с большой интеграционной нагрузкой. К мему огромному сожалению - разработчики в фирме 1с не имеют опыта написания сложных и нагруженных интеграций и не понимают всю важность и не такую уж и редкость данных кейсов.
- Реальный пример: обработка long polling http запроса (длинный таймаут). Получили http запрос, начало цикла, запросили БД- данных нет, Пауза(), снова запросили БД и т.д. Ответ на http запрос возвращаем только в том случае, если запрос в БД вернул данные, либо пустой запрос если истекли 90 секунд .
Отправлено боту 06.04.2021 в 12:36
Ждём
https://t.me/company1c/457

https://wonderland.v8.1c.ru/blog/metod-vyzvatpauzu/
