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

12.11.19

Задачи пользователя - Адаптация типовых решений

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

Предисловие

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

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

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

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

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

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

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

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

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

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

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

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

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

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

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4453    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2956    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

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

01.03.2024    1282    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

27.10.2023    1996    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2072    21    progmaster    7    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 12.11.19 16:28 Сейчас в теме
постоянно, если что-то пару раз в день не прорефакторил, то день прошел зря.
Free1CforAll; sergvagner2018; dtfmffff; mrChOP93; YPermitin; +5 Ответить
2. пользователь 12.11.19 17:14
3. awk 741 12.11.19 17:16 Сейчас в теме
Хочется поставить один большой жирный минус, за неправильное понимание и выполнение рефакторинга.

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

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

1. Написать тест к текущей функции (убедиться что он работает)
2. Внести изменение
3. Убедиться что тест все еще работает

То что описано в статье - это перепроектирование, а не рефаторинг.
5. пользователь 12.11.19 17:20
(3) за минус спасибо.

Про что такое рефакторинг сказано в самом начале статьи. И да, оно для упрощения. Не понятно к чему Вы это написали :)
7. пользователь 12.11.19 18:01
(3) исправил. Статья больше про выгрузку и загрузку внешних отчетов и обработок в пакетном режиме.
Про рефакторинг добавил изначально некорректную и расплывчатую информацию.
Free1CforAll; awk; +2 Ответить
11. awk 741 12.11.19 23:29 Сейчас в теме
(7) Я то же исправил минус на плюс, с БОЛЬШИМ удовольствием...
4. Xershi 1474 12.11.19 17:19 Сейчас в теме
Судя по картинке публикации не стоит оно того=))
YPermitin; +1 Ответить
6. пользователь 12.11.19 17:20
(4) Это для критичного взгляда на необходимость проведения рефакторинга в некоторых случаях :)
8. пользователь 12.11.19 18:02
9. Xershi 1474 12.11.19 18:35 Сейчас в теме
(8) дырку от бублика заделали=))
10. пользователь 12.11.19 18:36
12. DmitryKSL 155 13.11.19 09:20 Сейчас в теме
А как Вы выполняете массовые изменения внешних отчетов и обработок?

Никак, в очередной раз после изменения конфигурации, понял что это мартышкин труд. Один раз переписал все обращение к БД через общий модуль. Теперь если не дай бог изменилось имя регистра, правлю только в одном месте общего модуля.
Free1CforAll; acanta; YPermitin; +3 Ответить
13. пользователь 13.11.19 09:27
(12) +

Мучений с этим делом много.
14. sergvagner2018 12.12.19 10:44 Сейчас в теме
(0) всегда вручную делал. +

Инструмент позже скачаю. Обновление функционала выйдет, тогда и...
Free1CforAll; +1 Ответить
15. vis_tmp 32 02.01.21 21:20 Сейчас в теме
Функция "ПолучитьРасширениеФайла()" у вас не описана...
17. hiduk 124 05.05.21 11:53 Сейчас в теме
(15) Как вариант:
КликниСюда
16. hiduk 124 05.05.21 11:38 Сейчас в теме
Спасибо дружище, сэкономил мне время!
18. glek 119 05.08.21 16:21 Сейчас в теме
А почему Вы не используете реквизит справочника ИмяФайла?
Оставьте свое сообщение