Как использовать обработку самой последней версии всегда. Один из методов


Заставим внешнюю обработку саму себя обновлять по согласованию с пользователем или без него 🙂

Доброго времени суток!

Когда запускаешь обработку или отчет, всегда задаешься вопросом, а последняя ли это версия обработки или отчета? Всегда одолевают сомнения. А вдруг не последняя и нового фунционала не будет. А потом судорожно искать, куда положил последнюю версию отчета.

Один из методов, как решить эту проблему — это вшить в саму обработку механизм обновления. Действительно, почему бы не заставить саму обработку скачать новую версию и проверить на совпадение со старой версией? А если не совпадает, то предложим пользователю  вопрос об обновлении. Так дружественно к пользователю и поступим. Добавим вишенку на тортик — после обновления переоткроем обрабтку.  Все как в лучших домах…

Для тестирования обработки расположим ее в Интернете (в бложике) и каждый сможет убедиться в ее работоспособности.

Сделаем две обработки:

Для классических форм: 4 функции

Для Управляемых форм: 9 функций (полная немодальность 🙂  и немного БСП (ПолучитьФайлИзИнтернета — если БСП есть в конфигурации)

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

file2 = ПолучитьИмяВременногоФайла("epf");
КопироватьФайл(file, file2);
НоваяФорма = ВнешниеОбработки.ПолучитьФорму(file2);
НоваяФорма.Открыть();

Р.S. Данный метод используется в проекте Виджеты в 1С

7 Comments

  1. Uejova

    Подскажите, пожалуйста, как пользоваться Вашей обработкой? Видимо, она предназначена для чего-то специализированного…. ничего у меня не получается. И даже вопрос обновить ли обработку, и тот не высвечивается.

    Reply
  2. sikuda

    (1) Uejova, Просто код надо вставить внутрь своей обработки или отчета. Внутри обработки есть переменные srv — сервер res — ресурс — откуда будет скачиваться она.

    У меня это sikuda.ru и /1c/SeftUpdateClassic.epf как тестовая обработка.

    Reply
  3. h00k
    Для тестирования обработки расположим ее в Интернете (в бложике) и каждый сможет убедиться в ее работоспособности.

    Заменить «бложик» на GitHub/ BitBucket — и вполне рабочее решение для масс 🙂

    Reply
  4. artbear

    Поделюсь своим опытом:

    В текущей публикации юзаются элементы управления жизненным циклом продуктом, например, релизное управление и т.п.

    Соответственно, нужно решать вопросы:

    • Всегда ли нужно обновлять на последнюю версию?
    • нужны ли последние изменения продукта в развернутой системе?
    • Как разбираться с ошибками в новой версии?
    • Как откатиться на старую версию?
    • Автоматически обновляемся или все-таки вручную?
    • и т.п. и т.д.

    От ошибок никто не застрахован, поэтому по опыту — ради стабильности проще пользоваться релизами и осознанным обновлением релизов, чем обязательным обновлением на новую версию.

    Reply
  5. artbear

    Ну и вместо бложика, конечно, лучше системы управлениями версиями — Git + облачные гит-хранилища (Github, Bitbucket)

    Reply
  6. ture

    (5) О! я тоже заценил все прелести Git. Весьма просто + хранилище полезняшек.

    Reply
  7. sikuda

    (5) Здесь речь немного о другом. Данная задача возникла в процессе развития проекта Виджеты в 1С Обработки используемые в этом проекте постоянно обновлялись, и если вы скачали какую-либо версию и стали ее использовать нет гарантии того что это последняя версия. Заставлять пользователя заходить каждый раз и скачивать новую версию продукта не очень дружелюбно. А разбираться в управлениями версиями должны только мы программисты — пользователю все это не нужно. Поэтому и явилось простое и эффективное решение.

    А по поводу сделать Git хранилище — работы уже ведутся https://github.com/sikuda/widget

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *