1с 8 reader массовая выгрузка внешних обработок

Обновлено: 07.07.2024

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

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

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

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

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

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

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

В дополнительных настройках есть возможность включить / отключить (если она доступна в конфигурации) функционал регистрации внешних отчетов и обработок БСП.


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

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

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

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

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

Далее в конфигураторе сделать глобальную замену во внешних обработках (Правка -> Глобальная замена).

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


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

Как и в примере выше, может потребоваться сделать рефакторинг обработок. И тут также можно действовать по той же схеме:

  1. Выгружаем обработки в назначенный каталог.
  2. Выполняем все действия для рефакторинга.
  3. И загружаем изменения обратно в базу с помощью инструмента.

Все просто! Ну, не считай, что сам рефакторинг может быть сложным :)

Еще один небольшой кейс - это обновление дополнительных отчетов и обработок в тестовой базе. Алгоритм действий опять же простой:

  1. Выгружаем объекты с рабочей базы с помощью данного инструмента.
  2. И загружаем их в тестовую базу.

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

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

Напоследок

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

Версия 1.0.0.4 от 03.02.2020:

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

Версия 1.0.0.1 от 26.01.2020:

Версия 1.0.0.0 от 13.11.2019:

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

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

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

Путеводитель по истории релизов - отчет по истории выпуска релизов продуктов фирмы "1С" и анализа информации по обновлениям.

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

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

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

Управление обработкой довольно простое, всего три кнопки.

1. По нажатию кнопки "Выгрузка" Выберем папку, в которую выгрузятся файлы, если названия обработок или отчетов содержат недопустимые символы: /"/ \ : * ? " < > | , то программа выдаст предупреждение о необходимости поменять их название.

2. По Кнопке "Преобразовать имена обработок" можно автоматически заменить в программе данные символы на "_" - нижнее подчеркивание.

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

3. По Кнопке "Загрузка" загрузим отчеты и обработки обратно в базу, поиск и сопоставление осуществляется по имени файла.

Внимание! в обработке использованы новые методы 1С работы с файлами - НачатьПомещениеФайловНаСервер(), поэтому для работы в более ранних версиях платформы, скорее всего, нужно переписывать. Тестировано на платформе 1С:Предприятие 8.3 (8.3.15.1778) Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.75.37).

Массовая выгрузка и загрузка внешних отчетов и обработок (для последующего поиска и замены в них) и загрузка обратно (управляемые формы): 1С:Предприятие 8.3 (8.3.18.1208) Массовая выгрузка и загрузка внешних отчетов и обработок для последующего поиска и замены в них и загрузка обратно (Управляемые формы) 1С:Предприятие 8.3 (8.3.15.1778):

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

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

(1) Мы пришли к одному результату разными путями, даже не видел что - то подобное есть, иначе бы и не делал, тем не менее она проще.

1. Процедуры, функции должны умещаться на один экран монитора по высоте и ширине :-))

2. Не нужно давать имена переменным "массив1"

3. Уберите "СохранитьДанныеНаСервере" из модуля объекта в модуль формы

4. Если есть одно неподходящее название - не нужно прерывать всю выгрузку.

5. Все реквизиты нужно получать в одном запросе, не нужно делать запрос в цикле, например
Выборка.Ссылка.ХранилищеОбработки.Получить()

6. Определите каталог сохранения файлов прозрачно для пользователя.
В коде НачатьПолучениеФайлов(ЗавершениеОбратныйВызов, Массив1,""); каталог пустой.
Не понятно, что значит.

(3) Ок, спасибо за справедливую критику, по возможности посмотрю.

Просмотры 4849

Загрузки 8

Рейтинг 1

Создание 28.12.19 09:00

Обновление 09.06.21 10:45

№ Публикации 1174815

Конфигурация 1С:Бухгалтерия 3.0

Операционная система Не имеет значения

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

Код открыт Да

K-SOFT. Эмулятор для работы с ККТ. Обычные формы. (Ревизия 3002)

См. также

Конвертация любых адресов, написанных в свободной форме, к ФИАС Промо

Допустим у нас есть база с адресами клиентов, и написаны они могут быть как душе угодно. С опечатками, без индексов, без разделителей, в совершенно любом формате. Вот было бы здорово иметь функцию, которая одним нажатием кнопки преобразует любую белиберду к строгому представлению адреса по ФИАС? Восстановит индекс, исправит опечатки и вернёт на 100% валидный адрес. Для всех, кто мечтательно сказал "ДА!", выкладываю данную обработку.

2 стартмани

30.06.2020 7681 68 XilDen 15

Управление платформенными обработками (расширение для типовых)

Расширение использует недокументированную возможность для управления платформенными обработками. Например, чтобы подменить "Активные пользователи" или доработать "Конструктор запросов".

1 стартмани

07.10.2021 3375 5 SeiOkami 23

Работа с картами в 1С на примере бесплатной библиотеки Leaflet

Разработка функционала отображения и выбора пунктов доставки на карте прямо в 1С с помощью бесплатной библиотеки Leaflet. Тестирование производилось на платформе 8.3.15.1534 на тонком клиенте.

1 стартмани

31.03.2021 10481 31 Parsec1C 11

Универсальная обработка переноса данных из основной конфигурации в расширение

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

5 стартмани

05.10.2020 10394 65 biz-intel 71

Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо

Иногда нужно удалить сохраненную в 1С "покореженную" настройку или скопировать "удачную" другому пользователю.

1 стартмани

01.09.2012 66876 1378 AnryMc 46

Улучшенная обработка универсального обмена данными в формате XML (УФ)

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

1 стартмани

23.06.2020 12959 135 Lem0n 1

Панель команд текущего объекта (документа, справочника и т.д.) со следующим возможностями: Редактор реквизитов, таблиц и движений текущего объекта, Анализ прав доступа к текущему объекту, Поиск ссылок на объект с отборами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Реализована всплывающей панелью в форме объекта. Подключается как расширение конфигурации (*.cfe) либо отдельными обработками.

1 стартмани

01.05.2020 15298 112 sapervodichka 1

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

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

2 стартмани

04.11.2019 15330 84 YPermitin 21

Групповая обработка справочников и документов (Управляемая форма) v 3.6 (+English version) Промо

Старая добрая обработина "Групповая обработка справочников и документов", теперь на Управляемом приложении. Работает на платформе версии не ниже 8.2.16! Работает в интерфейсе "Такси"

3 стартмани

01.06.2013 132247 4970 kser87 352

Markdown-editor в 1С (с сохранением в HTML)

В этой обработке вы пишете свой текст, используя синтаксис Markdown, а на выходе получаете чистый HTML-код, избавленный от JS-библиотеки, которая его сформировала. Совместим с Webkit и IE.

1 стартмани

04.07.2019 12849 18 riposte 6

Работа с файлами (обычная и управляемая форма)

Нужно загрузить файл с клиента на сервер или же, наоборот, файл загрузить с сервера на клиент, а впридачу все это на web-клиенте, да еще и асинхронно? Нет ничего проще, читай далее, как это сделать!

1 стартмани

10.06.2019 41615 222 Xershi 77

Электронная таблица средствами 1С (Версия 2.0)

Функционал электронной таблицы для программ на платформе 1С реализован на основе табличных документов. Функционал реализован в виде обработки. Большую часть формы обработки занимают листы (закладки) с табличными документами, которые выполняет роль электронной таблицы. Листы могут быть добавлены, удалены или переименованы. Ограничение по количеству листов определяется возможностью платформы. В формулах электронной таблицы можно использовать любые языковые конструкции, процедуры и функции 1С, ссылки на другие ячейки электронной таблицы расположенные в том числе и на других листах. Допустимо обращаться к ячейкам электронной таблицы по имени именованной области. В случае использования в формулах электронной таблицы данных из самой таблицы пересчет зависимых ячеек с формулами производится автоматически. Электронную таблицу можно сохранить в файл.

В версии платформы «1С:Предприятие 8.3.8» появилась возможность выгружать внешние обработки и отчеты в виде набора XML-файлов. Эта функциональность предназначена для системы 1С:EDT, но может быть использована для решения любых других задач.

С ее помощью можно настроить версионирование внешних обработок и решить многие сложности, связанные с хранением и сравнением разных версий *.epf-файлов, отслеживанием изменений.

О чем эта статья

В этой статье мы:

  • Рассмотрим процедуру выгрузки внешних обработок в XML-файлы
  • Подключим систему управления версиями Git
  • Научимся версионировать внешние обработки и просматривать историю их изменения.

Сложности при работе с внешними обработками

Внешние обработки — это обработки, которые не включены в состав конфигурации и хранятся в виде файлов с расширением *.epf.

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

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

  • Не ясно, что поменялось по сравнению с прошлой версией;
  • Не понятно, когда именно были выполнены изменения. Это можно узнать только из комментариев, если они есть;
  • Нет возможности быстро вернуться на прошлую версию обработки, если она не была предусмотрительно скопирована и не сохранена с другим названием или в другой папке;
  • По прошествии некоторого времени сложно разобраться среди множества однотипных файлов.
  • Чтобы безвозвратно не потерять изменяемую логику, приходится оставлять большие участки закомментированного кода (хотя комментарии должны только пояснять работу программного кода);

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

