Разработка и Конфигурация · 10 мин
Что такое листинг 1С и как с ним работать
Листинг в 1С — это распечатка или текстовый вывод программного кода конфигурации. Разбираем, как получить листинг модулей, зачем он нужен и как с ним работать.
Листинг в контексте 1С — это текстовое представление программного кода конфигурации, выведенное в удобном для чтения виде: на экране, в файле или на бумаге. Термин пришёл из классического программирования, где листингом называли распечатку исходного кода программы с нумерацией строк. В 1С листинг чаще всего означает выгрузку текста модулей — общих модулей, модулей объектов, форм, обработок — для анализа, документирования, аудита или передачи другому специалисту.
Потребность в листинге возникает в нескольких типовых ситуациях: при передаче доработок на проверку, при разборе чужой конфигурации без доступа к конфигуратору, при подготовке технической документации, при поиске места ошибки по номеру строки из сообщения об ошибке. Понимание того, как получить и прочитать листинг, экономит время и снижает риск «слепых» правок в продуктивной базе.
Важно отличать листинг кода от похожих понятий: это не журнал регистрации, не отчёт об ошибках и не выгрузка базы. Листинг — это именно текст программы на встроенном языке 1С, причём в формате, который можно читать без запуска конфигуратора.
Что именно входит в листинг конфигурации 1С
Конфигурация 1С состоит из метаданных (структура справочников, документов, регистров) и программного кода. В листинг попадает именно код: тексты общих модулей, модулей объектов и форм, модулей менеджеров, модулей сеанса и приложения, а также код внешних обработок и отчётов. Сами метаданные в листинг в классическом смысле не входят — они описываются отдельно, например через «Описание конфигурации» в конфигураторе.
Хорошо оформленный листинг содержит не только сам код, но и служебную информацию: имя модуля, его тип, нумерацию строк, а иногда — сведения о версии конфигурации и дате выгрузки. Нумерация строк критически важна: когда пользователь присылает ошибку вида «{ОбщийМодуль.Расчеты.Модуль(245)}: Ошибка при вызове метода», именно номер строки позволяет быстро найти проблемное место в листинге.
Отдельно стоит понимать, что код форм в 1С хранится вместе с описанием самой формы (элементов, реквизитов), поэтому при выгрузке модуль формы извлекается из состава формы. Внешние инструменты и штатная выгрузка в файлы делают это автоматически, но при ручном копировании легко перепутать модуль формы с модулем объекта — у них разный контекст исполнения и разные доступные свойства.
Как получить листинг модуля через конфигуратор
Самый простой способ — открыть нужный модуль в конфигураторе и вывести его текст. Для этого достаточно двойного щелчка по объекту в дереве конфигурации и перехода на вкладку с модулем. Дальше текст можно скопировать в текстовый файл или распечатать через меню «Файл — Печать». Печать из конфигуратора сохраняет нумерацию строк и подсветку структуры, если принтер и настройки это позволяют.
Для массового получения листинга ручное открытие каждого модуля непрактично. В этом случае используют выгрузку конфигурации в файлы: «Конфигурация — Выгрузить конфигурацию в файлы». В результате вся конфигурация раскладывается в каталог с XML-описаниями метаданных и отдельными файлами модулей с расширением bsl — это и есть готовый машиночитаемый листинг всей кодовой базы.
- 1Откройте конфигуратор и дерево конфигурации
- 2Для одного модуля: откройте модуль и скопируйте текст или используйте Файл — Печать
- 3Для всех модулей: Конфигурация — Выгрузить конфигурацию в файлы, укажите каталог
- 4Найдите файлы с расширением .bsl в структуре каталогов — это листинги модулей
- 5Проверьте, что файлы открываются в кодировке UTF-8 и кириллица читается корректно
При выгрузке в файлы обратите внимание на формат: современные версии платформы поддерживают как иерархический формат выгрузки, так и формат, ориентированный на системы контроля версий. Для целей «просто почитать код» подходит любой, но структура каталогов будет отличаться.
Листинг для документирования и аудита
При передаче проекта, проведении аудита доработок или разборе спорной ситуации с подрядчиком листинг служит объективным снимком состояния кода. Зафиксированный листинг с датой и версией конфигурации позволяет доказать, какой именно код работал в конкретный момент, и сравнить «было — стало» после обновления.
Для аудита удобнее всего выгрузка в файлы .bsl: такие файлы можно сравнивать стандартными инструментами сравнения текста, искать по ним полнотекстовым поиском, загружать в системы контроля версий. Распечатка на бумаге оправдана только для небольших фрагментов — например, конкретной процедуры, которую разбирают на совещании.
Как читать листинг и находить в нём нужное
Чтение листинга начинается с идентификации модуля: его имя и тип указывают на контекст исполнения. Код в общем модуле с признаком «Сервер» выполняется на сервере, модуль объекта — при записи и проведении объекта, модуль формы — на клиенте и сервере в зависимости от директив компиляции. Директивы &НаКлиенте, &НаСервере, &НаСервереБезКонтекста в самом листинге показывают, где исполняется каждая процедура.
Для поиска по большому листингу используют полнотекстовый поиск по именам процедур, переменных и характерным фрагментам сообщений об ошибках. Если известен номер строки из сообщения об ошибке, в файле .bsl достаточно перейти к этой строке — нумерация в выгрузке совпадает с нумерацией в конфигураторе.
Как проверить результат
Кириллица в комментариях и строковых литералах читается корректно
Вместо русского текста — нечитаемые символы: файл открыт не в UTF-8
Строка из сообщения об ошибке указывает на осмысленный оператор в листинге
Номер строки указывает в пустое место — листинг снят с другой версии конфигурации
В каталоге присутствуют модули всех нужных объектов
Часть модулей отсутствует — выгрузка прервана или нет прав на часть объектов
Типичные ошибки и ограничения при работе с листингом
Главная ошибка — правка листинга в текстовом редакторе с ожиданием, что изменения попадут в базу. Файл .bsl — это копия: чтобы изменения заработали, код нужно перенести обратно через конфигуратор или загрузку из файлов, с последующим обновлением конфигурации базы данных. Прямая подмена файлов выгрузки без понимания структуры приводит к рассинхронизации.
Вторая частая проблема — работа с устаревшим листингом. Код в продуктивной базе меняется обновлениями и доработками, поэтому перед анализом ошибки всегда сверяйте версию конфигурации, с которой снят листинг, с версией в базе. Расхождение даже в один релиз делает нумерацию строк недостоверной.
Альтернативы классическому листингу
Для части задач листинг — не самый эффективный инструмент. Сравнение версий удобнее выполнять штатным механизмом «Сравнение и объединение конфигураций», который показывает различия по объектам и модулям. Поиск места ошибки быстрее вести через отладчик с точкой останова, а не через чтение распечатки. Для документирования архитектуры информативнее описание метаданных и схемы подсистем, чем сплошной код.
Сравнение вариантов
Подходит для чтения без конфигуратора, аудита и передачи кода; не позволяет отлаживать и не показывает данные
Показывает реальное выполнение и значения переменных; требует доступа к базе и прав на отладку
Лучший выбор для анализа различий версий; не заменяет чтение полного кода
Даёт историю изменений и поиск; требует дисциплины выгрузки и навыков работы с репозиторием
Оптимальный подход — комбинировать: листинг как фиксированный снимок для документирования и передачи, отладчик для диагностики, сравнение конфигураций для контроля изменений.
Что важно запомнить
Листинг 1С — это текстовая выгрузка кода модулей конфигурации для чтения, анализа и документирования. Получают его через конфигуратор или выгрузку в файлы .bsl. Всегда фиксируйте версию конфигурации, проверяйте кодировку и не правьте продуктивный код через текстовый редактор — только через конфигуратор с резервной копией.
Часто задаваемые вопросы
Чем листинг отличается от выгрузки базы 1С?
Выгрузка базы (файл .dt) содержит данные и конфигурацию целиком и предназначена для восстановления или переноса. Листинг — это только текст программного кода в читаемом виде, без данных. Из листинга базу восстановить нельзя, а из .dt листинг ещё нужно извлечь через конфигуратор.
Как найти ошибку в листинге по номеру строки из сообщения об ошибке?
В сообщении об ошибке указан модуль и строка в скобках, например «Модуль(245)». Откройте соответствующий модуль в конфигураторе или файл .bsl и перейдите к строке с этим номером. Убедитесь, что листинг снят с той же версии конфигурации, где произошла ошибка, иначе нумерация не совпадёт.
Можно ли получить листинг без доступа к конфигуратору?
Да, если у вас есть выгрузка конфигурации в файлы (.bsl) или внешняя обработка в виде файла — их код читается в любом редакторе с поддержкой UTF-8. Без выгрузки и без конфигуратора получить код нельзя: в файле базы и в .dt он хранится не в открытом текстовом виде.
Почему в распечатанном листинге нечитаемые символы вместо русского текста?
Причина — несовпадение кодировки. Файлы модулей 1С сохраняются в UTF-8; если редактор или принтер открывает файл в другой кодировке, кириллица искажается. Откройте файл в редакторе с явным выбором UTF-8 и повторите печать.
Безопасно ли передавать листинг стороннему специалисту?
Листинг раскрывает логику работы конфигурации, включая алгоритмы расчётов и возможные встроенные пароли или ключи, если они жёстко прописаны в коде. Перед передачей проверьте код на наличие секретов и учтите, что доработки могут быть объектом авторских прав или коммерческой тайны.
Что делать, если нужно сравнить код двух версий конфигурации?
Для сравнения удобнее штатный механизм «Конфигурация — Сравнить и объединить с конфигурацией из файла» либо сравнение выгруженных файлов .bsl инструментом сравнения текста. Ручное сличение двух распечатанных листингов допустимо только для очень маленьких фрагментов.