Функция Прав(Right)

Язык запросов

Синтаксис и применение Функция Прав(Right) в платформе 1С:Предприятие. Описание и примеры кода.

Полное описание, параметры и ограничения

Функция Прав(Right)

Прав(<Строка>, <ЧислоСимволов>)

Данная функция выбирает первые справа символы строки.

Строка - Строка. Исходная строка.

ЧислоСимволов - Число. Количество выбираемых символов. Отрицательные значения считаются нулем. Если в исходной строке меньше символов, чем в параметре, то возвращается исходная строка.

Возвращаемое значение: Строка. Строка выбранных символов.

Внимание! При использовании в запросе данной функции запрос не будет передан в Дата акселератор.

см. также: Функции языка запросов

Практические примеры

Разобрать собственный код через ЛЕВ, ПРАВ и ПОДСТРОКА

Код AMA-2026-015 создаётся в самом модуле. Выделяем префикс, номер и год как строковые части, затем проверяем документированные границы и NULL.

Где и как запускать

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

Подготовка

  1. В отдельной учебной базе 8.5.1.1343 создайте общий модуль УчебныйЯзык: Сервер=Истина, Глобальный=Ложь, ВызовСервера=Ложь, Привилегированный=Ложь. Клиентские и внешнее соединение отключены; ПовторноеИспользованиеВозвращаемыхЗначений=НеИспользовать.

  2. Вставьте весь приведённый текст в этот общий модуль. ВыполнитьПример — экспортная точка входа; остальные процедуры и функции располагаются рядом, а не внутри неё.

  3. В своей внешней учебной обработке создайте управляемую форму, команду Выполнить и кнопку. Клиентский обработчик Выполнить(Команда) вызывает свою процедуру ВыполнитьНаСервере(); она имеет директиву &НаСервереБезКонтекста и одну строку УчебныйЯзык.ВыполнитьПример();. Это серверный вызов общего модуля, а не разрешение клиенту прямо обращаться к серверной библиотеке.

  4. Все товары, количества и строки придуманы в этом модуле. Запись документов, подключение к чужой базе, файлы, сеть и печать не используются. В рабочие общие модули текст не вставляйте.

  5. HTML только показывает BSL. Код в 1С не запускался; перечисленные результаты и отрицательные опыты проверяйте самостоятельно в собственном стенде.

  6. Этот запрос без ИЗ получает одну строку только из явно заданных своих параметров. Справочники, документы, регистры, временные таблицы и рабочие сведения не читаются.

  7. В модуле BSL запрос — многострочная строка: кавычки его текстовых констант удвоены, продолжения начинаются с |. Не добавляйте значение параметра склейкой в текст запроса.

  8. Речь о функциях внутри языка запросов, не о внешне похожих функциях BSL. Их правила и доступность сверены с shquery_ru.hbk установленной 8.5.1.1343, но запросы здесь в 1С не выполнялись.

Процедура ВыполнитьПример() Экспорт
    КодОбразца = "AMA-2026-015";
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ЛЕВ(&Код, 3) КАК Префикс,
    |    ПРАВ(&Код, 3) КАК Номер,
    |    ПОДСТРОКА(&Код, 5, 4) КАК ГодИзКода,
    |    ЛЕВ(&Код, -2) КАК ОтрицательнаяДлина,
    |    ПРАВ(&Код, 100) КАК БольшеИсходной,
    |    ЕСТЬNULL(ПОДСТРОКА(NULL, 1, 2), ""нет строки"") КАК NullДляПоказа";
    Запрос.УстановитьПараметр("Код", КодОбразца);
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если НЕ Выборка.Следующий() Тогда
        ВызватьИсключение "Запрос из собственных параметров должен вернуть одну строку";
    КонецЕсли;
    Сообщить(Выборка.Префикс = "AMA");
    Сообщить(Выборка.Номер = "015");
    Сообщить(Выборка.ГодИзКода = "2026");
    Сообщить(Выборка.ОтрицательнаяДлина = "");
    Сообщить(Выборка.БольшеИсходной = КодОбразца);
    Сообщить(Выборка.NullДляПоказа = "нет строки");
    Сообщить("Год как текст кода, не дата: " + Выборка.ГодИзКода);
    Если Выборка.Следующий() Тогда
        ВызватьИсключение "У запроса без источников ожидалась ровно одна строка";
    КонецЕсли;
КонецПроцедуры

Разбор по шагам

  1. Задать один собственный код и передать его параметром Код.

  2. ЛЕВ выбирает первые три символа AMA; ПРАВ — последние три 015.

  3. ПОДСТРОКА начинает с позиции 5, считая первый символ за 1; четыре символа дают 2026.

  4. У ЛЕВ отрицательное количество считается нулём: получается пустая строка.

  5. У ПРАВ длина 100 больше собственного кода: возвращается весь код, не дополнение пробелами.

  6. ПОДСТРОКА(NULL, 1, 2) возвращает NULL; ЕСТЬNULL заменяет только его на понятный текст для показа.

  7. Не преобразовывать 2026 в дату автоматически: это часть учебного строкового кода. Проверить, что второй строки нет.

Как проверить результат

  1. Шесть проверок Истина и сообщение с годом как текстом.

  2. Префикс AMA, номер 015, год 2026; отрицательная длина даёт пустую строку.

  3. NullДляПоказа равен нет строки. Пустая строка от ЛЕВ и NULL от ПОДСТРОКА — разные случаи.

Ожидаемый результат

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

На что обратить внимание

  1. Позиции ПОДСТРОКА в запросе начинаются с 1, не с нуля.

  2. Пустая строка не является NULL; ЕСТЬNULL не подменяет их друг другом.

  3. У реальных кодов формат может отличаться: этот опыт не универсальный парсер артикулов.

  4. У ЛЕВ/ПРАВ установленные страницы предупреждают об отсутствии передачи в Дата акселератор; для ПОДСТРОКА такое правило здесь не придумывается.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.