Разработка и Конфигурация · 10 мин
Как в 1С вывести кавычки: все рабочие способы
Как вывести кавычки в 1С: удвоение кавычек в строковых литералах, Символ(34), кавычки в запросах, макетах и печатных формах. Примеры кода и типичные ошибки.
Строковый литерал во встроенном языке 1С ограничивается двойными кавычками, поэтому просто вставить кавычку внутрь строки нельзя — парсер воспримет её как конец строки и выдаст синтаксическую ошибку. Проблема возникает постоянно: при формировании сообщений пользователю, сборке текста запроса, выводе наименований вида ООО «Ромашка» в печатных формах, генерации XML и JSON.
Во встроенном языке 1С существует три основных подхода: удвоение кавычки внутри литерала, функция Символ() с кодом нужного символа и использование одинарных кавычек там, где допустим другой тип кавычек. Каждый способ имеет свою область применения и ограничения.
Ниже разобраны все варианты с примерами кода, отдельно рассмотрены кавычки в тексте запросов, в макетах печатных форм и при выгрузке данных. В конце — типичные ошибки и ответы на частые вопросы.
Основной способ: удвоение кавычек в строковом литерале
Правило встроенного языка простое: чтобы внутри строки появилась двойная кавычка, её нужно написать дважды. Две подряд идущие кавычки внутри литерала воспринимаются компилятором как одна отображаемая кавычка.
Пример вывода наименования контрагента в кавычках:
Наименование = "ООО ""Ромашка""";
Сообщить("Контрагент: " + Наименование);
// Результат: Контрагент: ООО "Ромашка"
Обратите внимание на края строки. Если кавычка должна стоять в самом начале или в самом конце строки, рядом окажутся три кавычки подряд: одна открывающая (или закрывающая) литерал и две удвоенные, дающие выводимый символ. Это самое частое место ошибки — визуально три кавычки легко перепутать с двумя.
Текст = """Привет"" — сказал он";
// Результат: "Привет" — сказал он
Вывод кавычек через функцию Символ()
Функция Символ(Код) возвращает символ по его коду Unicode. Для двойной кавычки это код 34. Способ удобен, когда строка собирается динамически или когда удвоенные кавычки делают код нечитаемым.
Кавычка = Символ(34);
Текст = "ООО " + Кавычка + "Ромашка" + Кавычка;
// Результат: ООО "Ромашка"
Через Символ() можно вставить и другие виды кавычек, которые часто требуются в документах по правилам типографики. Например, левые и правые «ёлочки» или английские кавычки имеют собственные коды Unicode и не конфликтуют с ограничителями строки — их можно писать в литерале напрямую, если раскладка позволяет.
Минус способа — снижение читаемости при большом количестве вставок и лишняя конкатенация строк. Для одной-двух кавычек удвоение короче, для сложных шаблонов лучше подходит форматирование через СтрШаблон().
Кавычки в шаблонах через СтрШаблон()
Когда нужно подставить значение внутрь текста с кавычками, удобнее использовать СтрШаблон() — так кавычки пишутся один раз в шаблоне, а параметры подставляются отдельно. Это снижает риск ошибиться в подсчёте кавычек.
Текст = СтрШаблон("Документ ""%1"" от %2 проведён",
НомерДокумента,
Формат(ДатаДокумента, "ДЛФ=D"));
// Результат: Документ "000001" от 12.05.2026 проведён
Кавычки внутри шаблона всё равно удваиваются — правило литерала действует и здесь. Но вся строка находится в одном месте, и её проще проверить глазами, чем цепочку конкатенаций с перемешанными кавычками.
Кавычки в тексте запроса
Если текст запроса собирается в коде как строка, кавычки внутри него подчиняются тем же правилам удвоения. Это актуально при использовании строковых констант в запросе или при конструировании выражений.
ТекстЗапроса =
"ВЫБРАТЬ
| ""Ромашка"" КАК Наименование";
Запрос = Новый Запрос(ТекстЗапроса);
Многострочные строки в 1С оформляются вертикальной чертой в начале каждой строки, и внутри них удвоение кавычек тоже обязательно. Однако в большинстве случаев строковые значения в запрос лучше передавать через параметры — тогда кавычки вообще не нужны, а запрос становится безопаснее и читаемее.
Запрос.Текст = "ВЫБРАТЬ &Наименование КАК Наименование";
Запрос.УстановитьПараметр("Наименование", "ООО ""Ромашка""");
Если же запрос редактируется в консоли запросов или в конструкторе внутри конфигуратора, кавычки в тексте запроса пишутся одинарными двойными кавычками — удвоение требуется только в коде встроенного языка, потому что там текст запроса является строковым литералом.
Способы вставки кавычек
Универсальный способ для литералов в коде. Минус — легко ошибиться при кавычках на краях строки.
Подходит для динамической сборки строк и нестандартных символов. Минус — громоздко при частом использовании.
Лучший вариант для сообщений с подстановкой значений. Кавычки удваиваются только в шаблоне.
Для запросов — вместо ручной вставки строк. Исключает проблему кавычек полностью.
Кавычки в макетах и печатных формах
В табличном макете печатной формы кавычки — обычный текст. В ячейке можно написать ООО «Ромашка» или ООО "Ромашка" безо всякого экранирования: макет не является кодом, и ограничители строк там не действуют.
Экранирование понадобится только в двух случаях. Первый — значение параметра заполняется из кода, и строка с кавычками формируется встроенным языком: тогда действуют правила литералов. Второй — текст вставляется в шаблон ячейки макета с конструкциями вида [Параметр]; сам текст с кавычками в шаблоне пишется как есть, но если значение параметра содержит кавычки, они должны быть корректно сформированы в коде.
При выводе в HTML-документ или поле HTML кавычки внутри атрибутов требуют уже HTML-экранирования ("), а при формировании XML — правил XML. Не смешивайте уровни: удвоение кавычек — это правило языка 1С, а не универсальный механизм экранирования для всех форматов.
Кавычки при выгрузке в JSON, XML и файлы
При записи JSON через объект ЗаписьJSON кавычки в значениях экранируются автоматически — вручную ничего удваивать не нужно. Достаточно передать обычную строку, содержащую кавычки (сформированную, например, удвоением в литерале).
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
Запись.ЗаписатьНачалоОбъекта();
Запись.ЗаписатьИмяСвойства("name");
Запись.ЗаписатьЗначение("ООО ""Ромашка""");
Запись.ЗаписатьКонецОбъекта();
// В JSON получится: {"name":"ООО \"Ромашка\""}
Аналогично работают ЗаписьXML и механизмы сериализации (ЗначениеВСтрокуВнутр, XDTO): служебные символы обрабатывает сам механизм. Ручная сборка JSON конкатенацией строк — частый источник битых файлов именно из-за кавычек в данных.
При выгрузке в CSV учитывайте, что по общепринятым правилам поле, содержащее кавычки, заключается в кавычки целиком, а внутренние кавычки удваиваются — но это уже требование формата CSV, а не языка 1С. Если файл будет открываться в Excel или загружаться в другую систему, проверьте результат на реальных данных с кавычками в наименованиях.
- 1Сформируйте строку в коде выбранным способом (удвоение, Символ(34), шаблон).
- 2Выведите результат через Сообщить() или в поле надписи на форме.
- 3Убедитесь, что кавычек ровно столько, сколько ожидалось, и они стоят на нужных позициях.
- 4Если строка уходит в файл или внешнюю систему — откройте полученный файл и проверьте экранирование там.
- 5Проверьте крайние случаи: кавычка в начале строки, в конце и несколько кавычек подряд.
Типичные ошибки и их признаки
Самая частая ошибка — одинарная кавычка внутри строки. Компилятор сообщает об ошибке синтаксиса, а при динамической сборке строки (например, через Выполнить или Вычислить) ошибка всплывает только в момент выполнения, что затрудняет поиск.
Вторая типичная ситуация — неправильный подсчёт кавычек на краях строки. Три кавычки подряд в начале дают открывающую кавычку в тексте, две — пустую строку с последующим текстом вне литерала. Если результат выглядит странно, посчитайте кавычки: открывающая, далее пары удвоенных, закрывающая.
Третья ошибка — копирование текста из Word или браузера, где вместо прямых кавычек стоят типографские «ёлочки» или английские кавычки-лапки. Такие символы не являются ограничителями строки: строка с ними может выглядеть корректно, но не содержать нужных кавычек, либо наоборот — визуально «правильные» кавычки не закрывают литерал, потому что это другой символ.
Что важно запомнить
В коде 1С кавычка внутри строки удваивается, альтернатива — Символ(34). В запросах строки передавайте параметрами, в макетах печатных форм кавычки пишутся без экранирования, а JSON/XML формируйте штатными объектами записи — они экранируют кавычки сами.
Частые вопросы о кавычках в 1С
Как вывести кавычку в самом начале строки?
Напишите три кавычки подряд после знака равенства: первая открывает литерал, две следующие дают одну выводимую кавычку. Пример: Текст = """Значение"" переменной" — в результате получится "Значение" переменной.
Чем отличается Символ(34) от удвоения кавычек?
Результат одинаковый — в строке появляется двойная кавычка. Удвоение короче и работает только в литерале, Символ(34) удобен при динамической сборке и когда нужны другие символы Unicode по их коду.
Нужно ли удваивать кавычки в консоли запросов?
Нет. В консоли запросов и в конструкторе запроса вы редактируете непосредственно текст запроса, а не строковый литерал языка, поэтому строковые константы пишутся в обычных одинарных двойных кавычках. Удвоение нужно, только когда текст запроса оформлен как строка в коде модуля.
Почему скопированные из Word кавычки ломают код?
Word заменяет прямые кавычки типографскими («ёлочками» или лапками) — это другие символы Unicode, которые не распознаются как ограничители строки. Замените их на прямые кавычки в конфигураторе.
Как вывести «ёлочки» вместо прямых кавычек?
«Ёлочки» — обычные символы Unicode, они не конфликтуют с ограничителями строки, поэтому их можно вставить в литерал напрямую, если есть возможность ввести их с клавиатуры, либо через функцию Символ() с соответствующими кодами (171 и 187).
Кавычки пропадают при выгрузке в Excel — в чём причина?
Чаще всего данные выгружаются в CSV, где кавычки имеют служебное значение: поле с кавычками должно быть целиком обёрнуто в кавычки, а внутренние — удвоены. Проверьте, как формируется файл, и при необходимости используйте выгрузку через табличный документ в формате XLSX вместо ручной сборки CSV.