Разработка и Конфигурация · 10 мин
Как убрать кавычки в 1С: строки, запросы и печатные формы
Как убрать кавычки в 1С: функции СтрЗаменить и СокрЛП, работа с типовыми кавычками в печатных формах, обработка строк в запросах и типичные ошибки.
Кавычки в 1С появляются в разных местах: в строковых значениях при загрузке данных из файлов, в наименованиях контрагентов с «ёлочками» и „лапками“, в печатных формах документов, при выгрузке в Excel или CSV. Способ удаления зависит от того, где именно находятся кавычки и что с ними нужно сделать: полностью убрать, заменить на другой символ или обработать только в момент вывода.
Чаще всего задачу решают встроенной функцией СтрЗаменить(), которая заменяет все вхождения подстроки в строке. Для разовой чистки данных подойдёт внешняя обработка, для постоянной работы — код в модуле обмена или печатной формы. Важно заранее понять, какие именно кавычки встречаются в данных: прямые ("), типографские («») или одиночные ('), потому что заменять их нужно отдельно.
Ниже разобраны основные сценарии: удаление кавычек из строки в коде, чистка данных в справочниках, работа с запросами, загрузка из файлов и вывод в печатные формы. Отдельно рассмотрены типичные ошибки, из-за которых кавычки «не удаляются» или ломается код.
Откуда берутся кавычки в данных 1С
Прежде чем удалять кавычки, полезно понять их источник — от этого зависит, где правильнее их обрабатывать. Самая частая причина — загрузка данных из внешних файлов: CSV, Excel, текстовые выгрузки из других программ. Многие форматы обрамляют текстовые поля кавычками, и при неправильном разборе они попадают в базу как часть значения.
Вторая причина — ручной ввод. Пользователи копируют наименования организаций из документов, где стоят типографские кавычки «ёлочки», или вставляют текст из Word. В итоге в справочнике контрагентов одна и та же организация может храниться в трёх вариантах: ООО Ромашка, ООО «Ромашка» и ООО "Ромашка".
Третий источник — обмены между конфигурациями и интеграции с сайтами, где кавычки добавляются при сериализации данных. Если кавычки появляются регулярно, правильнее исправить обработку загрузки, а не чистить данные постфактум.
Проверьте обработку импорта файлов
Нужна разовая массовая чистка
Ищите место формирования строки в модуле печатной формы
Удаление кавычек из строки в коде
Базовый инструмент — функция СтрЗаменить(Строка, ПодстрокаПоиска, ПодстрокаЗамены). Она заменяет все вхождения искомой подстроки. Чтобы удалить символ, в качестве замены передают пустую строку. Прямая кавычка в коде 1С задаётся через Символ(34), потому что сама кавычка является служебным символом строкового литерала.
Наименование = "ООО ""Ромашка"" Групп";
Наименование = СтрЗаменить(Наименование, Символ(34), "");
// Результат: ООО Ромашка Групп
// Удаление типографских кавычек
Наименование = СтрЗаменить(Наименование, Символ(171), ""); // «
Наименование = СтрЗаменить(Наименование, Символ(187), ""); // »
Наименование = СтрЗаменить(Наименование, Символ(132), ""); // „Обратите внимание: строковые литералы в 1С заключаются в кавычки, а кавычка внутри литерала удваивается. Поэтому строка "ООО ""Ромашка""" на самом деле содержит ООО "Ромашка". Это частая причина путаницы: кажется, что кавычек две, хотя в значении — одна.
Если нужно не удалить, а заменить один вид кавычек на другой (например, прямые на «ёлочки» для вывода в печатную форму), сначала заменяют открывающие вхождения, затем закрывающие — либо используют регулярную логику с подсчётом позиции. В простых случаях достаточно заменить все прямые кавычки на один выбранный символ.
Массовая чистка кавычек в справочниках и документах
Когда кавычки нужно убрать из уже записанных данных — наименований контрагентов, номенклатуры, полных наименований для печати — пишут небольшую обработку. Её можно выполнить через внешнюю обработку или через консоль кода в режиме предприятия, если она доступна.
- 1Сделайте резервную копию базы или выгрузку затрагиваемого справочника
- 2Напишите запрос, выбирающий элементы, где наименование содержит кавычку (условие ГДЕ Наименование ПОДОБНО)
- 3Переберите результат: получите объект, примените СтрЗаменить, запишите объект
- 4Проверьте несколько записей вручную — наименования, печатные формы, поиск
- 5Убедитесь, что обмены и отчёты работают с новыми значениями корректно
Пример цикла обработки выборки:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты
|ГДЕ Наименование ПОДОБНО ""%""%""";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Наименование = СтрЗаменить(Объект.Наименование, Символ(34), "");
Объект.Записать();
КонецЦикла;Учтите, что перезапись большого числа объектов в клиент-серверной базе создаёт нагрузку и трафик в планах обмена. Если справочник участвует в обмене, все изменённые элементы уйдут в другие узлы. Для больших объёмов имеет смысл выполнять чистку пакетами и в нерабочее время.
Кавычки в запросах и при поиске
Иногда задача обратная: кавычки мешают найти запись. Пользователь вводит Ромашка, а в базе значение хранится как «Ромашка», и поиск по точному совпадению не срабатывает. Здесь помогает либо нормализация строки поиска (убрать кавычки из введённого значения и искать с ПОДОБНО), либо приведённая выше массовая чистка данных.
В языке запросов 1С нет прямого аналога СтрЗаменить в типовых механизмах выборки, поэтому замену обычно выполняют уже после получения результата, в коде. Если сравнение без кавычек нужно постоянно, практичный вариант — хранить рядом с основным наименованием дополнительный реквизит «наименование для поиска», очищенный от кавычек и лишних пробелов, и искать по нему.
Кавычки при загрузке из CSV и Excel
При разборе CSV-файлов кавычки — часть формата: поля, содержащие разделитель или перевод строки, обрамляются кавычками. Если файл разбирается простым СтрРазделить по запятой, обрамляющие кавычки остаются в значениях. Правильное решение — использовать корректный парсер CSV или после разбора снимать обрамление: проверять, начинается и заканчивается ли значение кавычкой, и срезать крайние символы.
// Снятие обрамляющих кавычек у значения из CSV
Значение = СокрЛП(Значение);
Если СтрДлина(Значение) >= 2
И Лев(Значение, 1) = Символ(34)
И Прав(Значение, 1) = Символ(34) Тогда
Значение = Сред(Значение, 2, СтрДлина(Значение) - 2);
КонецЕсли;
// Внутри поля удвоенные кавычки "" означают одну
Значение = СтрЗаменить(Значение, Символ(34) + Символ(34), Символ(34));При загрузке из Excel через табличный документ или COM-объект кавычки обычно не добавляются — они попадают в базу только если присутствуют в самих ячейках. Поэтому перед написанием чистящего кода откройте исходный файл и убедитесь, где именно стоят кавычки.
Кавычки в печатных формах и наименованиях организаций
В печатных формах кавычки вокруг наименования организации часто добавляются шаблоном или кодом формирования строки, а не хранятся в данных. Если в счёте на оплату выводится ООО "Ромашка", а нужно без кавычек, сначала проверьте реквизит организации: в типовых конфигурациях есть отдельные поля полного и сокращённого наименования, и кавычки могут быть записаны прямо там.
Если в данных кавычек нет, ищите место в модуле менеджера документа, где формируется строка для макета. Там либо уберите конкатенацию с кавычками, либо оберните значение в СтрЗаменить. Изменения типовой конфигурации делайте через расширение или механизм переопределения, чтобы не потерять их при обновлении.
Как выбрать действие
Типичные ошибки при удалении кавычек
Ещё одна ошибка — удаление кавычек «в лоб» из строк, где они несут смысл, например из артикулов или технических обозначений. Перед массовой обработкой выгрузите примеры значений и убедитесь, что кавычки везде лишние.
Что важно запомнить
Для удаления кавычек в коде используйте СтрЗаменить с Символ(34), а для «ёлочек» — Символ(171) и Символ(187). Определите источник кавычек: данные, загрузка или печатная форма — и исправляйте именно его. Перед массовой чисткой справочников сделайте резервную копию.
Частые вопросы
Почему СтрЗаменить не убирает кавычки, хотя код написан верно?
Скорее всего, в данных стоит другой символ: типографские кавычки «» (коды 171 и 187), одиночные кавычки или неразрывные конструкции, скопированные из Word. Определите фактический код символа функцией КодСимвола и заменяйте именно его.
Как убрать кавычки только в начале и конце строки, не трогая середину?
Проверьте первый и последний символ функциями Лев() и Прав(), и если оба равны кавычке, возьмите Сред(Строка, 2, СтрДлина(Строка) - 2). Так обрабатывают значения из CSV, где кавычки внутри текста значимы.
Можно ли убрать кавычки без программирования?
Для небольшого объёма — да: выгрузите список в табличный документ или Excel, выполните замену кавычек на пустую строку и загрузите обратно штатной обработкой загрузки данных. Для регулярной задачи и больших объёмов надёжнее обработка с кодом.
Опасно ли удалять кавычки из наименований контрагентов?
Да, если наименование используется в печатных формах, ЭДО и отчётности: официальное название организации с кавычками может требоваться по документам. Перед чисткой согласуйте изменения с бухгалтерией и сделайте копию базы.
Как запретить пользователям вводить кавычки в наименование?
Добавьте проверку в обработчик ПередЗаписью или ПриЗаписи элемента справочника: если наименование содержит Символ(34) или «ёлочки», либо автоматически очищайте значение, либо выводите предупреждение и отказывайте в записи. Дополнительно можно нормализовать значение в обработке заполнения.