Разработка и Конфигурация · 8 мин
Как в 1С выразить значение как текст
Как в 1С преобразовать число, дату или ссылку в строку: функции Строка(), Формат(), XMLСтрока(). Примеры кода, типичные ошибки и проверка результата.
Задача «выразить как текст» возникает в 1С постоянно: нужно подставить сумму в печатную форму, сформировать наименование документа, вывести дату в сообщении пользователю или собрать строку для обмена данными. Встроенный язык предлагает несколько способов преобразования значений в строку, и у каждого есть свои особенности, ограничения и подводные камни.
Главное, что нужно понимать: неявное преобразование типов в 1С работает не везде и не всегда так, как ожидает разработчик. Конкатенация числа со строкой без явного приведения типа вызовет ошибку, а дата, преобразованная простой функцией, может оказаться в формате, непригодном для печатной формы. Поэтому преобразование в текст лучше делать осознанно, выбирая подходящий инструмент.
Ниже разобраны основные функции — Строка(), Формат(), XMLСтрока(), ПредставлениеПериода() — с примерами кода, условиями выбора и типичными ошибками.
Функция Строка() — универсальное преобразование
Функция Строка() принимает значение любого типа и возвращает его строковое представление. Это самый простой способ выразить значение как текст, когда не требуется особое форматирование.
Число = 1234.56;
ТекстЧисла = Строка(Число); // "1234.56" или "1 234,56" — зависит от региональных настроек
Ссылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("000000001", ТекущаяДатаСеанса());
ТекстСсылки = Строка(Ссылка); // "Реализация товаров и услуг 000000001 от ..."
Для ссылочных типов (документы, справочники) Строка() возвращает то же представление, которое пользователь видит в интерфейсе. Для примитивных типов результат зависит от региональных установок информационной базы: разделитель дробной части и групп разрядов может отличаться.
Функция Формат() — когда нужен точный вид текста
Функция Формат(Значение, ФорматнаяСтрока) — основной инструмент, когда результат должен выглядеть строго определённым образом: дата в виде «01.03.2026», число с двумя знаками после запятой, булево как «Да/Нет».
Форматирование дат
Дата = ТекущаяДатаСеанса();
ТекстДаты = Формат(Дата, "ДЛФ=D"); // "01.03.2026"
ТекстДатыДлинный = Формат(Дата, "ДЛФ=DD"); // "1 марта 2026 г."
ТекстВремени = Формат(Дата, "ДЛФ=T"); // время
Форматирование чисел
Сумма = 1234567.8;
ТекстСуммы = Формат(Сумма, "ЧДЦ=2; ЧРГ=' '"); // "1 234 567,80"
ТекстНоль = Формат(0, "ЧН=0,00"); // явное представление нуля
Полезные параметры форматной строки: ЧДЦ — число десятичных знаков, ЧРГ — разделитель групп разрядов, ЧН — представление нуля, БЛ/БИ — представления ложного и истинного значений булева.
Сообщение = "Документ № " + Формат(НомерДокумента, "ЧГ=") + " от " + Формат(ДатаДокумента, "ДЛФ=D");Преобразование ссылок и составных типов
Когда нужно получить текстовое представление ссылки на объект, кроме Строка() можно использовать обращение к стандартным реквизитам: Наименование у справочников, Номер и Дата у документов. Это даёт более предсказуемый результат, чем общее представление ссылки.
Для технических задач — записи в лог, формирования ключей, обмена — часто нужен уникальный идентификатор ссылки в виде строки:
ИдСтрокой = Строка(Ссылка.УникальныйИдентификатор());
// "a1b2c3d4-e5f6-..."
XMLСтрока() и представления для обмена данными
Если текст нужен не для пользователя, а для машинной обработки — выгрузки в XML, JSON, передачи в веб-сервис — регионально-зависимые форматы не подходят. Для этого служит функция XMLСтрока(): она возвращает каноническое представление значения, не зависящее от настроек базы.
ДатаXML = XMLСтрока(ТекущаяДатаСеанса()); // "2026-03-01T12:30:00"
ЧислоXML = XMLСтрока(1234.56); // "1234.56"
БулевоXML = XMLСтрока(Истина); // "true"
Обратная функция — XMLЗначение() — восстанавливает значение из строки. Такая пара удобна для сериализации значений при обмене между базами и внешними системами.
Сравнение вариантов
Быстрое представление для сообщений и логов; результат зависит от региональных настроек
Печатные формы и интерфейс, где важен точный вид даты или числа; требует знания параметров форматной строки
Обмен данными и интеграции; не зависит от настроек, но формат нечитаем для пользователя
Текстовое представление в запросах
В языке запросов преобразование в строку выполняется функцией ПРЕДСТАВЛЕНИЕ(Поле) или оператором ВЫРАЗИТЬ(Поле КАК СТРОКА(N)). Важно различать их назначение.
ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура) КАК НоменклатураТекст,
ВЫРАЗИТЬ(Товары.Комментарий КАК СТРОКА(100)) КАК Комментарий
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК Товары
ПРЕДСТАВЛЕНИЕ возвращает отображаемый текст ссылки, но работает медленно и замедляет запрос — используйте его только когда результат действительно нужен в виде текста. ВЫРАЗИТЬ КАК СТРОКА применяется для приведения неограниченных строк к фиксированной длине, например перед соединением таблиц по строковому полю.
Проверка результата преобразования
После преобразования убедитесь, что текст соответствует ожиданиям. Самый простой способ — вывести результат через Сообщить() или в отладчике и проверить ключевые признаки.
Как проверить результат
Формат соответствует заданному, например 01.03.2026
Дата в американском формате или со временем, которого не должно быть
Нужное количество знаков после запятой, разряды разделены
Лишние нули, пропавшие копейки, научная нотация
Осмысленный текст или пустая строка по замыслу
Слова "Неопределено" или "NULL" в итоговом тексте
Отдельно проверяйте граничные случаи: нулевые суммы, пустые даты ('00010101'), незаполненные ссылки. Для пустой даты Формат() вернёт пустую строку, а Строка(Неопределено) даст слово «Неопределено», которое редко уместно в пользовательском тексте.
- 1Определите назначение текста: интерфейс, печать, лог или обмен данными
- 2Для интерфейса и печати выберите Формат() с подходящей форматной строкой
- 3Для логов и простых сообщений используйте Строка()
- 4Для интеграций применяйте XMLСтрока()
- 5Проверьте результат на пустых и граничных значениях
Часто задаваемые вопросы
Почему выражение "Сумма: " + 100 вызывает ошибку?
Встроенный язык 1С не выполняет неявное преобразование числа в строку при конкатенации. Оператор «+» пытается привести строку к числу, что невозможно. Используйте явное приведение: "Сумма: " + Строка(100).
Как вывести дату без времени?
Примените функцию Формат() с параметром ДЛФ=D: Формат(Дата, "ДЛФ=D"). Дополнительно можно предварительно обрезать время функцией НачалоДня(Дата), если дата участвует в дальнейших вычислениях.
Чем Строка() отличается от Формат()?
Строка() возвращает представление по умолчанию, зависящее от региональных настроек базы. Формат() позволяет задать точный вид результата через форматную строку и предпочтительна для печатных форм и интерфейсных текстов.
Как преобразовать ссылку справочника в наименование?
Обратитесь к реквизиту напрямую: Ссылка.Наименование. Функция Строка(Ссылка) тоже вернёт представление, но обращение к реквизиту нагляднее и предсказуемее, если нужен именно текст наименования.
Как получить строку в формате, независимом от настроек сервера?
Используйте XMLСтрока(Значение) — она возвращает каноническое представление (например, дату в виде 2026-03-01T12:00:00), одинаковое в любой базе. Это стандартный подход для обмена данными и интеграций.
Что важно запомнить
Строка() — для простых сообщений, Формат() — для точного вида в интерфейсе и печати, XMLСтрока() — для обмена данными. Всегда приводите типы явно и проверяйте результат на пустых значениях.