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

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

Что такое листинг 1С и как с ним работать

Листинг в 1С — это распечатка или текстовый вывод программного кода конфигурации. Разбираем, как получить листинг модулей, зачем он нужен и как с ним работать.

Листинг в контексте 1С — это текстовое представление программного кода конфигурации, выведенное в удобном для чтения виде: на экране, в файле или на бумаге. Термин пришёл из классического программирования, где листингом называли распечатку исходного кода программы с нумерацией строк. В 1С листинг чаще всего означает выгрузку текста модулей — общих модулей, модулей объектов, форм, обработок — для анализа, документирования, аудита или передачи другому специалисту.

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

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

Что именно входит в листинг конфигурации 1С

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

Хорошо оформленный листинг содержит не только сам код, но и служебную информацию: имя модуля, его тип, нумерацию строк, а иногда — сведения о версии конфигурации и дате выгрузки. Нумерация строк критически важна: когда пользователь присылает ошибку вида «{ОбщийМодуль.Расчеты.Модуль(245)}: Ошибка при вызове метода», именно номер строки позволяет быстро найти проблемное место в листинге.

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

Как получить листинг модуля через конфигуратор

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

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

Порядок действий
  1. 1
    Откройте конфигуратор и дерево конфигурации
  2. 2
    Для одного модуля: откройте модуль и скопируйте текст или используйте Файл — Печать
  3. 3
    Для всех модулей: Конфигурация — Выгрузить конфигурацию в файлы, укажите каталог
  4. 4
    Найдите файлы с расширением .bsl в структуре каталогов — это листинги модулей
  5. 5
    Проверьте, что файлы открываются в кодировке UTF-8 и кириллица читается корректно

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

Листинг для документирования и аудита

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

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

Как читать листинг и находить в нём нужное

Чтение листинга начинается с идентификации модуля: его имя и тип указывают на контекст исполнения. Код в общем модуле с признаком «Сервер» выполняется на сервере, модуль объекта — при записи и проведении объекта, модуль формы — на клиенте и сервере в зависимости от директив компиляции. Директивы &НаКлиенте, &НаСервере, &НаСервереБезКонтекста в самом листинге показывают, где исполняется каждая процедура.

Для поиска по большому листингу используют полнотекстовый поиск по именам процедур, переменных и характерным фрагментам сообщений об ошибках. Если известен номер строки из сообщения об ошибке, в файле .bsl достаточно перейти к этой строке — нумерация в выгрузке совпадает с нумерацией в конфигураторе.

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

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

Кодировка файла листинга
Норма

Кириллица в комментариях и строковых литералах читается корректно

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

Вместо русского текста — нечитаемые символы: файл открыт не в UTF-8

Соответствие строки ошибки коду
Норма

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

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

Номер строки указывает в пустое место — листинг снят с другой версии конфигурации

Полнота выгрузки
Норма

В каталоге присутствуют модули всех нужных объектов

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

Часть модулей отсутствует — выгрузка прервана или нет прав на часть объектов

Типичные ошибки и ограничения при работе с листингом

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

Вторая частая проблема — работа с устаревшим листингом. Код в продуктивной базе меняется обновлениями и доработками, поэтому перед анализом ошибки всегда сверяйте версию конфигурации, с которой снят листинг, с версией в базе. Расхождение даже в один релиз делает нумерацию строк недостоверной.

Типичные ошибки
01
Правка .bsl-файла в блокноте и ожидание эффекта в базе — изменения не применяются без загрузки через конфигуратор
02
Анализ листинга старой версии — номера строк из ошибок не совпадают, выводы неверны
03
Путаница между модулем объекта и модулем формы — код переносится не в тот контекст и не компилируется
04
Игнорирование директив компиляции — процедура вызывается не на той стороне (клиент/сервер)
05
Передача листинга без указания версии конфигурации — получатель не может воспроизвести контекст

Альтернативы классическому листингу

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

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

Листинг (распечатка / файл .bsl)

Подходит для чтения без конфигуратора, аудита и передачи кода; не позволяет отлаживать и не показывает данные

Отладчик конфигуратора

Показывает реальное выполнение и значения переменных; требует доступа к базе и прав на отладку

Сравнение конфигураций

Лучший выбор для анализа различий версий; не заменяет чтение полного кода

Выгрузка в файлы + Git

Даёт историю изменений и поиск; требует дисциплины выгрузки и навыков работы с репозиторием

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

Итог

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

Листинг 1С — это текстовая выгрузка кода модулей конфигурации для чтения, анализа и документирования. Получают его через конфигуратор или выгрузку в файлы .bsl. Всегда фиксируйте версию конфигурации, проверяйте кодировку и не правьте продуктивный код через текстовый редактор — только через конфигуратор с резервной копией.

Часто задаваемые вопросы

Чем листинг отличается от выгрузки базы 1С?

Выгрузка базы (файл .dt) содержит данные и конфигурацию целиком и предназначена для восстановления или переноса. Листинг — это только текст программного кода в читаемом виде, без данных. Из листинга базу восстановить нельзя, а из .dt листинг ещё нужно извлечь через конфигуратор.

Как найти ошибку в листинге по номеру строки из сообщения об ошибке?

В сообщении об ошибке указан модуль и строка в скобках, например «Модуль(245)». Откройте соответствующий модуль в конфигураторе или файл .bsl и перейдите к строке с этим номером. Убедитесь, что листинг снят с той же версии конфигурации, где произошла ошибка, иначе нумерация не совпадёт.

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

Да, если у вас есть выгрузка конфигурации в файлы (.bsl) или внешняя обработка в виде файла — их код читается в любом редакторе с поддержкой UTF-8. Без выгрузки и без конфигуратора получить код нельзя: в файле базы и в .dt он хранится не в открытом текстовом виде.

Почему в распечатанном листинге нечитаемые символы вместо русского текста?

Причина — несовпадение кодировки. Файлы модулей 1С сохраняются в UTF-8; если редактор или принтер открывает файл в другой кодировке, кириллица искажается. Откройте файл в редакторе с явным выбором UTF-8 и повторите печать.

Безопасно ли передавать листинг стороннему специалисту?

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

Что делать, если нужно сравнить код двух версий конфигурации?

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