Разработка и Конфигурация · 10 мин
Как преобразовать значение в текст в 1С
Как преобразовать значение в текст в 1С: функция Строка(), СокрЛП, Формат, преобразование в запросах и на форме. Примеры кода, ошибки и проверка результата.
Преобразование значения в текст — одна из самых частых операций при работе с 1С. Она нужна при выводе сообщений пользователю, формировании печатных форм, записи данных в файлы, склейке строк и отладке. Встроенный язык 1С предлагает несколько способов: универсальную функцию Строка(), функцию форматирования Формат(), а также преобразование в запросах и в табличном документе.
Выбор способа зависит от типа исходного значения. Число, дату, булево и ссылку на объект базы можно привести к строке по-разному, и результат будет отличаться. Например, Строка(Дата) вернёт дату в формате по умолчанию, а Формат(Дата, "ДЛФ=D") — в привычном виде «ДД.ММ.ГГГГ». Понимание этих различий избавляет от типичных ошибок вроде появления лишних пробелов в числах или нечитаемого представления ссылок.
Ниже разобраны основные способы преобразования в текст: во встроенном языке, в запросах, на форме и при выгрузке данных. Для каждого приведены примеры кода, ограничения и признаки правильного результата.
Функция Строка() — универсальное преобразование
Функция Строка() принимает значение любого типа и возвращает его строковое представление. Это самый простой способ, который подходит для отладки, вывода сообщений и склейки строк. Пример: ТекстСообщения = "Проведён документ № " + Строка(НомерДокумента);.
Для примитивных типов результат предсказуем: число вернётся как цифры, булево — как «Да» или «Нет», дата — в формате, заданном региональными настройками сеанса. Для ссылочных типов (справочники, документы) Строка() возвращает представление объекта — то, что пользователь видит в интерфейсе, например наименование контрагента или «Поступление товаров 000001 от 12.03.2026».
Важно помнить об ограничении: Строка() не позволяет управлять форматом. Если нужно вывести число без разделителей групп или дату в конкретном виде, используйте Формат(). Также при сложении строки с числом 1С часто выполняет неявное преобразование автоматически, но явный вызов Строка() делает код понятнее и защищает от неожиданностей при смене типов.
Текст = "Итоговая сумма: " + Строка(СуммаДокумента) + " руб.";Формат() — контроль вида чисел и дат
Функция Формат(Значение, ФорматнаяСтрока) преобразует значение в текст с точным управлением представлением. Для чисел можно задать количество знаков после запятой, разделители групп, подавление нуля: Формат(Сумма, "ЧДЦ=2; ЧРГ=' '"). Для дат — готовые шаблоны: ДЛФ=D (краткая дата), ДЛФ=DD (длинная дата), ДЛФ=DT (дата и время).
Типичная ситуация — выгрузка числа в файл или строку подключения, где разделители групп недопустимы. Параметр ЧГ=0 убирает группировку разрядов: Формат(Код, "ЧГ=0") вернёт «1234567» вместо «1 234 567». Без этого пробелы-разделители могут сломать дальнейшую обработку строки.
Для булева форматная строка позволяет задать собственные подписи: Формат(Флаг, "БЛ=Нет; БИ=Да"). Это удобно в печатных формах, где вместо технических значений нужны осмысленные слова. Полный синтаксис форматных строк описан в синтакс-помощнике конфигуратора по ключевому слову «Формат».
Преобразование ссылок, перечислений и составных типов
Ссылочные значения преобразуются в текст через представление объекта. Если нужен не человекочитаемый вид, а уникальный идентификатор, используйте Строка(Ссылка.УникальныйИдентификатор()). Это потребуется, например, при обмене данными, когда строковый GUID сопоставляется с записями другой системы.
Перечисления преобразуются функцией Строка() в их представление (синоним значения). Для получения имени значения, как оно задано в конфигураторе, применяется обращение через метаданные: XMLСтрока(ЗначениеПеречисления) или индекс значения через Перечисления.ИмяПеречисления.Индекс(). Это полезно при сериализации и отладке.
Значения типа Неопределено и NULL преобразуются в пустую строку. Перед выводом стоит проверять такие значения через ЗначениеЗаполнено(), чтобы в тексте не появлялись «пустые» фрагменты вроде «Контрагент: , договор: ».
Преобразование в текст в запросах
В языке запросов 1С прямого аналога Строка() нет, но есть инструменты для похожих задач. Функция ПРЕДСТАВЛЕНИЕ(Поле) возвращает строковое представление значения — удобно для вывода ссылок в отчётах без дополнительной обработки результата.
Оператор ВЫРАЗИТЬ(Поле КАК СТРОКА(Длина)) приводит значение к строковому типу указанной длины. Его применяют для унификации типов в объединениях запросов, при сравнении строковых полей разной длины и при работе с составными типами. Учтите: значение обрезается до заданной длины, поэтому указывайте её с запасом.
Для склейки полей прямо в запросе используется оператор + со строковыми литералами, но все слагаемые должны быть строками — ссылки и числа предварительно преобразуют через ПРЕДСТАВЛЕНИЕ() или обрабатывают уже в коде после выборки. Проверить тип поля в конкретной базе можно через консоль запросов, выведя ТИПЗНАЧЕНИЯ(Поле).
Сравнение вариантов
Быстрое преобразование любого значения для сообщений и отладки. Не управляет форматом
Точный контроль вида чисел, дат и булева. Требует знания синтаксиса форматной строки
Строковое представление ссылок на уровне запроса. Только для чтения, не для выгрузки чисел
Приведение типа в запросе для объединений и сравнений. Обрезает значение по указанной длине
Преобразование на форме и в печатных формах
В управляемых формах данные обычно выводятся через элементы формы, и платформа сама преобразует значение в текст по настройкам поля. Если текст формируется программно — например, надпись с итогами или заголовок — используйте Формат() для чисел и дат, чтобы вид соответствовал остальному интерфейсу.
В табличном документе при заполнении параметров макета значение приводится к тексту автоматически по формату, заданному в свойствах параметра макета. Явное преобразование через Формат() в коде даёт предсказуемый результат независимо от настроек макета, что упрощает поддержку печатных форм.
При выгрузке в текстовые файлы, CSV или XML применяйте Формат() с явными параметрами либо функции сериализации (XMLСтрока(), ЗначениеВСтрокуВнутр() для внутренних нужд). Это гарантирует, что при обратном чтении значение корректно распознается.
- 1Определите тип исходного значения: примитивный, ссылка, дата, число
- 2Определите назначение текста: сообщение пользователю, файл, запрос, печатная форма
- 3Для сообщений используйте Строка(), для чисел и дат с требованиями к виду — Формат()
- 4В запросе применяйте ПРЕДСТАВЛЕНИЕ() или ВЫРАЗИТЬ КАК СТРОКА
- 5Проверьте результат на тестовых данных: числа без лишних пробелов, даты в нужном формате, ссылки читаемы
Проверка результата и типичные проблемы
После преобразования проверьте результат на крайних случаях: пустое значение, Неопределено, очень длинное число, дата с временем. Простой способ отладки — вывести результат через Сообщить() или в журнал регистрации и сравнить с ожидаемым видом.
Частая проблема — неявное преобразование при конкатенации. Выражение "Сумма: " + 1000.5 сработает, но результат зависит от региональных настроек. Явное Формат(1000.5, "ЧДЦ=2") делает поведение одинаковым у всех пользователей. Другая проблема — потеря точности при преобразовании числа в строку фиксированной длины в запросе: проверяйте, что длина достаточна.
Если преобразованный текст используется для поиска или сравнения, применяйте СокрЛП() для удаления начальных и конечных пробелов и учитывайте регистр символов. Строковое представление ссылки может совпадать у разных объектов (одинаковые наименования), поэтому для идентификации используйте ссылку или GUID, а не текст.
Как проверить результат
Нет пробелов-разделителей, нужное число знаков после запятой
Пробелы между разрядами, округление не по правилам
Формат соответствует заданному (ДД.ММ.ГГГГ или иной явно заданный)
Формат зависит от настроек сеанса и меняется у разных пользователей
Читаемое представление объекта или корректный GUID
Пустая строка при незаполненном значении
Значение не обрезано, тип поля — строка нужной длины
Хвост значения отрезан из-за малой длины в ВЫРАЗИТЬ
Частые вопросы
Чем Строка() отличается от Формат()?
Строка() возвращает представление значения по умолчанию без управления видом. Формат() позволяет задать точный вид числа, даты или булева через форматную строку. Для отладки достаточно Строка(), для вывода пользователю и выгрузки — Формат().
Как преобразовать число в строку без пробелов между разрядами?
Используйте Формат(Число, "ЧГ=0") — параметр ЧГ=0 отключает группировку разрядов. Дополнительно можно задать ЧДЦ для числа знаков после запятой.
Как получить строковый GUID ссылки?
Вызовите Строка(Ссылка.УникальныйИдентификатор()). Обратное преобразование выполняется через конструктор: Новый УникальныйИдентификатор(СтрокаGUID), а затем получение ссылки методом ПолучитьСсылку() менеджера объекта.
Можно ли преобразовать значение в строку прямо в запросе?
Да. ПРЕДСТАВЛЕНИЕ(Поле) возвращает строковое представление значения, а ВЫРАЗИТЬ(Поле КАК СТРОКА(N)) приводит значение к строковому типу заданной длины. Для сложных форматов чисел и дат преобразование лучше выполнять в коде после выборки.
Почему Строка(Неопределено) возвращает пустую строку?
Это штатное поведение платформы: значения Неопределено и NULL не имеют представления и преобразуются в пустую строку. Перед выводом проверяйте значение функцией ЗначениеЗаполнено() и подставляйте осмысленный текст вместо пустоты.
Как преобразовать дату в строку вида «2026-03-12» для выгрузки?
Используйте Формат(Дата, "ДФ=yyyy-MM-dd") — параметр ДФ задаёт произвольный шаблон даты. Для обмена данными также подходит XMLСтрока(Дата), которая возвращает дату в каноническом формате ISO.
Что важно запомнить
Строка() — универсальное преобразование для сообщений и отладки, Формат() — точный контроль вида чисел и дат, в запросах работают ПРЕДСТАВЛЕНИЕ() и ВЫРАЗИТЬ КАК СТРОКА. Для выгрузок всегда задавайте формат явно и проверяйте результат на пустых и граничных значениях.