К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как поставить кавычки в 1С: все рабочие способы

Как поставить кавычки в 1С: ввод с клавиатуры, двойные кавычки в строках кода, кавычки-ёлочки в печатных формах, типичные ошибки и способы проверки результата.

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

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

Ниже разобраны все практические сценарии: ввод с клавиатуры, экранирование кавычек в коде, перенос строк, вставка кавычек через код символа, настройка печатных форм и типичные ошибки с их признаками.

Как поставить кавычки с клавиатуры в полях документов

В обычных полях ввода — наименование контрагента, комментарий к документу, текст письма — кавычки ставятся так же, как в любом текстовом редакторе Windows. В русской раскладке двойная кавычка набирается сочетанием Shift + 2 (клавиша с цифрой 2 в верхнем ряду). В английской раскладке двойная кавычка — это Shift + Э (клавиша с буквой Э).

Если вместо кавычек вводятся другие символы, проверьте текущую раскладку клавиатуры — индикатор языка находится в трее Windows рядом с часами. Переключение раскладки выполняется сочетанием Alt + Shift или Win + Пробел.

Для типографских кавычек-«ёлочек» стандартной клавиши нет. Их можно вставить через таблицу символов Windows (программа «Таблица символов», charmap), через Alt-коды: Alt + 0171 для открывающей « и Alt + 0187 для закрывающей » (цифры набираются на цифровом блоке при включённом Num Lock), или просто скопировать из другого текста через буфер обмена.

Кавычки внутри строки в коде 1С: правило удвоения

Во встроенном языке 1С строковый литерал заключается в двойные кавычки. Поэтому, если сама строка должна содержать кавычку, её нужно удвоить — написать два символа кавычки подряд. Это называется экранированием.

Пример: нужно получить текст — Организация "Ромашка" зарегистрирована. В коде это записывается так:

bsl
Сообщить("Организация ""Ромашка"" зарегистрирована");

Разберём запись: внешняя пара кавычек ограничивает строку, а каждая внутренняя кавычка записана как две подряд. Если строка должна начинаться или заканчиваться кавычкой, визуально получается три кавычки подряд: две — экранированная кавычка внутри строки, одна — граница литерала.

Типичный пример — формирование текста запроса или XML, где кавычки встречаются постоянно. Здесь легко ошибиться, поэтому длинные тексты с большим количеством кавычек удобнее собирать через подстановку параметров или записывать в макете, а не в коде.

Многострочные строки и переносы с кавычками

1С поддерживает многострочные строковые литералы: каждая следующая строка текста начинается с символа вертикальной черты |. Правило удвоения кавычек при этом сохраняется на каждой строке.

bsl
Текст = "Первая строка с ""кавычками""|и вторая строка";

Альтернатива — собирать строку через конкатенацию и функцию Символ(). Код 34 — это двойная кавычка, поэтому запись Символ(34) вставляет кавычку без удвоения:

bsl
Кавычка = Символ(34);
Результат = Кавычка + "Ромашка" + Кавычка;

Такой способ удобен, когда кавычек много и удвоение делает текст нечитаемым. Для «ёлочек» используются коды Символ(171) (открывающая) и Символ(187) (закрывающая). Минус подхода — код становится длиннее, поэтому для одной-двух кавычек удвоение предпочтительнее.

Кавычки в запросах и в текстах для внешних систем

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

bsl
ГДЕ Номенклатура.Наименование = ""Труба """"дюймовая""""";

На практике сравнивать строки с кавычками напрямую в запросе не стоит — надёжнее передать значение через параметр запроса (Запрос.УстановитьПараметр("Наименование", Значение)). Тогда платформа сама корректно обработает любые кавычки, и риск синтаксической ошибки исчезает.

Отдельная ситуация — формирование JSON или XML, где кавычки имеют служебное значение уже на стороне приёмника. Для JSON используйте объектные средства платформы (ЗаписьJSON), а не ручную склейку строк: механизм записи сам экранирует кавычки по правилам формата. Ручная сборка почти гарантированно приведёт к невалидному документу, как только в данных встретится кавычка.

Кавычки в печатных формах и макетах

В макетах табличных документов кавычки хранятся как обычный текст ячейки, поэтому в шаблоне можно заранее прописать нужный вид: прямые или «ёлочки». Если текст формируется динамически, кавычки добавляются в коде по правилам, описанным выше.

Частая задача — вывести в печатной форме наименование покупателя в кавычках, например: ООО «Вега». Если в справочнике наименование хранится без кавычек, их добавляют в шаблоне макета или при заполнении параметра:

bsl
Область.Параметры.Покупатель = "ООО """" + СокрЛП(Покупатель) + """"";

