Разработка и Конфигурация · 12 мин
Как вывести переменную в 1С: все рабочие способы
Как вывести значение переменной в 1С: Сообщить, СообщениеПользователю, отладчик, журнал регистрации и вывод в макет. Примеры кода и типичные ошибки.
Вывод значения переменной — базовая задача при разработке и отладке в 1С. Встроенный язык платформы предлагает несколько инструментов: процедура Сообщить(), объект СообщениеПользователю, окно «Выражение» в отладчике, журнал регистрации и вывод в табличный документ. Каждый способ решает свою задачу: быстро проверить значение в процессе разработки, показать информацию пользователю или зафиксировать данные для последующего анализа.
Выбор инструмента зависит от контекста выполнения кода. Код на клиенте, на сервере и в фоновом задании ведёт себя по-разному: сообщение, выведенное на сервере, попадёт к пользователю только после завершения серверного вызова, а из фонового задания его вообще не увидеть в окне сообщений. Понимание этих ограничений избавляет от ситуации, когда «код отработал, а переменная нигде не появилась».
Ниже разобраны все основные способы вывода с примерами кода, условиями применения и типичными ошибками. Примеры приведены для управляемых форм и актуальных версий платформы 1С:Предприятие 8.3, но большинство приёмов работает и в обычных формах.
Вывод через Сообщить(): самый простой способ
Процедура Сообщить() выводит значение в панель сообщений. Она принимает любой примитивный тип — строку, число, дату, булево — и автоматически преобразует его в текст. Это первый инструмент, к которому прибегают при отладке: вставили строку в нужное место кода, выполнили операцию и увидели значение.
КоличествоТоваров = 15;
Сообщить(КоличествоТоваров);
СуммаДокумента = 12500.50;
Сообщить("Сумма документа: " + СуммаДокумента);
ДатаОтгрузки = ТекущаяДатаСеанса();
Сообщить("Отгрузка запланирована на " + Формат(ДатаОтгрузки, "ДЛФ=D"));
Обратите внимание на конкатенацию: оператор «+» автоматически приводит число или дату к строке, но формат может быть неудобным. Для контроля представления используйте функцию Формат() — она позволяет задать вид даты, количество знаков после запятой и другие параметры отображения.
Если переменная содержит ссылку на объект (документ, элемент справочника), Сообщить() выведет её представление — например, «Реализация товаров 000001 от 12.03.2026». Чтобы увидеть технические данные вроде уникального идентификатора, нужно явно обратиться к свойству: Сообщить(Строка(Ссылка.УникальныйИдентификатор())).
Статус = Перечисления.СтатусыЗаказов.ВРаботе;
Сообщить("Текущий статус: " + Статус);СообщениеПользователю: вывод с привязкой к форме
Объект СообщениеПользователю — более функциональная альтернатива Сообщить(). Он позволяет указать поле формы, к которому относится сообщение (платформа подсветит его красным), задать текст отдельно для служебных целей и управлять отображением программно. Именно этот способ рекомендуется для вывода ошибок проверки заполнения и информирования пользователя.
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Значение переменной: " + СуммаОплаты;
Сообщение.Поле = "СуммаОплаты";
Сообщение.УстановитьДанные(Объект);
Сообщение.Сообщить();
Ключевое отличие от Сообщить(): если вызвать метод Сообщить() объекта внутри обработчика ПередЗаписью и отказаться от записи, сообщение сохранится и будет показано пользователю вместе с текстом ошибки. Обычная процедура Сообщить() в этой ситуации тоже работает, но не даёт привязки к конкретному реквизиту.
Отладчик: вывод переменной без изменения кода
Когда нужно посмотреть значение переменной в момент выполнения, не вставляя служебные строки в код, используется отладчик конфигуратора. Поставьте точку останова на нужной строке (клавиша F9), запустите отладку (F5) и дождитесь остановки. После этого доступны два инструмента просмотра.
Первый — табло переменных (команда «Отладка → Локальные переменные»): показывает все переменные текущей процедуры с их значениями и типами. Второй — окно «Выражение» (Shift+F9): позволяет ввести любое выражение, включая вызовы функций и обращения к свойствам, и увидеть результат. Например, можно вычислить Документ.Товары.Количество() или XMLСтрока(Ссылка) прямо в точке останова.
- 1Откройте модуль в конфигураторе и поставьте точку останова на нужной строке (F9)
- 2Запустите отладку (F5) и выполните действие в пользовательском режиме
- 3После остановки нажмите Shift+F9 и введите имя переменной или выражение
- 4Нажмите «Рассчитать» — значение появится в окне результата
- 5Для просмотра всех локальных переменных откройте табло через меню Отладка
Преимущество отладчика — полная информация: можно развернуть структуру, таблицу значений или объект и посмотреть каждый элемент. Недостаток — необходимость запуска конфигуратора и наличия прав на отладку, что не всегда возможно на рабочем сервере.
Вывод в журнал регистрации
Фоновые задания, регламентные операции и код, выполняемый вне пользовательского сеанса, не имеют окна сообщений. Для вывода переменных в таких сценариях используется журнал регистрации через метод ЗаписьЖурналаРегистрации(). Записи потом просматриваются через «Администрирование → Журнал регистрации» в режиме предприятия.
ЗаписьЖурналаРегистрации(
"ОбменДанными.Загрузка",
УровеньЖурналаРегистрации.Информация,
,
,
"Загружено документов: " + СчетчикДокументов);
Первый параметр — имя события, по которому удобно фильтровать записи. Второй — уровень важности: информация, предупреждение или ошибка. Последний параметр — комментарий, куда и помещается значение переменной. Для ошибок полезно выводить не только переменную, но и описание исключения через ОписаниеОшибки().
Какой способ вывода выбрать
Вывод переменной в табличный документ и макет
Когда значение переменной должно попасть в печатную форму или отчёт, используется табличный документ. В макете создаётся область с параметром, а в коде параметру присваивается значение переменной. Это стандартный механизм формирования печатных форм во всех типовых конфигурациях.
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("МакетНакладной");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = НомерНакладной;
ОбластьШапка.Параметры.СуммаВсего = ИтоговаяСумма;
ТабДок.Вывести(ОбластьШапка);
ТабДок.Показать();
В макете параметр обозначается квадратными скобками: [НомерДокумента]. Важно, чтобы имя параметра в макете точно совпадало с именем в коде — при опечатке платформа выдаст ошибку «Параметр не найден» или оставит ячейку пустой, в зависимости от контекста.
Особенности вывода на клиенте и на сервере
В управляемых формах код разделён на клиентский и серверный. Вызов Сообщить() в серверной процедуре не покажет сообщение мгновенно — оно будет передано на клиент и отобразится только после завершения серверного вызова. Если в процедуре десять сообщений, пользователь увидит их все разом в конце, а не по мере выполнения.
Для индикации длительного процесса вместо сообщений используют ДлительныеОперации или метод Состояние(), который выводит текст в строку состояния. Также учитывайте: в тонком и веб-клиенте недоступны некоторые возможности толстого клиента, поэтому код с выводом стоит тестировать в том клиенте, под которым работают пользователи.
Типичные ошибки при выводе переменных
Самая частая проблема — попытка сложить строку с несовместимым типом. Выражение "Итог: " + Неопределено вызовет ошибку, потому что значение Неопределено не преобразуется в строку автоматически. Перед выводом проверяйте переменную: Если ЗначениеЗаполнено(Переменная) Тогда ....
Вторая распространённая ошибка — вывод сложных объектов без приведения. Сообщить(ТаблицаЗначений) выведет лишь служебное представление объекта, а не её содержимое. Чтобы увидеть данные таблицы, переберите строки в цикле и выведите нужные колонки, либо используйте отладчик, где таблицу можно развернуть визуально.
Как проверить, что значение выведено корректно
После настройки вывода убедитесь, что значение действительно соответствует ожиданиям. Сравните выведенное значение с данными в базе: откройте объект, отчёт или консоль запросов и сверьте цифры. Если переменная вычисляется в нескольких местах, выведите её на входе и на выходе каждого этапа — так проще локализовать, где значение искажается.
Как проверить результат
Значение соответствует ожидаемому и типу переменной
Пустая строка, служебное представление объекта или ошибка выполнения
Событие найдено по фильтру, комментарий содержит значение
Записи нет — проверьте, что код реально выполняется
Ячейка заполнена значением переменной
Пустая ячейка или текст [ИмяПараметра] — имя не совпадает с макетом
Если значение выглядит неверно, не спешите менять логику — сначала проверьте тип переменной через ТипЗнч() и отобразите его рядом со значением. Частая ситуация: в переменной ожидается число, а фактически там строка, и сравнения работают не так, как предполагал разработчик.
Что важно запомнить
Для быстрого вывода используйте Сообщить(), для привязки к полям формы — СообщениеПользователю, для анализа без изменения кода — отладчик, для фоновых процессов — журнал регистрации, для печатных форм — параметры табличного документа. Перед выводом проверяйте тип и заполненность переменной, а отладочные сообщения удаляйте из рабочего кода.
Ответы на частые вопросы
Как вывести переменную типа «Структура» или «Массив»?
Напрямую Сообщить() покажет только тип объекта. Переберите содержимое в цикле: для структуры — «Для Каждого КлючИЗначение Из Структура Цикл», для массива — «Для Каждого Элемент Из Массив Цикл», и выводите каждый элемент отдельно. Альтернатива — просмотр в отладчике через Shift+F9, где структура разворачивается визуально.
Почему Сообщить() в серверной процедуре не показывает текст сразу?
В управляемых формах серверный код выполняется отдельно от клиента. Все сообщения накапливаются на сервере и передаются пользователю пакетом после завершения серверного вызова. Это штатное поведение платформы, а не ошибка в коде.
Как вывести значение переменной в заголовок формы или поле?
Присвойте значение соответствующему свойству: ЭтаФорма.Заголовок = "Документ № " + НомерДок для заголовка, либо запишите значение в реквизит формы, связанный с полем ввода. Для надписи на форме измените свойство Заголовок элемента: Элементы.НадписьИтог.Заголовок = "Итого: " + СуммаИтог.
Как вывести переменную, если код работает в фоновом задании?
Окно сообщений в фоновом задании недоступно. Используйте ЗаписьЖурналаРегистрации() с информативным именем события и затем просматривайте записи через отбор в журнале регистрации. Для длительных операций в управляемых формах также доступен механизм ДлительныеОперации с передачей прогресса и сообщений на клиент.
Чем отличается Сообщить() от Предупреждение()?
Сообщить() выводит текст в панель сообщений и не прерывает выполнение кода. Предупреждение() показывает модальное окно, которое блокирует работу пользователя до нажатия кнопки. Для отладочного вывода переменных подходит Сообщить(); Предупреждение() применяйте только для критичных уведомлений пользователю, иначе оно будет мешать работе.
Как увидеть значение переменной, не меняя код модуля?
Используйте отладчик конфигуратора: поставьте точку останова (F9), запустите отладку (F5) и в момент остановки нажмите Shift+F9, введите имя переменной и рассчитайте выражение. Также доступно окно локальных переменных, показывающее все значения текущей процедуры автоматически.