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

Публикация № 1152498

Разработка - Практика программирования

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

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

Предисловие

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

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

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

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

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

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

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

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

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

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

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

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

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

Специальные предложения

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

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

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

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

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

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

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

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

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

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

Практика программирования v8 Бесплатно (free)

Пакет из 3-х курсов по 1С-программированию. Основная цель - сформировать у слушателей практические навыки, связанные с реализацией задач обмена для прикладных решений, работающих на платформе “1С:Предприятие”, а также с разработкой прикладных решений, предназначенных для автоматизации расчета заработной платы и задач бухгалтерского учета.

22.04.2020    4688    23    Infostart    2    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    19324    0    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

15.01.2020    18630    0    John_d    22    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    13542    0    kuzyara    33    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    35535    0    unichkin    45    

Активный 2019 год на Инфостарт

О сообществе О жизни Бесплатно (free)

О прошедшем 2019 годе в 100 и 500 словах.

26.12.2019    5440    0    YPermitin    24    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    14669    0    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    6863    0    Sibars    19    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    28001    0    tormozit    100    

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

Прочие инструменты разработчика Менеджеры внешних отчетов v8 1cv8.cf Абонемент ($m)

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

2 стартмани

04.11.2019    7792    25    YPermitin    22    

Обозреватель криптографии

Инструментарий разработчика Защита ПО v8 Абонемент ($m)

Отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.

2 стартмани

21.10.2019    8693    11    YPermitin    10    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    28320    0    Yashazz    45    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    75470    0    tormozit    129    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    39929    0    rpgshnik    62    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    42097    0    ids79    54    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    24527    0    YPermitin    24    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    46372    0    tormozit    38    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    23204    0    YPermitin    80    

Анализ производительности APDEX

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Отчет для просмотра и анализа замеров производительности в конфигурациях на базе БСП.

31.08.2019    9867    2    YPermitin    7    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

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

17.08.2019    28397    0    ids79    16    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    42395    0    tormozit    74    

Путеводитель по истории релизов

WEB v8 1cv8.cf Абонемент ($m)

Отчет по истории выпуска релизов и анализа информации по обновлениям.

5 стартмани

13.08.2019    11717    10    YPermitin    18    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    65717    0    ids79    40    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    29428    0    avalakh    22    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    15438    0    m-rv    2    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    49185    0    ids79    11    

Просмотр и анализ структуры базы данных (отчет на СКД)

Инструментарий разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Отчет для просмотра и анализа структуры базы данных с поддержкой файловых баз (ограниченный режим), а также баз на SQL Server и PostgreSQL.

5 стартмани

24.07.2019    18599    157    YPermitin    27    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    31606    0    ids79    27    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    19207    0    m-rv    17    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    23854    0    YPermitin    13    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    17773    0    SeiOkami    50    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    46151    0    ids79    25    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    28874    0    m-rv    21    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    22879    0    dmurk    144    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    38547    0    YPermitin    30    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    26700    0    Eret1k    23    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

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

05.12.2017    26898    0    itriot11    34    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    32165    0    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    25334    0    ellavs    88    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    28967    0    YPermitin    53    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    73504    0    Serginio    108    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    34737    0    ids79    9    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    24847    0    ids79    31    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    32482    0    ids79    40    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    37938    0    ids79    72    

Быстрая выгрузка справочника Дополнительных отчетов, ВПФ и обработок на диск (управляемые формы)

Обработка справочников v8 v8::УФ ERP2 БП3.0 ЗУП3.x Абонемент ($m)

Обработка выгружает все внешние отчеты и обработки, внешние печатные формы в указанную папку с сохранением иерархии справочника на диске.

1 стартмани

07.12.2018    3011    8    Einzelhaft    0    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    34355    0    ids79    40    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    27573    0    grumagargler    26    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Публикация представляет из себя краткие примеры того, как можно заполнять параметры СКД программно так, чтобы все параметры и отборы были доступны в быстрых настройках и в обычных (типовых) настройках параметров и отборов СКД.

13.11.2018    41510    0    Unk92    21