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

· 10 мин

Содержание

В поле формы 1С кавычки ставят обычным способом: Shift + 2 в русской или английской раскладке даёт прямую кавычку ", а «ёлочки» вводят Alt-кодами Alt + 0171 и Alt + 0187 на цифровой клавиатуре. В программном коде 1С кавычка внутри строки удваивается: "ООО ""Ромашка""", либо подставляется функцией Символ(34).

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

Какие бывают кавычки и чем они отличаются для 1С

Для человека «Ромашка» и “Ромашка” — одно и то же название. Для программы это разные символы с разными кодами. 1С сравнивает строки посимвольно, поэтому ООО "Ромашка" и ООО «Ромашка» в справочнике будут двумя разными наименованиями.

ВидСимволКод Unicode (десятичный)Где встречается
Прямая («машинописная»)"34клавиатура, выписки ЕГРЮЛ, код 1С
Ёлочки открывающая / закрывающая« »171 / 187договоры, официальные документы
Лапки открывающая / закрывающая„ “8222 / 8220вложенные кавычки в русском тексте
Английские двойные“ ”8220 / 8221текст из Word, почты, сайтов
Апостроф'39литералы дат и строки формата в 1С

💡 Отдельно про апостроф. В языке 1С он не заменяет двойную кавычку: строку в одинарных кавычках платформа не поймёт. Апостроф нужен для литерала даты ('20260101') и для значений внутри строки формата.

Ввод кавычек в поля форм и справочников

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

Прямые кавычки

  • ⌨️ Русская раскладка: Shift + 2.
  • ⌨️ Английская раскладка: Shift + ' (клавиша с буквой Э).

Это самый частый вариант. Если реквизиты контрагента заполняются по ИНН из сервиса, наименование обычно приходит в том виде, как оно записано в ЕГРЮЛ, то есть с прямыми кавычками.

«Ёлочки» и другие типографские кавычки

  1. Включите NumLock.
  2. Зажмите Alt.
  3. Наберите на цифровом блоке справа 0171 и отпустите Alt — появится «.
  4. Для закрывающей наберите Alt + 0187 — появится ».

Коды для остальных видов: Alt + 0132 даёт „, Alt + 0147 — “, Alt + 0148 — ”. Это коды старой кодовой страницы Windows-1251, система переведёт их в правильный символ Unicode.

На ноутбуке без цифрового блока Alt-коды не работают. Варианты:

  • 🔣 Win + . (точка) в Windows 10 и 11 открывает панель эмодзи, в ней есть вкладка символов с кавычками;
  • 🔣 стандартная программа «Таблица символов» (charmap в окне «Выполнить»): выбрать символ, скопировать, вставить в поле 1С;
  • 🔣 типографская раскладка (например, раскладка Бирмана), где «ёлочки» назначены на AltGr с клавишами;
  • 🔣 скопировать готовые « » из любого документа.

Договоритесь в компании об одном виде кавычек для наименований. Если половина контрагентов записана с прямыми кавычками, а половина с «ёлочками», поиск по списку и проверка на дубли начнут промахиваться: ООО “Вектор” и ООО «Вектор» не совпадут.

Кавычки при поиске в списке

Строка поиска в списке справочника ищет по вхождению. Поэтому кавычки в запросе поиска лучше вообще не набирать: введите Ромашка без кавычек, и программа найдёт контрагента, как бы ни были записаны кавычки в его наименовании.

Кавычки в строках кода и текстах запросов

В языке 1С строка ограничивается двойными кавычками. Чтобы кавычка оказалась внутри строки, её пишут дважды подряд. Это главный приём, который нужно запомнить.

Наименование = "ООО ""Ромашка""";
// В переменной: ООО "Ромашка"

Сообщить("Нажмите кнопку ""Провести""");
// На экране: Нажмите кнопку "Провести"

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

Пустая строка записывается как "", а строка из одной кавычки — как """" (четыре символа).

Многострочные тексты

Многострочный литерал продолжается с вертикальной чертой в начале строки, правило удвоения остаётся прежним:

Текст = "Покупатель: ООО ""Ромашка""
|Основание: договор ""Поставка-12""";

Кавычки в тексте запроса

