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

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

Как вывести переменную в 1С: все рабочие способы

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

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

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

Ниже разобраны все основные способы вывода с примерами кода, условиями применения и типичными ошибками. Примеры приведены для управляемых форм и актуальных версий платформы 1С:Предприятие 8.3, но большинство приёмов работает и в обычных формах.

Вывод через Сообщить(): самый простой способ

Процедура Сообщить() выводит значение в панель сообщений. Она принимает любой примитивный тип — строку, число, дату, булево — и автоматически преобразует его в текст. Это первый инструмент, к которому прибегают при отладке: вставили строку в нужное место кода, выполнили операцию и увидели значение.

КоличествоТоваров = 15;

Сообщить(КоличествоТоваров);

СуммаДокумента = 12500.50;

Сообщить("Сумма документа: " + СуммаДокумента);

ДатаОтгрузки = ТекущаяДатаСеанса();

Сообщить("Отгрузка запланирована на " + Формат(ДатаОтгрузки, "ДЛФ=D"));

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

Если переменная содержит ссылку на объект (документ, элемент справочника), Сообщить() выведет её представление — например, «Реализация товаров 000001 от 12.03.2026». Чтобы увидеть технические данные вроде уникального идентификатора, нужно явно обратиться к свойству: Сообщить(Строка(Ссылка.УникальныйИдентификатор())).

bsl
Статус = Перечисления.СтатусыЗаказов.ВРаботе;
Сообщить("Текущий статус: " + Статус);

СообщениеПользователю: вывод с привязкой к форме

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

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = "Значение переменной: " + СуммаОплаты;

Сообщение.Поле = "СуммаОплаты";

Сообщение.УстановитьДанные(Объект);

Сообщение.Сообщить();

Ключевое отличие от Сообщить(): если вызвать метод Сообщить() объекта внутри обработчика ПередЗаписью и отказаться от записи, сообщение сохранится и будет показано пользователю вместе с текстом ошибки. Обычная процедура Сообщить() в этой ситуации тоже работает, но не даёт привязки к конкретному реквизиту.

Отладчик: вывод переменной без изменения кода

Когда нужно посмотреть значение переменной в момент выполнения, не вставляя служебные строки в код, используется отладчик конфигуратора. Поставьте точку останова на нужной строке (клавиша F9), запустите отладку (F5) и дождитесь остановки. После этого доступны два инструмента просмотра.

Первый — табло переменных (команда «Отладка → Локальные переменные»): показывает все переменные текущей процедуры с их значениями и типами. Второй — окно «Выражение» (Shift+F9): позволяет ввести любое выражение, включая вызовы функций и обращения к свойствам, и увидеть результат. Например, можно вычислить Документ.Товары.Количество() или XMLСтрока(Ссылка) прямо в точке останова.

Как посмотреть переменную в отладчике
  1. 1
    Откройте модуль в конфигураторе и поставьте точку останова на нужной строке (F9)
  2. 2
    Запустите отладку (F5) и выполните действие в пользовательском режиме
  3. 3
    После остановки нажмите Shift+F9 и введите имя переменной или выражение
  4. 4
    Нажмите «Рассчитать» — значение появится в окне результата
  5. 5
    Для просмотра всех локальных переменных откройте табло через меню Отладка

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

Вывод в журнал регистрации

Фоновые задания, регламентные операции и код, выполняемый вне пользовательского сеанса, не имеют окна сообщений. Для вывода переменных в таких сценариях используется журнал регистрации через метод ЗаписьЖурналаРегистрации(). Записи потом просматриваются через «Администрирование → Журнал регистрации» в режиме предприятия.

ЗаписьЖурналаРегистрации(

"ОбменДанными.Загрузка",

УровеньЖурналаРегистрации.Информация,

,

,

"Загружено документов: " + СчетчикДокументов);

Первый параметр — имя события, по которому удобно фильтровать записи. Второй — уровень важности: информация, предупреждение или ошибка. Последний параметр — комментарий, куда и помещается значение переменной. Для ошибок полезно выводить не только переменную, но и описание исключения через ОписаниеОшибки().

Маршрут решения

Какой способ вывода выбрать

Нужно быстро проверить значение при разработкеИспользуйте Сообщить() или отладчик
Сообщение относится к конкретному полю формыИспользуйте СообщениеПользователю с привязкой к полю
Код выполняется в фоновом или регламентном заданииПишите значение в журнал регистрации
Нужно вывести таблицу или печатную формуИспользуйте табличный документ и макет

Вывод переменной в табличный документ и макет

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

ТабДок = Новый ТабличныйДокумент;

Макет = ПолучитьМакет("МакетНакладной");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьШапка.Параметры.НомерДокумента = НомерНакладной;

ОбластьШапка.Параметры.СуммаВсего = ИтоговаяСумма;

ТабДок.Вывести(ОбластьШапка);

ТабДок.Показать();

В макете параметр обозначается квадратными скобками: [НомерДокумента]. Важно, чтобы имя параметра в макете точно совпадало с именем в коде — при опечатке платформа выдаст ошибку «Параметр не найден» или оставит ячейку пустой, в зависимости от контекста.

Особенности вывода на клиенте и на сервере

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

Для индикации длительного процесса вместо сообщений используют ДлительныеОперации или метод Состояние(), который выводит текст в строку состояния. Также учитывайте: в тонком и веб-клиенте недоступны некоторые возможности толстого клиента, поэтому код с выводом стоит тестировать в том клиенте, под которым работают пользователи.

Типичные ошибки при выводе переменных

Самая частая проблема — попытка сложить строку с несовместимым типом. Выражение "Итог: " + Неопределено вызовет ошибку, потому что значение Неопределено не преобразуется в строку автоматически. Перед выводом проверяйте переменную: Если ЗначениеЗаполнено(Переменная) Тогда ....

Вторая распространённая ошибка — вывод сложных объектов без приведения. Сообщить(ТаблицаЗначений) выведет лишь служебное представление объекта, а не её содержимое. Чтобы увидеть данные таблицы, переберите строки в цикле и выведите нужные колонки, либо используйте отладчик, где таблицу можно развернуть визуально.

Типичные ошибки
01
Конкатенация строки с Неопределено — приводит к ошибке выполнения, проверяйте значение перед выводом
02
Вывод таблицы значений или структуры целиком — показывает тип объекта вместо данных, перебирайте элементы в цикле
03
Ожидание мгновенного вывода с сервера — сообщения появляются только после завершения серверного вызова
04
Сообщить() в фоновом задании — текст никто не увидит, используйте журнал регистрации
05
Опечатка в имени параметра макета — пустая ячейка или ошибка при выводе печатной формы

Как проверить, что значение выведено корректно

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

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

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

Вывод в панели сообщений
Норма

Значение соответствует ожидаемому и типу переменной

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

Пустая строка, служебное представление объекта или ошибка выполнения

Запись в журнале регистрации
Норма

Событие найдено по фильтру, комментарий содержит значение

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

Записи нет — проверьте, что код реально выполняется

Параметр в печатной форме
Норма

Ячейка заполнена значением переменной

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

Пустая ячейка или текст [ИмяПараметра] — имя не совпадает с макетом

Если значение выглядит неверно, не спешите менять логику — сначала проверьте тип переменной через ТипЗнч() и отобразите его рядом со значением. Частая ситуация: в переменной ожидается число, а фактически там строка, и сравнения работают не так, как предполагал разработчик.

Итог

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

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

Ответы на частые вопросы

Как вывести переменную типа «Структура» или «Массив»?

Напрямую Сообщить() покажет только тип объекта. Переберите содержимое в цикле: для структуры — «Для Каждого КлючИЗначение Из Структура Цикл», для массива — «Для Каждого Элемент Из Массив Цикл», и выводите каждый элемент отдельно. Альтернатива — просмотр в отладчике через Shift+F9, где структура разворачивается визуально.

Почему Сообщить() в серверной процедуре не показывает текст сразу?

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

Как вывести значение переменной в заголовок формы или поле?

Присвойте значение соответствующему свойству: ЭтаФорма.Заголовок = "Документ № " + НомерДок для заголовка, либо запишите значение в реквизит формы, связанный с полем ввода. Для надписи на форме измените свойство Заголовок элемента: Элементы.НадписьИтог.Заголовок = "Итого: " + СуммаИтог.

Как вывести переменную, если код работает в фоновом задании?

Окно сообщений в фоновом задании недоступно. Используйте ЗаписьЖурналаРегистрации() с информативным именем события и затем просматривайте записи через отбор в журнале регистрации. Для длительных операций в управляемых формах также доступен механизм ДлительныеОперации с передачей прогресса и сообщений на клиент.

Чем отличается Сообщить() от Предупреждение()?

Сообщить() выводит текст в панель сообщений и не прерывает выполнение кода. Предупреждение() показывает модальное окно, которое блокирует работу пользователя до нажатия кнопки. Для отладочного вывода переменных подходит Сообщить(); Предупреждение() применяйте только для критичных уведомлений пользователю, иначе оно будет мешать работе.

Как увидеть значение переменной, не меняя код модуля?

Используйте отладчик конфигуратора: поставьте точку останова (F9), запустите отладку (F5) и в момент остановки нажмите Shift+F9, введите имя переменной и рассчитайте выражение. Также доступно окно локальных переменных, показывающее все значения текущей процедуры автоматически.