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

Особенность проблемы в том, что кавычки бывают разных типов: прямые (" "), «ёлочки» (« »), одинарные (' ') и даже неразрывные символы из Microsoft Word или Excel. Каждый случай требует своего подхода. Мы рассмотрим решения для всех актуальных версий платформы 1С 8.3, включая облачные и локальные конфигурации.

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

📊 С какой версией 1С вы работаете?
8.3 (обычная)
8.3 (управляемая)
8.2
Облачная (1C:Fresh)
Другая

Почему в 1С появляются лишние кавычки?

Кавычки редко возникают сами по себе — обычно их «приносит» один из внешних источников. Вот основные причины:

  • 📄 Импорт из Excel/Word: при копировании данных из таблиц или документов в 1С вместе с текстом переносятся невидимые символы форматирования, включая «умные» кавычки (“ ”).
  • 🔄 Обмен данными: при интеграции с другими системами (например, CRM или ERP) кавычки могут добавляться как разделители или часть структуры данных.
  • 👤 Ручной ввод: пользователи часто ставят кавычки для выделения названий, брендов или особых условий (например, "Срочно!" в комментарии к заказу).
  • 🖥️ Ошибки конфигурации: в некоторых обработках или отчётах кавычки добавляются автоматически при формировании строковых значений.

Самый коварный случай — неразрывные кавычки (код символа U+201C и U+201D). Они выглядят как обычные, но не удаляются стандартной заменой. Их часто можно встретить в данных, скопированных из PDF или веб-страниц.

⚠️ Внимание: Если кавычки появляются в полях, которые потом используются в Запросах 1С или SQL-выражениях, это может привести к ошибке "Несоответствие типов" или даже "Синтаксическая ошибка". Проверьте такие поля в первую очередь.

Способ 1: Ручная замена через «Найти и заменить»

Самый простой метод — использовать встроенный инструмент замены. Он подходит для небольших объёмов данных (до 1000 строк).

  1. Откройте таблицу или документ, где нужно убрать кавычки.
  2. Нажмите Ctrl + F (или выберите Правка → Найти...).
  3. В поле «Найти» введите " (прямую кавычку). Для «ёлочек» используйте « или ».
  4. Оставьте поле «Заменить на» пустым и нажмите Заменить всё.

Для неразрывных кавычек этот способ не сработает — их нужно удалять через программный код (см. Способ 4).

Проверить резервную копию базы

Закрыть все активные сеансы пользователей

Отфильтровать данные по нужному полю

Сохранить оригинальную версию отчёта/документа-->

Способ 2: Обработка через текстовый документ

