Как извлечь встроенную справку и описания объектов из 1С 7.7?

Программист 1С v7.7 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

При сопровождении сильно доработанных баз 1С:Предприятия 7.7 нередко возникает задача сформировать единую пользовательскую инструкцию или распечатать документацию по конфигурации и внешним отчетам. Штатный интерфейс Конфигуратора 1С 7.7 не предоставляет инструментов для пакетного экспорта справки, позволяя просматривать раздел Описание только вручную по каждому объекту отдельно.

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

Почему штатный встроенный язык 1С 7.7 не позволяет прочитать справку

Проанализируем возможности системного объекта Метаданные. Во встроенном языке 1С 7.7 объект Метаданные открывает доступ ко многим свойствам конфигурации: идентификаторам, синонимам, комментариям, типам реквизитов и составу табличных частей. Однако платформа полностью лишена встроенных функций и методов для чтения поля справки (описания) объекта.

Кроме того, ссылки между статьями справки внутри 1С 7.7 используют внутреннюю адресацию платформы. Если просто скопировать текст вручную, навигация нарушается. Чтобы автоматизировать извлечение документации в исходном виде, необходимо обратиться к структуре самих файлов конфигурации.

Где и как хранится справка в 1С 7.7

Файл конфигурации 1Cv7.md, а также внешние отчеты и обработки с расширением .ert физически представляют собой составные бинарные файлы формата Microsoft OLE Structured Storage (Compound File Binary Format). Внутри такого файла организована виртуальная файловая система со своими хранилищами (папками) и потоками данных (файлами).

Тексты описаний объектов метаданных хранятся внутри этих потоков в формате RTF (Rich Text Format). Это означает, что при выгрузке потоков мы получаем полноценный форматированный текст, в котором сохраняются шрифты, таблицы, списки и даже встроенные графические изображения (хранящиеся прямо внутри RTF в шестнадцатеричном виде).

Способ 1. Использование утилиты gcomp для декомпиляции конфигурации

Рассмотрим наиболее популярный и надежный инструмент для разборки файлов 1С 7.7 — консольную утилиту gcomp. Данная утилита предназначена для разборки файла 1Cv7.md и внешних файлов .ert на исходные текстовые составляющие с возможностью их обратной сборки.

Разберем по шагам процесс получения справки с помощью gcomp:

  1. Создадим отдельный рабочий каталог на диске и поместим туда исполняемый файл утилиты, а также файл конфигурации 1Cv7.md или внешние отчеты .ert.
  2. Запустим команду декомпиляции в командной строке: gcomp -d -v -i 1Cv7.md -o SourceMD
  3. После выполнения разборки перейдем в созданный каталог SourceMD. Внутри дерева каталогов для каждого объекта метаданных (справочников, документов, отчетов) будут созданы отдельные файлы, содержащие исходный код модулей, структуры реквизитов и файлы описаний с расширением .rtf или .txt.
  4. Для внешних отчетов процедура аналогична. Запустим команду для отдельного файла отчета: gcomp -d -v -i Report.ert -o SourceReport

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

Способ 2. Применение специализированных внешних компонент (ВК)

Если требуется выгружать описания непосредственно из запущенной базы 1С или формировать отчет программно, используют внешние компоненты, умеющие работать с потоками Compound-файлов или перехватывать внутренние структуры движка 1С 7.7:

  1. ВК Compound (Компаунд): Компонента предоставляет встроенному языку 1С интерфейс для открытия OLE Structured Storage файлов (как самого 1Cv7.md, так и внешних обработок .ert). С ее помощью можно программно обойти хранилища объектов метаданных, найти поток описания и считать его содержимое во встроенный язык.
  2. ВК FormEx (Формекс): Известная расширяющая компонента для 1С 7.7, предоставляющая обширный низкоуровневый доступ к формам и метаданным, включая возможности по взаимодействию со встроенными окнами справки и их содержимым.
  3. ВК HTMLHelp / HelpHTML: Специализированные библиотеки, которые перехватывают вывод описаний и позволяют отображать или выгружать справку объектов конфигурации в виде стандартных HTML-страниц, готовых для веб-просмотра или печати.

Способ 3. Прямой разбор Compound-файлов внешними скриптами

Поскольку формат файла конфигурации стандартизирован, мы можем извлечь справку полностью автономно без запуска Конфигуратора 1С и без регистрации внешних компонент. Разберем пример реализации такого подхода на языке Python с использованием библиотеки для разбора структурированных хранилищ olefile.

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


import os
import olefile

md_path = "1Cv7.md"
output_dir = "ExtractedHelp"

os.makedirs(output_dir, exist_ok=True)

if olefile.isOleFile(md_path):
    with olefile.OleFileIO(md_path) as ole:
        storage_tree = ole.listdir()
        for path_parts in storage_tree:
            stream_name = path_parts[-1]
            # Потоки со справкой и описанием обычно содержат Help или Description
            if "Help" in stream_name or "Description" in stream_name:
                full_stream_path = "/".join(path_parts)
                safe_name = "_".join(path_parts) + ".rtf"
                data = ole.openstream(path_parts).read()
                
                with open(os.path.join(output_dir, safe_name), "wb") as f_out:
                    f_out.write(data)

Подобную процедуру можно реализовать также с помощью функций Windows API (через функцию StgOpenStorage и интерфейсы IStorage, IStream) в PowerShell или C#.

Сборка, редактирование и вывод на печать

После того как все RTF-файлы описаний извлечены из конфигурации и внешних отчетов, перейдем к завершающему этапу подготовки документации:

  1. Объединение материалов: Используя офисные пакеты (Microsoft Word или LibreOffice Writer), объединим отдельные файлы описаний в единый мастер-документ. Для упорядочивания разделов можно предварительно выгрузить список объектов через стандартный обход метаданных в 1С.
  2. Правка оформления: В общем документе легко удалить устаревшие разделы, поправить форматирование заголовков и добавить сквозную нумерацию страниц.
  3. Создание электронной справки (CHM): Если кроме печатной версии требуется справочник в электронном виде, сконвертированные в HTML файлы можно собрать в единую справочную систему формата .chm с помощью компилятора Microsoft HTML Help Workshop, получив полноценную интерактивную документацию.
← На главную