Содержание

Спецсимволы в 1С – расшифровка часто используемых символов

Содержание:

1.      Специальные символы для строки в программе 1С

2.       Расшифровка спецсимволов в программе 1С Бухгалтерия Предприятия

1.      Специальные символы для строки в программе 1С

Строка считается одним из простых типов реквизита в 1С Бухгалтерия. Этот тип используется практически везде в системе и потому для удобного обращения с ним, было добавлено большое количество инструментов, которые помогают нам при работе со строкой.

В данном случае мы поговорим о спецсимволах 1С для строк.

Строка может быть как однострочная, так и многострочная, все зависит от настроек программы 1С и необходимости в разрезе задачи.

Итак, что такое спецсимволы 1С? Это особые методы глобального действия «Символы», имеющие свой список выполняемых символов:

·         ВК;

·         ВТаб;

·         НПП;

·         ПС;

·         ПФ;

·         Таб.  

2. Расшифровка спецсимволов в программе 1С Бухгалтерия Предприятия

Далее поговорим подробнее о каждом. И начнем мы со спецсимвола «ВК». Он используется для возврата каретки (или курсора) на начало строки. Вполне удобно, если, например, идет отправка электронного письма из программы 1С Бухгалтерия Предприятия — в таком случае пользователь может добавить какой-то текст с новой строки, не заданный программой.

«ВТаб» — это спецсимвол, относящийся к табуляции. Если в коде имеется такой символ, то создается строка с вертикальной табуляцией для движения по строкам вниз, которые находятся в одной колонке.

«НПП» – это всего лишь неразрывный пробел. Его часто используют в строках числового типа, для разделения знаков в больших числах пробелом.

Мой любимый и довольно часто используемый метод – «ПС». Это символ переноса строки 1С. К примеру, у нас есть большая по длине строка, которую корректнее было бы частично перенести на новую строку. В таких случаях и используется «ПС». Кроме того, его можно использовать и с другими методами, например, с «ВК». При их совместном использовании каретка будет установлена в начале строки. И это всего лишь один из примеров применения «ПС».

Далее – «ПФ». За что отвечает этот инструмент? Все просто: этот метод отвечает за печать с нового листа. То есть если в коде есть этот метод, а именно в печати, то печать начинает выполняться заново и с нового листа.

И вот мы подошли к последнему в списке спецсимволу – «Таб». Этот метод аналогичен методу «ВТаб», но отвечает за горизонтальную табуляцию согласно определенному шагу в строке.

В 1С довольно много инструментов для работы с типом Строка. Очень полезно подробно изучить их и ак5тивно использовать, так как они существенно облегают работу специалисту.

Специалист компании ООО «Кодерлайн»

Мороз Олег Игоревич

Символы ВК, ВТаб, НПП, ПС, ПФ, Таб в 1С 8.3

Специальные символы в 1С 8.3 — набор специальных символов для строковых типов данных.

Рассмотрим каждый из них подробнее.

Специальные символы в 1С: ВК, ВТаб, НПП, ПС, ПФ, Таб

Спецсимволы вызываются с помощью глобального свойства «Символы», например:

Текст = «Текст до табуляции» + Символы.Таб + » текст после табуляции»;

  • ВК (CR) — возврат каретки. В старые времена на матричных или ромашковых принтерах этот код символа использовался как команда, которая возвращала печатающую головку в начало строки.
  • НПП (NBSp) — неразрывный пробел (часто можно увидеть в строках числового вида, например: 1 000).
  • ПС (LF) — Перевод строки (LF — linefeed) — прокручиваем барабан на одну строку вниз, печатающая головка на том же месте.
  • ПФ (FF) — перевод формата. Лист выбрасывается из принтера, печать начинается с нового листа.
  • Таб (Tab) — символ табуляции. Горизонтальная табуляция — способ спозиционироваться для печати на ближайшую колонку, кратную какому-либо числу (например, на 8, 16, 24 …).
  • ВТаб (VTab) — вертикальная табуляция. Аналогична горизонтальной, только позиционируемся на строку. Вызывает некоторую прокрутку барабана принтера (печатающая головка остается на той же позиции (колонке)!)