Если данные экспортированы в TXT или CSV, их можно очистить с помощью Блокнота или Excel:

  • 📝 В Блокноте:
    1. Откройте файл в Блокноте (не WordPad!).
    2. Нажмите Ctrl + H (замена).
    3. В «Что» введите ", в «Чем» оставьте пусто. Нажмите «Заменить всё».
  • 📊 В Excel:
    1. Используйте функцию =ПОДСТАВИТЬ(A1;"""";"") для удаления прямых кавычек.
    2. Для «ёлочек»: =ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"«";"");"»";"").
  • После очистки импортируйте данные обратно в 1С. Этот метод подходит для одноразовой обработки, но не автоматизирует процесс.

    ⚠️ Внимание: При импорте обратно в 1С проверьте кодировку файла. Если использовался Excel, сохраните файл в формате CSV (разделители — запятые) с кодировкой UTF-8, иначе могут появиться «кракозябры».

    Способ 3: Запрос 1С для массового удаления

    Для обработки больших объёмов данных (например, в справочниках Номенклатура или Контрагенты) удобно использовать запрос на языке 1С. Пример кода для удаления кавычек из поля Наименование:

    Запрос = Новый Запрос;
    

    Запрос.Текст =

    "ВЫБРАТЬ

    | Справочник.Номенклатура.Ссылка КАК Ссылка,

    | ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(

    | Справочник.Номенклатура.Наименование,

    | """" "",

    | """"

    | ), ""«"", """"), """" "", """") КАК НовоеНаименование

    |ИЗ

    | Справочник.Номенклатура КАК Справочник.Номенклатура";

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

    Объект = Выборка.Ссылка.ПолучитьОбъект();

    Объект.Наименование = Выборка.НовоеНаименование;

    Объект.Записать();

    КонецЦикла;

    Этот код последовательно удаляет:

    1. Прямые кавычки (" "),
    2. Открывающие «ёлочки» («),
    3. Закрывающие «ёлочки» (»).

    Для других справочников замените Справочник.Номенклатура на нужный объект (например, Справочник.Контрагенты).

    💡

    Перед массовым обновлением сделайте резервную копию базы или протестируйте запрос на копии данных. Это поможет избежать потери информации при ошибках в коде.

    Способ 4: Программная обработка через функцию

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

    Функция УдалитьКавычки(Знач Строка)
    

    // Удаляем все виды кавычек, включая неразрывные

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

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

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

    Строка = СтрЗаменить(Строка, "‘", ""); // Апостроф

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

    Строка = СтрЗаменить(Строка, "„", ""); // Немецкие кавычки

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

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

    Возврат Строка;

    КонецФункции

    Используйте её при загрузке данных:

    НовоеНаименование = УдалитьКавычки(ИсходноеНаименование);

    Преимущество этого метода — гарантированное удаление всех типов кавычек, включая скрытые символы из Word/Excel. Функцию можно расширять, добавляя обработку других непечатаемых символов (например, U+200B — нулевой пробел).

    Тип кавычек Символ Код Unicode Удаляется стандартной заменой?
    Прямые " " U+0022 Да
    «Ёлочки» « » U+00AB, U+00BB Да
    Неразрывные (Word) “ ” U+201C, U+201D Нет
    Апострофы ' ' U+2018, U+2019 Нет

    Способ 5: Настройка обмена данными

    Если кавычки появляются при обмене данными (например, через CommerceML, EnterpriseData или REST API), проблема кроется в настройках интеграции. Вот что можно сделать:

    • 🔧 Правила конвертации: В обработке обмена добавьте шаг предварительной очистки данных с помощью функции УдалитьКавычки() (см. Способ 4).
    • 📥 Настройки импорта: В Универсальном формате обмена (например, для 1С:УТ) проверьте параметр ОбрабатыватьСпецСимволы — он должен быть включён.
    • 🌐 API-интеграции: При получении данных через HTTP-Сервисы добавьте очистку на этапе парсинга JSON/XML:
    Ответ = ПолучитьДанныеИзAPI();
    

    ТекстОтвета = УдалитьКавычки(Ответ.Текст);

    Для CommerceML (обмен с сайтами на 1С-Битрикс или CS-Cart) проверьте настройки ФорматОбмена в конфигурации. Иногда кавычки добавляются как часть CDATA-блоков — их нужно исключить из обработки.

    ⚠️ Внимание: При настройке обмена с внешними системами уточните у разработчиков API, не используются ли кавычки как разделители полей. Их удаление может нарушить структуру данных.

    Частые ошибки и как их избежать

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

    1. Потеря данных: При массовой замене можно случайно удалить дюймы (") в артикулах (например, Монитор 24"). Решение: используйте регулярные выражения или проверяйте контекст замены.
    2. Ошибки в запросах: Если кавычки были частью SQL-выражения, их удаление приведёт к синтаксической ошибке. Проверяйте такие поля отдельно.
    3. Некорректная кодировка: После импорта/экспорта символы могут отображаться как “. Решение: сохраняйте файлы в UTF-8 без BOM.

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

    Как проверить наличие скрытых кавычек?

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

    Для Инд = 1 По СтрДлина(Текст) Цикл
    

    Сообщить(Символ(КодСимвола(Сред(Текст, Инд, 1))));

    КонецЦикла;

    FAQ: Ответы на популярные вопросы

    Можно ли удалить кавычки только в начале и конце строки, а не везде?

    Да, для этого используйте функцию СокрЛП() в комбинации с СтрЗаменить():

    Строка = СокрЛП(Строка);
    

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

    Строка = Сред(Строка, 2);

    КонецЕсли;

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

    Строка = Лев(Строка, СтрДлина(Строка) - 1);

    КонецЕсли;

    Почему после удаления кавычек в отчёте появляются знаки ??

    Это признак некорректной кодировки. Скорее всего, вы сохранили файл в ANSI вместо UTF-8. Откройте его в Блокноте, выберите «Сохранить как» и укажите кодировку UTF-8. В 1С при импорте также проверьте параметр КодировкаФайла.

    Как убрать кавычки в печатной форме документа?

    В печатных формах кавычки часто добавляются автоматически для оформления. Чтобы их убрать:

    1. Откройте макет печатной формы в Конфигураторе.
    2. Найдите поле, где выводятся данные с кавычками.
    3. В свойствах поля установите Формат = "" (пустая строка) или отредактируйте шаблон вывода.

    Если форма на СКД (Система компоновки данных), проверьте настройки Оформление → Пользовательские настройки.

    Кавычки возвращаются после обновления 1С. Что делать?

    Это означает, что кавычки добавляются на уровне конфигурации (например, в обработчике события ПриЗаписи). Найдите процедуру, которая модифицирует поле, и добавьте в неё очистку:

    Процедура ПриЗаписи(Отказ)
    

    Объект.Наименование = УдалитьКавычки(Объект.Наименование);

    КонецПроцедуры

    Если проблема в типовой конфигурации (например, 1С:Бухгалтерия), обратитесь к партнёру 1С для корректного внесения изменений.

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

    Да, для этого:

    1. Создайте обработку заполнения для справочников/документов с триггером на событие ПередЗаписью.
    2. Настройте регламентное задание, которое будет очищать данные по расписанию (например, раз в неделю).
    3. Используйте подписку на событиеБСП) для обработки данных при их изменении.

    Пример кода для регламентного задания:

    Процедура ВыполнитьОчисткуКавычек() Экспорт
    

    Запрос = Новый Запрос;

    Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты";

    // ... (см. Способ 3)

    КонецПроцедуры

    💡

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