OneS icon indicating copy to clipboard operation
OneS copied to clipboard

"Горячая перезагрузка кода" в 1С

Open SeiOkami opened this issue 2 years ago • 3 comments

Добавить возможность обновления кода внутри сеанса без его перезапуска

  1. Программист отлаживает код и находит ошибку
  2. Поправляет строчку кода
  3. Нажимает "Обновить" и в вопросе про перезапуск сеанса выбирает "Применить в сеансе"
  4. Происходит стандартное обновление, но текущий сеанс (который в отладке) не завершается, а "обновляет" у себя информацию о коде так, что разработчик может продолжать отладку

Такой механизм есть в Visual Studio C# https://habr.com/ru/companies/otus/articles/569094/

Естественно, работает это не всегда и имеет нюансы, но для самых простых случаев это очень полезно.

Источник: https://t.me/e1c_community/144500

SeiOkami avatar Apr 14 '23 08:04 SeiOkami

Врядли захотят такое делать. Динамическое обновление дооолго делали. А тут сопоставимой сложности задача (даже сложнее) и к тому же не нужная бизнес-пользователям

tormozit avatar Apr 14 '23 09:04 tormozit

Отправлено боту 14.04 Отправлено в чат: https://t.me/e1c_community/149042

SeiOkami avatar Apr 15 '23 14:04 SeiOkami

Написал развернутую версию пожелания

Современные большие конфигурации очень долго выполняют системный старт - от запуска клиентского приложения до выполнения первой строки прикладного кода. Например для ERP в клиент-серверном варианте это 20+ секунд на быстром оборудовании, для "ERP: Управление холдингом" 40+ секунд.

К этой длительности еще добавляется выполнение прикладного кода при начале работы и получаем весьма уже внушительные 30/50 секунд в лучшем случае, а в реальных условиях зачастую и более 100 секунд на полный старт приложения.

Программисту 1С требуется перезапускать клиентское приложение достаточно часто. Но с учетом такой длительности ему приходится экономить на количестве перезапусков и искать нестандартные решения:

В ряде случаев можно использовать внешнюю обработку и отлаживаться в ней, пока не потребуется вносить правки в объекты конфигурации. Ее переоткрытие выполняется значительно быстрее, т.к. не зависит от размера конфигурации.
В ряде случаев можно использовать консоль кода (например из подсистемы "Инструменты разработчика Tormozit"), в которой можно очень быстро вносить изменения и сразу выполнять код, но без создания методов и без работы с формой. Это - самый быстро перезапускаемый режим, но и самый ограниченный.

Оба эти способа имеют значительные ограничения.

Как я показал выше, бОльшую часть времени запуска клиентского приложения составляет системный старт, львиную долю которого как я понимаю занимает загрузка метаданных. А программист 1С в большинстве случаев меняет крайне малый процент объектов метаданных и в подавляющем большинстве случаев это только модули.

Поэтому кажется логичным сделать оптимизированный (горячий) перезапуск клиентского приложения из конфигуратора, который в уже работающем отлаживаемом процессе клиентского приложения

Удалит/очистит все параметры сеанса, прикладные объекты, формы и т.д.
Обновит только те объекты метаданных, которые реально изменились в новой конфигурации по отношению к уже загруженной в процесс
Запустит прикладные обработчики начала сеанса

Кажется такой режим перезапуска позволит серьезно сократить длительность перезапуска клиентского приложения и тем самым сэкономит массу рабочего времени при разработке больших конфигураций.

https://partners.v8.1c.ru/forum/t/2126697/m/2126697

tormozit avatar Apr 20 '23 11:04 tormozit