Как правильно печатать и использовать двойные кавычки в текстовых константах 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Метод 1: Экранирование кавычек (Удвоение)

Наиболее распространенный и стандартный способ в языке 1С — это использование двух двойных кавычек подряд для обозначения одной кавычки в итоговом тексте. Рассмотрим подробнее, как это работает на практике. Когда интерпретатор встречает внутри строки две кавычки подряд "", он понимает, что это не конец строки, а инструкция вывести один символ кавычки.

Проанализируем ситуацию на примере названия организации:


// Неправильно: Название = "ООО "Рога и копыта""; // Вызовет ошибку
// Правильно:
Название = "ООО ""Рога и копыта""";
Сообщить(Название); // Результат: ООО "Рога и копыта"

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


ОднаКавычка = """"; 
// Первая и последняя — ограничители строки, средние две — экранированная кавычка.

Метод 2: Использование функции Символ()

Иногда нагромождение кавычек делает код трудночитаемым, особенно если в строке много переменных и кавычек одновременно. В таких случаях мы рекомендуем использовать функцию Символ(), которая возвращает символ по его коду в таблице ASCII (или Unicode). Для двойной кавычки это код 34.

Разберем пример формирования сложной строки:


Кавычка = Символ(34);
ТекстСообщения = "Организация " + Кавычка + НазваниеОрганизации + Кавычка + " успешно зарегистрирована.";
Сообщить(ТекстСообщения);

Этот способ часто оказывается более наглядным при динамической сборке строк в циклах или сложных условиях. Вы сразу видите структуру строки, не пересчитывая количество кавычек в редакторе кода.

Метод 3: Современный подход с функцией СтрШаблон

Начиная с версии платформы 1С 8.3.6, у разработчиков появился очень удобный инструмент — функция СтрШаблон. Она позволяет вставлять значения переменных в текст по заранее подготовленному макету. Это значительно упрощает работу с кавычками.

Посмотрим на пример использования шаблона:


// Используем %1 как подстановочный знак
Название = "Рога и копыта";
Результат = СтрШаблон("Наименование компании: ""%1""", Название);
// Результат будет: Наименование компании: "Рога и копыта"

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

Особенности использования кавычек в запросах

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

Рассмотрим пример запроса:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	""Результат: "" + "" """"Тестовая строка"""" "" КАК ПолеВывода";
// Результат запроса: Результат: "Тестовая строка"

Работа в Системе компоновки данных (СКД)

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

  1. Откройте вкладку "Вычисляемые поля".
  2. В колонке "Выражение" напишите: """Текст в кавычках""".
  3. Обратите внимание на тройные кавычки: первая и последняя — границы строки, а две внутренние образуют одну видимую кавычку.

Нюансы обмена данными: XML и JSON

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

Важно: Если вы используете встроенные объекты платформы ЗаписьXML или ЗаписьJSON, 1С сделает это преобразование за вас автоматически. Но при ручной "склейке" строк для API будьте крайне внимательны.

Практические советы и хитрости

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

Кавычка = Прав("""", 1); // Получаем одну кавычку из двух заэкранированных

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

Также стоит упомянуть функцию СокрЛП. При конкатенации строк вида """" + СокрЛП(Наименование) + """" всегда проверяйте, заполнено ли значение. Если переменная пустая, вы получите в результате две кавычки рядом (пустую строку в кавычках), что не всегда является желаемым результатом при печати документов или выгрузке в банк.

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

← На главную