При ежедневной разработке и поддержке решений на платформе 1С:Предприятие часто возникает задача быстро посмотреть структуру метаданных, реквизиты объектов или текст программного модуля в стороннем файле поставки или выгрузки .cf. Полная загрузка конфигурации через меню Конфигурация → Загрузить конфигурацию из файла... с последующим обновлением конфигурации базы данных занимает много времени, требует отдельной пустой базы и перезаписывает существующие данные разработки. Разберем по шагам наиболее эффективные и быстрые способы просмотра файлов .cf без выполнения полной загрузки в базу.
Выясним причину сложности прямого открытия таких файлов: формат .cf представляет собой составной сжатый контейнер (архив с алгоритмом Deflate), внутри которого программные модули, формы и описания объектов метаданных хранятся под внутренними уникальными идентификаторами (GUID). Простые текстовые редакторы или стандартные файловые просмотрщики без специализированных декодеров показывают нечитаемый бинарный код и GUID-идентификаторы. Рассмотрим подробнее основные варианты решения этой задачи — от встроенных механизмов платформы до сторонних утилит.
Проанализируем самый доступный и безопасный штатный метод, который не требует установки стороннего программного обеспечения. Для этого подойдет любая существующая база (включая пустую тестовую информационную базу).
.cf.В открывшемся дереве метаданных мы получаем полный доступ ко всем элементам конфигурации из внешнего файла:
Справочники, Документы, РегистрыНакопления).Важный момент: Чтобы не внести никаких изменений в текущую конфигурацию, после просмотра просто закроем окно сравнения (кнопку Выполнить нажимать не нужно).
Если требуется выполнить сквозной поиск по всем программным модулям файла конфигурации или проанализировать исходные тексты во внешних редакторах, разберем способ с разборкой конфигурации на исходные файлы. Данный метод идеально подходит для поиска конкретных процедур, функций или объявлений переменных.
Для выгрузки содержимого .cf в набор файлов выгрузки (файлы модулей с расширением .bsl и описания в XML) воспользуемся пакетным режимом запуска Конфигуратора через командную строку. Посмотрим на пример команды:
"C:\Program Files\1cv8\8.3.25.1234\bin\1cv8.exe" DESIGNER /IBConnectionString "File=""C:\temp\EmptyIB"";" /DumpConfigToFiles "C:\temp\ConfigDump" /LoadConfigFromFiles "C:\temp\source.cf"
Также в современных версиях платформы для автономной работы с файлами конфигураций используется консольная утилита ibcmd, которая входит в комплект поставки сервера платформы:
ibcmd infobase config dump-to-files --data-dir="C:\temp\standalone_db" --out="C:\temp\ConfigDump" "C:\temp\source.cf"
После выполнения команды каталог C:\temp\ConfigDump будет содержать полную структуру исходных кодов конфигурации. Откроем эту папку в редакторе Visual Studio Code с установленным расширением для языка 1С (BSL Language Server) или в среде разработки 1C:Enterprise Development Tools (1C:EDT). Это позволит использовать мгновенный поиск по всем файлам проекта (комбинация клавиш Ctrl + Shift + F), навигацию по методам и удобную работу с исходным кодом.
Рассмотрим вариант, когда на рабочем месте нет установленной платформы 1С или требуется быстро открыть файл без запуска тяжеловесных сред. Для решения этой проблемы сообществом разработаны специализированные утилиты, умеющие парсить формат внутренних таблиц 1С:
.cf, сопоставляют внутренние GUID с именами метаданных из таблицы metadata и отображают дерево конфигурации в графическом интерфейсе..cf, .epf, .erf), позволяющая извлечь вложенные файлы и распаковать вложенные блоки Deflate для последующего анализа.1CV8Viewer и специализированные WCX-модули. Следует учитывать, что базовые плагины показывают только имена внутренних потоков (GUID), поэтому для полноценного чтения структуры требуются плагины с поддержкой разбора заголовков метаданных 1С.Проанализируем сценарий автоматизации, когда необходимо быстро извлечь текст модуля или проверить свойства объекта из консоли. В среде OneScript для работы с внутренними контейнерами платформы применяется специализированная библиотека v8files или библиотека работы с метаданными.
Посмотрим на пример скрипта OneScript для распаковки контейнера конфигурации:
// Пример распаковки контейнера конфигурации с помощью пакета v8files
ПодключитьВнешнююКомпоненту("v8files");
ПутьКФайлуCF = "C:\temp\source.cf";
КаталогВыгрузки = "C:\temp\unpacked_cf";
Контейнер = Новый ЧитательКонтейнера1С();
Контейнер.Открыть(ПутьКФайлуCF);
Контейнер.РаспаковатьВсе(КаталогВыгрузки);
Контейнер.Закрыть();
Сообщить("Распаковка файла конфигурации успешно завершена в каталог: " + КаталогВыгрузки);
Подведем итог: выбор способа зависит от текущей задачи:
/DumpConfigToFiles и открыть полученную структуру в VS Code.