При этом обработка перестает быть «внешней» и теряет одно из своих главных преимуществ: удобство быстрой доработки и отладки. Но даже в этом случае сравнение версий происходит достаточно медленно из-за особенностей внутренней структуры хранилища. Подробнее о его работе можно прочитать в статье Важные вопросы про хранилище.

Выгрузка внешних отчетов и обработок в XML

Начиная с версии 8.3.8, платформа научилась выгружать внешние отчеты и обработки в файлы формата XML, проще говоря — конвертировать файлы *.epf и *.erf в набор файлов XML и BSL.

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

Конвертация файлов

Рисунок 1. Конвертация файлов

При такой конвертации на диск сохраняется следующий набор файлов:

  • Файл с описанием обработки или отчета в формате XML.
  • Файлы с описанием всех форм обработки в формате XML.
  • Файлы с исходным кодом модуля формы и модуля обработки или отчета в виде BSL-файлов.

С файлами такого формата могут работать все существующие системы контроля версий.

Используем систему контроля версий

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

Такие системы рассчитаны на работу с файлами в виде исходного программного кода и воспринимают файлы платформы 1С с расширениями *.epf и *.erf как двоичные, т.е. просто как набор нулей и единиц и поэтому не умеют их переводить в «читаемый» формат.

Так видит файл с расширением*.epf сторонняя программа

Рисунок 2. Так видит файл с расширением*.epf сторонняя программа

Существует множество различных систем контроля версий, а одной из самых распространенных является Git.

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

Приступаем к настройке

Для того, чтобы настроить версионирование файлов обработки, нам понадобятся следующие инструменты:

  1. Git — программа для работы с системой управления версиями
  2. SourceTree — визуальный клиент для работы с Git
  3. Araxis Merge — программа для сравнения и объединения программного кода.

Программы для версионирования файлов обработки

Рисунок 3. Необходимые программы

Выбор именно этих программных решений не является принципиальным — в качестве визуального клиента можно использовать другое приложение, например GitHub Desktop или TortoiseGit, а Araxis Merge можно заменить программами KDiff3, WinMerge или любой другой. Цель данной статьи — продемонстрировать подход к версионированию файлов платформы «1С:Предприятие», а не показать готовое решение.

Для демонстрационного примера будет использована внешняя обработка «ЗагрузкаСпецификации.epf», расположенная в папке «c:\Обработки\». В папке «c:\Repo1C\» будет создан проект Git, в котором будет храниться история разработки.

Набор файлов

Рисунок 4. Исходный набор файлов

Интерактивная выгрузка

Чтобы выгрузить обработку в XML вручную, нужно выполнить следующие действия:

  1. Открыть обработку в конфигураторе платформы версии 8.3.8 и старше
  2. Открыть контекстное меню обработки
  3. Выбрать пункт «Выгрузить в файлы» и указать нужную папку.

Интерактивная выгрузка обработки

Рисунок 5. Интерактивная выгрузка обработки

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

Выгруженные файлы

Рисунок 6. Выгруженные файлы

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

Процесс выгрузки обработки можно автоматизировать. Для этого нужно запустить конфигуратор в пакетном режиме.

Пакетный режим

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

Чтобы произвести выгрузку обработок, нужно запустить исполняемый файл 1cv8.exe с указанием ключа DumpExternalDataProcessorOrReportToFiles.

После этого ключа нужно указать следующие параметры:

  • Полный путь к файлу обработки («что выгрузить»)
  • Путь к папке, в которую будут выгружены xml-файлы («куда выгрузить»)
  • Формат выгрузки: иерархический или линейный. При иерархическом формате файлы будут выгружены с учетом структуры элементов, при линейном — простым списком, при этом тексты модулей будут сохранены с расширением *.txt.

Выполнять такой запуск нужно из командной консоли Windows. Чтобы запустить командную консоль, нужно открыть меню «Пуск — Выполнить» (или нажать сочетание клавиш Win+R), написать«cmd» и нажать Enter.

Откроется командная строка, в которой нужно написать следующую команду (путь к исполняемому файлу 1cv8.exe может быть другим, в зависимости от установленной версии платформы):

"c:\Program Files\1cv8\8.3.12.1529\bin\1cv8.exe" DESIGNER /DumpExternalDataProcessorOrReportToFiles "c:\Repo1C" "c:\Обработки\ЗагрузкаСпецификаций.epf" /Out "c:\Repo1C\out.txt"

