Как экранировать точку с запятой в строках 1С?

Программист IT и автоматизация бизнеса
← На главную

При написании программного кода на встроенном языке 1С разработчики часто сталкиваются с необходимостью экранирования специальных символов. Классический пример — двойные кавычки, которые для включения в текст строкового литерала требуется удваивать. Из-за этого нередко возникает вопрос: нужно ли экранировать точку с запятой (;), ведь во встроенном языке она служит разделителем операторов и выражений?

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

Точка с запятой в строковых литералах встроенного языка 1С

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

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


// Символ ";" не требует экранирования внутри строкового литерала
МояСтрока = "Первая часть; Вторая часть; Третья часть;";
Сообщить(МояСтрока);

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

Особые сценарии обработки точки с запятой

Рассмотрим типовые прикладные задачи, в которых точка с запятой имеет специальное назначение и требует экранирования или специального оформления:

  1. Форматные строки (функция Формат)

    В строке формата точка с запятой служит разделителем директив форматирования (например, ЧДЦ=2; ЧГ=0). Если вам необходимо вывести точку с запятой в составе текстового представления (например, в параметре пустой даты ДФ или нулевого числа ЧН), такое значение обязательно заключается в одинарные кавычки:

    
    // Точка с запятой внутри значения параметра обособляется одинарными кавычками
    СтрокаРезультат = Формат(0, "ЧН='нет; данных'");
    
  2. Формирование файлов CSV

    В русскоязычной локализации точка с запятой традиционно выступает стандартным разделителем колонок. Если само текстовое поле содержит точку с запятой, по стандарту CSV такое поле должно быть целиком заключено в двойные кавычки. Если внутри текста уже есть кавычки, они удваиваются:

    
    ЗначениеКолонки = "ООО ""Рога; и Копыта""";
    // Оборачиваем поле в кавычки для корректного чтения парсерами CSV
    ТекстДляCSV = """" + СтрЗаменить(ЗначениеКолонки, """", """""") + """";
    
  3. Параметры в URL и HTTP-запросах

    В веб-стандартах точка с запятой относится к зарезервированным символам. При формировании адресов запросов для передачи точки с запятой в параметрах необходимо использовать процентное кодирование (URL-encode), где символ заменяется на последовательность %3B. В платформе 1С для этого используем метод КодироватьСтроку:

    
    СтрокаПараметра = "параметр;значение";
    ЗакодированнаяСтрока = КодироватьСтроку(СтрокаПараметра, СпособКодированияСтроки.КодировкаURL);
    
  4. Строки соединения информационной базы

    При подключении через COM-соединение или передаче параметров пакетного запуска точка с запятой разделяет параметры подключения (например, File="..."; Usr="...";). Если значение одного из параметров (например, пароль пользователя) содержит точку с запятой, значение этого параметра обязательно должно быть обрамлено в кавычки.

  5. Запуск внешних команд через командную строку

    При вызове метода ЗапуститьПриложение() точка с запятой может восприниматься командной оболочкой операционной системы как символ завершения команды. Чтобы избежать некорректного выполнения команд, аргументы, содержащие данный знак, заключаем в двойные кавычки.

  6. Программная сборка текстов по коду символа

    Если при динамической генерации скриптов или выражений вам необходимо гарантированно избежать визуальной путаницы с кавычками и разделителями, символ точки с запятой можно получить системной функцией через его ASCII-код: Символ(59).

Резюме: в самом тексте модуля 1С внутри двойных кавычек точка с запятой не экранируется. Необходимость в экранировании или обрамлении кавычками возникает только при передаче строк во внешние механизмы: форматные строки, разметку CSV, URL-запросы и параметры запуска.

← На главную