Где лежит программный код базы 1С 8.3 и как до него добраться
Содержание
Чтобы посмотреть код в 1С, запустите базу в режиме «Конфигуратор», выберите Конфигурация → Открыть конфигурацию и в дереве метаданных щёлкните правой кнопкой по нужному объекту: команды «Открыть модуль
объекта» и «Открыть модуль менеджера» покажут программный код. Код формы открывается из самой формы, на вкладке «Модуль» внизу редактора.
Чаще всего код ищут не ради интереса, а чтобы понять, почему документ проводится не так или откуда берётся ошибка. Поэтому ниже не только где лежат модули, но и как быстро выйти на нужную строку: поиск, переход к определению, отладчик, внешние обработки и расширения. Всё описанное относится к платформе 8.3 и не зависит от конфигурации: БП 3.0, ЗУП 3.1 и УТ 11 устроены одинаково.
Как открыть Конфигуратор и какие права для этого нужны
Конфигуратор запускается из того же окна, что и обычная работа.
- В списке баз выделите нужную информационную базу.
- Нажмите кнопку «Конфигуратор» справа (не «1С:Предприятие»).
- Введите пользователя и пароль.
- В открывшемся окне выберите
Конфигурация → Открыть конфигурацию. Слева появится дерево объектов.
Без четвёртого шага окно останется пустым. Это нормально: Конфигуратор открывается без дерева, и новички часто думают, что база «не загрузилась».
Кто может войти
- 🔑 Пользователю нужна роль с правом «Администрирование». В типовых конфигурациях это роль «Полные права» или «Администратор системы».
- 👤 Если список пользователей в базе пуст, Конфигуратор открывается без пароля.
- 🚫 Рядовой бухгалтер с обычным набором ролей при попытке входа получит отказ по правам.
Для просмотра кода монопольный режим не нужен. Пользователи могут работать в базе, пока вы читаете модули. Монопольный доступ потребуется, только если вы решите обновить конфигурацию базы данных после правок.
Есть два представления конфигурации. Конфигурация → Открыть конфигурацию показывает основную конфигурацию, которую можно править. Конфигурация → Конфигурация базы данных → Открыть конфигурацию БД показывает то, что реально работает у пользователей, только для чтения. Если кто-то правил модуль, но не обновил базу, код в этих двух окнах будет разным.
Дерево метаданных: где лежит код объектов и форм
Программный код в 1С 8.3 хранится в модулях. Модуль привязан к конкретному месту дерева, и от этого зависит, когда он выполняется.
| Модуль | Где найти | Что там обычно |
|---|---|---|
| Модуль приложения | Правый клик по корню дерева → «Открыть модуль управляемого приложения» | Действия при запуске и закрытии программы |
| Модуль сеанса | Правый клик по корню → «Открыть модуль сеанса» | Установка параметров сеанса |
| Модуль внешнего соединения | Правый клик по корню | Код для подключений через COM |
| Общие модули | Ветка Общие → Общие модули | Процедуры, которые вызываются из разных мест |
| Модуль объекта | Правый клик по документу, справочнику → «Открыть модуль объекта» | Проведение, проверки при записи, заполнение |
| Модуль менеджера | Правый клик → «Открыть модуль менеджера» | Печать, обработка выбора, служебные функции |
| Модуль формы | Объект → ветка «Формы» → форма → вкладка «Модуль» | Реакция на кнопки и изменение полей |
| Модуль команды | Объект → ветка «Команды» → команда | Что происходит при нажатии команды |
Пример: где искать проведение документа
Допустим, нужно понять, как «Поступление (акты, накладные, УПД)» формирует проводки в БП 3.0.
- Раскройте ветку
Документы. - Найдите документ «ПоступлениеТоваровУслуг». В дереве показываются имена объектов, а не синонимы, поэтому ищите по имени без пробелов.
- Правый клик → «Открыть модуль объекта».
- Найдите процедуру
ОбработкаПроведения.
В типовых конфигурациях код проведения часто вынесен в модуль менеджера или общие модули. В модуле объекта вы увидите только вызов. Чтобы пройти дальше, поставьте курсор на имя вызываемой процедуры и нажмите F12.
Чтобы найти объект в длинном дереве, щёлкните по дереву и начните набирать имя: курсор перескочит к совпадению. В свежих версиях платформы над деревом есть строка поиска, она фильтрует ветки по части имени.
Горячие клавиши и поиск по тексту модулей
Читать модуль сверху вниз долго: в типовых конфигурациях модули на тысячи строк. Эти сочетания экономят больше всего времени.
| Клавиши | Действие |
|---|---|
Ctrl+F | Поиск в текущем модуле |
Ctrl+H | Поиск и замена в текущем модуле |
Ctrl+Shift+F | Глобальный поиск по всей конфигурации |
F12 | Перейти к определению процедуры или функции |
Ctrl+G | Перейти к строке по номеру |
Ctrl+Alt+P | Список процедур и функций модуля |
F9 | Поставить или снять точку останова |
F5 | Начать отладку |
Глобальный поиск
Ctrl+Shift+F (меню Правка → Глобальный поиск) ищет строку сразу во всех модулях, а при желании и в формах, макетах и свойствах объектов. Результаты выводятся списком внизу, двойной щелчок открывает модуль на нужной строке.
Практичные приёмы поиска:
- 🔍 Ищите по тексту ошибки, которую видит пользователь. Сообщения в типовых конфигурациях пишутся в коде, и поиск по куску фразы выводит прямо на проверку.
- 🔍 Ищите по заголовку кнопки или поля формы, если хотите понять, какой код за ней стоит.
- 🔍 Ищите по имени процедуры со словом
ПроцедураилиФункциявпереди, чтобы найти её объявление, а не вызовы.
Где используется объект
Правый клик по объекту в дереве → «Поиск ссылок на объект». Конфигуратор покажет все места, где объект упомянут: реквизиты других объектов, роли, подсистемы, формы. Это помогает, когда вы нашли регистр и хотите понять, какие документы его заполняют.
Если нужно искать по коду регулярно или сравнивать версии, выгрузите конфигурацию в файлы: Конфигурация → Выгрузить конфигурацию в файлы. Модули сохранятся как текстовые файлы с расширением .bsl, их можно открыть любым редактором и искать привычными средствами.
Отладчик: как увидеть код в момент выполнения
Статический просмотр не всегда отвечает на вопрос «почему». Отладчик показывает, какая ветка кода реально выполнилась и с какими значениями переменных.
Запуск отладки
- Откройте нужный модуль в Конфигураторе.
- Поставьте курсор на строку и нажмите
F9. Слева появится красная точка. - Нажмите
F5или выберитеОтладка → Начать отладку → Тонкий клиент. - В открывшемся окне пользовательского режима повторите действие, которое вызывает проблему.
- Когда выполнение дойдёт до точки, Конфигуратор выйдет на передний план и подсветит строку.
Что делать в точке останова
- ▶️
F10— выполнить строку и перейти к следующей. - ⤵️
F11— зайти внутрь вызываемой процедуры. - ⤴️
Shift+F11— выйти из текущей процедуры. - 🧮
Shift+F9— окно «Вычислить выражение», где видно значение любой переменной. - 📚 Окно стека вызовов (
Отладка → Стек вызовов) показывает, через какие процедуры пришли к текущей строке.
Ещё один приём: Отладка → Остановка по ошибке. Отладчик остановится на той строке, где возникло исключение, даже если вы не знаете, где ставить точку.
Клиент-серверная база
В файловой базе отладка работает сразу. В клиент-серверной серверный код можно отлаживать, только если кластер запущен с включённой отладкой: в параметрах запуска службы агента сервера должен стоять ключ -debug. Если его нет, точки останова в серверных процедурах просто не срабатывают.
Включение отладки на рабочем сервере требует перезапуска службы 1С, а это обрывает сеансы всех пользователей. Делайте это вне рабочего времени и по согласованию.
Не отлаживайте в рабочей базе действия, которые записывают данные: каждая остановка держит транзакцию и блокировки. Сделайте копию базы и воспроизводите ошибку на ней.
Закрытый код: поставка без исходников и защита
Иногда модуль открывается, а текста нет. У этого три причины, и только одна решается на вашей стороне.
Конфигурация на поддержке
Типовая конфигурация на поддержке поставщика код показывает, но не даёт править. Рядом с объектами в дереве видны значки замка. Читать модули можно без ограничений. Чтобы редактировать, нужно включить возможность изменения в Конфигурация → Поддержка → Настройка поддержки. Это усложнит будущие обновления, поэтому для простого просмотра ничего включать не надо.
Модули без исходного текста
Разработчик тиражного решения может поставить конфигурацию так, что часть модулей не содержит исходного текста. Это настраивается в Конфигурация → Поставка конфигурации → Настройка поставки. В такой базе модуль работает, но вместо кода вы увидите пустое окно или сообщение о недоступности текста.
Коммерческая защита
Отраслевые решения часто защищают системой лицензирования, при которой часть кода хранится в зашифрованном виде и выполняется только при наличии ключа. Посмотреть такой код в Конфигураторе нельзя.
| Ситуация | Что видно | Законный путь |
|---|---|---|
| Конфигурация на поддержке | Весь код, правка заблокирована | Читать без изменений или включить возможность изменения |
| Модули поставлены без исходников | Модуль есть, текста нет | Запросить у поставщика версию с исходниками или доработку |
| Защищённое отраслевое решение | Код недоступен | Обратиться к разработчику решения |
Снятие защиты с чужого кода нарушает лицензионное соглашение и права автора. Если нужна доработка закрытого модуля, договаривайтесь с правообладателем или делайте расширение поверх открытых объектов.
Внешние обработки, отчёты и расширения
Код может лежать не в самой конфигурации. Если в дереве ничего похожего нет, проверьте три места.
Внешняя обработка или отчёт в файле
Файлы .epf (обработка) и .erf (отчёт) открываются прямо в Конфигураторе.
- Выберите
Файл → Открыть. - Укажите файл обработки.
- В отдельном окне откроется её дерево: модуль объекта (правый клик по корню → «Открыть модуль объекта»), формы и макеты.
Открыть конфигурацию базы для этого не обязательно. Внешнюю обработку можно смотреть, даже не имея прав администратора в конкретной базе: достаточно запустить Конфигуратор любой базы, например пустой.
Обработка, подключённая в базу
В типовых конфигурациях дополнительные обработки хранятся внутри базы, в разделе Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Чтобы посмотреть их код:
- Откройте карточку нужной обработки в пользовательском режиме.
- Сохраните её в файл командой выгрузки (она находится в командной панели карточки, в меню «Ещё»).
- Откройте полученный файл в Конфигураторе, как описано выше.
Расширения конфигурации
Расширения (файлы .cfe) меняют поведение типовых объектов, не трогая их код. Если модуль документа выглядит правильно, а работает иначе, проверьте расширения: Конфигурация → Расширения конфигурации. Двойной щелчок по расширению открывает его собственное дерево. Заимствованные объекты там помечены, а их процедуры с аннотациями &Перед, &После или &Вместо выполняются вместе с типовым кодом или вместо него.
Последний пункт часто упускают. Подписка на событие (Общие → Подписки на события) вызывает процедуру общего модуля при записи или проведении объекта. В модуле самого документа об этом ни слова.
Когда код не открывается: ошибки и их причины
Конфигурация → Открыть конфигурацию. Без неё окно всегда пустое.F7). До обновления у пользователей работает старый код.Частые вопросы
Можно ли посмотреть код без Конфигуратора?
.bsl. Для выгрузки всё равно нужен один запуск Конфигуратора. Альтернатива для разработчиков — среда 1С:EDT, где код хранится в виде файлов проекта.Сломаю ли я что-нибудь, если просто открою модуль?
Как сравнить код двух релизов?
Конфигурация → Сравнить конфигурации. Можно сравнить основную конфигурацию с конфигурацией базы данных, поставщика или файлом .cf. В отчёте видны изменённые модули и строки.