Практическая шпаргалка по новым возможностям языка запросов 1С

 

Введение

Всем привет! Я решил немного отвлечься от изучения и описания функционала Библиотеки стандартных подсистем и решил затронуть возможности встроенного языка.

Думаю, что немного опоздал с материалом для этой статьи "Практическая шпаргалка по новым возможностям языка запросов 1С" - но все-таки решил разобрать на практических примерах новые возможности языка запросов 1С. Хотя этим возможностям уже примерно пару лет - они появились в версии 1С: Предприятия 8.3.20.

Кроме того, здесь на портале есть пара-тройка публикаций, затрагивающих данный вопрос. Но, тем не менее, материал данной статьи будет полезен всем разработ внешние компонентычикам и программистам, а также все желающим, кто хочет разобраться в элемент стилиарных запросах платфор Тарифы на абонементмы. В крайнем случае, статья подойдет даже в качестве некой простейшей "напоминалки".

В данном материале вы найдете практические примеры использования вот этих функций языка запросов 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) – размер данных в байтах, которые занимают данные параметра.

 

Я буду использовать только типовую консоль запросов, Платформу 8.3.20.1674 и демо-конфигурацию "Библиотека стандартных подсистем 3.1" (3.1.7.137), режим совместимости которой я поднял до 8.3.20 (без использования). Надеюсь, что данные примеры будут вам полезны в дальнейшем.

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

Переходим к практическим примерам использования функций на примере простых запросов. Условно, я разбил эти функции на 11 групп (по одной или несколько функций близких по смыслу).

 

Практические примеры использования:

1. Функция Строка(String) :

 
// с ссылками работ внешние компонентыать не умеет.
// только с примитивными типами
// ошибки не будет только если примен пользователь ить "Выразить"

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

 

 

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,
	_ДемоНоменклатура.Ссылка КАК Ссылка
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
	_ДемоНоменклатура.Цена > 0

 

 

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
	_ДемоНоменклатура.Ссылка КАК Ссылка
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
	_ДемоНоменклатура.Цена > 0

 

 

4. Функции Окр(Round) и Цел(Int) :

Округляет по правилу и возвращает целое значение числа.

 

// округление или целое число

ВЫБРАТЬ
	ОКР(13240.345235, -2) КАК Округление,  // 13200 
	ЦЕЛ(13240.345) КАК Цел1,  // 13240

	_ДемоНоменклатура.Ссылка КАК Ссылка
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
	_ДемоНоменклатура.Цена > 0

 

 

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

Возвращает длину строки.

 
// здесь определим длину стоки - длина наименования

ВЫБРАТЬ
	_ДемоНоменклатура.Ссылка КАК Ссылка,
	ДЛИНАСТРОКИ(_ДемоНоменклатура.Ссылка.Наименование) КАК ДлинаНаименования,
	_ДемоНоменклатура.Цена КАК Цена1
	
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
	_ДемоНоменклатура.Цена > 0

 

 

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

Убирает пробелы слева, справа или с обеих сторон.

 
// запрос убирает пробелы слева, справа, с обеих сторон строки

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

	_ДемоНоменклатура.Цена КАК Цена1
	
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
	_ДемоНоменклатура.Цена > 0

 

 

7. Функции Прав(Right) и Лев(Left) :

Возвращает "обрезанную" подстроку слева или справа на количество символов.

 
// обрезаем строку и выводим результат

ВЫБРАТЬ
	_ДемоНоменклатура.Ссылка КАК Ссылка,
	Лев(_ДемоНоменклатура.Ссылка.Наименование,5) КАК Слева5,
	Прав(_ДемоНоменклатура.Ссылка.Наименование,10) КАК Справа10,
	_ДемоНоменклатура.Цена КАК Цена1
	
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
	_ДемоНоменклатура.Цена > 0

 

 

8. Функция СтрНайти(StrFind) :

Возвращает номер позиции символа вхождения.

 

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

 

 

9. Функции ВРег(Upper) и НРег(Lower) :

Переводит в верхний и нижний регистры.

 
// переводим в заглавные или строчные буквы

ВЫБРАТЬ
	_ДемоНоменклатура.Ссылка КАК Ссылка,
	Врег(_ДемоНоменклатура.Ссылка.Наименование) КАК Заглавными,
	Нрег(_ДемоНоменклатура.Ссылка.Наименование) КАК Прописными,
	_ДемоНоменклатура.Цена КАК Цена1
	
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
	_ДемоНоменклатура.Цена > 0

 

 

10. Функция СтрЗаменить(StrReplace) :

Ищет подстроку вхождения и меняет ее на другую подстроку.

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

 

 

11. Функция РазмерХранимыхДанных(StoredDataSize) :

Данная функция возвращает размер хранотчетыимых данных в байтах.

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

 

 

Так, ну вроде, все проверен программу 1С о - все работ внешние компонентыает. Примеры приведены и все они рабочие. Как видно все эти функции "перетянуты" из языка платфор Тарифы на абонементмы в язык запросов 1С.

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

Как говориться - смотри и примен пользователь яй в своих "самописках" ). Перейдем к заключению и сделаем выводам по материалам, представленным в этой статье.

 

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

В материале представлены практические примеры примен пользователь ения новых функций языка запросов 1с. Эти функции характерны для платфор Тарифы на абонементмы 1с предприятия версии от 8.3.20. Предполагаю уже, что данная статья не вносит какие-либо "новшества" в разработ внешние компонентыку, а представлена только в качестве базовой шпаргалки, помогающей вам использовать новые возможности в разработ внешние компонентыке и программиров автоматизацией ании (чтобы все не держать в голове).

Отмечу, что отличный и правильный запрос - это уже решение вашей задачи. По опыту - это самое оптимальное решение.

Так же, я хотел затронуть момент примен пользователь ения данных функций в "типовых" конфигурациях. Например, возьмем последний релиз 1С Бухгалтерии 3 (на момент написания статьи - ноябрь 2022 - это 3.0.123.26). Режим совместимости этой версии конфигурации до сих пор 8.3.17., т.е. здесь, спустя пару лет, и в помине нет примен пользователь ения данных функций. Когда они появятся - вопрос открытый?

Еще один момент, в комментариях можете написать, кто что думает, по этому поводу - типовая Бухгалтерия 3.0.123.26 в режиме 8.3.17, а требуют самую новую платфор Тарифы на абонементму от последних чисел.

 

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

Наиболее интересные из них и полезные для вас - это:

Базовые принципы работ внешние компонентыы с регламентными заданшаблониями подсистем БСП

Основные возможности работ внешние компонентыы с файлами в типовой конфигурации на БСП

Система контроля ведения учета [БСП]

Стандартные подсистемы БСП - параметры работ внешние компонентыы клиента и возможности диалогов

Шаблоны сообщений пользователю - подсистема БСП

Оценка производительности с помощью БСП

 

В заключение статьи напишу:

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

Любая поддержка по развитию канала и профиля приветствуется и повлечет за собой более качественные, сложные и интересные материалы для вашей профессиональной деятельности на портале и в других форматах. Также я готов к любому взаимовыгодному сотрудничеству в разных форматах профессионального взаимодействия.

Спасибо за прочтение данной статьи и оценку материала. Всем привет и пока.

Полная версия

© ООО "Инфостарт", 2006-2023 www.infostart.ru