Текст запроса — тоже строка кода, поэтому все кавычки внутри него удваиваются:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|	Контрагенты.Ссылка
|ИЗ
|	Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|	Контрагенты.Код = ""000000001""";

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

Запрос.Текст =
"ВЫБРАТЬ
|	Контрагенты.Ссылка
|ИЗ
|	Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|	Контрагенты.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование", "ООО ""Ромашка""");

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

Где в коде нужны одинарные кавычки

Внутри строки формата значения параметров берутся в апострофы:

Формат(ТекущаяДата(), "ДФ='dd.MM.yyyy'");
Формат(1234.5, "ЧДЦ=2; ЧРД=','");

То же в функции НСтр: НСтр("ru = 'Документ проведён'"). Сюда двойные кавычки ставить нельзя, они закроют весь литерал.

Подстановка в шаблон

Когда название приходит из переменной, удобно собирать строку через СтрШаблон (есть в платформе 8.3.6 и новее):

Текст = СтрШаблон("Договор с ООО ""%1"" от %2", ИмяКонтрагента, Формат(ДатаДоговора, "ДЛФ=D"));

Символ(34), Символ(171) и другие функции для кавычек

Если удвоение кавычек путает, кавычку можно получить по коду. Функция Символ(Код) возвращает символ с указанным кодом Unicode, функция КодСимвола(Строка, Позиция) делает обратное.

Кавычка = Символ(34);           // "
ЁлочкаОткр = Символ(171);       // «
ЁлочкаЗакр = Символ(187);       // »
ЛапкаОткр = Символ(8222);       // „
ЛапкаЗакр = Символ(8220);       // “

Наименование = "ООО " + ЁлочкаОткр + "Ромашка" + ЁлочкаЗакр;
// ООО «Ромашка»

Код = КодСимвола(Наименование, 5); // 171

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

Узнать, какая кавычка на самом деле сидит в наименовании, помогает КодСимвола. Это первое, что стоит сделать, когда две «одинаковые» строки не совпадают при сравнении.

Автозамена: что делает платформа и что делают другие программы

Платформа 1С:Предприятие в полях ввода кавычки не заменяет: никакой «умной» замены прямых кавычек на «ёлочки», как в Word, в ней нет. Разные кавычки в базе появляются из внешних источников:

  • 📄 Word и Outlook по умолчанию меняют прямые кавычки на типографские. Текст, скопированный из договора в Word, придёт в 1С уже с « » или “ ”;
  • 🌐 сайты и мессенджеры часто отдают английские “ ”;
  • 📥 загрузка из Excel или CSV переносит те кавычки, которые были в файле;
  • ⌨️ программы-переключатели раскладки умеют подменять символы при наборе.

Если в базе нужен один вид кавычек, самый надёжный путь — привести данные к нему программно, а при ручном вводе следить за источником копирования. В Word автозамену отключают в параметрах автозамены, пункт о замене прямых кавычек парными.

Как привести прямые кавычки к «ёлочкам» кодом