Обратите внимание: при выводе в Word или Excel через COM-объекты кавычки передаются как есть, но сам текст в коде всё равно формируется с удвоением. Если в готовом документе Word кавычки превратились в «ёлочки» автоматически — это сработал автозаменяющий механизм Word, а не 1С.

Как проверить результат и найти ошибку

Главный признак ошибки с кавычками в коде — сообщение конфигуратора «Синтаксическая ошибка» при проверке модуля, причём платформа указывает позицию чуть дальше реального места ошибки, потому что незакрытая кавычка «съедает» продолжение строки. Ищите первую непарную кавычку выше указанного места.

Для проверки содержимого строки в отладчике используйте окно «Вычислить выражение» (Shift + F9): значение показывается в том виде, в каком оно реально хранится, и лишние или недостающие кавычки видны сразу.

Контрольные точки

Как проверить результат

Модуль проходит проверку синтаксиса
Норма

Ошибок нет, строка выводится с кавычками как задумано

Тревожный признак

Сообщение «Синтаксическая ошибка» — ищите непарную или лишнюю кавычку

Вывод строки в сообщении или печатной форме
Норма

В тексте ровно одна кавычка там, где нужна одна

Тревожный признак

Двойные кавычки подряд — удвоение применено там, где не нужно

Сформированный JSON или XML
Норма

Файл открывается и проходит валидацию в приёмнике

Тревожный признак

Ошибка разбора у получателя — кавычки в данных не экранированы

Типичные ошибки
01
Одинарные кавычки вместо двойных: в 1С строки пишутся только в двойных кавычках, одинарная — обычный символ, и литерал не распознается
02
Удвоение кавычек в полях ввода документов: там экранирование не работает, и в базе сохранятся две кавычки подряд
03
Смешение прямых кавычек и «ёлочек» в одном наименовании: поиск и сравнение строк дают разный результат, дубли справочников не находятся
04
Ручная сборка JSON с кавычками в данных: документ становится невалидным, обмен с внешней системой падает

Что выбрать в конкретной ситуации

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

Маршрут решения

Как выбрать действие

Нужно ввести кавычки в поле документа или справочникаНаберите Shift+2 в русской раскладке или вставьте «ёлочки» через Alt+0171 / Alt+0187
Кавычка нужна внутри строки в коде модуляУдвойте её: "" внутри литерала даст одну кавычку в значении
В строке много кавычек и код нечитаемИспользуйте Символ(34) для прямых и Символ(171)/Символ(187) для «ёлочек»
Формируется JSON, XML или текст запросаПередавайте значения через параметры и штатные механизмы записи, а не конкатенацию

Единообразие важнее красоты: договоритесь внутри команды, какой вид кавычек используется в наименованиях и печатных формах, и зафиксируйте это в стандартах разработки. Иначе в базе накапливаются варианты "Ромашка", «Ромашка» и "Ромашка", которые считаются разными строками при поиске и сопоставлении.

Итог

Что важно запомнить

В полях ввода кавычки ставятся с клавиатуры без удвоения, в коде 1С кавычка внутри строки удваивается, для «ёлочек» есть Символ(171) и Символ(187), а обменные форматы собирайте штатными механизмами — тогда кавычки экранируются автоматически.

Частые вопросы

Почему в коде 1С нельзя использовать одинарные кавычки для строк?

Во встроенном языке 1С строковый литерал определяется только двойными кавычками. Одинарная кавычка воспринимается как обычный символ, поэтому запись 'текст' вызовет синтаксическую ошибку, а не создаст строку.

Как вывести строку, которая начинается и заканчивается кавычкой?

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

Почему в наименовании из 1С при выгрузке в Excel кавычки превращаются в другой символ?

Чаще всего причина в автозамене Excel или в различии кодировок при обмене через файл. Проверьте, какой символ реально хранится в базе (прямая кавычка или «ёлочка»), и отключите автозамену кавычек в настройках Excel, если она мешает.

Как найти в справочнике все элементы, где в наименовании есть кавычки?

Используйте запрос с оператором ПОДОБНО и шаблоном, содержащим удвоенную кавычку, либо обработку с функцией СтрНайти(Наименование, Символ(34)). Перед массовой заменой сделайте резервную копию информационной базы.

Можно ли заменить прямые кавычки на «ёлочки» во всей базе сразу?

Технически — да, через групповую обработку с заменой Символ(34) на пару Символ(171)/Символ(187), но открывающую и закрывающую кавычки придётся различать по позиции, что ненадёжно. Безопаснее заменять точечно в проверенных данных и обязательно на копии базы.

Почему запрос с кавычкой в условии выдаёт ошибку, хотя текст выглядит правильно?

Почти наверняка нарушено правило удвоения: одна из кавычек внутри текста запроса записана одиночной и закрыла литерал раньше времени. Перенесите сравниваемое значение в параметр запроса — это устранит проблему полностью.