Еще один «привет» из мира 1с — новые возможности языка запроса, которые нужно знать всем 1с-никам

—

от автора

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

Введение

Всем привет! В данном материале, я решил, что немного отойду от своего основного профиля — практической разработке и изучения возможностей библиотеке стандартных подсистем (БСП) и затрону работу программиста с языком запросов 1с.

Думаю, что материал данной статьи будет полезен всем разработчикам и программистам, а также все желающим, кто хочет разобраться в элементарных запросах платформы и приобщиться к касте 1с-ников). Так же данный материал подойдет как обычная «напоминалка» для программиста

Статья содержит только практические примеры использования вот этих функций языка запросов 1С — вот они:

    Строка(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) – размер данных в байтах, которые занимают данные параметра. 

Для реализации данных примеров можно использовать типовой конструктор запросов или типовую консоль (из предприятия), 1С: Платформу 8.3.20 и мою любимую конфигурацию «Библиотека стандартных подсистем 3.1» (3.1.7.137), режим совместимости которой я поднял до 8.3.20 (без использования). Условно, я разбил эти функции на 11 групп (по одной или несколько функций близких по смыслу).

Примеры

1.Строка(String):

// с ссылками работать не умеет. // только с примитивными типами // ошибки не будет только если применить "Выразить"  ВЫБРАТЬ Строка(ВЫРАЗИТЬ(_ДемоНоменклатура.Ссылка.Наименование КАК СТРОКА(100))), Строка(_ДемоНоменклатура.Цена) КАК Цена,   // преобразовал число в строку Строка(ИСТИНА) КАК АА, // преобразовал булево в строку Строка(ДАТАВРЕМЯ(1,1,1)) Как ТекДата // пробразовал дату ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

2. Sin, Cos, Tan, ASin, ACos, ATan:

// тригонометрические функции работают исключительно с примитивным типом "число"  ВЫБРАТЬ SIN(1) КАК Син1, COS(1) КАК Кос2, TAN(1) КАК Тан3, ASIN(1) КАК АСин1, ACOS(0) КАК АКос2, ATAN(1) КАК АТан3, _ДемоНоменклатура.Ссылка КАК Ссылка ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

3. Exp, Log, Log10, Pow и Sqrt:

// данные математические функции в запросе работают только с типом "число"   ВЫБРАТЬ Exp(1) КАК Exp1,   //2.7 Log(2.718) КАК Log1,   //0.9999 Log10(10) КАК Log101, // 1 Pow(3,2) КАК Pow1, // 9 Sqrt(9) КАК Sqrt1, // 3 _ДемоНоменклатура.Ссылка КАК Ссылка ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

4.Окр(Round) и Цел(Int):

// округление или целое число  ВЫБРАТЬ ОКР(13240.345235, -2) КАК Округление,  // 13200  ЦЕЛ(13240.345) КАК Цел1,  // 13240  _ДемоНоменклатура.Ссылка КАК Ссылка ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

5. ДлинаСтроки(StringLength):

// здесь определим длину стоки - длина наименования  ВЫБРАТЬ ДЛИНАСТРОКИ(_ДемоНоменклатура.Ссылка.Наименование) КАК ДлинаНаименования ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

6. СокрЛ(TrimL), СокрП(TrimR) и СокрЛП(TrimAll):

// запрос убирает пробелы слева, справа, с обеих сторон строки  ВЫБРАТЬ СокрЛ(" "+_ДемоНоменклатура.Ссылка.Наименование+" ") КАК УбратьПробелыСлева, СокрП(" "+_ДемоНоменклатура.Ссылка.Наименование+" ") КАК УбратьПробелыСправа, СокрЛП(" "+_ДемоНоменклатура.Ссылка.Наименование+" ") КАК УбратьПробелы ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура 

7. Прав(Right) и Лев(Left):

// обрезаем строку и выводим результат  ВЫБРАТЬ Лев(_ДемоНоменклатура.Ссылка.Наименование,5) КАК Слева5, Прав(_ДемоНоменклатура.Ссылка.Наименование,10) КАК Справа10 ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

8. СтрНайти(StrFind):

ВЫБРАТЬ СтрНайти(_ДемоНоменклатура.Ссылка.Наименование, "коллекция") КАК Нашли1  // номер символа вхождения ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура 

9. ВРег(Upper) и НРег(Lower):

// переводим в заглавные или строчные буквы  ВЫБРАТЬ Врег(_ДемоНоменклатура.Ссылка.Наименование) КАК Заглавными, Нрег(_ДемоНоменклатура.Ссылка.Наименование) КАК Прописными ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

10. СтрЗаменить(StrReplace):

ВЫБРАТЬ СтрЗаменить(_ДемоНоменклатура.Ссылка.Наименование, "журнал","газета") КАК Нашли1  // меняем подстроку "журнал" на "газета" ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура 

11. РазмерХранимыхДанных(StoredDataSize):

ВЫБРАТЬ РазмерХранимыхДанных(_ДемоНоменклатураПрисоединенныеФайлы.ФайлХранилище) КАК ФайлХранилище // применяю к реквизиту с типом ХранилищеЗначений, хотя можно применить к любому реквизиту (размер в байтах) ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник._ДемоНоменклатураПрисоединенныеФайлы КАК _ДемоНоменклатураПрисоединенныеФайлы ПО _ДемоНоменклатура.ФайлКартинки = _ДемоНоменклатураПрисоединенныеФайлы.Ссылка

Так, ну вроде, все проверено — все работает. При строгой типизации — ошибок в применении не будет.

Выводы статьи

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


ссылка на оригинал статьи https://habr.com/ru/post/705800/