Как быстро выгрузить / загрузить внешние отчеты и обработки






Немного о массовой выгрузке и загрузке внешних отчетов и обработок.

Предисловие

Любое решение требует поддержки, в том числе и в части улучшения программного кода и архитектуры решения. Это то, в чем нуждается каждое программа, а в нашем случае каждая конфигурация, созданная на базе платформы 1С. 

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

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

Суть проблемы

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

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

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

Решение

Чтобы решить задачу мы можем воспользоваться стандартной возможностью конфигуратора по поиску и замене текстов модулей. На этот раз нам нужно будет установить настройки на вкладке "Файлы", где мы укажем каталог с внешними обработками и отчетами, а также указать текст поиска и замены.

Остается только выгрузить все внешние обработки из информационной базы в назначенный каталог, обработать тексты их модулей и загрузить обратно. Мы, конечно, можем проделать это вручную, но мы ведь программисты! Напишем пару скриптов для автоматизации выгрузки / загрузки внешний отчетов и обработок. Для примера решим эту задачу для конфигурации "Управление производственным предприятием" версии 1.3, а после для чего-нибудь более нового. Например, для "Бухгалтерии предприятия" редакции 3.

Автоматизация процесса для УПП

Обработка для выгрузки будет достаточно простой, поэтому алгоритм выгрузки и загрузки приведу в обычных листингах кода. Для УПП все внешние обработки и отчеты, прикрепленные к информационной базе, хранятся в справочнике "ВнешниеОбработки". Вот так выглядит структура метаданных справочника:

И так, приступим! На следующем листинге представлен алгоритм выгрузки внешний обработок и отчетов в выбранный каталог.

 

 Выгрузка внешних отчетов и обработок для УПП 1.3

Загрузка внешних обработок представлена далее.

 

 Загрузка внешних отчетов и обработок для УПП 1.3

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

Стоит понимать, что в некоторых случаях внешние обработки и отчеты могут храниться не в реквизите "ХранилищеВнешнейОбработки", а в табличной части "Принадлежность". Тогда необходимо доработать представленные выше алгоритмы выгрузки/загрузки. Обычно это редко встречается, т.к. такой подход хранения создает некоторые проблемы в сопровождении — все эти обработки нужно отслеживать и дорабатывать отдельно.

Алгоритмы для БП 3.x

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

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

 

 Выгрузка внешних отчетов и обработок для БП 3.x

Теперь задача поинтересней — нужно ранее выгруженные файлы загрузить обратно в справочник.

 

 Загрузка внешних отчетов и обработок для БП 3.x

Вот и все, задача решена!

Выводы

В итоге, внесение изменений в модули внешних обработок / отчетов сводятся к трем шагам:

  1. Выгрузка внешних обработок и отчетов из информационной базы в каталог на диске.
  2. Изменение модулей. Простые изменения можно выполнять с помощью стандартных возможностей конфигуратора по поиску и замене текстов модулей, а в сложных случаях нужно подходить индивидуально.
  3. Загрузка внешний отчетов и обработок обратно в информационную базу (соответствие файлов и элемента справочника устанавливается по коду элемента, который был записан ранее в имя файла. Последнее поведение может быть изменено по необходимости).

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

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

А как Вы выполняете массовые изменения внешних отчетов и обработок?

Другие ссылки

Авторские разработки

14 Comments

  1. VmvLer

    постоянно, если что-то пару раз в день не прорефакторил, то день прошел зря.

    Reply
  2. YPermitin

    (1) Вы нашли дзен!

    Reply
  3. awk

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

    Рефакторинг не меняет интерфейс. Рефакторинг упрощает код.

    Последовательность действий при рефакторинге:

    1. Написать тест к текущей функции (убедиться что он работает)

    2. Внести изменение

    3. Убедиться что тест все еще работает

    То что описано в статье — это перепроектирование, а не рефаторинг.

    Reply
  4. Xershi

    Судя по картинке публикации не стоит оно того=))

    Reply
  5. YPermitin

    (3) за минус спасибо.

    Про что такое рефакторинг сказано в самом начале статьи. И да, оно для упрощения. Не понятно к чему Вы это написали 🙂

    Reply
  6. YPermitin

    (4) Это для критичного взгляда на необходимость проведения рефакторинга в некоторых случаях 🙂

    Reply
  7. YPermitin

    (3) исправил. Статья больше про выгрузку и загрузку внешних отчетов и обработок в пакетном режиме.

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

    Reply
  8. YPermitin

    (4) логотип исправлен 🙂

    Reply
  9. Xershi

    (8) дырку от бублика заделали=))

    Reply
  10. YPermitin

    (9) большую дырку…

    Reply
  11. awk

    (7) Я то же исправил минус на плюс, с БОЛЬШИМ удовольствием…

    Reply
  12. DmitryKSL
    А как Вы выполняете массовые изменения внешних отчетов и обработок?

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

    Reply
  13. YPermitin

    (12) +

    Мучений с этим делом много.

    Reply
  14. sergvagner2018

    (0) всегда вручную делал. +

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

    Reply

Leave a Comment

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