Привет из мира 1С — Обработка результатов запроса произвольными вычисляемыми полями. Обзор некоторых новых функций СКД

от автора

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

Введение

Приветствую всех читателей! Под завершение 2022 года, я решил испытать пробу пера и «передать привет здешней уважаемой публики из мира 1С».

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

В материале данной статьи, я предлагаю вспомнить на примерах — возможности использования вычисляемых полей в системе компоновки данных (СКД). Так же, предлагаю рассмотреть несколько новых функции, предлагаемых платформой 1с, начиная с версии 8.3.20 в языке СКД.

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

Отмечу, что данный материал не затрагивает полного классического функционала разработки — это чистый «велосипедный» кодинг. В разработке я буду использовать то, что под рукой — это последнюю на данный момент версию платформы 1С:Предприятие 8.3.22.1709 и так называемую 1С:Библиотеку стандартных подсистем 3.1.7.

Итак, хватит со вступлением, и перехожу к рассмотрению работы с вычисляемыми полями в системе компановке данных на практике.

Вычисляемые поля

Вычисляемые поля — это возможность «дорабоатать» таблицу, полученную в запросе своими собственными колонками. Использование вычисляемых полей, думаю, хорошо известно программистам от уровня «пре-миддл» (я не полезу вглубь) . Я бы так сказал, данный метод хорошо избавляет разного вида «неприятностей», когда нужно соединить «несоединяемое» или вычислить «невычисляемое» или просто вынести расчет в «отдельное место» для того, чтобы всем остальным было понятно. Вспомним, что это такое.

Первым шагом, сделаем простейший запрос (входящие данные) на языке запросов 1с. Запрос пусть выглядит вот так:

ВЫБРАТЬ _ДемоНоменклатура.Ссылка КАК Ссылка, _ДемоНоменклатура.СтранаПроисхождения КАК СтранаПроисхождения, _ДемоНоменклатура.Код КАК Код, _ДемоНоменклатура.ЦенаЗакуп КАК ЦенаЗакуп, _ДемоНоменклатура.ЦенаРозн КАК ЦенаРозн ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура ГДЕ _ДемоНоменклатура.ЭтоГруппа = ЛОЖЬ И _ДемоНоменклатура.ПометкаУдаления = ЛОЖЬ

Кратное пояснение — я взял справочник «ДемоНоменклатуры» и сделал запрос по определенным колонкам.

и в СКД он помещен вот здесь:

Рис.1 Набор данных СКД с источником  "ЗАПРОС"
Рис.1 Набор данных СКД с источником «ЗАПРОС»

Далее, определим, что мы хотим подсчитать для каждой строки таблицы — результата этого запроса. Например, расчет наценки и маржи номенклатуры.

Действуем следующим образом. Создадим в конфигурации собственный общий серверный модуль, где поместим наши функции расчета. Пусть это будет пара функций — РассчитатьНаценку, РассчитатьМаржу:

Функция РассчитатьМаржу(ЦенаЗакуп, ЦенаРозн) Экспорт  Маржа = 0;  Если НЕ ЦенаРозн = 0 Тогда Маржа = (ЦенаРозн - ЦенаЗакуп)/ЦенаРозн * 100; КонецЕсли;  Возврат Маржа;  КонецФункции     Функция РассчитатьНаценку(ЦенаЗакуп, ЦенаРозн) Экспорт  Наценка = 0;  Если НЕ ЦенаЗакуп = 0 Тогда Наценка = (ЦенаРозн - ЦенаЗакуп)/ЦенаЗакуп * 100; КонецЕсли;  Возврат Наценка;  КонецФункции

Далее, все просто — используем эти функции в расчете закладки — вычисляемые поля, где подставляем функции из общего модуля, выглядит это вот так:

Рис.2 Раздел "Вычисляемые поля" в СКД
Рис.2 Раздел «Вычисляемые поля» в СКД

Итоговые ресурсы выглядят вот так:

Рис.3 Раздел "Ресурсы" в СКД
Рис.3 Раздел «Ресурсы» в СКД

В итоге, мы получаем вот такой типовой результат:

Рис.3 Отчет в СКД, где колонки "Маржа" и "Наценка" добавлены через расчет вычисляемых полей
Рис.3 Отчет в СКД, где колонки «Маржа» и «Наценка» добавлены через расчет вычисляемых полей

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

Новые функции системы СКД, с версии 1С:Предприятия 8.3.20

В относительно новой версии платформы 1с от релиза 8.3.20- предлагается использовать следующие функции:

СокрЛ(TrimL) – отбросить пробелы слева.  СокрП(TrimR) – отбросить пробелы справа.  СокрЛП(TrimAll) – отбросить пробелы слева и справа.  Лев(Left) – получить первые слева символы строки.  Прав(Right) – получить первые справа символы строки.  СтрНайти(StrFind) – найти подстроку в строке.  ВРег(Upper) – преобразует в верхний регистр.  НРег(Lower) – преобразует в нижний регистр.  СтрЗаменить(StrReplace) – заменяет все вхождения подстроки на другую подстроку.  НСтр(NStr) – получает строку на языке пользователя

В качестве наглядного использования, я сразу покажу на картинке, что данные функции используются так же в вычисляемых полях. Здесь, я использую функции обработки строки — это ВРег(строка) и НРег(строка). Выглядит это вот так:

Рис.4 Новые функции работы со строками в вычисляемых полях
Рис.4 Новые функции работы со строками в вычисляемых полях

Ну и результат запроса, получаем вот такой отчет:

Рис.5 Две новые колонки, одна со строчными буквами, другая с заглавными
Рис.5 Две новые колонки, одна со строчными буквами, другая с заглавными

Фактически, я мог использовать эти функции во внешнем модуле, но новая платформа позволила мне не выносить их «за кадр» отчета. Перейдем к заключению и сделаем выводы.

Заключение и выводы

Считаю, что достаточно детально рассмотрел (вспомнил) применение вычисляемых полей в системе компоновке данных, а так же затронул новые функции (возможности), «вставленные» в СКД, начиная с версии Платформы 8.3.20., что вызовет интерес у многих читателей статьи.

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

Всем спасибо и, надеюсь, до новых встреч!


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


Комментарии

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

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