Magic Updater. Система администрирования распределенной сети 1С:РИБ

06.08.18

Интеграция - Перенос данных 1C

Обновления 1С стали для Вас адом? Каждодневная "война" за получение данных из всех торговых точек? Обмены то проходят, то не проходят? Разрушилась база, а резервной копии нет и не было? Если у Вас тоже регулярно возникают данные вопросы - найдите пару минут прочитать статью ниже.

РИБ - не лучший, но, пожалуй, пока единственный способ более-менее системно поддерживать единую конфигурацию 1С по всей филиальной сети,
конечно, в случае, если филиальная сеть работает на 1С. Но жесткие требования к поддержанию единой конфигурации привносят и определенные проблемы.
Хотя, если их исключить, проблем будет ещё больше. Поэтому конечными узлами РИБ управлять централизованно крайне важно.

За годы своей работы я пробовал различные варианты:

1) Внести компьютеры в домен и использовать групповые политики.
Очень плохой вариант - репликация базы AD часто требует хорошего интернет-соединения, определенных ОС и их настроек на конечных рабочих станциях,
вызывает проблемы с централизованным администрированием большого количества учетных записей. Также требует наличие и поддержание VPN соединений на конечных точках.
Ни одного удачного решения подобного рода я лично не видел.

2) На каждом компьютере настроить расписание запуска регламентных операций
Неплохой в целом вариант. Но имеет ряд недостатков:
     - выполнилась операция или нет, мы никак не узнаем;
     - для того чтобы узнать, какие были ошибки, нужно удаленное подключение;
     - нельзя обновить информационную базу по желанию, даже если допустили ошибку, и нужно срочно;
     - обновление скриптов - дело сугубо ручное.

3) Запускать регламентные операции средствами самой 1С
Это, конечно, можно сделать, только вот обновлять 1С средствами самой 1С - это проблема, как минимум ввиду того, что в большинстве случаев требуется монопольный доступ к информационной базе.
Для этого часто используются специфичные решения вроде динамического формирования скриптов и их запуска. Такой подход вызывает регулярные проблемы:
    - часто защита Windows запрещает записывать запускаемые файлы;
    - передать логи обновления в центр тоже бывает проблематично;
    - обновление информационной базы "по желанию" возможно только с нормально работающими фоновыми заданиями в файловом варианте, а это, само по себе, редкость.

4) Использовать антивирус как средство удаленного администирирования
Этот вариант как минимум требует наличия продвинутого антивирусного ПО на конечных компьютерах, имеющего средство удаленного администрирования, а это уже не дешевое решение.
Кроме того, антивирусное ПО часто приносит больше проблем, чем решает. Но положительным моментом является как минимум тот факт, что в этом случае обновление можно выполнить по желанию.

5) Вообще запускать клиентов централизовано в единой БД илди посредством RDP.
Хороший вариант, более современный, несомненно более подходящий для внедрения... где-нибудь в странах Западной Европы.
В нашей необъятной стране, к сожалению, качество интернет-соединения часто оставляет желать лучшего. Даже в крупных городах, не говоря уже о небольших провинциях.
При этом работа ведётся с торговым оборудованием. До сих пор не вышел из употребления COM порт, для корректной работы которого требуется очень короткое время ping до сервера.

Подводя итог всему вышесказанному - нормального средства администрирования РИБ не существует.
Я бы даже сказал больше - нормального средства администрирования сети компьютеров под Windows, не объединенных в AD, мне тоже как-то не встречалось.
Кроме того, для 1С есть достаточно специфичные задачи, которые лучше решать спеицализированными средствами.

Отвечу сразу на вопрос, который хочется задать: "Почему не на 1С":

- Вы же любите "без изменения колнгфигурации" - единственный вариант.

- Большинство манипуляций с базами 1С выполняется монопольно.

- Не всё возможно сделать средствами платформы 1С.

Таким образом, было принято решение разработать систему администрирования 1С.
Система состоит из следующих компонент:

Magic Updater Agent

   Программа агент - устанавливается на конечные компьютеры. Опрашивает базу заданий и выполняет их.

Magic Updater Monitor

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

Magic Updater Sheduler

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

Принципиально архитектура выглядит следующим образом:

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

Основные функциональные возможности Magic Updater:

1) Выполнение произвольных операций с 1С в узлах как по расписанию, так и принудительно.
   В настоящий момент времени поддерживаются следующие виды операций:
       - Динамическое обновление 1С
       - Не динамическое обновление 1С с завершением работы пользователей
       - Выполнение обмена данными по произвольной настройке
       - Резервная копия информационной базы
       - Перезагрузка сервера
       - Выполнение произвольной внешней обработки
       - Закачка произвольного файла
       - Закачка и выполнение произвольного файла

  Вообще, система поддерживает плагины - состав выполняемых операций может быть существенно расширен.

