К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как посмотреть внешний код в 1С

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

Под «внешним кодом» в 1С обычно понимают три вещи: внешние обработки и отчёты (файлы .epf и .erf), расширения конфигурации (.cfe) и внешние компоненты. Чаще всего задача сводится к тому, чтобы открыть файл обработки в конфигураторе и посмотреть её программный код — модуль объекта, модуль формы и процедуры. Это нужно, чтобы понять, что делает обработка перед запуском в рабочей базе, найти ошибку или позаимствовать алгоритм.

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

Важное ограничение: часть обработок распространяется без исходного кода (поставка «только исполнение») или защищена паролем. В таком случае код посмотреть штатными средствами нельзя — платформа честно сообщит об этом. Ниже разберём все рабочие сценарии, их условия и ограничения.

Что считается внешним кодом в 1С

Прежде чем искать код, определите, с каким типом объекта вы работаете — от этого зависит способ открытия. Внешняя обработка (.epf) и внешний отчёт (.erf) — самостоятельные файлы, которые не входят в конфигурацию, но выполняются в ней. Расширение конфигурации (.cfe) — надстройка, изменяющая поведение типовой конфигурации без её снятия с поддержки. Внешняя компонента (.dll, .zip по технологии NativeAPI) — бинарный код, который вообще не содержит встроенного языка 1С.

Отдельный случай — обработки, подключённые через механизм «Дополнительные отчеты и обработки» (типичен для конфигураций на БСП: УТ, ERP, БП, ЗУП). Такие обработки хранятся внутри информационной базы, но физически это те же внешние файлы, загруженные в справочник. Чтобы посмотреть их код, файл сначала нужно выгрузить на диск.

Как открыть внешнюю обработку в конфигураторе

Базовый способ подходит для любого файла .epf или .erf, лежащего на диске. Запустите конфигуратор той базы, для которой предназначена обработка (это не обязательно, но удобно — подсветка синтаксиса и проверка будут учитывать метаданные конфигурации). Сама база при этом может быть пустой: внешняя обработка открывается как самостоятельный файл.

Дальше порядок такой: меню «Файл — Открыть», выберите файл обработки. Появится окно структуры внешней обработки с ветками «Формы», «Макеты», «Модуль объекта». Если обработка открылась сразу в режиме запуска — значит, вы открыли её в режиме предприятия, а не в конфигураторе; закройте и повторите через конфигуратор.

Порядок действий
  1. 1
    Запустите конфигуратор нужной информационной базы
  2. 2
    Откройте меню «Файл — Открыть» (Ctrl+O) и укажите файл .epf или .erf
  3. 3
    В дереве структуры выберите «Действия — Открыть модуль объекта» для просмотра основного кода
  4. 4
    Двойным кликом по форме откройте конструктор формы, затем вкладку «Модуль» для кода формы
  5. 5
    Изучите макеты: запросы и схемы компоновки часто содержат основную логику отчётов

Просмотр модуля объекта и модуля формы

Модуль объекта содержит серверную логику: экспортные процедуры и функции, обработчики, код формирования отчёта. Модуль формы — код, работающий на клиенте: обработчики нажатий кнопок, команды, события элементов. В управляемых формах модули разделены директивами &НаКлиенте и &НаСервере, и важно понимать, где какая часть выполняется.

Если обработка содержит несколько форм, открывайте каждую отдельно. Основная форма обычно помечена в свойствах обработки как «Форма по умолчанию». Кнопки на форме привязаны к командам, а команды — к обработчикам в модуле, поэтому искать логику удобно от видимого элемента интерфейса.

Просмотр запросов и схем компоновки

В отчётах (.erf) значительная часть логики находится не в модуле, а в схеме компоновки данных: текст запроса, настройки группировок, ресурсы. Откройте ветку «Макеты», найдите макет типа «Схема компоновки данных» и двойным кликом откройте конструктор. Текст запроса можно скопировать и проверить в консоли запросов.

Как выгрузить и посмотреть обработку из справочника дополнительных отчётов

Если обработка подключена к базе через «Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки», её файл хранится внутри базы. Прямого просмотра кода из режима предприятия нет — только запуск. Чтобы добраться до исходников, откройте элемент справочника дополнительных обработок и используйте команду «Выгрузить в файл» (в разных версиях БСП — «Сохранить в файл» или аналогичная в меню «Ещё»).

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

Как посмотреть код расширения конфигурации

Расширения просматриваются не через «Файл — Открыть», а через список расширений конфигурации. В конфигураторе откройте «Конфигурация — Расширения конфигурации». В списке видны все подключённые расширения с признаком активности и безопасного режима. Двойной клик по расширению открывает его дерево метаданных — заимствованные объекты, собственные формы и модули.

