1с 8 reader массовая выгрузка внешних обработок
В версии платформы «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 фиксирует изменения всех файлов, которые находятся в репозитории (если специально не указать обратное).
Наш тестовый репозиторий будет размещаться в папке, в которую мы выгружаем обработку – «c:\Repo1C».
Создать репозиторий можно через командную консоль, но проще воспользоваться программой 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.
Просмотр и анализ журнала регистрации (отчет на СКД) - отчет на базе системы компоновки данных (СКД) для просмотра записей журнала регистрации.
Обозреватель криптографии - отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.
Любое решение требует поддержки, в том числе и в части улучшения программного кода и архитектуры решения. Это то, в чем нуждается каждое программа, а в нашем случае каждая конфигурация, созданная на базе платформы 1С.
Модули конфигураций чаще всего подвергаются адаптации под изменяющуюся архитектуру, но как обстоят дела с внешними отчетами и обработками? В одной из прошлых публикаций был сделан простой инструмент для пакетной выгрузки и загрузки внешних отчетов и обработок, который будет постепенно развиваться дальше.
Давайте рассмотрим простой пример того, как выгрузить внешние отчеты и обработки для обновления и улучшения, а после загрузить изменения массово обратно.
Суть проблемы
Реальная ситуация: после полугода доработки конфигурации появилась необходимость привести ее программный код в порядок. Разработчики по всем вносимым доработкам, например, использовали один общий модуль. Настало время разделить процедуры и функции этого модуля на отдельные части. Для решения подобной задачи нужно определиться со структурой конфигурацией, четко определить границы подсистем, включаемых в ее состав. Затем перенести процедуры и функции в соответствующие модули.
Конечно же, останавливаться на этом нельзя, но может потребовать внесения изменений в модули внешних отчетов и обработок. Все это можно проделать с помощью механизма глобальной замены конфигуратора.
Сегодня мы и рассмотрим как выгрузить справочник внешних обработок на диск для их последующего изменения, а после загрузить все обратно.
Решение
Чтобы решить задачу мы можем воспользоваться стандартной возможностью конфигуратора по поиску и замене текстов модулей. На этот раз нам нужно будет установить настройки на вкладке "Файлы", где мы укажем каталог с внешними обработками и отчетами, а также указать текст поиска и замены.
Остается только выгрузить все внешние обработки из информационной базы в назначенный каталог, обработать тексты их модулей и загрузить обратно. Мы, конечно, можем проделать это вручную, но мы ведь программисты! Напишем пару скриптов для автоматизации выгрузки / загрузки внешний отчетов и обработок. Для примера решим эту задачу для конфигурации "Управление производственным предприятием" версии 1.3, а после для чего-нибудь более нового. Например, для "Бухгалтерии предприятия" редакции 3.
Автоматизация процесса для УПП
Обработка для выгрузки будет достаточно простой, поэтому алгоритм выгрузки и загрузки приведу в обычных листингах кода. Для УПП все внешние обработки и отчеты, прикрепленные к информационной базе, хранятся в справочнике "ВнешниеОбработки". Вот так выглядит структура метаданных справочника:
И так, приступим! На следующем листинге представлен алгоритм выгрузки внешний обработок и отчетов в выбранный каталог.
Скрипт для выгрузки внешних отчетов и обработок с предварительным выбором каталога.
Выгрузка данных из строк табличной части справочника не выполняется.
Загрузка внешних обработок представлена далее.
Аналогичный скрипт с выбором каталога, но для загрузки файлов внешних отчетов и обработок в соответствующий справочник.
Поиск выполняется по коду, т.к. в предыдущем скрипте для выгрузки использовался именно он. При использовании наименования или GUID'а скрипт нужно подкорректировать.
Используя приведенный алгоритм проблем с выгрузкой/загрузкой внешний обработок и отчетов быть не должно. Нужно лишь учитывать, что коды элементов справочника должны иметь уникальные имена и у пользователя, запускающего обработку, должны быть соответствующие права доступа.
Стоит понимать, что в некоторых случаях внешние обработки и отчеты могут храниться не в реквизите "ХранилищеВнешнейОбработки", а в табличной части "Принадлежность". Тогда необходимо доработать представленные выше алгоритмы выгрузки/загрузки. Обычно это редко встречается, т.к. такой подход хранения создает некоторые проблемы в сопровождении - все эти обработки нужно отслеживать и дорабатывать отдельно.
Алгоритмы для БП 3.x
В современных конфигурациях справочник "Дополнительные отчеты и обработки" значительно отличается от того, что было в предыдущих версиях решений на обычных формах. Структура метаданных справочника имеет следующий вид.
Выгружать внешние отчеты и обработки будем в явно указанный каталог. Если база файловая, то выгрузка будет выполняться там, где запущено клиентское приложение. Если база клиент-серверная, то выгрузка выполняется на стороне сервера. Пример алгоритма для выгрузки отчетов и обработок в каталог под следующим спойлером.
Алгоритм выгрузки достаточно простой. Все что нужно:
- Получаем элементы справочника, у которого нет пометки на удаление и это не группа.
- Если есть двоичные данные файла в справочнике, то выгружаем в каталог.
- Расширение файла зависит от вида внешней обработки / отчета.
- Профит!
Теперь у нас есть выгруженные обработки и отчеты в каталоге. Ура!
Теперь задача поинтересней - нужно ранее выгруженные файлы загрузить обратно в справочник.
Алгоритм загрузки намного сложнее, т.к. требует доп. проверок и вызова типовых алгоритмов регистрации дополнительных отчетов и обработок.
Для ключевых частей алгоритма добавлены комментарии.
Если у Вас бардак в справочнике из-за обменов или некорректной работы со справочником программным образом, то типовые алгоритмы регистрации могут выдавать оповещения об ошибках или просто предупреждения о корректности настройки элементов.
Вот и все, задача решена!
Выводы
В итоге, внесение изменений в модули внешних обработок / отчетов сводятся к трем шагам:
- Выгрузка внешних обработок и отчетов из информационной базы в каталог на диске.
- Изменение модулей. Простые изменения можно выполнять с помощью стандартных возможностей конфигуратора по поиску и замене текстов модулей, а в сложных случаях нужно подходить индивидуально.
- Загрузка внешний отчетов и обработок обратно в информационную базу (соответствие файлов и элемента справочника устанавливается по коду элемента, который был записан ранее в имя файла. Последнее поведение может быть изменено по необходимости).
Пример ситуации, когда понадобилось массовое изменение внешних отчетов и обработок Вы также можете найти в публикации "Пакетная выгрузка / загрузка внешних отчетов и обработок".
Управлять внешними отчетами и обработками будет намного проще, если они будут храниться в GIT, а их изменения будут версионироваться. Но это уже совсем другая история.
А как Вы выполняете массовые изменения внешних отчетов и обработок?
Другие ссылки
Авторские разработки
Анализ производительности APDEX - отчет для просмотра и анализа замеров производительности в конфигурациях на базе БСП.
Путеводитель по истории релизов - отчет по истории выпуска релизов продуктов фирмы "1С" и анализа информации по обновлениям.
Просмотр и анализ структуры базы данных (отчет на СКД) - отчет для просмотра и анализа структуры базы данных с поддержкой файловых баз (ограниченный режим), а также баз на SQL Server и PostgreSQL.
Просмотр и анализ журнала регистрации (отчет на СКД) - отчет на базе системы компоновки данных (СКД) для просмотра записей журнала регистрации.
Обозреватель криптографии - отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.
Пакетная выгрузка / загрузка внешних отчетов и обработок - пакетная выгрузка / загрузка внешних отчетов и обработок для массовый манипуляций с ними.
Выгрузить все дополнительные обработки и отчеты в каталог всего за пару кликов. Простейшая обработка в один реквизит и команду.
Набросайте элементы на форму и вставьте код в модуль формы обработки. И без всякого скачивания.
Работоспособность проверена на БП 3.0, Документооборот 1.4-2.0, платформы 1С 8.3.7, 8.3.8
Автор: Михали Задорнов (MZadornov)
Похожие FAQ
Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За Авто добавление обработки в справочник Внешних обработок 0
Чтобы не изменять типовую конфигурацию приходится использовать типовой механизм внешних печатных форм и обработок. Данный код проверяет - добавлена ли открываемая обработка в конфигурацию, если нет - задает вопрос и при положительном ответе - автома Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме Автоматическая выгрузка загрузка данных используя регламентное задание 12
Для обмена данными между программами необходимо сделать следующее: 1. При помощи Конвертации Данных создать правила выгрузки данных 2. Нужно чтобы в конфигурации была обработка УниверсальныйОбменДаннымиXML , желательно последней версии! (При помо Посмотреть все результаты поиска похожих
Режимы работы
Обработка реализует 2 режима работы: Выгрузки (создание файла выгрузки указанных пользователем данных) и Загрузки (чтение файла выгрузки, созданного одноименным режимом, и запись имеющихся в нем данных). Установка режима осуществляется выбором в поле Режим.
Перед запуском того или иного режима (нажатие кнопки Выполнить) нужно указать имя файла выгрузки либо введя его вручную в поле "Имя файла", либо воспользовавшись кнопкой выбора этого поля и стандартным диалогом выбора файла.
В режиме загрузки имеется возможность редактирования использования итогов при записи регистров, что может повлиять на скорость загрузки.
Кнопки "Отключить итоги" и "Включить итоги" доступны при установленном флаге "Включить возможность редактирования использования итогов во время загрузки данных" и используются для ручного управления режимом использования итогов при загрузке данных.
Условия применимости обработки
Обработка может использоваться только в тех случаях, когда информационная база, в которой осуществлялась выгрузка данных, и та, в которой данные загружаются, являются однородными (конфигурации идентичны, данные могут различаться), либо все выгружаемые объекты практически полностью идентичны по составу и типам реквизитов и табличных частей, свойствам "ведущего" объекта метаданных и т.д. Следует отметить, что, в связи с указанными ограничениями, обработка главным образом предназначена для обмена между однородными ИБ.
Формат файла выгрузки отличается от формата файла, создаваемого при выгрузке по плану обмена, заголовочной частью. Для выгрузки данных (элементов справочников, наборов записей регистров и т.д.) обработкой используется тот же механизм XML-сериализации, что и выгрузкой по планам обмена, в этой части форматы файлов идентичны.
Определение состава выгрузки
Обработка позволяет осуществить как полную, так и частичную выгрузку данных информационной базы в файл. Настройка состава выгружаемых данных производится в диалоге путем установки флажков в колонке дерева, отображающего объекты метаданных, данные по которым могут быть выгружены. Дополнительная колонка флажков, "При необходимости", устанавливает необходимость выгрузки объектов данного типа "по ссылке". То есть, если флажок установлен только в колонке "При необходимости", то данные по такому объекту будут выгружаться не полностью, а только в том объеме, который необходим для поддержания ссылочной целостности в информационной базе, которая будет загружать файл выгрузки.
При открытии формы обработка устанавливает признак выгрузки по ссылке всем объектам, что гарантирует ссылочную целостность выгруженного фрагмента информационной базы.
При нажатии на кнопку "Определить объекты, выгружаемые по ссылке" обработка анализирует, ссылки на какие данные могут содержаться в объектах, у которых установлен признак полной выгрузки, и автоматически заполняет колонку флажков, индицирующих необходимость выгрузки по ссылке. Если объект уже имеет установленный флажок полной выгрузки, в таком случае флажок выгрузки по ссылке не устанавливается.
Возможные применения
Использование этой обработки возможно, например, для создания полной или частичной резервной копии данных, осуществления обмена данными между информационными базами, а также как вспомогательный инструмент при восстановлении проблемных информационных баз.
Похожие FAQ
Еще в этой же категории
Обработка Универсальный обмен данными в формате XML 15
Обработка Универсальный обмен данными в формате XML (обработка универсальныйобменданнымиxml) Обработка " Универсальный обмен данными в формате XML" предназначена для загрузки и выгрузки данных в файл из любой конфигурации, реализованной на платфо Как программно открыть обработку с передачей параметра? 12
Просто открыть форму обработки можно так: НаКлиенте Процедура ОткрытьОбработку(Команда) ОткрытьФорму(" Обработка.ОбработкаВводБланкЗаказа.Форма" ); КонецПроцедуры А вот открыть форму обработки с передачей параметров : ПараметрыФормы = Новы Написании Выгрузки и Загрузки Данных используя Универсальный обмен данными в формате XML 3
Написании обработок для выгрузки и загрузки данных используя методы обработки " Универсальный обмен данными в формате xml" Принцип работы: При изменении даты в форме, табличное поле заполняется документами за выбранную дату. Сами правила обме Как программно открыть внешнюю обработку? 1
В версии 8.2 приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере. Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий: Передать ф Как открыть форму внешней обработки 0
НаКлиенте Процедура ОткрытьФормуВнешнейОбработки(Команда) ОписаниеОповещения = Новый ОписаниеОповещения(" ПослеПомещенияФайла" , ЭтаФорма); НачатьПомещениеФайла(ОписаниеОповещения,, " " , Ложь, ЭтаФорма.УникальныйИдентификатор); КонецПроцедуры НаК Посмотреть все в категории Обработки
Читайте также: