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

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

Как вывести результат в строку в 1С

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

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

В 1С для этого есть несколько инструментов: процедура Сообщить(), вывод через Предупреждение() и ПоказатьОповещениеПользователя(), функции преобразования Строка(), Формат(), а также шаблоны СтрШаблон(). Выбор зависит от того, куда должен попасть результат: в служебное окно, в интерфейс формы, в файл или в лог.

Ниже разобраны рабочие способы с примерами кода, типичные ошибки и критерии выбора подходящего варианта. Все примеры применимы как к управляемым, так и к обычным формам, с оговорками там, где поведение различается.

Что значит «вывести результат в строку» в 1С

Формулировка «вывести результат в строку» встречается в трёх разных контекстах, и путать их — частая причина ошибок у начинающих разработчиков.

Первый контекст — вывод строки пользователю. Это панель сообщений внизу окна, модальное предупреждение или всплывающее оповещение. Второй контекст — приведение значения к строковому типу: например, число 1500 нужно превратить в текст «1500», чтобы объединить его с другой строкой. Третий контекст — вывод результата в строковое поле: реквизит формы, ячейку табличного документа, текстовый файл.

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

Вывод строки пользователю через Сообщить()

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

Результат = 2 + 2;

Сообщить("Результат вычисления: " + Результат);

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

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

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

Сообщение.Текст = "Результат: " + Строка(Результат);

Сообщение.Поле = "СуммаДокумента";

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

Преобразование значения в строку: Строка() и Формат()

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

КонтрагентСтрокой = Строка(СсылкаНаКонтрагента); // "ООО Ромашка"

ЧислоСтрокой = Строка(1500.5); // "1 500,5"

Если нужен точный контроль над форматом — количество знаков после запятой, отключение разделителей групп, формат даты — используйте Формат(). Вторым параметром передаётся форматная строка.

Формат(1500.5, "ЧГ=0");        // "1500,5" без разделителя групп

Формат(ТекущаяДата(), "ДЛФ=D"); // только дата, например "12.05.2026"

Формат(0.125, "ЧДЦ=3"); // "0,125" с тремя знаками

Отдельный случай — преобразование числа в строку для передачи во внешние системы (XML, JSON, веб-сервисы). Там разделители групп и региональная запятая недопустимы. Используйте Формат(Число, "ЧРД=.; ЧГ=0") или функции работы с XML, которые сериализуют значения корректно.

Сравнение вариантов преобразования

Строка()

Универсально и коротко, но формат не контролируется. Подходит для сообщений и логов.

Формат()

Полный контроль над форматом чисел и дат. Требует знания форматных строк.

Конкатенация «+»

Неявное преобразование при сложении со строкой. Быстро, но формат — как у Строка().

XMLСтрока()

Каноническое представление для обмена данными. Не читаемо для пользователя.

Сборка строки из нескольких значений: СтрШаблон()

Когда результат нужно собрать из нескольких значений, цепочка конкатенаций становится нечитаемой: "Заказ № " + Номер + " от " + Дата + " на сумму " + Сумма. Функция СтрШаблон() решает это через шаблон с подстановками %1, %2 и так далее.

Текст = СтрШаблон("Заказ № %1 от %2 на сумму %3 руб.",

НомерЗаказа,

Формат(ДатаЗаказа, "ДЛФ=D"),

Формат(Сумма, "ЧДЦ=2"));

Сообщить(Текст);

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

Для многострочного результата используйте Символы.ПС (перевод строки) или литерал с вертикальной чертой | в начале каждой строки — такой литерал позволяет писать многострочный текст прямо в коде.

Результат = "Строка 1" + Символы.ПС + "Строка 2";
Порядок действий для вывода результата
  1. 1
    Определите, куда выводится результат: панель сообщений, форма, файл или лог
  2. 2
    Преобразуйте значение в строку через Строка() или Формат() с нужным форматом
  3. 3
    Соберите итоговый текст через СтрШаблон(), если значений несколько
  4. 4
    Выведите строку: Сообщить() для служебного вывода, реквизит формы — для интерфейса
  5. 5
    Проверьте результат в панели сообщений или в поле формы

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

Если результат должен отображаться в интерфейсе, а не в панели сообщений, строка присваивается реквизиту формы. Для этого на форме создаётся реквизит с типом «Строка», на форму добавляется элемент «Поле надписи» или «Поле ввода», связанный с этим реквизитом, а в коде выполняется присваивание.

