Где открыть исходный код конфигурации 1С и как в нём ориентироваться
Содержание
Программный код 1С смотрят в Конфигураторе: запустите базу в режиме «Конфигуратор», выберите Конфигурация → Открыть конфигурацию, найдите объект в дереве метаданных и откройте его модуль из контекстного меню. В режиме 1С:Предприятие исходный текст не показывается. Пользователь увидит там только имя модуля и номер строки в подробном тексте ошибки.
Есть ещё два способа. Отладчик показывает, какие строки выполняются прямо сейчас. Выгрузка конфигурации в файлы даёт обычные текстовые модули .bsl, их можно читать в любом редакторе. Какой способ выбрать, зависит от задачи: прочитать алгоритм, найти место ошибки или изучить чужую доработку.
Какие есть способы посмотреть код 1С и что для них нужно
Сначала о доступе. Кнопка «Конфигуратор» в окне запуска есть у всех, но войти в него сможет только пользователь с правом «Администрирование». В типовых конфигурациях на БСП это профиль «Администратор» или роль «Полные права». Если в списке пользователей базы никого нет, Конфигуратор откроется без пароля.
Монопольный режим для просмотра кода не нужен. Открыть конфигурацию и читать модули можно, пока бухгалтеры работают в базе. Монопольный доступ понадобится, только если вы решите обновить конфигурацию базы данных после изменений.
| Способ | Когда подходит | Что нужно |
|---|---|---|
| Конфигуратор | прочитать любой модуль, форму, запрос | право «Администрирование» |
| Отладчик | понять, какая ветка кода срабатывает на реальных данных | Конфигуратор; для клиент-серверной базы — сервер с включённой отладкой |
| Выгрузка в файлы | читать код в VS Code или 1С:EDT, искать по всем модулям сразу, хранить в Git | Конфигуратор, место на диске |
| Подробный текст ошибки в Предприятии | узнать, в каком модуле и строке упала операция | ничего, доступно любому пользователю |
Если базы нет, а есть только файл .cf, создайте пустую информационную базу, откройте её в Конфигураторе и выполните Конфигурация → Загрузить конфигурацию из файла. Так смотрят код поставки, не трогая рабочую базу.
Как открыть конфигурацию и найти объект в дереве метаданных
Шаг 1. Запуск Конфигуратора
- Откройте окно запуска 1С и выделите нужную базу.
- Нажмите кнопку «Конфигуратор» и введите логин с административными правами.
- В главном меню выберите
Конфигурация → Открыть конфигурацию.
Слева появится дерево: «Общие», «Константы», «Справочники», «Документы», «Отчёты», «Обработки», «Регистры сведений» и так далее. Каждая ветка — тип объектов метаданных.
Шаг 2. Основная конфигурация и конфигурация базы данных
В Конфигураторе две конфигурации. Основная — та, которую вы открыли и можете редактировать. Конфигурация базы данных — та, с которой сейчас работают пользователи. Её открывают через Конфигурация → Конфигурация базы данных → Открыть конфигурацию БД, и она доступна только для чтения.
Обычно они совпадают. Но если кто-то внёс правки и не обновил базу, в Предприятии работает старый код. Когда разбираете ошибку пользователя, смотрите именно конфигурацию БД, иначе будете читать не тот текст.
Шаг 3. Поиск объекта
Документ «Реализация товаров и услуг» в дереве называется не так, как в интерфейсе. Внутреннее имя — РеализацияТоваровУслуг, синоним — то, что видит пользователь. Быстрее всего найти объект так:
- 🔎 выделите корень дерева и начните набирать имя — курсор перейдёт к совпадению;
- 🔎 откройте в Предприятии нужный документ, затем в Конфигураторе ищите по синониму из заголовка окна;
- 🔎 используйте глобальный поиск (о нём ниже): он ищет и по именам объектов.
Объекты с замком на значке стоят на поддержке поставщика. Изменять их без снятия с поддержки нельзя, а смотреть код можно свободно.
Как посмотреть код модулей объекта и формы
У одного документа может быть пять-десять мест, где живёт код. Важно понимать, где искать конкретное поведение.
| Модуль | Где выполняется | Что там обычно лежит |
|---|---|---|
| Модуль объекта | на сервере | проверки при записи, обработка проведения, заполнение |
| Модуль менеджера | на сервере | печать, процедуры для работы со списком, служебные функции |
| Модуль формы | клиент и сервер | реакция на кнопки, изменение полей, расчёт сумм в табличной части |
| Модуль команды | клиент | что происходит при нажатии команды в меню или панели |
| Общий модуль | зависит от флажков «Клиент», «Сервер», «Вызов сервера» | общие процедуры для многих объектов |
| Модуль приложения и модуль сеанса | при старте программы и сеанса | начальные настройки, установка параметров сеанса |
Модуль объекта и модуль менеджера
Щёлкните правой кнопкой по объекту в дереве и выберите «Открыть модуль объекта» или «Открыть модуль менеджера». Второй путь — двойной щелчок по объекту, вкладка «Прочее» в окне редактирования, кнопки с названиями модулей.
Для проведения документа ищите в модуле объекта процедуру ОбработкаПроведения. В типовых конфигурациях она часто короткая: вызывает функции из модуля менеджера или общих модулей, а движения формируются там.
Модуль формы
- Раскройте объект в дереве и найдите ветку «Формы».
- Двойным щелчком откройте форму, например
ФормаДокумента. - Внизу редактора переключитесь с вкладки «Форма» на вкладку «Модуль».
Чтобы найти обработчик конкретного поля, выделите его в списке элементов формы и откройте палитру свойств. В разделе «События» напротив события указано имя процедуры. Нажмите на значок лупы рядом — откроется модуль на этой процедуре.
Навигация внутри модуля
- ⌨️
Ctrl+F— поиск в текущем модуле; - ⌨️
F12— перейти к определению процедуры, на имени которой стоит курсор (работает и для вызовов из общих модулей); - ⌨️ кнопка «Процедуры и функции» на панели модуля — список всех процедур с переходом по щелчку;
- ⌨️
Ctrl+G— переход к строке по номеру. Удобно, когда номер известен из текста ошибки.
Директивы перед процедурами подсказывают место выполнения: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Если ищете, почему код не видит данные базы, сначала проверьте директиву.
Как искать по всему программному коду конфигурации
Чтобы найти, откуда берётся текст сообщения или где используется реквизит, листать модули бесполезно. В типовой БП 3.0 их тысячи.
Откройте Правка → Глобальный поиск или нажмите Ctrl+Shift+F. Введите фразу, например кусок сообщения об ошибке, которое видит пользователь. Результаты появятся в окне внизу, двойной щелчок открывает модуль на найденной строке.
Ищите короткую уникальную часть сообщения. Длинные тексты в коде часто собираются из кусков через СтрШаблон или НСтр, и полная фраза не найдётся.
Если нужно найти все места, где используется объект метаданных, выделите его в дереве и выберите в контекстном меню «Поиск ссылок на объект». Так видно, в каких формах, подписках и ролях участвует, например, реквизит документа.
Выгрузка в файлы для внешних редакторов
Конфигурация → Выгрузить конфигурацию в файлы сохраняет конфигурацию в каталог XML-файлов. Каждый модуль становится отдельным файлом .bsl. Дальше его читают в VS Code с расширением для языка 1С или в 1С:EDT, ищут регулярными выражениями, сравнивают через Git.
Этот способ выручает, когда нужно сравнить две версии доработки или показать код разработчику, у которого нет доступа к базе.
Как увидеть выполняемый код в отладчике
Чтение модулей не всегда отвечает на вопрос «почему посчиталось так». Отладчик показывает, какие строки реально выполнились и какие значения были у переменных.
Запуск отладки
- Откройте нужный модуль и поставьте точку останова на строке:
F9или двойной щелчок по левому полю. - Выберите
Отладка → Начать отладкуили нажмитеF5. Запустится 1С:Предприятие, уже подключённое к отладчику. - Выполните в Предприятии действие, которое вызывает этот код. Выполнение остановится, Конфигуратор выйдет на передний план.
Дальше пользуйтесь командами пошагового выполнения:
| Клавиша | Действие |
|---|---|
F10 | шагнуть через строку, не заходя в вызываемые процедуры |
F11 | шагнуть внутрь вызова |
Shift+F11 | выйти из текущей процедуры |
Shift+F9 | вычислить выражение или посмотреть значение переменной |
F5 | продолжить до следующей точки останова |
Окно стека вызовов (Отладка → Стек вызовов) показывает цепочку процедур, которая привела к текущей строке. Это самый быстрый способ понять, кто вызвал функцию из общего модуля.
Особенности клиент-серверной базы
В файловой базе серверный код отлаживается сразу. В клиент-серверной серверный код остановится на точке, только если отладка включена на сервере 1С: агент сервера запускают с ключом -debug. Включает это администратор сервера.
Не включайте отладку на рабочем сервере без согласования: смена параметров службы агента требует её перезапуска, а он обрывает сеансы всех пользователей. Делайте это вне рабочего времени или на копии базы.
Пока выполнение стоит на точке останова, сеанс держит открытую транзакцию, если остановка пришлась на запись или проведение. Другие пользователи могут ловить ожидание на блокировках. Отлаживайте на копии.
Замер производительности
Отладка → Замер производительности включает подсчёт: сколько раз выполнилась каждая строка и сколько это заняло времени. Включите замер, выполните медленную операцию, выключите. Самые тяжёлые строки окажутся вверху списка.
Что видно в режиме 1С:Предприятие обычному пользователю
Исходного текста модулей пользователь не видит ни при каких настройках. Но кое-что полезное для разбора доступно.
- 📄 Подробный текст ошибки. В окне ошибки откройте подробности: там есть строки вида
{Документ.РеализацияТоваровУслуг.МодульОбъекта(245)}. Это тип объекта, имя, модуль и номер строки. Отправьте этот текст программисту — он откроет модуль и нажмётCtrl+G. - 📄 Команда «Все функции». Включается в
Сервис и настройки → Параметрыфлажком «Отображать команду “Все функции”». Даёт список всех справочников, документов, регистров и обработок по их внутренним именам. Кода там нет, но по ним видно, как объект называется в Конфигураторе. - 📄 Окно «О программе» показывает конфигурацию и её релиз. По нему разработчик поймёт, какой код поставки сравнивать.
Хотите посмотреть код внешней обработки, которая подключена у вас в базе? Пользователю с правами администратора это доступно через выгрузку в файл (раздел ниже). Читать её всё равно придётся в Конфигураторе.
Как посмотреть код расширений и внешних обработок
Многие доработки в современных базах сделаны не в основной конфигурации, а в расширениях и внешних файлах. Если в типовом модуле всё правильно, а программа работает иначе — ищите здесь.
Расширения конфигурации
- В Конфигураторе выберите
Конфигурация → Расширения конфигурации. - В списке выделите расширение и откройте его конфигурацию через меню «Конфигурация» в этом окне.
- Появится отдельное дерево. В нём лежат только заимствованные объекты и новые.
Код расширения подменяет или дополняет типовой через аннотации перед процедурами:
- 🧩
&Перед("ИмяПроцедуры")— выполняется перед типовой; - 🧩
&После("ИмяПроцедуры")— после неё; - 🧩
&Вместо("ИмяПроцедуры")— полностью заменяет типовую, если внутри нет вызоваПродолжитьВызов(); - 🧩
&ИзменениеИКонтроль("ИмяПроцедуры")— копия типовой процедуры с отмеченными вставками и удалениями.
Чтобы понять, что реально выполнится, читайте типовую процедуру и перехватчик вместе.
Из режима Предприятия список расширений открывается в разделе Администрирование → Печатные формы, отчеты и обработки → Расширения. Там расширение можно сохранить в файл .cfe и потом посмотреть на другом компьютере.
Внешние обработки и отчёты
Файл .epf или .erf открывается прямо в Конфигураторе: Файл → Открыть. Конфигурацию базы при этом открывать не нужно. Появится дерево обработки с формами и модулем объекта.
Если обработка загружена в базу как дополнительная, сначала достаньте её. Откройте Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, выделите строку и выгрузите её в файл командой в панели списка.
Не запускайте в рабочей базе внешнюю обработку из непроверенного источника, не прочитав её код. Она выполняется с правами вашего пользователя и может изменить или удалить данные.
Почему код не открывается или выглядит не так
Отладка → Подключение.Частые вопросы
Можно ли посмотреть код 1С без Конфигуратора?
.bsl читаются в любом текстовом редакторе. Но саму выгрузку делают в Конфигураторе или в 1С:EDT.