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

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

Как удалить кавычки в строке 1С

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

Кавычки в строковых значениях — частая проблема при загрузке данных из CSV-файлов, обмене с внешними системами и обработке пользовательского ввода в 1С. Например, файл выгрузки может содержать значение «"ООО Ромашка"», где кавычки являются служебными символами формата, а не частью наименования.

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

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

Удаление всех кавычек через СтрЗаменить

Самый универсальный способ — функция СтрЗаменить. Она проходит по всей строке и заменяет каждое вхождение искомой подстроки на указанное значение. Если заменить кавычку на пустую строку, все кавычки исчезнут независимо от их количества и позиции.

Особенность синтаксиса: кавычка внутри строкового литерала 1С экранируется удвоением. Поэтому строка, состоящая из одной кавычки, записывается как четыре кавычки подряд — """". Это самое частое место ошибки у начинающих разработчиков.

ИсходнаяСтрока = """ООО Ромашка""";

Результат = СтрЗаменить(ИсходнаяСтрока, """", "");

// Результат: ООО Ромашка

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

1c
Результат = СтрЗаменить(ИсходнаяСтрока, """", "");

Как убрать только обрамляющие кавычки

Когда данные приходят из CSV или текстового файла, кавычки часто стоят только по краям значения как ограничители поля. Удалять все кавычки внутри такой строки нельзя — внутри может находиться легитимный текст. В этом случае отрезают первый и последний символы функцией Сред.

Обязательна проверка перед отрезанием: если строка не начинается с кавычки, вы потеряете первый и последний значащие символы. Корректный шаблон выглядит так:

Если Лев(Строка, 1) = """" И Прав(Строка, 1) = """" Тогда

Строка = Сред(Строка, 2, СтрДлина(Строка) - 2);

КонецЕсли;

Дополнительно проверяйте длину строки: если она состоит из одного символа или пуста, конструкция Сред(Строка, 2, СтрДлина(Строка) - 2) вернёт пустую строку или вызовет неожиданное поведение. Безопасное условие — СтрДлина(Строка) >= 2.

Порядок действий
  1. 1
    Определите, все ли кавычки лишние или только крайние
  2. 2
    Для всех кавычек примените СтрЗаменить с заменой на пустую строку
  3. 3
    Для обрамляющих кавычек проверьте Лев и Прав, затем отрежьте через Сред
  4. 4
    Проверьте результат на контрольном примере с кавычками внутри текста

Удаление кавычек-ёлочек и других видов кавычек

В данных из внешних источников встречаются разные символы кавычек: прямые ("), типографские ёлочки («»), лапки („ “), одиночные ('). Функция СтрЗаменить работает с конкретным символом, поэтому для полной очистки применяют цепочку замен.

Результат = СтрЗаменить(Строка, """", "");

Результат = СтрЗаменить(Результат, "«", "");

Результат = СтрЗаменить(Результат, "»", "");

Результат = СтрЗаменить(Результат, "'", "");

Если набор возможных символов заранее неизвестен, удобнее перебрать строку посимвольно и проверять каждый символ через СтрНайти по списку допустимых или запрещённых знаков. Это медленнее на больших объёмах, но надёжнее при «грязных» данных.

Разбор CSV: двойные кавычки и вложенные случаи

По стандарту CSV поле, содержащее разделитель или кавычки, заключается в кавычки целиком, а кавычка внутри такого поля удваивается. Например, значение ООО "Весна" в файле будет записано как "ООО ""Весна""". Простое удаление всех кавычек здесь даст искажённый результат.

Правильный порядок обработки поля CSV: сначала снять внешние обрамляющие кавычки, затем заменить удвоенные кавычки """" на одинарные. Только так восстанавливается исходное значение без потерь.

// Снять внешние кавычки

Если Лев(Поле, 1) = """" И Прав(Поле, 1) = """" Тогда

Поле = Сред(Поле, 2, СтрДлина(Поле) - 2);

КонецЕсли;

// Раскрыть удвоенные кавычки внутри

Поле = СтрЗаменить(Поле, """""", """");

Типичные ошибки
01
Вызов СтрЗаменить без присвоения результата — функция возвращает новую строку, исходная не меняется
02
Отрезание первого и последнего символов без проверки — теряются значащие данные, если кавычек не было
03
Замена удвоенных кавычек до снятия внешних — нарушается порядок разбора CSV и значения искажаются
04
Забытое экранирование: запись "" вместо """" приводит к синтаксической ошибке

Очистка строки от пробелов и кавычек одновременно

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

Строка = СокрЛП(ИсходнаяСтрока);

Строка = СтрЗаменить(Строка, """", "");

Учтите, что СокрЛП в платформе 1С удаляет не только обычные пробелы, но и неразрывные пробелы и символы табуляции по краям строки. Это удобно при обработке выгрузок из Excel и веб-форм, где неразрывный пробел — частый источник «невидимых» расхождений при сравнении строк.

Проверка результата и отладка

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

Если СтрНайти(Результат, """") > 0 Тогда

Сообщить("В строке остались кавычки: " + Результат);

КонецЕсли;

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

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

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

СтрНайти(Результат, """")
Норма

Возвращает 0 — кавычек не осталось

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

Возвращает позицию — кавычка осталась в строке

Строка с кавычками внутри текста
Норма

Внутренние кавычки сохранились при снятии внешних

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

Внутренний текст искажён или обрезан

Длина результата
Норма

Соответствует ожидаемой после удаления служебных символов

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

Строка короче на 1–2 символа без причины — срезаны значащие данные

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

Как удалить только одинарные кавычки, оставив двойные?

Укажите в СтрЗаменить одиночный символ апострофа: СтрЗаменить(Строка, "'", ""). Функция работает только с тем символом, который передан, поэтому двойные кавычки останутся нетронутыми.

Почему СтрЗаменить не меняет мою строку?

Функция не изменяет переданную переменную, а возвращает новую строку. Нужно присвоить результат: Строка = СтрЗаменить(Строка, """", ""). Без присвоения исходное значение остаётся прежним.

Как записать в коде строку, состоящую из одной кавычки?

Кавычка внутри строкового литерала экранируется удвоением, а сам литерал обрамляется кавычками. Поэтому строка из одной кавычки записывается как четыре подряд: """".

Можно ли удалить кавычки во всех элементах справочника сразу?

Да, через обход выборки запросом и обработку каждого объекта с записью. Перед массовой обработкой сделайте резервную копию и сначала протестируйте на копии базы: изменение наименований необратимо и может повлиять на поиск и печатные формы.

Чем отличается СокрЛП от СтрЗаменить для пробелов?

СокрЛП удаляет пробельные символы только по краям строки, не трогая пробелы внутри. СтрЗаменить заменяет все вхождения указанного символа в любой позиции. Для кавычек СокрЛП неприменим — он работает только с пробельными символами.

Итог

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

Все кавычки убирает СтрЗаменить с заменой на пустую строку, обрамляющие — Сред после проверки Лев и Прав. Кавычка в литерале 1С экранируется удвоением. В CSV сначала снимайте внешние кавычки, затем раскрывайте удвоенные. Перед массовой обработкой проверьте результат на краевых случаях.