2) Получение состояния обмена с удаленными точками
3) Получение состояния интернет-соединения в удаленных точках
4) Сохранение статуса выполнения операций и логов 1С по результатам выполнения
5) Задание расписания выполнения операций как агентами, так и сервером Magic Updater


Для использования данного ПП необходимо:

1) Наличие сервера MS SQL Server (работает только с ним)
2) .NET Framework 3.5 (на некоторых старых системах её может не быть)
3) Наличие FTP сервера

Если дочитали до этих строк то, наверное, продукт интересен - далее несколько видео по функциональности:


Установка и настройка Magic Updater:

 

 

 

Основная функциональность Magic Updater:

 

 

 

Разработка Плагина Magic Updater:

 

На текущий момент времени у Magic Updater есть следующие плагины:

- BackupBaseSqlPlugin.dll - резервная копия SQL базы
- CacheClear1CPlugin.dll - Очистка КЭШ-а метаданных 1С
- DownloadAnyFilesPlugin.dll - Загрузка произвольного файла
- DynamicUpdate1CPlugin.dll - Динамическое обновление базы 1С (ориентировано на клиент-сервер)
- ExecAnySqlPlugin.dll - Выполнение произвольного SQL запроса
- ExecProcessing1CPlugin.dll - Выполнение внешней обработки 1С
- FileBackupBasePlugin.dll - Создание резервной копии файловой базы
- FileDynamicUpdate1CPlugin.dll - Динамической обновление файловой базы
- FileUpdate1CPlugin.dll - Обновление файловой базы
- ForceStaticUpdate1CPlugin.dll - Обновление базы с завершением сеансов (клиент-сервер)
- KillForceStaticUpdate1CPlugin.dll - Обновление базы с перезапуском сервера 1С (клиент-сервер)
- LockBackgroundJobsPlugin.dll - Блокировка фоновых заданий (клиент-сервер)
- OperationExchangeToCenterPlugin.dll - Обмен с центром
- RenameAnyFilePlugin.dll - Переименование произвольного файла
- RestartComputerPlugin.dll - Перезагрузка компьютера
- RestartServer1CPlugin.dll - Перезапуск сервера 1С

 

Пример использования для обновления большого количества узлов:


Чем же нам станет лучше после того, как мы его внедрим?

Мои лично ощущения следующие:

  • Не страшно ошибиться. Ошибки исправляются в считанные минуты даже на большой филиальной сети.
  • Доработки теперь делаются не "к следующему месяцу" и не "из-за этого не будем обновляться".
  • Инфраструктурные изменения также становятся не страшны для всей сети. 

Сейчас Magic Updater, конечно, умеет многое, но не всё, что хотелось бы.
В разработке следующие фичи:
    1) Изменения протокола обмена с сервером - для скорости и безопасности планируется TCP сервер
    2) Получение идентификатора конфигурации центра и узлов - для того чтобы автоматически определять обновленные и не обновленные узлы
    3) Получение информации о загруженности оборудования (диск/процессор/память)
    4) Взаимодействие службы с рабочим столом - отправка пользователю служебных сообщений, обратная связь.

Что же выложено в архиве ниже?

Собственно планировалось коммерческое использование, но не пошло, поэтому выкладываю в OpenSource:

https://github.com/comol/MagicUpdater

Продавец из меня не очень, но уверен что само решение получилось хорошим,

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

Все наверное, слышали уже про "Центр администрирования". Чем сиё решение лучше:

1) Теперь оно бесплатное

2) Обкатано на больших объёмах и в реальных условиях

3) На Windows системах будет работать быстрее и лучше чем ЦА

4) Административные действия можно совершать при упавшем 1С (именно тогда когда нужно)

5) Знать Python нет необходимости - достаточно знать 1С, а потому как в основе C# - можно онтегрировать плагины на OneScript

6) Гибкость в разы больше

 

Чем пока что хуже (что хотелось бы добавить):

1) поменять протокол взаимодействия агента и сервера на http

2) Интегрировать OneScript

3) Сделать нормальный Web интерфейс

4) Сделать нормальную интерфейсную часть в агенте

5) Упростить установку и настройку

 

- Собственно желающие присоединиться к доработке - Welcome

- Сочувствующие и кто хочет чтобы что-то доработал я (или коллеги) - тоже Welcome https://yasobe.ru/na/MU

- Установка и настройка сего продукта дело непростое. При минимальных знаниях C# и SQL справитесь, кто не справился но хочет пользоваться - я буду готов помочь, но на возмездных условиях конечно :)

Вступайте в нашу телеграмм-группу Инфостарт

Magic Updater РИБ Обновление