Простая замена СтрЗаменить(Текст, """", "«") сделает все кавычки открывающими. Нужна функция, которая отличает открывающую кавычку от закрывающей. Рабочее правило: кавычка открывающая, если перед ней начало строки, пробел, скобка или другая открывающая кавычка; во всех остальных случаях — закрывающая.

Функция КавычкиВЁлочки(Знач Текст) Экспорт

	Открывающие = " («" + Символы.ПС + Символы.Таб + Символы.НПП;
	Результат = "";
	Предыдущий = " ";

	Для Н = 1 По СтрДлина(Текст) Цикл
		С = Сред(Текст, Н, 1);
		Если С = """" Тогда
			Если СтрНайти(Открывающие, Предыдущий) > 0 Тогда
				С = "«";
			Иначе
				С = "»";
			КонецЕсли;
		КонецЕсли;
		Результат = Результат + С;
		Предыдущий = С;
	КонецЦикла;

	Возврат Результат;

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

Проверка на примерах:

Исходная строкаРезультат
ООО "Ромашка"ООО «Ромашка»
АО "Фирма "Вектор""АО «Фирма «Вектор»»
"Север" (г. Мурманск)«Север» (г. Мурманск)

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

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

Кавычки в печатных формах и при выгрузке в файлы

Текст в макете

В макете табличного документа текст ячейки вводится как в поле формы: кавычки ставятся с клавиатуры или Alt-кодами, удваивать их не нужно. Удвоение нужно только в коде модуля, а ячейка макета — это не литерал.

Если ячейка заполняется параметром (вид заполнения «Параметр» или «Шаблон» с [ИмяПараметра]), в документ попадёт ровно то, что лежит в данных. Значит, вид кавычек в печатной форме определяется тем, как записано наименование в справочнике.

Чтобы договор печатался с «ёлочками» без изменения справочника, пропустите значение через функцию преобразования перед заполнением параметра:

Область.Параметры.Покупатель = КавычкиВЁлочки(Строка(Покупатель));

В типовых конфигурациях печатные формы лучше дорабатывать в расширении конфигурации или подключить свою внешнюю печатную форму. Правка типового макета прямо в конфигурации снимает её с полной поддержки и усложняет обновления.

Кавычки в выгрузке JSON, XML и CSV

ФорматЧто происходит с кавычкамиЧто делать
JSON (ЗаписьJSON)кавычка внутри значения экранируется автоматически как \"ничего, записывать значение как есть
XML (ЗаписьXML)спецсимволы в значениях атрибутов экранируются автоматическине вставлять " вручную
CSV через ЗаписьТекстаплатформа ничего не экранируетзначение с кавычкой или разделителем обернуть в кавычки, внутренние удвоить
Табличный документ в Excelкавычки сохраняются как текст ячейкиобработка не нужна

Ручное экранирование поверх автоматического — частая ошибка. Если в JSON заранее написать \", библиотека экранирует ещё и обратную косую черту, и получатель увидит в названии мусор.

Для CSV правило такое: поле ООО "Ромашка" записывается как "ООО ""Ромашка""". Функция для этого короткая:

Функция ПолеCSV(Знач Значение)
	Возврат """" + СтрЗаменить(Значение, """", """""") + """";
КонецФункции

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

Диагностика: выберите симптом

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

Когда нужно сопоставить контрагента из файла банка или загрузки с записью в базе, приведите обе строки к одному виду:

Функция БезКавычек(Знач Текст)
	Для Каждого Код Из СтрРазделить("34,171,187,8220,8221,8222", ",") Цикл
		Текст = СтрЗаменить(Текст, Символ(Число(Код)), "");
	КонецЦикла;
	Возврат СокрЛП(ВРег(Текст));
КонецФункции

После такой очистки ООО "Ромашка", ООО «Ромашка» и ооо “Ромашка” превращаются в одну строку ООО РОМАШКА. Для поиска и проверки на дубли этого достаточно. Сохранять в базу очищенное значение не нужно, оно только для сравнения.

Частые ошибки

  • ❌ Писать строку в апострофах по привычке из других языков: 'Текст'. В 1С это литерал даты, модуль не скомпилируется.
  • ❌ Удваивать кавычки в ячейке макета. Там кавычка обычный символ, и в документе появятся две кавычки подряд.
  • ❌ Заменять все прямые кавычки на одну «ёлочку» через СтрЗаменить. Получится «Ромашка« с двумя открывающими.
  • ❌ Склеивать значения с кавычками прямо в текст запроса вместо параметра.
  • ❌ Чинить кавычки в справочнике, не проверив обмены, которые ищут контрагентов по наименованию.

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

Можно ли настроить 1С, чтобы она сама ставила «ёлочки» при вводе?
Штатной настройки автозамены кавычек в платформе нет. Варианты: типографская раскладка клавиатуры, Alt-коды или доработка, которая преобразует наименование при записи элемента справочника.
Какой код у прямой кавычки в 1С?
  1. Получить её можно через Символ(34), а проверить код символа в строке — функцией КодСимвола.
Как записать в коде строку, состоящую из одной кавычки?
Четырьмя кавычками подряд: “”"". Внешние две ограничивают литерал, внутренняя пара даёт одну кавычку.
Влияют ли кавычки в наименовании на выгрузку отчётности и счетов-фактур?
При формировании XML платформа экранирует кавычки автоматически, файл остаётся корректным. Главное, чтобы наименование покупателя и продавца соответствовало учредительным документам и ЕГРЮЛ.
Почему в Конфигураторе строка подсвечивается неправильно после вставки текста?
Скорее всего, в тексте есть одиночная кавычка, которая закрыла литерал. Удвойте её или вставьте текст через конструктор запроса, если это запрос.