Пакетная выгрузка / загрузка внешних отчетов и обработок




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

Назначение и возможности

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

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

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

Основные возможности инструмента:

  • Массовая выгрузка дополнительных отчетов и обработок в заданный каталог
  • Массовая загрузка внешних отчетов и обработок из каталога (только обновление существующих объектов из файлов без создания новых элементов справочника).
  • Установка произвольных фильтров на выгружаемые обработки
  • Точное сопоставление ранее выгруженных обработок с элементами справочника при загрузке (если выгрузка выполнялась этим инструментом)
  • Возможность ручного сопоставления файлов из каталога с элементами справочника при загрузке.
  • Выбор контекста, где находится каталог с обработками (клиент или сервер).
  • Поддержка только управляемого приложения. В обычном приложении обработку можно использовать, только встроив ее в конфигурацию.
  • Поддержка практически всех современных конфигураций на базе БСП, а также некоторых устаревших решений (УПП 1.3, УТ 10.3 или Бухгалтерия предприятия 2.0). Главное, чтобы было запущено управляемое приложение или обработка была встроена в конфигурации с возможностью использования управляемых форм в обычном приложении.
  • Решение также поддерживает несколько "самописных" конфигураций, но не гарантируется, что оно будет работать на каком-то Вашем эксклюзивном решении.

При выгрузке учитываются такие особенности как:

  • Одинаковые имена отчета или обработки, прикрепленного к разным элементам справочника.
  • Отсутствие двоичных данных в хранилище элемента справочника (да и такое бывает).
  • Делается точно сопоставление справочника с выгружаемыми файлами (связка делается через создаваемый файл "config.json").
  • Если файл точного сопоставления отсутствует, то поиск идет по имени.

Рассмотрим несколько кейсов использования этого инструмента.

Примеры использования

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

 

 Изменение общего модуля при обновлении релиза

 

 Рефакторинг внешних отчетов и обработок

 

 Актуализация обработок на тестовой базе

Конечно, это не полный список. Есть идеи? Тогда добро пожаловать в комментарии.

Напоследок

Нашли баги, ошибки или есть предложения? Это отлично! Не стесняйтесь давать обратную связь.

Другие авторские разработки

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

21 Comments

  1. the1

    Сообщения выдает? Что обновлено, что пропущено?

    Reply
  2. YPermitin

    (1) сейчас только при возникновении ошибок выдает сообщения.

    Но можно на будущее дописать и сделать какие-то уведомления.

    Reply
  3. the1

    При загрузке напрашивается сопоставление по имени файла, если нет config.json. Прощелкивать несколько десятков строк весьма муторно, а конфиг лень писать.

    Reply
  4. YPermitin

    (3) на начальном этапе я планировал добавить поиск по имени файла, но в итоге отказался. Сделал поиск по реквизиту «Имя объекта» и «Наименование» по имени файла (без расширения). Причина была в том, что обычно разработчики меняют имена файлов и поиск по нему не срабатывает.

    Но Вас услышал, добавлю дополнительно поиск по реквизиту «Имя файла» как последнюю попытку сопоставить с ссылкой справочника файл обработки. Постараюсь добавить изменения до конца недели.

    Reply
  5. the1

    (4) Ну, у меня и по имени объекта поиск не сработал. Завтра повнимательнее посмотрю

    Reply
  6. the1

    (4) Посмотрел. У Вас там имя объекта берется из имени файла без расширения, а надо из метаданных отчета/обработки. Поэтому у меня ни один элемент не сопоставился, т.к. файл называется «ВОТ_Отчет», а имя его — «Отчет»

    Reply
  7. the1

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

    Reply
  8. YPermitin

    (6) все так.

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

    Я подумаю над поиском, просто в старых конфишурациях описания обработки в модулях нет, нужно и это будет учитывать.

    Записал себе на будущее.

    Reply
  9. YPermitin

    (7) записал себе.

    Reply
  10. the1

    (8) Да, загружаю просто из папки

    Reply
  11. YPermitin

    (10) пока только могу порекомендовать выгрузку делать с формированием служебного файла config. Тогда соответствие будет 1 в 1.

    Когда доработаю утилиту, то отдам Вам на тест.

    Reply
  12. Mortiferus

    Есть 6 филиалов, в которых ручками приходится обновлять внешние печатные формы или отчеты, все никак руки не доходят сделать, чтобы во всех базах обновлялось «одной кнопкой». Возможно такое?

    Reply
  13. acsent

    по папкам загружать выгружать автоматом умеет?

    Reply
  14. YPermitin

    (12) возможно, но для этого нужно значительно больше изменений, чем такая простая обработка.

    Reply
  15. YPermitin

    (13) если имеете ввиду можно ли выгрузить отдельную папку, то да. В фильтре при выгрузке укажите «Ссылка В Группе <Ваше значение>» и выгрузятся только обработки из этой папки. Так можно каждую папку в отдельный каталог на диске выгрузить и с ними работать.

    Сами же папки не выгружаются.

    Reply
  16. acsent

    (14) Хотелось что бы все вот это само по 1 клику

    Reply
  17. YPermitin

    (16) записал себе сделать для следующей версии.

    Reply
  18. triviumfan

    Статья на тему как выгрузить внешние обработки (в 3 строчки кода)?!

    Юрий, не ожидал…

    Reply
  19. YPermitin

    (18) какие 3 строчки кода? 🙂

    Reply
  20. triviumfan

    (19)

    Выборка = Справочники.СправочникВнешнихОбработок.Выбрать();
    Пока Выборка.Следующий() Цикл
    Выборка.Хранилище.Получить().Записать(ПутьКФайлу);
    КонецЦикла;
    
    Reply
  21. YPermitin

    (20) решение в лоб с высокой долей самоуверенностью.

    А если на клиент сохранить?

    А если имена файлов одинаковые?

    А как загрузить обратно с точным сопоставлением?

    А как выгрузить только часть по условиям?

    Вообщем, не понял Вас совсем.

    Reply

Leave a Comment

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