Ввод специальных символов в 1С 8.3: все рабочие способы

· 9 мин

Содержание

Чаще всего думают, что для знака номера №, градуса ° или длинного тире — в 1С нужна какая-то особая кнопка. Её нет — и не нужно. Любой символ Юникода вставляется в 1С тремя стандартными приёмами: через таблицу символов Windows, Alt-кодом с цифровой клавиатуры или функцией Символ() в коде.

Какой способ выбрать — зависит от того, куда вы ставите знак. В поле документа или справочника быстрее Alt-код или вставка из буфера. В модуле, запросе или печатной форме — функция Символ() с числовым кодом. Разберём каждый вариант с готовыми кодами популярных знаков.

Таблица символов Windows: работает из любого поля

В самой 1С отдельного окна-генератора символов нет. Зато в Windows есть служебная Таблица символов (charmap), и вставить из неё знак можно в любое поле 1С — реквизит справочника, строку табличной части, комментарий, ячейку табличного документа.

Порядок такой:

  1. Нажмите Win+R, введите charmap и нажмите Enter.
  2. В списке Шрифт выберите тот же шрифт, что используется в поле (обычно подойдёт Arial или Times New Roman — в них есть почти все знаки).
  3. Найдите нужный символ, дважды кликните по нему — он попадёт в строку Для копирования.
  4. Нажмите Копировать, вернитесь в 1С и вставьте знак сочетанием Ctrl+V.

Поставьте галочку Дополнительные параметры просмотра внизу окна. Появится поиск: можно искать знак по имени (например, «numero») или перейти к коду Юникода напрямую.

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

Таблица символов не зависит от 1С и одинаково работает в любой версии платформы и любой конфигурации — от Бухгалтерии до УНФ. Если один и тот же знак нужен регулярно, запомните его Alt-код и вводите напрямую, не открывая отдельное окно.

Alt-коды: быстрый ввод с цифровой клавиатуры

Alt-код — это ввод символа по его числу: удерживаете левую клавишу Alt и набираете код на цифровом блоке справа (NumLock должен быть включён). Отпускаете Alt — знак появляется в поле.

Важна одна деталь, из-за которой чаще всего получают не тот символ:

Код с ведущим нулём (Alt+0151) использует кодировку Windows-1251 — именно её и нужно применять в 1С на русской раскладке. Без ведущего нуля код читается в старой кодировке cp866, и символ выйдет совсем другим. Всегда набирайте код с нулём впереди.

Ряды цифр над буквами для Alt-кодов не работают — только отдельный цифровой блок.

Сам принцип простой:

  1. Включите NumLock (индикатор на клавиатуре должен гореть).
  2. Зажмите левую клавишу Alt и не отпускайте.
  3. Наберите код на цифровом блоке, обязательно начиная с нуля — например 0151 для длинного тире.
  4. Отпустите Alt — в поле появится символ.

Один и тот же код в разных кодировках даёт разные знаки. Поэтому для 1С на русской системе работает только вариант с ведущим нулём (Windows-1251). Коды без нуля относятся к кодировке cp866 и для набора спецзнаков в полях практически не используются.

На ноутбуке без цифрового блока Alt-коды обычно недоступны. Используйте таблицу символов Windows или функцию Символ() в коде.

Готовая таблица популярных знаков и их кодов

Собрал в одну таблицу знаки, которые в 1С нужны чаще всего: Alt-код для ручного ввода в поле и код для функции Символ() в модуле.

ЗнакНазваниеAlt-кодСимвол()
№НомерAlt+0185Символ(8470)
—Тире (длинное)Alt+0151Символ(8212)
–Короткое тиреAlt+0150Символ(8211)
« »Кавычки-ёлочкиAlt+0171 / Alt+0187Символ(171) / Символ(187)
°ГрадусAlt+0176Символ(176)
±Плюс-минусAlt+0177Символ(177)
©КопирайтAlt+0169Символ(169)
®ЗарегистрированныйAlt+0174Символ(174)
™Торговая маркаAlt+0153Символ(8482)
€ЕвроAlt+0136Символ(8364)
…МноготочиеAlt+0133Символ(8230)
·Средняя точкаAlt+0183Символ(183)

Коды для Символ() — это десятичные номера Юникода. Коды Alt приведены в варианте Windows-1251 (с ведущим нулём). Распечатайте эту таблицу или держите под рукой — три-четыре знака из неё покрывают почти все задачи при оформлении договоров, актов и наименований номенклатуры.

Функция Символ() и набор Символы в коде

Когда знак нужно подставить программно — в модуле, запросе или при сборке строки — работает встроенная функция Символ(). Она принимает числовой код Юникода и возвращает один символ.

// Знак номера перед номером документа
Заголовок = Символ(8470) + " " + Ссылка.Номер;

// Неразрывный пробел между числом и единицей измерения
Текст = "100" + Символ(160) + "руб.";

// Температура с градусом
Строка = Формат(Значение, "ЧДЦ=1") + Символ(176) + "C";

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

