Разработка и Конфигурация · 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, которые сериализуют значения корректно.
Сравнение вариантов преобразования
Универсально и коротко, но формат не контролируется. Подходит для сообщений и логов.
Полный контроль над форматом чисел и дат. Требует знания форматных строк.
Неявное преобразование при сложении со строкой. Быстро, но формат — как у Строка().
Каноническое представление для обмена данными. Не читаемо для пользователя.
Сборка строки из нескольких значений: СтрШаблон()
Когда результат нужно собрать из нескольких значений, цепочка конкатенаций становится нечитаемой: "Заказ № " + Номер + " от " + Дата + " на сумму " + Сумма. Функция СтрШаблон() решает это через шаблон с подстановками %1, %2 и так далее.
Текст = СтрШаблон("Заказ № %1 от %2 на сумму %3 руб.",
НомерЗаказа,
Формат(ДатаЗаказа, "ДЛФ=D"),
Формат(Сумма, "ЧДЦ=2"));
Сообщить(Текст);
Каждый параметр подставляется на место соответствующего номера. При этом преобразование в строку выполняется неявно, поэтому для дат и чисел формат лучше задавать явно через Формат() прямо в аргументах — иначе получите представление по умолчанию.
Для многострочного результата используйте Символы.ПС (перевод строки) или литерал с вертикальной чертой | в начале каждой строки — такой литерал позволяет писать многострочный текст прямо в коде.
Результат = "Строка 1" + Символы.ПС + "Строка 2";
- 1Определите, куда выводится результат: панель сообщений, форма, файл или лог
- 2Преобразуйте значение в строку через Строка() или Формат() с нужным форматом
- 3Соберите итоговый текст через СтрШаблон(), если значений несколько
- 4Выведите строку: Сообщить() для служебного вывода, реквизит формы — для интерфейса
- 5Проверьте результат в панели сообщений или в поле формы
Вывод результата в поле формы и табличный документ
Если результат должен отображаться в интерфейсе, а не в панели сообщений, строка присваивается реквизиту формы. Для этого на форме создаётся реквизит с типом «Строка», на форму добавляется элемент «Поле надписи» или «Поле ввода», связанный с этим реквизитом, а в коде выполняется присваивание.
&НаКлиенте
Процедура Рассчитать(Команда)
РезультатСтрокой = СтрШаблон("Итог: %1", Формат(СуммаИтог, "ЧДЦ=2"));
КонецПроцедуры
Для вывода в табличный документ (печатную форму, отчёт) строка помещается в параметр области макета:
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Результат = Строка(ИтоговоеЗначение);
ТабДокумент.Вывести(Область);
В отчётах на СКД преобразование в строку обычно выполняется в вычисляемых полях или ресурсах через функцию Представление() либо в выражении на языке выражений СКД — там своя функция Строка() с похожим поведением.
Вывод результата в файл и внешние системы
Для записи строки в текстовый файл используется объект ТекстовыйДокумент или потоки. Строка результата добавляется методом ДобавитьСтроку() или ЗаписатьСтроку(), после чего документ сохраняется.
Текст = Новый ТекстовыйДокумент;
Текст.ДобавитьСтроку("Результат: " + Формат(Итог, "ЧГ=0"));
Текст.Записать("C:\Temp\result.txt", КодировкаТекста.UTF8);
При обмене с веб-сервисами и API строка обычно формируется через ЗаписьJSON или ЗаписьXML — эти механизмы сами сериализуют значения в корректное строковое представление, и вручную вызывать Строка() не нужно. Ручное преобразование здесь как раз вредно: Строка(Истина) даст «Да» в русском интерфейсе, тогда как JSON ожидает true.
Проверка результата и отладка
После вывода строки результат стоит проверить. Для панели сообщений — визуально: текст появляется внизу окна сразу после выполнения кода. Если сообщения нет, проверьте, не выполняется ли код на сервере без возврата сообщений на клиента, и не свёрнута ли панель сообщений.
Для программной проверки содержимого строки удобны функции СтрДлина(), СтрНайти() и сравнение с эталоном. В отладчике 1С текущее значение строковой переменной видно в табло (Ctrl+Alt+W) — там же видно, не попали ли в строку лишние пробелы или разделители групп.
Полезный приём при отладке — обернуть значение в квадратные скобки: Сообщить("[" + Результат + "]"). Так сразу видно ведущие и хвостовые пробелы, которые иначе незаметны.
Как проверить результат
Строка выведена полностью, даты и числа в ожидаемом формате
Сообщения нет или число содержит пробелы-разделители
Нет разделителей групп, десятичный разделитель соответствует формату приёмника
Неразрывные пробелы, запятая вместо точки в числе
Значение обновилось сразу после выполнения кода
Поле пустое — реквизит не связан с элементом формы
Частые вопросы
Как вывести число в строку без пробелов между разрядами?
Используйте Формат(Число, "ЧГ=0") — параметр ЧГ=0 отключает группировку разрядов. По умолчанию платформа вставляет неразрывные пробелы между тысячами, что мешает при передаче числа в файлы и внешние системы.
Почему Сообщить() не показывает текст пользователю?
Чаще всего код выполняется в фоновом задании или на сервере без активного сеанса пользователя. В таких случаях пишите в журнал регистрации через ЗаписьЖурналаРегистрации() или возвращайте результат на клиента и выводите его там.
Как вывести ссылку на документ в строку?
Строка(Ссылка) вернёт представление вида «Реализация товаров 000001 от 12.05.2026». Если нужен уникальный идентификатор (GUID), используйте Строка(Ссылка.УникальныйИдентификатор()).
Чем СтрШаблон() лучше обычной конкатенации?
Шаблон читается как готовая фраза, а значения подставляются по номерам %1, %2 и т.д. При изменении текста не нужно перестраивать цепочку плюсов, и меньше риск потерять пробел между частями строки.
Как вывести результат в несколько строк?
Вставьте в текст Символы.ПС между частями либо используйте многострочный строковый литерал с вертикальной чертой в начале каждой строки кода. В панели сообщений и полях формы переводы строк отображаются корректно.
Как вывести булево значение как «Да» или «Нет»?
Используйте Формат(Значение, "БЛ=Нет; БИ=Да") — это даёт явный контроль над представлением. Простое Строка(Истина) зависит от языка сеанса и может вернуть «Да», «True» или другое локализованное значение.
Что важно запомнить
Для вывода строки пользователю — Сообщить() или СообщениеПользователю, для преобразования значения — Строка() и Формат(), для сборки текста из частей — СтрШаблон(). Всегда контролируйте формат чисел и дат явно, а в фоновых заданиях пишите результат в журнал регистрации.