Сокрлп 1с функция что делает
Перейти к содержимому

Сокрлп 1с функция что делает

  • автор:

Новые функции языка запросов и системы компоновки данных

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Реализовано в версии 8.3.20.1549

Когда мы пишем запросы и создаем отчёты, нередко бывает нужно не просто показать данные в том виде, в котором они лежат в БД, а произвести над ними какие-то операции. Например, посчитать разницу между двумя датами или округлить число до нужной разрядности. Хорошо, если нужная функция есть в языке запросов (или в языке СКД) — тогда мы можем сделать с данными то, что хотим, на уровне запроса / СКД, а потом просто отобразить результат. Если же нужная функция в языке запросов не реализована – приходится делать постобработку запроса в языке 1С, проходясь в цикле по результатам запроса и выполняя нужные операции. Что приводит к разрастанию кода конфигурации и может снизить производительность.

К нам довольно часто обращаются разработчики с пожеланиями о добавлении дополнительных функций в язык запросов и язык СКД. Мы внимательно проанализировали пожелания и выделили список наиболее востребованных функций, которые планируем реализовать в версии 8.3.20.

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

В язык запросов добавляются функции:

  • Строка(String) – преобразует значение в примитивного типа в строку с учетом национальных установок.
  • Тригонометрические функции Sin, Cos, Tan, ASin, ACos, ATan (все вычисления производятся в радианах)
  • Exp — вычисляет результат возведения основания натурального логарифма (числа e) в степень
  • Log — вычисляет натуральный логарифм числа.
  • Log10 — вычисляет десятичный логарифм числа.
  • Pow — вычисляет возведение в степень.
  • Sqrt – вычисляет квадратный корень.
  • Окр(Round) — округляет исходное число до нужной разрядности
  • Цел(Int) — вычисляет целую часть переданного числа, полностью отсекая дробную часть.
  • ДлинаСтроки(StringLength) – вычисляет длину строки.
  • СокрЛ(TrimL) – отбрасывает незначащие пробелы слева.
  • СокрП(TrimR) – отбрасывает незначащие пробелы справа.
  • СокрЛП(TrimAll) – отбрасывает незначащие пробелы слева и справа.
  • Лев(Left) – получает первые слева символы строки.
  • Прав(Right) – получает первые справа символы строки.
  • СтрНайти(StrFind) – находит первую позицию подстроки в строке (без учета регистра).
  • ВРег(Upper) – преобразует все символы строки в верхний регистр.
  • НРег(Lower) – преобразует все символы строки в нижний регистр.
  • СтрЗаменить(StrReplace) – заменяет все вхождения подстроки на другую подстроку (без учета регистра).
  • РазмерХранимыхДанных(StoredDataSize) – возвращает размер данных в байтах, которые занимают данные параметра.

Система компоновки данных

