Pull to refresh

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

Reading time4 min
Views17K

Под конец года, я решил разместить еще одну небольшую статейку у вас на ресурсе, где рассмотрю некоторые относительно новые возможности языка запросов 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С.

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 10: ↑5 and ↓5+2
Comments18

Articles