Предпосылки автоматизации
На момент написания статьи в моем направлении работало порядка 70 сотрудников - специалистов, ведущих специалистов и их руководителей, которые занимались разработкой на платформе 1С. Каждый из них ежедневно проводил разработку, тестирование и внедрение функционала.
Процесс тестирования и внедрения включал в себя этап подготовки конфигурации. На этом этапе сотрудник должен был, следуя действующим в подразделении стандартам и правилам, выполнить перенос объектов разработки из одной конфигурации в другую. Длительность этого процесса напрямую зависела от количества объектов, сложности изменений и количестве конфигураций, в которые необходимо было транслировать изменения.
Вот последовательность типовых операций, которые нужно было выполнить сотруднику:
-
В Источнике: Обновить конфигурацию из хранилища. Время этого шага - от 1 до 20 минут (в зависимости от нагрузки на хранилище, оборудование и объема изменений).
-
В Источнике: Сохранить конфигурацию в файл. Время этого шага - от 5 до 15 минут.
-
В Приемнике: Обновить конфигурацию из хранилища. Время этого шага - от 1 до 10 минут.
-
В Приемнике: Захватить объекты в хранилище. Время этого шага измеряется количеством объектов и зависит от нагрузки на хранилище. Например, если нужно захватить 100 объектов и хранилище работает идеально, то время захвата составляет порядка 60 минут интенсивной ручной работы.
-
В Приемнике: Обновить ИБ. Время этого шага - от 1 до 20 минут.
-
В Приемнике: Сравнить/объединить конфигурацию с файлом, выгруженным на шаге 2. Время этого шага от 10 до 60 минут.
-
Просмотр всех изменений и отметка галочками по каждому объекту, что конкретно нужно перенести. Время этого шага измеряется количеством объектов и сложностью изменений. Например, если нужно сравнить между собой 100 объектов, то время сравнения составляет порядка 2 часов интенсивной ручной работы.
-
В Приемнике: Обновить ИБ. Время этого шага - от 1 до 20 минут.
-
В Приемнике: Выполнить синтаксическую проверку модулей. Время этого шага - от 1 до 10 минут.
-
В Приемнике: Выполнить помещение изменений в хранилище. Время этого шага - от 1 до 30 минут. В статистику не включены такие ситуации, как удаление объектов из хранилища, т.к. эти операции довольно редкие. Но если они используются, то помещение может идти часами.
Идея возникла в том, чтобы ускорить этот процесс:
-
За счет автоматизации рутинных операций. Сотруднику остается указать базы источника и получателя, выбрать объекты для переноса, а после переноса - проверить результат.
-
За счет использования пакетного режима 1С:Конфигуратора. Некоторые шаги в этом режиме работают значительно быстрее.
Те сотрудники, кто начал использовать инструмент, получили следующие эффекты:
-
Трудозатраты на выполнение рутинных операций сократились от 20% до 90%. Вот конкретный пример: в рамках задачи обновления "1С:Библиотеки стандартных подсистем" потребовалось поместить изменения в два отдельных хранилища тестовой среды. Объектов было порядка 1000. В случае ручного переноса на каждое помещение потребовалось бы около 6 часов непрерывной работы сотрудника. В случае автоматизации время каждого переноса составило не более 30 минут.
-
Снизился риск “человеческого фактора” что-нибудь забыть перенести.
Итак, ниже описана краткая инструкция по использованию этого инструмента.
Начинаем работу
Развертывание базы
Инструмент представляет из себя небольшую конфигурацию, разработанную на базе "1С:Библиотеки стандартных подсистем" от "Фирмы 1С". Базу лучше развернуть в файловом режиме. Для корректной работы необходимо использовать платформу не ниже 8.3.10.
Почему файловый режим? Причин несколько:
-
Большая часть операций требуют прямого доступа к конфигуратору. А это значит, что для выполнения синхронизации придется либо закрывать конфигуратор базы источника и базы приемника, что не всегда бывает удобно; либо сделать отдельные копии баз источника и приемника в клиент-серверном варианте работы.
-
Для загрузки метаданных из базы потребуется установить COM-соединение, а для него важно, чтобы версии клиента и сервера совпадали.
-
Интерактивные операции, такие как “Запуск Конфигуратора”, в клиент-серверном варианте работают некорректно - конфигуратор откроется на сервере :) Руки починить это пока не дошли.
Создание источника, приемника и сценария синхронизации
Для примера рассмотрим классический сценарий переноса изменений из хранилища разработки в хранилище обновления. Запускаем режим Предприятия. На рабочем столе появляется окно “Синхронизации хранилищ”.
Создаем базы для синхронизации.
Для удобства дальнейшей работы прописываем сценарий синхронизации.
Каждый шаг процесса имеет собственную настройку атрибутов.
Атрибут "Интерактивный" означает, что указанный шаг по своему завершению потребует каких-либо действий от пользователя. Поэтому после завершения такого шага сценарий будет остановлен.
Атрибут "Требует список объектов" означает, что указанный шаг для своего выполнения потребует указание списка объектов. Если список объектов указан не будет, то сценарий будет остановлен.
Настройка сценария
В форме “Синхронизация хранилищ” заполняем таблицу шагов (кнопка "Заполнить").
Задаем общие параметры сценария (гиперссылка "Установить параметры сценария"). По умолчанию каждый шаг наследует общие параметры сценария, но если это необходимо, то параметры конкретного шага можно поменять. Здесь реализовано четыре вкладки:
-
Выбранные объекты
-
Помещение в хранилище
-
Комплект поставки
-
Параметры запуска
Выбор объектов метаданных
Первая вкладка позволяет установить отбор объектов в шагах "Захватить объекты в хранилище", "Объединить конфигурацию с файлом", "Отпустить объекты в хранилище" и "Поместить объекты в хранилище".
Есть несколько способов подбора объектов:
1) Обычное редактирование списка. Можно вручную вводить имена объектов метаданных. Например, ОбщийМодуль.ОбщегоНазначения.
2) Подбор по дереву метаданных.
Форма подбора открывается по кнопке "Отобрать по дереву метаданных". В открывшейся форме потребуется указать базу-источник, из которой будут взяты метаданные, и нажать кнопку с пиктограммой подключения. Альтернативный вариант - загрузить метаданные базы заранее и обращаться к ним.
После некоторого времени в форме отобразится дерево метаданных базы-источника. Здесь можно отметить галками нужные объекты.
Если при подключении у вас возникает ошибка “Недопустимая строка с указанием класса”, то это значит, что на вашем ПК не установлена библиотека comcntr.dll. Чтобы установить библиотеку, нужно под учетной записью администратора через cmd выполнить вот такую команду:
regsvr32 "C:\Program Files\1cv8\8.3.15.1869\bin\comcntr.dll" -i
3) Подбор по списку.
Этот вариант доступен по кнопке с пиктограммой OpenOffice Calc. Здесь можно задать произвольный список объектов. При переносе объекты будут стыковаться по полному имени.
4) Подбор по подсистемам.
Этот вариант доступен по кнопке с пиктограммой подсистемы. Объекты будут отбираться в иерархии выбранных подсистем.
5) Подбор по истории помещения в хранилище.
Форма подбора открывается по кнопке "Отобрать по коммитам". Открывшаяся форма позволяет выбрать объекты по истории помещения в хранилище базы-источника. В появившемся окне нужно выбрать начальный и конечный номер версии коммита и нажать кнопку "Выбрать коммиты".
Настройка помещения в хранилище
На этой вкладке можно указать комментарий к помещению, а также оставить объекты захваченными, если это требуется.
Настройка создания комплекта поставки
Если в сценарии планируется создавать комплект поставки, то для корректной работы этого этапа нужно прописать настройки.
Установка параметров запуска
На этой вкладке есть несколько галок. Они применяются на шаге "Запустить Конфигуратор" и "Запустить Предприятие".
Сохранение изменений
Для сохранения параметров синхронизации нужно нажать на кнопку "Сохранить".
В случае, если в базе-источнике был изменен корень (внесены изменения в его свойства или изменен состав объектов метаданных), то нужно нажать галку “Выбрать корень конфигурации”. В этом случае при захвате объектов будет захвачен и корень конфигурации.
Выполнение сценария
Внимание! Помещать изменения в хранилище без предварительной проверки глазами не рекомендуется.
Объединение изменений происходит с приоритетом файла. Это значит, что такие объекты, как роли и состав планов обмена, будут целиком взяты из файла. Поэтому после объединения конфигураций потребуется вручную по удалять всё лишнее.
Еще одна причина проверить глазами - человеческий фактор. Вдруг кто-то из разработчиков нарушил регламент и не поместил свои изменения в ХО, а объекты в ХР отпустил? В этом случае его изменения будут видны на этапе сравнения-объединения конфигураций.
Поэтому в описанном выше сценарии нужно проверить изменения глазами, сверившись с конфигурацией базы данных, и только после проверки помещать изменения в хранилище.
Запуск сценария
Выполнить сценарий можно как целиком, так и по частям. В первом случае нужно отметить флажками нужные шаги и нажать на кнопку "Выполнить". Во втором случае нужно выбрать нужный шаг, вызвать контекстное меню и выбрать команду "Выполнить этот шаг".
Состояние выполнения отображается в колонке "Состояние". Если на шаге произошла ошибка, то сценарий будет прерван.
Например, ошибка произойдет в случае, если при захвате объектов не получится захватить все объекты по списку, т.к. они уже захвачены другими. Пользователю нужно будет принять решение, пропустить этот шаг или исправить ситуацию и повторить его.
Некоторые шаги, такие как "Сравнить конфигурацию с файлом (только просмотр)" могут возвращать результат в виде отчета.
Сохранение настроек сценария
Настройки синхронизации можно сохранять. Эту возможность удобно использовать тогда, когда требуется поместить изменения сначала в тестовую среду, а затем спустя время - в хранилище обновления.
Для сохранения и восстановления настроек предусмотрены вот эти кнопки командной панели.
ToDo или что можно было бы улучшить
В текущей реализации пока не хватает:
-
Древовидного сценария для возможности параллельного выполнения его шагов.
-
Возможности не закрывать хранилище, когда получаешь историю его изменения. Но это можно обойти путем создания отдельного пользователя хранилища.
-
Возможности не закрывать Конфигуратор источника и приемника в процессе выполнения сценария.
-
Возможности использовать интерактивные шаги в клиент-серверном варианте работы базы.
-
Инструмент не тестировался на базе с расширениями и хранилищами, к которым они подключены. Здесь могут быть нюансы.
Пожелания по доработке пишите в комментариях.