[ Вопрос дня ] Как можно отслеживать изменения макетов в регистре ПользовательскиеМакетыПечати?

Доброго дня, коллеги!

Курс Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки настолько обширный, что вопросы в Мастер-группу поступают очень разноплановые. Тут и вопросы по расширениям, и по механизмам/инструментам обновлений, и по подсистемам БСП. Хорошо, что тренер курса супер-профи своего дела :)

Вопрос

Здравствуйте! Помогите пожалуйста с реализацией. Есть самописная конфигурация на БСП. Клиент меняет макеты с помощью механизма БСП. Измененные пользователем макеты хранятся в регистре сведений ПользовательскиеМакетыПечати. Задача: клиент хочет получать уведомления, когда макет был изменен в конфигурации (к примеру добавили новую ячейку с параметром или изменился текст в макете) после обновления для того, чтобы можно было ручками перенести изменения или удалить текущую версию макета и создать новую версию макета в пользовательском режиме. Как можно реализовать такой механизм?

Ответ

Добрый день! В типовой БСП есть процедура ПриЗаполненииСпискаТекущихДел в общем модуле УправлениеПечатью, которая добавляет запись в список текущих дел – проверить совместимость отредактированных пользовательских макетов. Для этого используется форма ПроверкаПечатныхФорм регистра сведений ПользовательскиеМакетыПечати. То есть фактически предлагается пользователю открыть измененные макеты, проверить, что после обновления они не сломались. Это ручной вариант.

Для автоматизации приходит в голову следующий вариант:

  1. У нас есть две базы: обновленная база и база до обновления (из копии можно развернуть).
  2. В регистре ПользовательскиеМакетыПечати находим все используемые пользовательские макеты (т.е. отредактированные в режиме “1С:Предприятие”). Только их есть смысл анализировать, все остальные – берутся типовые.
  3. Для измененных макетов готовим пару файлов – выгружаем макеты в файлы из обновленной базы и из базы до обновления.
    • Например, можно подключиться к копии базы до обновления через COM и выгрузить все нужные макеты в файлы.
    • Если файлы идентичны, то никаких действий не требуется. Для проверки идентичности можно вычислять контрольную сумму файлов – MD5, SHA1 и т.д.
    • Если файлы отличаются, то надо сравнить макеты. Тут можно использовать механизм платформы по сравнению файлов (в конфигураторе в меню Файл – Сравнить файлы). Вот это действие, скорее всего, надо выполнить вручную. В случае необходимости – изменить пользовательский макет.

Так можно уменьшить ручную работу по анализу изменений.

Есть еще идея – вывести отчет о сравнении новой конфигурации со старой. В отчете искать изменения по слову “макет”, попытаться распарсить отчет.

Вопрос

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

Ответ

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

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

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

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

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

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.