ПС + ВК — это комбинация, которая выполняет две операции: прокручивает барабан на строку вниз и возвращает печатающую каретку в начало строки, что соответствует тому, что пользователь ожидает получить, нажимая на Enter.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте

подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Строки в языке 1С 8.3, 8.2 (в примерах)

&НаКлиенте
Процедура ВыполнитьКод(Команда)
 
    /// Как найти длину строки в 1с 8.3, 8.2
 
    Сообщить(СтрДлина("123456789")); // 9
 
    /// Как взять часть строки в 1с 8.3, 8.2
 
    // как взять N символов слева
    Строка = "Иван Грозный";
    Сообщить(Лев(Строка, 4)); // Иван
 
    // как взять N символов справа
    Строка = "Иван Грозный";
    Сообщить(Прав(Строка, 7)); // Грозный
 
    // как взять строку из середины
    Строка = "Мама, папа, я.";
    // возьмём начиная с 7 индекса 4 символа
    Сообщить(Сред(Строка, 7, 4)); // папа
 
    /// Как найти подстроку в 1с 8.3, 8.2
 
    Строка = "Привет, мир!";
    Индекс = СтрНайти(Строка, "Привет"); // 1, строки индексируются с единицы
 
    /// Как узнать число вхождений подстроки в строку в 1с 8.3, 8.2
 
    Сообщить(СтрЧислоВхождений("я, я и ещё раз я.", "я")); // 3
 
    /// Как заменить подстроку в строке в 1с 8.3, 8.2
 
    Сообщить(СтрЗаменить("Идёт сильный дождь.", "дождь", "снег"));
 
    /// Как проверить на пустую строку в 1с 8.3, 8.2
 
    Если ПустаяСтрока("         ") Тогда
        Сообщить("Строка пустая, то есть не содержит значащих символов.");
    КонецЕсли;
 
    /// Как удалить незначащие символы из строки в 1с 8.3, 8.2
 
    // слева
    Сообщить(СокрЛ("   из лесу ёлочку    ")); // "из лесу ёлочку    "
    // справа
    Сообщить(СокрП("   из лесу ёлочку    ")); // "   из лесу ёлочку"
    // с двух сторон
    Сообщить(СокрЛП("   из лесу ёлочку    ")); // "из лесу ёлочку"
 
    /// Как вставить в строку перенос в 1с 8.3, 8.2
 
    Строка =
        "Первая строка" + Символы.ПС +
        "Вторая строка" + Символы.ПС +
        "Третья строка";
 
    /// Как работать с многострочными строками (нумерация с 
    /// единицы) в 1с 8.3, 8.2
 
    Сообщить(СтрЧислоСтрок(Строка)); // 3
    Сообщить(СтрПолучитьСтроку(Строка, 2)); // "Вторая строка"
 
    /// Верхний, нижний и титульный регистры в 1с 8.3, 8.2
 
    Сообщить(ВРег("россия - родина моя!")); // РОССИЯ - РОДИНА МОЯ!
    Сообщить(НРег("МИР, ТРУД, МАЙ!")); // мир, труд, май
    Сообщить(ТРег("мама мыла раму")); // Мама Мыла Раму
 
    /// Как получить код символа строки в 1с 8.3, 8.2
 
    // код отдельного символа:
    //   туда
    Сообщить(КодСимвола("A")); // 65
    //   и обратно
    Сообщить(Символ(65)); // "A"
 
    // код третьего символа в строке
    Сообщить(КодСимвола("ABC", 3)); //67
 
    // код первого символа в строке
    КодПервогоСимволаФамилии = КодСимвола("Грозный");
    Сообщить(КодПервогоСимволаФамилии); // 1043, потому что Unicode.
 
    /// Как преобразовать строку в число в 1с 8.3, 8.2
 
    Сообщить(Число("125.36")); // 125,36
    Сообщить(Число("125,36")); // 125,36
 
    /// Как преобразовать число в строку в 1с 8.3, 8.2
 
    Сообщить(25 + "10"); // 35
    // если же нужно сложить число и строку как строки
    Сообщить(Строка(25) + "10"); // 2510
 
    /// Как разбить строку с разделителями в 1с 8.3, 8.2
 
    Разделитель = ",";
    Строки = СтрЗаменить("январь, февраль, март", Разделитель, Символы.ПС);
    Для Индекс = 1 По СтрЧислоСтрок(Строки) Цикл
        Сообщить(СтрПолучитьСтроку(Строки, Индекс));
    КонецЦикла;
 
