Резервное копирование локального Medoc. Автоматизация

medoc-logoMedoc (Медок) — от этого слова содрогаются бухгалтера и сисадмины. Но мы вынуждены работать с этим ПО. Несколько дней назад у меня появилась нестандартная задача. У моих клиентов в одной организации есть три базы локального Medoc. Стал вопрос о резервном копировании. Тут существует много вариантов, но мне хотелось делать это средствами самой программы Медок.

Немного технической предыстории. Сетевая версия Медок устанавливает службу в вашу Windows которая может управлять программой и в том числе резервным копированием. Локальная же версия Медок может делать копии только тогда, когда открыта сама программа! В итоге резервное копирование, которое будет реализовано через встроенный планировщик заданий выполняется так. Сетевая версия с помощью службы ZvitGrp запускает Medoc и выполняет резервное копирование в заданное время, а затем закрывает программу. У локальной версии резервное копирование из планировщика будет выполнено ИСКЛЮЧИТЕЛЬНО в случае, когда открыт сам Medoc!

Мне трудно понять логику программистов разработчика (вернее её отсутствие), но это факт. В итоге имея сетевую версию мы можем автоматизировать резервное копирование Medoc, а имея локальную версию – нет! И если ваш нерадивый или ленивый бухгалтер не делает копий при закрытии Медок, то вы можете остаться без важных данных. Я нашёл способ (вернее несколько) автоматизировать резервное копирование Medoc в локальной версии.

Автоматизируем локальный Medoc

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

Вариант первый. Мы можем в настройках (Администрирование – резервное копирование) установить галку, чтобы делать копии при закрытии программы. В данном случае каждый раз при закрытии программы будет делаться выгрузка данных из баз в архив. Это плюс, но есть и жирные минусы. Если в базе работает несколько пользователей на терминальном сервере, то будет куча архивов у каждого пользователя в своей папке. И даже если задать папку для резервного копирования, то при большом размере базы и слабом ПК такой архив может делаться несколько часов.

Вариант второй. Автоматизировать запуск Medoc и настроить резервное копирование через встроенный планировщик задач (как в сетевой версии). Из плюсов – чётко регламентированное время создания копий, а также 99% шанс того, что копия будет сделана. Из минусов – разработчик чётко дал понять, что автоматически Medoc не умеет и не будет уметь запускаться. Все кто им пользовался знают,  чтобы зайти в программу Medoc необходимо как минимум в 2-х окнах нажать клавишу Enter. Но решение есть.

Реализация варианта №2

Скажу сразу, что сам код программы Medoc я не изменял и даже не трогал. Но пришлось прибегнуть к стороннему софту, в частности к программе xStarter, которая является бесплатным ПО для жителей бывшего СНГ. Итак, алгоритм действий таков. Создаём папку в которую будут делаться копии. Далее запускаем свой Медок, вычисляем время запуска каждого окна. Затем настраиваем в планировщике задач создание копии программы. После этого запускаем и вычисляем время за которое будет сделана копия. Все эти временные отрезки фиксируем, они нам понадобятся позже.

Затем устанавливаем на свой ПК программу xStarter. В ней мы создаём задачу Medoc. Алгоритм действий, который создаём в задаче будет таким:

  1. Запуск самой программы Medoc с таймаутом, с которым он запускается на вашем ПК + 1 минута;
  2. Ожидание первого окна запуска Medoc с таймаутом 1 минута;Meodc
  3. Передача нажатия клавиши Enter;
  4. Ожидание второго окна запуска Medoc (выбор организации) с таймаутом 10 секунд;Meodc
  5. Передача нажатия клавиши Enter*;

В итоге у нас запуститься Medoc. Далее нам необходимо вычислить тайминги таким образом, чтобы после запуска Medoc максимум через 1-2 минуты запускалась задача из планировщика, которая делает резервную копию программы.MedocMedoc

  • Устанавливаем таймаут в Xstarter на время, за которое запускается ваша задача резервного копирования + время создания самой копии + 3 минуты (резервное копирование может быть и дольше);Medoc
  • Ожидание окна уведомления о том, что резервное копирование выполнено успешно;Medoc
  • Передача нажатия клавиши Enter.

* — в этом случае вы зайдёте в первую организацию из вашего списка в Medoc, но будет выполнена настройка резервного копирования всех ваших организаций.

В итоге всё должно работать так: xStarter запускает Medoc, в котором в свою очередь срабатывает задача резервного копирования. По окончанию копирования выдаётся окно уведомления и xStarter нажмёт на кнопку ОК, при этом сам Medoc закроется.xStarterxStarter

В данном контексте я реализовал дополнительные задачи, которые позволяют бухгалтеру уходя с работы домой оставит свой ПК с Медок. Программа сама сделает копию базы Медок и выключит ПК.

Заключение

И до тех пор, пока разработчик не начнёт реализацию функционала для системных администраторов (запуск с консоли, подключение баз на SQL, оптимизацию кода – Medoc самая тупящая программа) системным администраторам придётся идти на радикальные меры. Ведь как говорят: «Боль на выдумку хитра». А для толкового системного сисадмина не бывает нерешаемых задач, что и было доказано в сегодняшней статье. И если у вас нет такого сисадмина – обращайтесь к нам в компанию за помощью. PS: Как настраивать те или иные задачи в программе xStarter вы можете прочесть в документации к программе либо на форуме разработчика. Я же хочу выразить благодарность авторам xStarter за великолепный софт, который позволяет реализовать самые невероятные задачи автоматизации.

Ronald

Добавить комментарий