Код расширения смотрите так же, как код конфигурации: модули форм, общие модули, обработчики событий. Обратите внимание на аннотации изменения методов (&ИзменениеИКонтроль, &Вместо, &Перед, &После) — они показывают, как расширение вклинивается в типовую логику. Если файл расширения лежит отдельно (.cfe), его можно загрузить через кнопку «Загрузить из файла» в том же окне списка расширений.

Почему код может не открываться

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

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

Типичные ошибки
01
Открытие обработки в режиме предприятия вместо конфигуратора — виден только результат работы, кода нет
02
Попытка открыть .cfe через «Файл — Открыть» — расширения загружаются только через список расширений конфигурации
03
Поиск логики отчёта только в модуле, хотя основная часть находится в схеме компоновки данных
04
Запуск непроверенной обработки в рабочей базе до просмотра её кода — риск порчи данных
05
Игнорирование версии платформы: файл от новой версии не откроется в старой среде

Безопасность при работе с чужим кодом

Внешние обработки выполняются с правами текущего пользователя и могут делать с базой всё, что разрешено этому пользователю: изменять и удалять документы, читать и пересылать данные, запускать команды операционной системы. Поэтому правило простое: сначала просмотр кода, потом запуск — и первый запуск только на копии базы.

При просмотре обращайте внимание на вызовы ЗапуститьПриложение, КомандаСистемы, HTTPСоединение, УдалитьДанные, прямые запросы к базе. Наличие таких конструкций не обязательно означает вредоносность, но требует понимания, зачем они используются. Для запуска непроверенных обработок используйте профили безопасности кластера и безопасный режим.

Что делать, если конфигуратора нет

Если под рукой нет установленного конфигуратора, вариантов немного. Файл .epf — бинарный контейнер, и простым текстовым редактором его содержимое не читается осмысленно. Существуют сторонние инструменты разбора формата внешних обработок, которые извлекают тексты модулей в обычные файлы — они применяются на свой риск и не являются штатным средством платформы.

Легальный и надёжный путь — установить платформу 1С (конфигуратор входит в состав поставки) или воспользоваться средой разработки EDT, которая тоже умеет импортировать внешние обработки в проект и показывать их модули как обычные исходные файлы. EDT особенно удобна, если нужно искать по коду нескольких обработок сразу.

Сравнение вариантов

Конфигуратор

Штатный способ для .epf/.erf и расширений. Подходит всем, у кого установлена платформа. Ограничение: не открывает обработки без исходного кода.

1C:EDT

Импортирует обработки в проект, удобен для поиска и анализа нескольких файлов. Требует отдельной установки и привыкания к интерфейсу.

Сторонние разборщики формата

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

Проверка результата

Признак того, что вы открыли именно код, а не запустили обработку: в конфигураторе видно дерево структуры с ветками «Формы», «Макеты», «Модуль объекта», а редактор модуля показывает текст на встроенном языке с подсветкой синтаксиса. Если вместо этого появилось окно с кнопками и полями ввода — вы в режиме исполнения.

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

Контрольные точки

Как проверить результат

Что открылось после «Файл — Открыть»
Норма

Дерево структуры обработки с модулями и формами

Тревожный признак

Рабочее окно обработки с кнопками — вы в режиме предприятия

Доступность модуля объекта
Норма

Модуль открывается и показывает код

Тревожный признак

Сообщение о недоступности модуля или запрос пароля — код закрыт поставщиком

Совместимость версий
Норма

Файл открывается без ошибок формата

Тревожный признак

Ошибка формата потока — файл повреждён или создан в более новой версии

Частые вопросы

Можно ли посмотреть код внешней обработки без конфигуратора?

Штатными средствами — нет: файл .epf является бинарным контейнером. Варианты — установить платформу с конфигуратором, использовать 1C:EDT с импортом обработки в проект либо сторонние разборщики формата на свой риск.

Почему при открытии модуля появляется сообщение, что модуль недоступен?

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

Как посмотреть код обработки, подключённой в справочнике дополнительных отчётов и обработок?

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

Чем отличается просмотр кода расширения от просмотра обработки?

Обработка открывается как файл через «Файл — Открыть», а расширение — через «Конфигурация — Расширения конфигурации» с последующим открытием его дерева метаданных. В расширении дополнительно смотрите аннотации изменения методов, показывающие перехват типовой логики.

Безопасно ли открывать чужую обработку в конфигураторе?

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

Обработка не открывается с ошибкой формата — что делать?

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

Итог

Что важно запомнить

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