Командная строка

Рисунок 7. Командная строка

После выполнения указанной команды в папку «C:\Repo1C» будут выгружены файлы, а в файле out.txt появится такая запись:

Рисунок 8. Выгрузка прошла успешно

Чтобы каждый раз не открывать командную строку и не набирать команду вручную, можно сохранить команды выгрузки в командный файл.

Командный файл

Командный файл — это текстовый файл с расширением «*.bat», который содержит последовательность команд для выполнения в системе Microsoft Windows.

Чтобы создать такой файл, нужно открыть Блокнот (или любой другой текстовый редактор: Notepad++, AkelPad), скопировать в него следующий текст и сохранить с расширением «.bat»:

SET PATH1C="c:\Program Files\1cv8\8.3.12.1529\bin\1cv8.exe"
SET EXT="c:\Обработки\ЗагрузкаСпецификации.epf"
SET SRC="c:\Repo1C"
SET OUT="c:\Repo1C\out.txt"
%PATH1C% DESIGNER /DumpExternalDataProcessorOrReportToFiles %SRC% %EXT% /Out %OUT%

Из-за особенностей работы командного процессора в названии обработки желательно не использовать пробелы. Также может оказаться, что при запуске bat-файла неверно распознается кодировка. В этом случае нужно пересохранить файл в OEM-866.

На изображение ниже показано, как выбрать кодировку в текстовом редакторе Notepad++.

Сохранение файла в кодировке OEM-866

Рисунок 9. Сохранение файла в кодировке OEM-866

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

Создание репозитория

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

Чтобы Git мог отслеживать изменения файлов в определенной папке, нужно указать что эта папка является репозиторием. Git фиксирует изменения всех файлов, которые находятся в репозитории (если специально не указать обратное).

Создать репозиторий можно через командную консоль, но проще воспользоваться программой SourceTree — ее также необходимо скачать с официального сайта и установить. При установке нужно указать адрес электронной почты (либо учетную запись Google) и пройти процедуру регистрации. Для создания репозитория нужно нажать на кнопку «Create» в главной панели SourceTree и указать полный путь к папке:

Создание репозитория в SourceTree

Рисунок 10. Создание репозитория в SourceTree

После создания репозитория в папке появляется скрытая директория «.git» — наличие ее означает, что Git теперь отслеживает изменения файлов в этой папке.

Поскольку в папке с:\Repo1C уже находились выгруженные файлы, Git сразу же предложит зафиксировать их в хранилище.

Чтобы изменения файлов попали в хранилище, файлы нужно проиндексировать — указать, что изменения действительно должны быть включены в новый «снимок состояния».

Помещение измененных файлов в индекс

Рисунок 11. Помещение измененных файлов в индекс

Для фиксирования изменений нужно нажать кнопку «Закоммитить» (или сочетание клавиш Shift+Ctrl+C). Команда commit (с англ. — «совершать, фиксировать») помещает изменения файлов в служебное хранилище системы Git. Аналогичным действием в хранилище 1С является команда «Поместить в хранилище».

После заполнение комментария нужно нажать на кнопку “Закоммитить”

Рисунок 12. После заполнение комментария нужно нажать на кнопку “Закоммитить”

Попробуем теперь поменять что-то в нашей обработке и перевыгрузить файлы.

Например, после добавления в форму процедуры ПроверитьНастройкиВТаблицеДанных(),

Git снова отобразит информацию о том, что произошли изменения, и в этот раз покажет, какие именно части программного кода были изменены.

Git отображает изменения файлов обработки

Рисунок 13. Git отображает изменения файлов обработки

Чтобы не делать коммит вручную, можно добавить команды сохранения изменений в наш командный файл:

cd %SRC%
set /P txtcommit="Введите текст комментария: "
git add .
git commit -m "%date% %time%: %txtcommit%"

Смотрим историю изменений

С помощью программы SourceTree можно увидеть историю изменений файла. Также можно «откатиться» на нужную версию файлов обработки. Для этого нужно дважды нажать на нужной строке в журнале изменений, после чего файлы в папке будут заменены на те, которые находились в ней до выбранного коммита.

Чтобы посмотреть историю изменений конкретного файла, нужно спозиционироваться на него и открыть меню «Журнал для выбранного»:

Просмотр изменений конкретного файла

Рисунок 14. Просмотр изменений конкретного файла

Для сравнения версий файлов между собой будем использовать внешнюю утилиту сравнения Araxis Merge.