&НаКлиенте

Процедура Рассчитать(Команда)

РезультатСтрокой = СтрШаблон("Итог: %1", Формат(СуммаИтог, "ЧДЦ=2"));

КонецПроцедуры

Для вывода в табличный документ (печатную форму, отчёт) строка помещается в параметр области макета:

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

Область.Параметры.Результат = Строка(ИтоговоеЗначение);

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

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

Вывод результата в файл и внешние системы

Для записи строки в текстовый файл используется объект ТекстовыйДокумент или потоки. Строка результата добавляется методом ДобавитьСтроку() или ЗаписатьСтроку(), после чего документ сохраняется.

Текст = Новый ТекстовыйДокумент;

Текст.ДобавитьСтроку("Результат: " + Формат(Итог, "ЧГ=0"));

Текст.Записать("C:\Temp\result.txt", КодировкаТекста.UTF8);

При обмене с веб-сервисами и API строка обычно формируется через ЗаписьJSON или ЗаписьXML — эти механизмы сами сериализуют значения в корректное строковое представление, и вручную вызывать Строка() не нужно. Ручное преобразование здесь как раз вредно: Строка(Истина) даст «Да» в русском интерфейсе, тогда как JSON ожидает true.

Типичные ошибки
01
Конкатенация строки с нестроковым значением без учёта формата — дата и число выводятся в региональном формате, что ломает обмен данными
02
Использование Сообщить() в фоновом задании — пользователь ничего не увидит, нужна ЗаписьЖурналаРегистрации
03
Попытка сложить строку с NULL или Неопределено — возникает ошибка преобразования, сначала проверяйте значение
04
Забытый ЧГ=0 в Формат() — в строку попадают неразрывные пробелы-разделители групп, которые ломают дальнейший парсинг
05
Ожидание, что Строка(Ссылка) вернёт уникальный идентификатор — она возвращает представление, для GUID используйте Строка(Ссылка.УникальныйИдентификатор())

Проверка результата и отладка

После вывода строки результат стоит проверить. Для панели сообщений — визуально: текст появляется внизу окна сразу после выполнения кода. Если сообщения нет, проверьте, не выполняется ли код на сервере без возврата сообщений на клиента, и не свёрнута ли панель сообщений.

Для программной проверки содержимого строки удобны функции СтрДлина(), СтрНайти() и сравнение с эталоном. В отладчике 1С текущее значение строковой переменной видно в табло (Ctrl+Alt+W) — там же видно, не попали ли в строку лишние пробелы или разделители групп.

Полезный приём при отладке — обернуть значение в квадратные скобки: Сообщить("[" + Результат + "]"). Так сразу видно ведущие и хвостовые пробелы, которые иначе незаметны.

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

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

Текст в панели сообщений
Норма

Строка выведена полностью, даты и числа в ожидаемом формате

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

Сообщения нет или число содержит пробелы-разделители

Строка для файла или обмена
Норма

Нет разделителей групп, десятичный разделитель соответствует формату приёмника

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

Неразрывные пробелы, запятая вместо точки в числе

Поле на форме
Норма

Значение обновилось сразу после выполнения кода

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

Поле пустое — реквизит не связан с элементом формы

Частые вопросы

Как вывести число в строку без пробелов между разрядами?

Используйте Формат(Число, "ЧГ=0") — параметр ЧГ=0 отключает группировку разрядов. По умолчанию платформа вставляет неразрывные пробелы между тысячами, что мешает при передаче числа в файлы и внешние системы.

Почему Сообщить() не показывает текст пользователю?

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

Как вывести ссылку на документ в строку?

Строка(Ссылка) вернёт представление вида «Реализация товаров 000001 от 12.05.2026». Если нужен уникальный идентификатор (GUID), используйте Строка(Ссылка.УникальныйИдентификатор()).

Чем СтрШаблон() лучше обычной конкатенации?

Шаблон читается как готовая фраза, а значения подставляются по номерам %1, %2 и т.д. При изменении текста не нужно перестраивать цепочку плюсов, и меньше риск потерять пробел между частями строки.

Как вывести результат в несколько строк?

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

Как вывести булево значение как «Да» или «Нет»?

Используйте Формат(Значение, "БЛ=Нет; БИ=Да") — это даёт явный контроль над представлением. Простое Строка(Истина) зависит от языка сеанса и может вернуть «Да», «True» или другое локализованное значение.

Итог

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

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