Ввод специальных символов в 1С 8.3: все рабочие способы
Содержание
Чаще всего думают, что для знака номера №, градуса ° или длинного тире — в 1С нужна какая-то особая кнопка. Её нет — и не нужно. Любой символ Юникода вставляется в 1С тремя стандартными приёмами: через таблицу символов Windows, Alt-кодом с цифровой клавиатуры или функцией Символ() в коде.
Какой способ выбрать — зависит от того, куда вы ставите знак. В поле документа или справочника быстрее Alt-код или вставка из буфера. В модуле, запросе или печатной форме — функция Символ() с числовым кодом. Разберём каждый вариант с готовыми кодами популярных знаков.
Таблица символов Windows: работает из любого поля
В самой 1С отдельного окна-генератора символов нет. Зато в Windows есть служебная Таблица символов (charmap), и вставить из неё знак можно в любое поле 1С — реквизит справочника, строку табличной части, комментарий, ячейку табличного документа.
Порядок такой:
- Нажмите
Win+R, введитеcharmapи нажмите Enter. - В списке Шрифт выберите тот же шрифт, что используется в поле (обычно подойдёт
ArialилиTimes New Roman— в них есть почти все знаки). - Найдите нужный символ, дважды кликните по нему — он попадёт в строку Для копирования.
- Нажмите Копировать, вернитесь в 1С и вставьте знак сочетанием
Ctrl+V.
Поставьте галочку Дополнительные параметры просмотра внизу окна. Появится поиск: можно искать знак по имени (например, «numero») или перейти к коду Юникода напрямую.
Способ медленный, но подходит для разового ввода и не требует помнить числовые коды. Если знаков нужно несколько, выбирайте их по очереди двойным кликом — они накапливаются в строке для копирования, и вставить можно всё сразу.
Таблица символов не зависит от 1С и одинаково работает в любой версии платформы и любой конфигурации — от Бухгалтерии до УНФ. Если один и тот же знак нужен регулярно, запомните его Alt-код и вводите напрямую, не открывая отдельное окно.
Alt-коды: быстрый ввод с цифровой клавиатуры
Alt-код — это ввод символа по его числу: удерживаете левую клавишу Alt и набираете код на цифровом блоке справа (NumLock должен быть включён). Отпускаете Alt — знак появляется в поле.
Важна одна деталь, из-за которой чаще всего получают не тот символ:
Код с ведущим нулём (Alt+0151) использует кодировку Windows-1251 — именно её и нужно применять в 1С на русской раскладке. Без ведущего нуля код читается в старой кодировке cp866, и символ выйдет совсем другим. Всегда набирайте код с нулём впереди.
Ряды цифр над буквами для Alt-кодов не работают — только отдельный цифровой блок.
Сам принцип простой:
- Включите NumLock (индикатор на клавиатуре должен гореть).
- Зажмите левую клавишу
Altи не отпускайте. - Наберите код на цифровом блоке, обязательно начиная с нуля — например
0151для длинного тире. - Отпустите
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) + Данные.Номер;
Два момента, из-за которых знак в печатной форме «пропадает»:
- Шрифт ячейки не содержит глиф. Проверьте свойство шрифта ячейки — задайте распространённый шрифт (
Arial,Times New Roman,Calibri), в них есть почти все нужные знаки. Редкие символы декоративных шрифтов при печати часто превращаются в пустой прямоугольник. - Выгрузка в Excel или PDF. Табличный документ 1С хранит текст в Юникоде, поэтому при сохранении в
xlsxилиpdfзнаки переносятся корректно. Проблемы бывают только со старым форматомxlsи экзотическими шрифтами — используйте современный формат выгрузки.
Отдельный приём для сумм и единиц измерения в печатных формах — неразрывный пробел Символ(160). Он не даёт разорвать «100 руб.» или «15 °C» между строками: число и то, что к нему относится, всегда останутся вместе. Обычный пробел такой гарантии не даёт.
Правки в типовой макет лучше делать не снятием конфигурации с поддержки, а через расширение конфигурации. Так изменения не слетят при обновлении и их проще откатить.
Что делать, если символ не отображается
Если вместо знака в поле или форме виден прямоугольник □, знак вопроса ? или «кракозябры» — дело почти всегда в двух причинах: шрифт без нужного глифа или неверная кодировка при обмене с внешним файлом.
При записи и чтении текстовых файлов кодировку задают явно:
Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
Запись.ЗаписатьСтроку("Договор " + Символ(8470) + Номер);
Запись.Закрыть();
Отдельный случай — вставка из Word или с веб-страницы. Текстовый редактор часто подменяет обычные кавычки и дефисы своими «типографскими» знаками из другого шрифта. Внешне разницы не видно, но при сравнении строк или поиске такой текст не совпадёт с набранным вручную. Если точность важна, вставляйте через «Специальная вставка → Текст» или вводите знаки заново Alt-кодом.
Платформа 1С 8.3 внутри работает в Юникоде, поэтому сам знак в базе не «ломается» — искажение появляется только на границе с внешним файлом, буфером обмена или шрифтом. Проверяйте эти точки, и символ отобразится там, где нужно.
Частые вопросы
Как в 1С поставить знак номера `№`?
Alt+0185 на цифровом блоке или вставкой из таблицы символов Windows. В коде — Символ(8470).Почему Alt-код вставляет не тот символ?
Alt+0151, а не Alt+151) и только на цифровом блоке с включённым NumLock.Как вставить символ в запросе или модуле?
Символ(код) с десятичным номером Юникода, например Символ(176) для градуса. Для переноса строки и табуляции используйте набор Символы (Символы.ПС, Символы.Таб).Как сделать перенос строки внутри одного поля?
Shift+Enter. В коде при сборке строки — добавить Символы.ПС между частями текста.Знак виден на экране, но пропадает при печати. Что не так?
Arial, Times New Roman) — и символ напечатается.