Предварительно нужно настроить SourceTree — указать, что именно Araxis нужно использовать в качестве внешнего средства сравнения.

Настройка внешней утилиты сравнения

Рисунок 15. Настройка внешней утилиты сравнения

Чтобы сравнить версии, нужно выбрать «Внешняя утилита сравнения»

Рисунок 16. Чтобы сравнить версии, нужно выбрать «Внешняя утилита сравнения»

В открывшемся окне программы Araxis Merge можно увидеть наглядное сравнение версий модуля формы.

Araxis Compare сравнивает версии файла

Рисунок 17. Araxis Compare сравнивает версии файла

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

Дорабатываем командный файл

Если усовершенствовать наш командный файл и добавить в него обход всех файлов из выбранной папки, то не придется создавать его копию для каждой обработки. Достаточно будет указать в настройках (переменная EXT_FOLDER) нужную директорию, и все обработки и отчеты из нее будут выгружены в наш репозиторий и размещены по отдельным каталогам. При этом в лог-файл out.txt будет сохранена информация о результатах выгрузки всех файлов.

Окончательный вариант bat-файла будет выглядеть так:

SET PATH1C="c:\Program Files\1cv8\8.3.12.1529\bin\1cv8.exe"
SET EXT_FOLDER="c:\Обработки"
SET SRC="c:\Repo1C"
SET OUT="c:\Repo1C\out.txt"
cd /D %EXT%
del /f /q %OUT%
FOR %%F IN (*.epf *.erf) DO (
%PATH1C% DESIGNER /DumpExternalDataProcessorOrReportToFiles %SRC% %%F /OUT %OUT% -NoTruncate
)
set /P txtcommit="Введите текст комментария: "
git add .
git commit -m "%date% %time%: %txtcommit%"

В предложенном примере текст коммита вводится один раз для всех обработок, но можно перенести команды системы Git в цикл FOR и вводить описание для каждого файла.

Подведем итоги. Теперь мы можем:

  • Фиксировать новые версии обработки в хранилище системы контроля версий. Например, это можно делать в конце рабочего дня или перед началом работы над новым блоком программного кода.
  • Просматривать историю версий и внесенные изменения, чтобы быстро понять, когда и что было добавлено, изменено или удалено.
  • Сравнивать версии обработки между собой. К примеру, можно увидеть, чем именно отличается версия недельной давности от текущей. Или в какой момент был неверно выбран алгоритм для решения задачи — и при необходимости вернуться в исходную точку.

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

Заключение

Мы рассмотрели основы работы с Git и общий способ версионирования внешних обработок, который заключается в следующем:

  • Обработку нужно выгрузить в формате *.xml.
  • Выгруженные файлы должны быть помещены в репозиторий системы контроля версий.
  • Сравнение версий выполняется внешними инструментами сравнения.

Платформа 1С также предоставляет возможность обратной загрузки — формирования внешней обработки отчета из набора XML-файлов. Для этого существует команда «Загрузить из файлов» и ключ LoadExternalDataProcessorOrReportFromFiles.

Также за рамками статьи остались другие возможности, которые предоставляет система Git: облачное хранение репозитория, совместная работа над проектом и многое другое. Они тоже могут использованы при работе с внешними файлами системы «1С:Предприятие».

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

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

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

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

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

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

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

В дополнительных настройках есть возможность включить / отключить (если она доступна в конфигурации) функционал регистрации внешних отчетов и обработок БСП.


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

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

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

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

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

Далее в конфигураторе сделать глобальную замену во внешних обработках (Правка -> Глобальная замена).

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


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

Как и в примере выше, может потребоваться сделать рефакторинг обработок. И тут также можно действовать по той же схеме:

  1. Выгружаем обработки в назначенный каталог.
  2. Выполняем все действия для рефакторинга.
  3. И загружаем изменения обратно в базу с помощью инструмента.

Все просто! Ну, не считай, что сам рефакторинг может быть сложным :)

Еще один небольшой кейс - это обновление дополнительных отчетов и обработок в тестовой базе. Алгоритм действий опять же простой:

  1. Выгружаем объекты с рабочей базы с помощью данного инструмента.
  2. И загружаем их в тестовую базу.

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

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

Напоследок

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

Версия 1.0.0.4 от 03.02.2020:

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

Версия 1.0.0.1 от 26.01.2020:

Версия 1.0.0.0 от 13.11.2019:

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

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

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

Путеводитель по истории релизов - отчет по истории выпуска релизов продуктов фирмы "1С" и анализа информации по обновлениям.

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

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

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

Читайте также: