Как включить возможность динамического обновления базы

  оглавление  Как настроить запуск по расписанию (v3)?

Интеграция обновлятора с другими программными комплексами

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

Цель

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

Кому это нужно

Разработчикам других программных комплексов.

Прежде всего я отталкиваюсь от запросов пользователей обновлятора и в данный момент заказчиком этой возможности является отдел разработки одного из провайдеров для облачного размещения баз 1с.

Сам же я надеюсь в перспективе за счёт этой возможности сделать Web-интерфейс для обновлятора. Веб-клиента я планирую делать opensource. Если вы web-программист (или только собираетесь им стать) и хотите совместно со мной участвовать в этой разработке, пожалуйста напишите мне. Язык и технологии разработки будем выбирать вместе.

Рабочий пример

1. Скачиваем и устанавливаем обновлятор

Первым делом скачиваем специальный дистрибутив обновлятора и устанавливаем в любую удобную вам папку на сервер в портативном режиме:

Image-2018-06-27-11-07-27

2. Получаем код активации

Процесс активации ещё будет уточняться и скорее всего я дам возможность программно запрашивать код активации.

Сейчас же запускаем (только для отправки запроса на активацию) графический интерфейс обновлятора Updater1C.exe и нажимаем ссылку "Активировать проф-версию" в нижнем правом углу:

В открывшемся окне активации указываем регистрационный ключ, полученный от разработчика, и почту, на которую робот пришлёт код активации:

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

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

В графический интерфейс мы больше не возвращаемся и ничего в нём не настраиваем.

3. Запускаем обновлятор для выполнения операции

Для этого запускаем процесс Updater1C.Clone.exe c параметром командной строки -DoTask "путь к рабочей папке для этого запуска".

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

Пример такого вызова:

"x:\updater\Updater1C.Clone.exe" -DoTask "x:\Work\tasks\01"

Рабочая папка должна существовать и содержать в корне файл Task.xml с параметрами для выполнения операции над базой.

Вот пример Task.xml для программного выполнения обработчиков обновления в серверной базе:

Task.xml

А вот аналогичный пример Task.xml для программного выполнения обработчиков обновления в файловой базе:

Task.xml

В детальному описанию этих параметров мы вернёмся ниже.

4. Обрабатываем результаты

Дождёмся пока отработает запущенный нами процесс Updater1C.Clone.exe и обнаружим в рабочей папке файл Report.html с результатами выполнения операции. Этот файл появляется в рабочей папке сразу после начала выполнения операции и последовательно дописывается в процессе:

5. Обрабатываем ошибки

Признаком успешного выполнения операции является нулевой код возврата процесса Updater1C.Clone.exe.

В противном случае при выполнении операции были ошибки и/или предупреждения.

В случае ошибки её полный текст:

  • является частью отчёта Reports.html (обычно выделен красным)
  • отдельно записывается в файл Errors.html

Пример файла Errors.html:

Особняком стоит ситуация, когда обновлятор не смог обработать возникшую ошибку. В этом случае текст необработанной ошибки будет записан в файл Errors.txt:

Описание файла с параметрами запуска операции

Примеры файлов Task.xml с описанием параметров запуска операции в обновляторе даны выше. Разберём их подробнее.

Settings\ActivationCode

Код активации обновлятора, полученный от робота. Код указывается целиком, включая завершающий знак =.

Settings\PlatformsDir

Путь к папке, в которую установлены релизы платформы. Обычно это "c:\Program Files\1cv8". Именно в этой папке обновлятор осуществляет поиск нужного релиза в соответствии с параметрами "Base\Platform\Version" и "Base\Platform\Bit".

Base\Platform\Version

Маска релиза платформы 1с, который необходимо использовать для выполнения операции.

Возможные значения:

  • 8.3.11.34 - будет использоваться в точности указанная версия платформы
  • 8 или 8.* или вообще отсутствие параметра - будет использоваться наиболее поздняя версия платформы
  • 8.3.11.* - будет использоваться наиболее поздняя версия платформы 8.3.11

Base\Platform\Bit

Битность релиза платформы 1с, который необходимо использовать для выполнения операции.

Возможные значения:

  • 32 - 32 битная версия
  • 64 - 64 битная версия
  • любое другое значение или отсутствие параметра - любая битность, но если для нужной версии платформы найдены сразу 32 битный и 64 битный релизы, то для 32 битных ОС будет выбран 32 битный релиз, для 64 битных ОС будет выбран 64 битный релиз

Base\Platform\Name

Произвольное имя базы, которое будет присутствовать в отчёте о выполнении операции.

Base\Path

Путь к файловой базе, например "X:\Bases\Ромашка".

Имеет смысл указывать только для файловой базы.

Base\Srvr

Имя кластера 1с, включая порт, например, "PC:1441".

Имеет смысл указывать только для серверной базы.

Base\Ref

Имя базы в кластере 1с, например, "test".

Имеет смысл указывать только для серверной базы.

Base\Auth\UserName

Имя администратора базы 1с, например, "Администратор".

Base\Auth\UserPassword

Пароль администратора базы 1с, например, "12345".

Base\Cluster\UserName

Имя администратора кластера 1с, например, "admin".

Имеет смысл указывать только для серверной базы.

Base\Cluster\UserPassword

Пароль администратора кластера 1с, например, "qwerty".

Имеет смысл указывать только для серверной базы.

Base\Cluster\Port

Порт агента кластера 1с, например "1440".

Имеет смысл указывать только для серверной базы.

Operation\Kind

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

Возможные значения (их количество будет увеличиваться по мере запросов от пользователей):

  • run_update_handlers - выполнить обработчики обновления

Operation\BlockUsers

Блокировать ли пользователей на время выполнения операции.

Возможные значения:

  • 1 - блокировать
  • 0 или отсутствие параметра - не блокировать

Если база блокируется на время выполнения операции, то после осуществляется разблокировка.

Код блокировки всегда равен "updater1c".

Operation\Debug

Выводить ли подробные сообщения в отчёт об операции для отладки (других различий в этом режиме нет).

Возможные значения:

  • 1 - выводить
  • 0 или отсутствие параметра - не выводить

Ответы на частые вопросы

В: Можно ли указать в Task.xml сразу несколько баз для обработки?

О: Нет, нельзя. Если требуется параллельное выполнение операции сразу над несколькими базами, формируйте столько Task.xml сколько понадобится (каждый в своей рабочей папке) и одновременно запускайте отдельные процессы Updater1C.Clone.exe для каждого из них.

---

В: Можно ли указать в Task.xml сразу несколько операций для выполнения?

О: Нет, нельзя (но в будущих версиях возможно будет можно). Если требуется выполнение нескольких операций над базой, выполняйте их последовательно формируя Task.xml и запуская Updater1C.Clone.exe для каждой из операций.

---

В: Обязательно ли очищать рабочую папку после выполнения операции.

О: Нет, не обязательно. Если вы используете такую рабочую папку повторно для выполнения операции над следующей базой (или следующей операции над этой же базой), обновлятор сам очистит необходимые файлы перед новым запуском.

---

В: Можно ли копировать установленный обновлятор на другие компьютеры без установщика.

О: Можно. Но если вы переместите и начнёте использовать обновлятор на других системах, вам понадобится правильный код активации.