// Перенос строки в многострочном поле
Комментарий = "Первая строка" + Символы.ПС + "Вторая строка";

// Склейка через табуляцию
Строка = Поле1 + Символы.Таб + Поле2;

Чаще всего применяют четыре элемента набора:

  • 🔹 Символы.ПС — перевод строки (код 10);
  • 🔹 Символы.ВК — возврат каретки (код 13);
  • 🔹 Символы.Таб — табуляция (код 9);
  • 🔹 Символы.НПП — неразрывный пробел (код 160).

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

Если нужно наоборот — узнать код уже введённого знака, примените КодСимвола("№"): функция вернёт число, которое затем можно передать в Символ(). Это удобно, когда символ пришёл из внешнего источника и непонятно, что именно за знак в строке.

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

Разделитель = "";
Для Сч = 1 По 40 Цикл
    Разделитель = Разделитель + Символ(9472); // горизонтальная линия ─
КонецЦикла;

Коды Юникода до 127 совпадают с латиницей и цифрами, поэтому Символ(65) вернёт A, а Символ(48) — 0. Для спецзнаков коды начинаются примерно со 160.

Знак рубля и другие валютные символы

Со знаком рубля ₽ отдельная история: его добавили в стандарты позже, и в кодировке Windows-1251 его просто нет. Поэтому надёжного Alt-кода у рубля не существует — вставляйте его через таблицу символов Windows или функцией Символ(8381).

С остальными валютами проще:

ЗнакВалютаAlt-кодСимвол()
₽Рубль— (нет в cp1251)Символ(8381)
€ЕвроAlt+0136Символ(8364)
$Долларесть на клавиатуреСимвол(36)
¢Цент—Символ(162)
£Фунт—Символ(163)

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

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

Символы в макетах и печатных формах

В макете табличного документа (конфигуратор или расширение конфигурации ) знак ставится прямо в ячейку. Если на клавиатуре его нет — скопируйте из таблицы символов Windows и вставьте в ячейку, как обычный текст.

Для значений, которые подставляются при печати, символ добавляют в код заполнения:

Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Номер = Символ(8470) + Данные.Номер;

Два момента, из-за которых знак в печатной форме «пропадает»:

  1. Шрифт ячейки не содержит глиф. Проверьте свойство шрифта ячейки — задайте распространённый шрифт (Arial, Times New Roman, Calibri), в них есть почти все нужные знаки. Редкие символы декоративных шрифтов при печати часто превращаются в пустой прямоугольник.
  2. Выгрузка в Excel или PDF. Табличный документ 1С хранит текст в Юникоде, поэтому при сохранении в xlsx или pdf знаки переносятся корректно. Проблемы бывают только со старым форматом xls и экзотическими шрифтами — используйте современный формат выгрузки.

Отдельный приём для сумм и единиц измерения в печатных формах — неразрывный пробел Символ(160). Он не даёт разорвать «100 руб.» или «15 °C» между строками: число и то, что к нему относится, всегда останутся вместе. Обычный пробел такой гарантии не даёт.

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

Что делать, если символ не отображается

Если вместо знака в поле или форме виден прямоугольник □, знак вопроса ? или «кракозябры» — дело почти всегда в двух причинах: шрифт без нужного глифа или неверная кодировка при обмене с внешним файлом.

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

При записи и чтении текстовых файлов кодировку задают явно:

Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
Запись.ЗаписатьСтроку("Договор " + Символ(8470) + Номер);
Запись.Закрыть();

Отдельный случай — вставка из Word или с веб-страницы. Текстовый редактор часто подменяет обычные кавычки и дефисы своими «типографскими» знаками из другого шрифта. Внешне разницы не видно, но при сравнении строк или поиске такой текст не совпадёт с набранным вручную. Если точность важна, вставляйте через «Специальная вставка → Текст» или вводите знаки заново Alt-кодом.

Платформа 1С 8.3 внутри работает в Юникоде, поэтому сам знак в базе не «ломается» — искажение появляется только на границе с внешним файлом, буфером обмена или шрифтом. Проверяйте эти точки, и символ отобразится там, где нужно.

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

Как в 1С поставить знак номера `№`?
В поле — Alt+0185 на цифровом блоке или вставкой из таблицы символов Windows. В коде — Символ(8470).
Почему Alt-код вставляет не тот символ?
Код набран без ведущего нуля — тогда он читается в старой кодировке cp866. Набирайте с нулём впереди (Alt+0151, а не Alt+151) и только на цифровом блоке с включённым NumLock.
Как вставить символ в запросе или модуле?
Через функцию Символ(код) с десятичным номером Юникода, например Символ(176) для градуса. Для переноса строки и табуляции используйте набор Символы (Символы.ПС, Символы.Таб).
Как сделать перенос строки внутри одного поля?
В многострочном поле — сочетанием Shift+Enter. В коде при сборке строки — добавить Символы.ПС между частями текста.
Знак виден на экране, но пропадает при печати. Что не так?
Шрифт ячейки макета не содержит этот глиф. Смените шрифт ячейки на стандартный (Arial, Times New Roman) — и символ напечатается.