В язык выражений системы компоновки данных добавлены новые функции:

  • СокрЛ(TrimL) – отбросить незначащие пробелы слева.
  • СокрП(TrimR) – отбросить незначащие пробелы справа.
  • СокрЛП(TrimAll) – отбросить незначащие пробелы слева и справа.
  • Лев(Left) – получить первые слева символы строки.
  • Прав(Right) – получить первые справа символы строки.
  • СтрНайти(StrFind) – найти подстроку в строке (без учета регистра).
  • ВРег(Upper) – преобразует все символы строки в верхний регистр.
  • НРег(Lower) – преобразует все символы строки в нижний регистр.
  • СтрЗаменить(StrReplace) – заменяет все вхождения подстроки на другую подстроку (без учета регистра).
  • НСтр(NStr) – получает строку на языке пользователя (аналогично тому, как работает метод НСтр глобального контекста). Параметры:
    • ИсходнаяСтрока – строка, содержащая строки на разных языках (например, «ru = ‘Добрый вечер!’; en = ‘Good Evening!'»).
    • КодЯзыка (необязательный) – строка с кодом языка, на котором нужно получать строку. Если не указан — строка получается на языке текущего пользователя.

    Сокрлп 1с функция что делает

    « Как стать программистом 1С » Язык 1С » 1С СокрЛП, 1С СокрЛ, 1С СокрП – удаление лишних символов

    1С СокрЛП, 1С СокрЛ, 1С СокрП – удаление лишних символов

    Функции 1С СокрЛП(Строка), 1С СокрЛ(Строка) и 1С СокрП(Строка) удаляют из текста лишние символы.

    • Выполняем

      СокрЛП(»
      | Привет, мир!
      | «)

    • 1С возвращает «Привет, мир!»
    • 1С СокрЛ – с начала строки до «значащих символов»
    • 1С СокрП – с последнего «значащего символа» до конца строки
    • 1С СокрЛП – одновременно слева и справа.

    «Лишние символы», которые можно убрать с помощью 1С СокрЛ, 1С СокрП, 1С СокрЛП:

    • Пробел
    • Перенос строки, страницы
    • Табуляция.

    Лишние пробелы внутри строки, между словами функции 1С СокрЛ, 1С СокрП, 1С СокрЛП не удаляют.

    Строковые реквизиты, например справочнков, имеют обычно определенную длину, например возьмем 50 символов. При вводе пользователи может ввести лишние пробелы в конце, особенно если текст в поле не вводится вручную, а копируется из сторонней программы.

    Если пользователь ввел значение с пробелом, то сравнение с заданной строкой не будет работать – ведь сравнение учитывает все символы, включая незначимые.

    • Пользователь ввел: «РОССИЯ «
    • Мы сравниваем: Если Страна = «РОССИЯ» //не сработает
    • Чтобы сработало, пишем: Если СокрЛП(Страна) = «РОССИЯ» //сработает

    1С СокрЛП() некоторые программисты используют при переводе чисел в строку, вместо Строка(). Дело в том, что числа форматируются при переводе по настройкам локализации с пробелами между разрядами: 22500 -> «22 500». Однако 1С СокрЛП() не убирает пробелы между словами. Вместо этого можно применять Формат():

    Число = 22500;
    ЧислоСтрокой = Формат(Число, «ЧГ=0»);
    //ЧислоСтрокой будет равно «22500»

    Добавим в наш анализатор строки программы, позволяющие удалить незначащие символы как слева и справа, так и между словами (про анализатор текста см. выше «Функции работы со строками 1С»).

    Только зарегистрированные пользователи VIP группы могут видеть этот контент.

    Проголосовать за этот пост:

    Функции строк в 1С. Часть 1

    В предыдущей статье мы узнали, как работать со строками в 1С 8.3. В этой статье изучим самые часто применяемые функции для работы со строками 1С.

    Длина строки 1С

    В платформе 1С имеется функция, которая вычисляет длину строки – СтрДлина. Эта функция имеет единственный параметр – строку, и возвращает количество символов в этой строке, т.е. её длину. Причем считаются все символы, в том числе пробелы.

    СтрокаПримера1= "результат "; СтрокаПримера2= "результат"; ДлинаСтроки1 = СтрДлина(СтрокаПримера1); ДлинаСтроки2 = СтрДлина(СтрокаПримера2); Сообщить("Длина строки:""" + СтрокаПримера1 + """ color: red;">+ ДлинаСтроки1); Сообщить("Длина строки:""" + СтрокаПримера2 + """ color: red;">+ ДлинаСтроки2); 

    Длина строки 1С

    Регистр строки 1С

    В 1С имеются функции для работы с регистрами строк.

    НРег – переводит строку в нижний регистр

    ВРег – переводит строку в верхний регистр

    ТРег – переводит строку в титульный регистр (каждое слово начинается с заглавной буквы).

    СтрокаПримера= "пРивет оЛег!"; Сообщить(НРег(СтрокаПримера)); Сообщить(ВРег(СтрокаПримера)); Сообщить(ТРег(СтрокаПримера)); 

    Регистр строки 1С

    Замечу, эти функции не изменяют строку в параметре, а создают новую строку в нужном регистре.

    Убрать пробелы в строке 1С

    Часто возникает, что в строке 1С в начале строки или в конце строки есть лишние пробелы, которые нужно убрать. Для этих целей служат следующие функции.

    СокрЛ — убирает пробелы слева строки.

    СокрП — убирает пробелы справа строки.

    СокрЛП – убирает пробелы справа и слева строки.

    Рассмотрим пример (добавлю символы перед и после функциями, чтобы было понятно как они работают).

    СтрокаПримера= " результат выгрузки "; Сообщить("|" + СокрЛ(СтрокаПримера) + "|"); Сообщить("|" + СокрП(СтрокаПримера) + "|"); Сообщить("|" + СокрЛП(СтрокаПримера) + "|"); 

    Убрать пробелы в строке 1С

    Эти функции, также, не изменяют строку в параметре, а создают новую строку с обрезанными пробелами.

    Сократить строку 1С

    Если предыдущие функции сокращали только пробелы, то в платформе 1С имеется возможность сократить и саму строку на нужное количество символов. Или наоборот – оставить нужное количество символов. Для этих целей служат следующие функции.

    Лев – оставляет нужное количество символов слева. Имеет следующий синтаксис: Лев(,)

    Прав – оставляет нужно количество символов справа. Имеет следующий синтаксис: Лев(,)

    Сред – оставляет нужное количество символов в строке. Имеет следующий синтаксис: Лев(,, ).

    Функции Лев и Прав – создают новую строку, в которой оставлено слева и справа соответственно, то количество символов, которое указанно во втором параметре.

    Функция Сред также создает новую строку, в которой оставлено то количество символов, которое указано в третьем параметре. Но, если предыдущие функции оставлялись символы или с начала строки, или с конца, то эта функция оставляет символы с любого места строки. Для этого во втором параметре нужно указать номер символа, с которого будут оставлены остальные символы (включая символ, номер которого мы указали).

    СтрокаФИО = "Иванов Иван Иванович"; СтрокаО = Прав(СтрокаФИО,8); СтрокаФ = Лев(СтрокаФИО,6); СтрокаИ = Сред(СтрокаФИО,8,4); Сообщить(СтрокаФ); Сообщить(СтрокаИ); Сообщить(СтрокаО); 

    Сократить строку в 1С

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

    Найти в строке 1С

    Иногда нужно найти в строке или нужный символ, или нужную группу символов. Для этих целей применятся функция СтрНайти(). Эта функция имеет следующий синтаксис.

    Данная функция возвращает позицию первого знака подстроки, которая была найдена. Если 0, то ни чего не найдено.

    Строка – строка, по которой осуществляется поиск;

    ПодстрокаПоиска – подстрока (или символ), которая ищется в строке поиска;

    НаправлениеПоиска – системное перечисление, которое задает в какую сторону осуществляется поиск. Имеет два значения: НаправлениеПоиска.Сначала, НаправлениеПоиска.Сконца. Необязательный параметр.

    НачальнаяПозиция – номер символа, с которого начинается поиск. Должен быть в диапазоне от 1 до количества символов, иначе будет ошибка. Необязательный параметр. Если он не задан и установлен параметр НаправлениеПоиска, то в случае поиска Сначала по умолчанию равен 1, а если поиск СКонца, то по умолчанию равен количеству символов в строке.

    НомерВхождения – искомая подстрока (или символ) может несколько раз входить в исходную строку, этот параметр указывает, какое вхождение нас интересует. По умолчанию равен 1.

    СтрокаФИО = "Иванов Сидоров Иванов"; Сообщить(СтрокаФИО); //ищем с настройками по умолчанию НомерИванова = СтрНайти(СтрокаФИО,"Иванов"); Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова); //ищем с конца НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СКонца); Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова); //ищем с конца но начиная с 10 символа НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СКонца,10); Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова); //ищем с начала, но второе вхождение НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СНачала,,2); Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова); 

    И результат работы функции

    Найти в строке 1С

    Т.е. когда мы ищем в строке «Иванов Сидоров Иванов» подстроку «Иванов», то при поиске без дополнительных параметров функция возвращает 1, это номер символа с которого начинается искомая подстрока. Если же мы ищем в направлении СКонца, то возвращается номер символа, с которого начинается второе вхождение подстроки в строку. В третьем случае мы искали в направлении СКонца, но указали номер символа, с которого нужно искать строку, поэтому функция вернула 1, поскольку при поиске начиная с 10 символа с конца строки, искомая подстрока находится только в начале строки. И в последнем примере, мы ищем подстроку с начала, но ищем второе вхождение этой подстроки.

    Заменить в строке 1С

    В платформе 1С 8.3. имеется метод, при помощи которого можно менять в строке определенные символы на другие символы.

    Этот метод СтрЗаменить, и он имеете следующий синтаксис: СтрЗаменить(,,)

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

    ФИОНеПравильное = "Иванов_Андрей_Игоревич"; Сообщить(ФИОНеПравильное); ФИОВерное = СтрЗаменить(ФИОНеПравильное,"_"," "); Сообщить(ФИОВерное); ФИОБезОтчетства = СтрЗаменить(ФИОВерное," Игоревич",""); Сообщить(ФИОБезОтчетства); 

    Заменить в строке 1С

    Как видите, при помощи этого метода можно не только менять символы, но и вырезать не нужные символы.

    Функции для многострочных строк в 1С

    Из предыдущей статьи вы знаете, что в 1С можно задать многострочную строку, делается это при помощи символа «|». Сейчас мы разберем несколько функций, которые могут пригодиться при работе с многострочной строкой.

    СтрЧислоСтрок() – позволяет узнать, сколько в строке строк.

    СтрокаСПереносом = "Первая |Вторая |Третья"; КоличествоСтрок = СтрЧислоСтрок(СтрокаСПереносом); Сообщить(СтрокаСПереносом); Сообщить("Количество строк: " + КоличествоСтрок); 

    Число строк в строке 1С

    СтрПолучитьСтроку – позволяет получить строку из многострочной строки по номеру, имеете следующий синтаксис: СтрПолучитьСтроку(, ). — начинается с единицы.

    СтрокаСПереносом = "Первая |Вторая |Третья"; ВтораяСтрока = СтрПолучитьСтроку(СтрокаСПереносом,2); Сообщить(СтрокаСПереносом); Сообщить("Вторая строка из предыдущей стороки с переносом: |" + ВтораяСтрока); 

    Заменить в строке 1С

    В этой статье я разобрал основные функции, которые были в платформе 8.1, в платформе 8.2 и перешли в платформу 8.3 (кроме функции СтрНайти, но это улучшенная версия функция Найти, которая была в старых платформах) . В следующей статье рассмотрим функции работы со строками, которые появились в платформе 8.3:

    Статьи о примитивных типах

    Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
    Книга «Программировать в 1С за 11 шагов»

    Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

    Программировать в 1С за 11 шагов

    Книга написана понятным и простым языком — для новичка.

    1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
    2. Научитесь понимать архитектуру 1С;
    3. Станете писать код на языке 1С;
    4. Освоите основные приемы программирования;
    5. Закрепите полученные знания при помощи задачника.

    О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

    Основы разработки в 1С такси

    1. Очень доступный и понятный язык изложения
    2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
    3. Поймете идеологию управляемого приложения 1С
    4. Узнаете, как разрабатывать управляемое приложение;
    5. Научитесь разрабатывать управляемые формы 1С;
    6. Сможете работать с основными и нужными элементами управляемых форм
    7. Программирование под управляемым приложением станет понятным

    Промо-код на скидку в 15% — 48PVXHeYu

    Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
    Только для читателей моего блога,
    промо-код на скидку в 300 рублей на весь комплект: blog


    Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
    .

    можно оплатить вручную:

    Яндекс.Деньги — 410012882996301
    Web Money — R955262494655

    Вступайте в мои группы:

    СокрЛП – удаляет незначительные символы справа и слева в строке [Функция 1С]

    Удаляет незначащие символы слева начиная с первого значительного символа, и справа начиная с последнего значащего символа.

    Синтаксис

    Параметры

    <ИсходнаяСтрока>— исходная строка. [строка]

    Возвращаемое значение:

    Строка с удаленными незначительными символами слева и справа. [строка]

    Прочее

    Доступность (для версии 8.2):
    Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение

    Пример

    // Присвоили текст с пробелами слева и справа Текст = " Иванов Иван Иванович " Текст = СокрЛП(Текст); Сообщить (Текст); // В результате получим "Иванов Иван Иванович"

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *