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




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

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

Все разработчики, сопровожденцы и администраторы, имеющие дело с решениями на платформе 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 не будет опубликован. Обязательные поля помечены *