Синтаксис и применение Функция Прав(Right) в платформе 1С:Предприятие. Описание и примеры кода.
Полное описание, параметры и ограничения
Функция Прав(Right)
Прав(<Строка>, <ЧислоСимволов>)
Данная функция выбирает первые справа символы строки.
Строка - Строка. Исходная строка.
ЧислоСимволов - Число. Количество выбираемых символов. Отрицательные значения считаются нулем. Если в исходной строке меньше символов, чем в параметре, то возвращается исходная строка.
Возвращаемое значение: Строка. Строка выбранных символов.
Внимание! При использовании в запросе данной функции запрос не будет передан в Дата акселератор.
см. также: Функции языка запросов
Практические примеры
Разобрать собственный код через ЛЕВ, ПРАВ и ПОДСТРОКА
Код AMA-2026-015 создаётся в самом модуле. Выделяем префикс, номер и год как строковые части, затем проверяем документированные границы и NULL.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте общий модуль УчебныйЯзык: Сервер=Истина, Глобальный=Ложь, ВызовСервера=Ложь, Привилегированный=Ложь. Клиентские и внешнее соединение отключены; ПовторноеИспользованиеВозвращаемыхЗначений=НеИспользовать.
Вставьте весь приведённый текст в этот общий модуль. ВыполнитьПример — экспортная точка входа; остальные процедуры и функции располагаются рядом, а не внутри неё.
В своей внешней учебной обработке создайте управляемую форму, команду Выполнить и кнопку. Клиентский обработчик Выполнить(Команда) вызывает свою процедуру ВыполнитьНаСервере(); она имеет директиву &НаСервереБезКонтекста и одну строку УчебныйЯзык.ВыполнитьПример();. Это серверный вызов общего модуля, а не разрешение клиенту прямо обращаться к серверной библиотеке.
Все товары, количества и строки придуманы в этом модуле. Запись документов, подключение к чужой базе, файлы, сеть и печать не используются. В рабочие общие модули текст не вставляйте.
HTML только показывает BSL. Код в 1С не запускался; перечисленные результаты и отрицательные опыты проверяйте самостоятельно в собственном стенде.
Этот запрос без ИЗ получает одну строку только из явно заданных своих параметров. Справочники, документы, регистры, временные таблицы и рабочие сведения не читаются.
В модуле BSL запрос — многострочная строка: кавычки его текстовых констант удвоены, продолжения начинаются с |. Не добавляйте значение параметра склейкой в текст запроса.
Речь о функциях внутри языка запросов, не о внешне похожих функциях 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ДляПоказа = "нет строки");
Сообщить("Год как текст кода, не дата: " + Выборка.ГодИзКода);
Если Выборка.Следующий() Тогда
ВызватьИсключение "У запроса без источников ожидалась ровно одна строка";
КонецЕсли;
КонецПроцедурыРазбор по шагам
Задать один собственный код и передать его параметром Код.
ЛЕВ выбирает первые три символа AMA; ПРАВ — последние три 015.
ПОДСТРОКА начинает с позиции 5, считая первый символ за 1; четыре символа дают 2026.
У ЛЕВ отрицательное количество считается нулём: получается пустая строка.
У ПРАВ длина 100 больше собственного кода: возвращается весь код, не дополнение пробелами.
ПОДСТРОКА(NULL, 1, 2) возвращает NULL; ЕСТЬNULL заменяет только его на понятный текст для показа.
Не преобразовывать 2026 в дату автоматически: это часть учебного строкового кода. Проверить, что второй строки нет.
Как проверить результат
Шесть проверок Истина и сообщение с годом как текстом.
Префикс AMA, номер 015, год 2026; отрицательная длина даёт пустую строку.
NullДляПоказа равен нет строки. Пустая строка от ЛЕВ и NULL от ПОДСТРОКА — разные случаи.
Ожидаемый результат
Получены три осмысленные части собственного кода и разобраны границы, не зависящие от рабочих справочников.
На что обратить внимание
Позиции ПОДСТРОКА в запросе начинаются с 1, не с нуля.
Пустая строка не является NULL; ЕСТЬNULL не подменяет их друг другом.
У реальных кодов формат может отличаться: этот опыт не универсальный парсер артикулов.
У ЛЕВ/ПРАВ установленные страницы предупреждают об отсутствии передачи в Дата акселератор; для ПОДСТРОКА такое правило здесь не придумывается.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.