КонецПроцедуры
 
&НаСервереБезКонтекста
Процедура ВыполнитьКодНаСервере()
 
    /// Как сериализовать значение в строку в 1с 8.3, 8.2
 
    Массив = Новый Массив(3);
    Массив[0] = 1;
    Массив[1] = "Земля";
    Массив[2] = 3.14;
 
    Стр = ЗначениеВСтрокуВнутр(Массив);
    Сообщить(Стр);
 
    //{"#",51e7a0d2-530b-11d4-b98a-008048da3034,
    //  {3,
    //      {"N",1},
    //      {"S","Земля"},
    //      {"N",3.14}
    //  }
    //}
 
    /// Как десериализовать значение из строки в 1с 8.3, 8.2
 
    МассивКопия = ЗначениеИзСтрокиВнутр(Стр);
    Элемент = МассивКопия[1];
    Сообщить(Элемент); // Земля
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

ПОДОБНО в условиях запроса

Рассмотрим назначение и использование условного оператора ПОДОБНО(eng. LIKE) в языке запроса 1С в примерах.

Быстрый переход

Предназначение

Проверить на соответствие строкового значения в запросе указанному шаблону — возвращает значение Булево-типа (ИСТИНА или ЛОЖЬ).

  • Проверка регистро — независима.
  • При запросе используются индексы таблиц — не связано с индексами полнотекстового поиска.
  • Может долго выполнятся при больших таблицах.
  • Строки неограниченной длины следует привести функцией ПОДСТРОКА

Места использования

  • В условиях оператора ГДЕ
  • В условиях конструкции ВЫБОР КОГДА <> ТОГДА «» ИНАЧЕ «» КОНЕЦ
  • В полях выборки (например: Наименование ПОДОБНО &ПараметрПодобно как СтрокаПодходит)

Описание синтаксиса оператора ПОДОБНО

Параметр оператора должен быть строкой: может задаться константой, либо передан  как параметр запроса.

Литералы(маски), указанные ниже, допускается использовать совместно и по отдельности.

Точное указание строки

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "1"//Равносильно Ключи.Наименование ="1"

Результат:

% — литерал, означающий произвольное количество любых символов

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "%"

Результат: любые 10 наименований

_ (подчеркивание): литерал, соответствующий одному любому символу

Пример  №1:

ВЫБРАТЬ первые 10
  Ключи.Наименование


ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "_"

Пример №2: начинающиеся на любой символ, затем следует «1», а дальше любые символы

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
   Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "_1%"

Результат:

[] (в квадратных скобках один или несколько символов)

  • Каждый литерал, соответствующий одному любому символу — используется как ИЛИ.
    Допустимо указание диапазона, например a-z,0-5, означающее произвольный символ из заданного диапазона

Пример 

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи


ГДЕ
  Ключи.Наименование ПОДОБНО "[лз]%"

Результат: 10 начинающихся на «л» или «з»

Пример: начинающиеся на 5,6,7 

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "[5-7]%"

Результат:

[^] (в квадратных скобках значок исключения ^, за которым следует один или несколько символов)

Равносильно любому символу (_) кроме указанных ([]) 

Пример

ВЫБРАТЬ первые 10
  Ключи.012]%"//не включаем 8.0,8.1,8.2

Результат: все начинающиеся на «8.» исключая указанные

СПЕЦСИМВОЛ — команда для указания в запросе зарегистрированных выше символов

В качестве служебного символа допустимо использовать как минимум: #,~,/,\

Пример:

ВЫБРАТЬ первые 10
  Ключи.Наименование
ИЗ
  Справочник.Ключи КАК Ключи
ГДЕ
  Ключи.Наименование ПОДОБНО "#_" СПЕЦСИМВОЛ "#"

Результат:

Применимость в платформах

Неверные параметры ПОДОБНО <<?>>

  • Передается параметр не строкового типа: например число 1 вместо строки «1»
  • Сравнивается поле не строкового типа с верной маской (например ссылка) или при соединении значение не проверяется на ЕстьNUL

Обратите внимание на текст ошибки, где выводится вопрос:

<<?>>Ключи.Ссылка ПОДОБНО "1"

или 

Ключи.Наименование ПОДОБНО <<?>>&L

Реклама — самый дешевый способ продажи товара, особенно если товар не имеет никакой ценности.

— Синклер Льюис

Статья: Специальные символы, используемые в исходном тексте программных модулей 1С

Символы   Назначение

//

Двумя знаками «косая черта» начинается комментарий. Комментарием считается весь текст от знака «//» до конца текущей строки.

|

Вертикальная черта в начале строки используется только в строковых константах и означает, что данная строка является продолжением предыдущей (перенос строки).

~

Знаком тильда начинается метка оператора.

:

Двоеточием заканчивается метка оператора.

;

Точка с запятой является символом разделения операторов.

( )

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

[ ] 

С помощью оператора «квадратные скобки» производится обращение к свойствам объекта по строковому представлению имени свойства. Также возможно обращение к элементам коллекций по индексу или другому параметру.

,

Запятая разделяет параметры в списке параметров методов, процедур, функций и конструкторов.

» » 

В двойные кавычки заключаются строковые литералы.

‘ ‘

В одинарные кавычки заключаются литералы даты.

.

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

+

Символ «плюс» обозначает операцию сложения и конкатенации.

Символ «минус» обозначает операцию вычитания.

Символ «звездочка» обозначает операцию умножения.

Символ «косая черта» обозначает операцию деления.

%

Получение остатка от деления. Допускается использования дробных значений делимого и делителя.

Правая угловая скобка обозначает логическую операцию «больше».

>=

Логическая операция «больше или равно».

Левая угловая скобка обозначает логическую операцию «меньше».

<= 

Логическая операция «меньше или равно».

Знак равенства обозначает присвоение или логическую операцию «равно».

<> 

Две угловые скобки обозначают логическую операцию «не равно».

Замена HTML кодов символов в тексте средствами 1С

В системе 1С есть возможность запрашивать web-страницы. При запросе HTML страниц может возникнуть
необходимость в замене HTML кодов на соответствующие символы. HTML коды символов часто используются при создании web страниц. В Интернете можно найти таблицы соответствий символов кодам.

Простая функция замены


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

СоответствиеКодов = Новый Соответствие();
СоответствиеКодов.Вставить("[", "[");
СоответствиеКодов.Вставить("]", "]");
СоответствиеКодов.Вставить(" ", " ");

Для каждого ЭлементКод Из СоответствиеКодов Цикл
ВходящаяСтрока = СтрЗаменить(ВходящаяСтрока, ЭлементКод.Ключ, ЭлементКод.Значение);
КонецЦикла;

Возврат ВходящаяСтрока;

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


Универсальная функция замены HTML кодов на символы

Функция УниверсальнаяЗаменаHTMLКодов(Знач ВходящаяСтрока)

МногострочнаяСтрока = СтрЗаменить(ВходящаяСтрока, "&#", Символы.ПС);
МногострочнаяСтрока = СтрЗаменить(МногострочнаяСтрока, ";", Символы.ПС);

Для НомерСтроки = 1 По СтрЧислоСтрок(МногострочнаяСтрока) Цикл

ПодСтрока = СтрПолучитьСтроку(МногострочнаяСтрока, НомерСтроки);

Если Найти(ПодСтрока, " ") > 0 ИЛИ ПустаяСтрока(ПодСтрока) Тогда
Продолжить;
КонецЕсли;

Попытка
КодСимвола = Число(ПодСтрока);
Исключение
Продолжить;
КонецПопытки;

Символ = Символ(КодСимвола);
ЗаменяемаяПодСтрока = "&#" + ПодСтрока + ";";
ВходящаяСтрока = СтрЗаменить(ВходящаяСтрока, ЗаменяемаяПодСтрока, Символ);

КонецЦикла;

Возврат ВходящаяСтрока;

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


Поиск и замену HTML кодов можно организовать с помощью регулярных выражений. В системе 1С, работа с регулярными выражениями осуществляется через COM технологию. Соответственно такой подход требует больших вычислительных ресурсов. В тоже время замена через регулярные выражения — это более универсальный способ.

1С спецсимвол в запросе – Тарифы на сотовую связь