1с 8 reader массовая выгрузка внешних обработок
Обновлено: 07.07.2024
Все разработчики, сопровожденцы и администраторы, имеющие дело с решениями на платформе 1С, встречаются в работе с внешними отчетами и обработками. Задачи разнообразны: от создания простых доработок системы с сохранением поддержки, до объемной задачи рефакторинга при развертывании нового релиза конфигурации. Иногда даже целые подсистемы или инструменты создаются на внешних обработках, но это выходит за рамки публикации.
В статье "Как быстро выгрузить / загрузить внешние отчеты и обработки" были рассмотрены примеры как это сделать в простых случаях. Основываясь на таком же принципе был сделан этот инструмент для автоматизации выгрузки и загрузки внешних отчетов и обработок.
Предлагаемый инструмент поможет упростить решение некоторых возникающих задач, так как позволяет делать пакетную выгрузку внешних отчетов и обработок из справочника в каталог на диске, и обратно.
Основные возможности инструмента:
- Массовая выгрузка дополнительных отчетов и обработок в заданный каталог
- Массовая загрузка внешних отчетов и обработок из каталога (только обновление существующих объектов из файлов без создания новых элементов справочника).
- Установка произвольных фильтров на выгружаемые обработки
- Точное сопоставление ранее выгруженных обработок с элементами справочника при загрузке (если выгрузка выполнялась этим инструментом).
- Механизм регистрации внешних отчетов и обработок БСП при загрузке.
- Возможность ручного сопоставления файлов из каталога с элементами справочника при загрузке.
- Выбор контекста, где находится каталог с обработками (клиент или сервер).
- Поддержка только управляемого приложения. В обычном приложении обработку можно использовать, только встроив ее в конфигурацию.
- Поддержка практически всех современных конфигураций на базе БСП, а также некоторых устаревших решений (УПП 1.3, УТ 10.3 или Бухгалтерия предприятия 2.0). Главное, чтобы было запущено управляемое приложение или обработка была встроена в конфигурации с возможностью использования управляемых форм в обычном приложении.
- Решение также поддерживает несколько "самописных" конфигураций, но не гарантируется, что оно будет работать на каком-то Вашем эксклюзивном решении.
При выгрузке учитываются такие особенности как:
- Одинаковые имена отчета или обработки, прикрепленного к разным элементам справочника.
- Отсутствие двоичных данных в хранилище элемента справочника (да и такое бывает).
- Делается точно сопоставление справочника с выгружаемыми файлами (связка делается через создаваемый файл "config.json").
- Если файл точного сопоставления отсутствует, то поиск идет по имени.
В дополнительных настройках есть возможность включить / отключить (если она доступна в конфигурации) функционал регистрации внешних отчетов и обработок БСП.
Рассмотрим несколько кейсов использования этого инструмента.
Примеры использования
Самые популярные задачи, которые можно решить с помощью инструмента пакетной выгрузки / загрузки.
При обновлении некоторой конфигурации Вы можете столкнуться с тем, что была перенесена некоторая функция "ПолучитьОписаниеТиповДаты" из общего модуля "ОбщегоНазначения" в общий модуль "ОбщегоНазначенияЗК". В конфигурации с помощью глобального поиска все исправлено, а вот во внешних обработках неизвестно.
В этом случае можно выгрузить все внешние обработки в каталог, перед этим настроив фильтры по реквизитам справочника с внешними отчетами и обработками (можно оставить и стандартные фильтры).
Далее в конфигураторе сделать глобальную замену во внешних обработках (Правка -> Глобальная замена).
А после сохранения изменений загрузить все обработки обратно в базу.
Проверить и после сделать загрузку измененных объектов в рабочую базу.
Как и в примере выше, может потребоваться сделать рефакторинг обработок. И тут также можно действовать по той же схеме:
- Выгружаем обработки в назначенный каталог.
- Выполняем все действия для рефакторинга.
- И загружаем изменения обратно в базу с помощью инструмента.
Все просто! Ну, не считай, что сам рефакторинг может быть сложным :)
Еще один небольшой кейс - это обновление дополнительных отчетов и обработок в тестовой базе. Алгоритм действий опять же простой:
- Выгружаем объекты с рабочей базы с помощью данного инструмента.
- И загружаем их в тестовую базу.
Стоит учитывать, что инструмент только обновляет существующие обработки, не добавляя новые. Это сделано специально, т.к. добавление внешнего отчета или обработки - это более сложный процесс и часто требует ручной настройки.
Конечно, это не полный список. Есть идеи? Тогда добро пожаловать в комментарии.
Напоследок
Нашли баги, ошибки или есть предложения? Это отлично! Не стесняйтесь давать обратную связь.
Версия 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):Специальные предложения
1. Процедуры, функции должны умещаться на один экран монитора по высоте и ширине :-))
2. Не нужно давать имена переменным "массив1"
3. Уберите "СохранитьДанныеНаСервере" из модуля объекта в модуль формы
4. Если есть одно неподходящее название - не нужно прерывать всю выгрузку.
5. Все реквизиты нужно получать в одном запросе, не нужно делать запрос в цикле, например
Выборка.Ссылка.ХранилищеОбработки.Получить()
6. Определите каталог сохранения файлов прозрачно для пользователя.
В коде НачатьПолучениеФайлов(ЗавершениеОбратныйВызов, Массив1,""); каталог пустой.
Не понятно, что значит.
Просмотры 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 как двоичные, т.е. просто как набор нулей и единиц и поэтому не умеют их переводить в «читаемый» формат.
Рисунок 2. Так видит файл с расширением*.epf сторонняя программа
Существует множество различных систем контроля версий, а одной из самых распространенных является Git.
Система Git используется в качестве инструмента версионирования и групповой разработки в среде EDT (подробнее про это было описано в статье Системы контроля версий в EDT), поэтому именно она будет рассмотрена ниже.
Приступаем к настройке
Для того, чтобы настроить версионирование файлов обработки, нам понадобятся следующие инструменты:
- Git — программа для работы с системой управления версиями
- SourceTree — визуальный клиент для работы с Git
- Araxis Merge — программа для сравнения и объединения программного кода.
Рисунок 3. Необходимые программы
Выбор именно этих программных решений не является принципиальным — в качестве визуального клиента можно использовать другое приложение, например GitHub Desktop или TortoiseGit, а Araxis Merge можно заменить программами KDiff3, WinMerge или любой другой. Цель данной статьи — продемонстрировать подход к версионированию файлов платформы «1С:Предприятие», а не показать готовое решение.
Для демонстрационного примера будет использована внешняя обработка «ЗагрузкаСпецификации.epf», расположенная в папке «c:\Обработки\». В папке «c:\Repo1C\» будет создан проект Git, в котором будет храниться история разработки.
Рисунок 4. Исходный набор файлов
Интерактивная выгрузка
Чтобы выгрузить обработку в XML вручную, нужно выполнить следующие действия:
- Открыть обработку в конфигураторе платформы версии 8.3.8 и старше
- Открыть контекстное меню обработки
- Выбрать пункт «Выгрузить в файлы» и указать нужную папку.
Рисунок 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++.
Рисунок 9. Сохранение файла в кодировке OEM-866
После того как выгрузка файлов настроена, можно приступить к установке Git и созданию репозитория.
Создание репозитория
Для начала работы с системой Git, следует загрузить с официального сайта дистрибутив программы и установить ее на компьютер. При установке можно оставить значения всех параметров по умолчанию.
Чтобы Git мог отслеживать изменения файлов в определенной папке, нужно указать что эта папка является репозиторием. Git фиксирует изменения всех файлов, которые находятся в репозитории (если специально не указать обратное).
Создать репозиторий можно через командную консоль, но проще воспользоваться программой SourceTree — ее также необходимо скачать с официального сайта и установить. При установке нужно указать адрес электронной почты (либо учетную запись Google) и пройти процедуру регистрации. Для создания репозитория нужно нажать на кнопку «Create» в главной панели SourceTree и указать полный путь к папке:
Рисунок 10. Создание репозитория в SourceTree
После создания репозитория в папке появляется скрытая директория «.git» — наличие ее означает, что Git теперь отслеживает изменения файлов в этой папке.
Поскольку в папке с:\Repo1C уже находились выгруженные файлы, Git сразу же предложит зафиксировать их в хранилище.
Чтобы изменения файлов попали в хранилище, файлы нужно проиндексировать — указать, что изменения действительно должны быть включены в новый «снимок состояния».
Рисунок 11. Помещение измененных файлов в индекс
Для фиксирования изменений нужно нажать кнопку «Закоммитить» (или сочетание клавиш Shift+Ctrl+C). Команда commit (с англ. — «совершать, фиксировать») помещает изменения файлов в служебное хранилище системы Git. Аналогичным действием в хранилище 1С является команда «Поместить в хранилище».
Рисунок 12. После заполнение комментария нужно нажать на кнопку “Закоммитить”
Попробуем теперь поменять что-то в нашей обработке и перевыгрузить файлы.
Например, после добавления в форму процедуры ПроверитьНастройкиВТаблицеДанных(),
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 можно увидеть наглядное сравнение версий модуля формы.
Рисунок 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.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.
Просмотр и анализ журнала регистрации (отчет на СКД) - отчет на базе системы компоновки данных (СКД) для просмотра записей журнала регистрации.
Обозреватель криптографии - отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.
Читайте также: