1s skd примери за изчислени полета. Примери за използване на функцията skd - изчисляване на израз

1s skd примери за изчислени полета.  Примери за използване на функцията skd - изчисляване на израз
1s skd примери за изчислени полета. Примери за използване на функцията skd - изчисляване на израз
  • 1C-Битрикс
  • Една от най-важните области на бизнес софтуера е отчитането. Колко лесно е да персонализирате съществуващ отчет към променящите се нужди на бизнеса (и законодателството) или да направите нов, може да зависи (а не в преносен смисъл!) Съдбата на бизнеса, независимо дали е отчет за данъчната служба или диаграма на зависимостта на търсенето на стоки от сезона и други фактори. Мощна и гъвкава система за отчитане, която ви позволява лесно да извличате правилните данни от системата, да ги представяте в разбираема форма, позволявайки на крайния потребител да преконфигурира стандартния отчет, за да види данните в нова светлина - това е идеалът, който всеки бизнес системата трябва да се стреми.

    В платформата 1C:Enterprise механизъм, наречен Data Composition System (накратко ACS), отговаря за генерирането на отчети. В тази статия ще се опитаме да дадем Кратко описаниеидеи и архитектура на механизма ACS и неговите възможности.


    ACS е механизъм, базиран на декларативното описание на отчетите. ACS е проектиран да създава отчети и да показва информация, която има сложна структура. Между другото, в допълнение към разработването на отчети, механизмът ACS се използва и в 1C:Enterprise в динамичен списък, инструмент за показване на информация от списък с богата функционалност (показване на плоски и йерархични списъци, условно форматиране на редове, групиране и др.) .

    Малко история

    В първата версия на платформата 1C:Enterprise 8, версия 8.0, отчетите бяха направени, както следва:
    1. Една или повече заявки са написани на езика за заявки 1C (език, подобен на SQL, повече за него по-долу).
    2. Написан е код, който прехвърля резултатите от изпълнените заявки към документ с електронна таблицаили в диаграма. Кодът може също така да върши работа, която не може да бъде извършена в заявка - например той изчислява стойности с помощта на вградения език 1C.
    Подходът е ясен, но не е от най-удобните - има минимум визуални настройки, всичко трябва да се програмира от ръка на ръка. И един от козовете по това време на изцяло новата платформа "1C:Enterprise 8" е минимизирането на количеството код в приложното решение, което трябва да бъде написано ръчно, по-специално поради визуален дизайн. Би било логично да следваме същия път и в механизма за докладване. Това беше направено чрез разработването на нов механизъм - Data Composition System.

    Една от идеите, които са в основата на ACS, е гъвкавостта и персонализирането на отчетите, които са достъпни както за разработчика, така и за крайния потребител. В идеалния случай бихме искали да дадем на крайния потребител достъп до същия набор от инструменти за проектиране на отчети като разработчика. Би било логично да се направи един набор от инструменти, достъпен за всички. Е, тъй като инструментите включват участието на крайния потребител, това означава, че използването на програмиране в тях трябва да бъде премахнато до минимум (най-доброто от всичко, напълно елиминирано), а визуалните настройки трябва да се използват максимално.

    Формулиране на проблема

    Задачата пред екипа за разработка беше следната - да се направи система за отчети, базирана не на алгоритмичен (т.е. чрез писане на код), а на декларативен подход за създаване на отчети. И смятаме, че проблемът е успешно решен. Според нашия опит около 80% от необходимото отчитане може да се реализира с помощта на ACS без нито един ред код (с изключение на писане на формули за изчисляеми полета), в по-голямата си част - чрез визуални настройки.
    Разработването на първата версия на ACS отне около 5 човеко-години.

    Два езика

    Два езика участват в създаването на отчети. Единият е езикът за заявки, използван за извличане на данните. Вторият е езикът за съставяне на данни, предназначен за писане на изрази, използвани в различни части на системата, например в настройките за съставяне на данни, за описание на персонализирани изрази на полета.

    Език за заявки

    Езикът на заявките е базиран на SQL и се овладява лесно от тези, които познават SQL. Пример за заявка:

    Лесно е да видите аналози на стандартни секции на SQL заявки - SELECT, FROM, GROUP BY, ORDER BY.

    В същото време езикът на заявките съдържа значителен брой разширения, насочени към отразяване на спецификата на финансовите и икономическите задачи и максимално намаляване на усилията за разработване на приложни решения:

    • Рефериране на полета чрез точка. Ако полетата на която и да е таблица са от референтен тип (съхраняват връзки към обекти от друга таблица), разработчикът може да ги посочи в текста на заявката чрез ".", докато броят на нивата на влагане на такива връзки не е ограничен от системата (например Клиентска поръчка.Споразумение.Организация. Телефон).
    • Многомерно и многостепенно формиране на резултатите. Общите и междинните суми се формират, като се вземат предвид групирането и йерархията, нивата могат да бъдат заобиколени в произволен ред с сумиране на междинни суми, осигурява се правилната конструкция на сумите по времеви измерения.
    • Поддръжка на виртуални маси. Предоставените от системата виртуални таблици ви позволяват да получите почти готови данни за повечето приложения, без да е необходимо компилиране сложни заявки. По този начин виртуална таблица може да предостави данни за баланса на стоките в контекста на периоди в определен момент от време. При което виртуални масиизползвайте максимално съхранената информация, например предварително изчислени суми и т.н.
    • Временни маси. Езикът на заявките ви позволява да използвате временни таблици в заявки. С тяхна помощ можете да подобрите производителността на заявките, в някои случаи да намалите броя на заключванията и да направите текста на заявката по-лесен за четене.
    • партидни заявки. За още удобна работас временни таблици в езика на заявките се поддържа работа с пакетни заявки - по този начин създаването на временна таблица и нейното използване се поставят в една заявка. Пакетната заявка е поредица от заявки, разделени с точка и запетая (";"). Заявките в пакета се изпълняват една след друга. Резултатът от изпълнението на групова заявка, в зависимост от използвания метод, ще бъде или резултатът, върнат от последната заявка на групата, или масив от резултатите на всички пакетни заявки в реда, в който заявките в групата следват .
    • Вземете референтни полеви изгледи. Всяка обектна таблица (в която се съхранява директория или документ) има виртуално поле - "Представяне". Това поле съдържа текстово представянеобект и улеснява работата на репортера. И така, за документ това поле съдържа цялата ключова информация - името на типа документ, неговия номер и дата (например "Продажба 000000003 от 06.07.2017 г. 17:49:14"), спестявайки на разработчика от писане на изчисляемо поле.
    • и т.н.
    Машината за заявки автоматично променя заявката, като взема предвид ролите на потребителя, от чието име се изпълнява заявката (т.е. потребителят ще вижда само данните, които има право да вижда) и функционалните опции (т.е. в съответствие с тази, конфигурирана във функционалността на приложното решение).

    Има и специални разширения за език за заявки за SKD. Разширяването се извършва с помощта на специални синтактични инструкции, включени в брекетии се поставя директно в текста на заявката. С помощта на разширения разработчикът определя какви операции ще може да извършва крайният потребител, като персонализира отчета.

    Например:

    • ИЗБИРАМ. Това изречение описва полетата, които потребителят ще може да избира за извеждане. След това ключова думапсевдоними на полета от основния списък за избор на заявка, които ще бъдат достъпни за персонализиране, са изброени разделени със запетаи. Пример: (ИЗБЕРЕТЕ номенклатура, склад)
    • КЪДЕТО. Описва полетата, върху които потребителят може да приложи селекция. Това предложение използва таблични полета. Използването на псевдоними на полета в списъка за избор не е разрешено. Всяка обединена част може да съдържа свой собствен елемент WHERE. Примери: (WHERE Номенклатура.*, Склад), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
    • и т.н.
    Пример за използване на разширения:

    Език за изразяване на състава на данни

    Езикът за съставяне на данни е проектиран да пише изрази, използвани по-специално за описване на потребителски изрази на полета. ACS ви позволява да дефинирате персонализирани полета в отчет, като използвате вашите собствени изрази или набори от опции с условия за техния избор (аналогично на CASE в SQL). Персонализираните полета са аналогични на изчислените полета. Те могат да бъдат зададени както в конфигуратора, така и в режим 1C:Enterprise, но функциите не могат да се използват в персонализирани изрази на полета. общи модули. Следователно персонализираните полета са повече за потребителя, отколкото за разработчика.

    Пример:

    Процесът на създаване на отчет за ACS

    Когато създаваме отчет, трябва да създадем оформление, което определя как данните ще бъдат показани в отчета. Можете да създадете оформление въз основа на схема за съставяне на данни. Схемата за съставяне на данни описва същността на данните, които се предоставят на отчета (откъде да вземете данните и как можете да контролирате състава им). Схемата за съставяне на данни е основата, на която могат да се генерират всякакви отчети. Схемата за съставяне на данни може да съдържа:
    • текст на заявка със системни инструкции за съставяне на данни;
    • описание на няколко набора от данни;
    • подробно описание на наличните полета;
    • описание на връзките между няколко набора от данни;
    • описание на параметрите за събиране на данни;
    • описание на оформлението и групирането на полета;
    • и т.н.

    Например, можете да добавите заявка към схемата за съставяне на данни като набор от данни и да извикате конструктора на заявка, който ви позволява да съставите графично заявка с произволна сложност:

    Резултатът от стартирането на конструктора на заявки ще бъде текстът на заявката (на езика на заявките 1C:Enterprise). Този текст може да бъде коригиран ръчно, ако е необходимо:

    Може да има няколко набора от данни в схема за съставяне на данни, набори от данни могат да бъдат свързани в оформление по произволен начин, могат да се добавят изчислени полета, могат да се задават параметри на отчета и т.н. Струва си да се спомене една интересна функция на механизма за заявки в 1C:Enterprise. В крайна сметка заявките се превеждат в диалект на SQL, специфичен за СУБД, с която приложението работи директно. Като цяло се опитваме да използваме максимално възможностите на СУБД сървърите (ограничени сме от факта, че използваме само тези възможности, които са едновременно налични във всички СУБД, поддържани от платформата 1C:Enterprise - MS SQL, Oracle, IBM DB2 , PostgreSQL). Така на ниво заявка в изчисляеми полета можем да използваме само онези функции, които са преведени в SQL.

    Но на ниво схема за съставяне на данни вече можем да добавяме потребителски полета и да използваме функции в тях във вградения език за разработка на 1C (включително написаните от нас), което значително разширява възможностите на отчетите. Технически изглежда така - всичко, което може да се преведе в SQL, се превежда в SQL, заявката се изпълнява на ниво СУБД, резултатите от заявката се поставят в паметта на сървъра на приложения 1C и ACS изчислява стойностите изчислени полета за всеки запис, чиито формули са написани на езика 1C.


    Добавяне на персонализирани полета

    Можете да добавите произволен брой таблици и диаграми към отчета:


    Дизайнер на отчети


    Докладвайте по време на изпълнение

    С помощта на ACS потребителят може да добави сложни селекции към отчета (които ще бъдат добавени към заявката на правилните места), условен дизайн (позволяващ ви да форматирате различно - шрифт, цвят и т.н. - изходни полета в зависимост от техните стойности) и много повече.

    Опишете накратко процеса на изграждане и генериране на отчет, както следва:

    • Разработчикът по време на проектиране с помощта на дизайнера (или по време на изпълнение с помощта на код) дефинира схемата за оформление на данните:
      • Текст на искане/заявки
      • Описание на изчисляемите полета
      • Връзки между заявки (ако има повече от една)
      • Опции за отчет
      • Настройките по подразбиране
      • и т.н.
    • Горните настройки се записват в оформлението
    • Потребителят отваря отчет
      • Евентуално прави допълнителни настройки (например променя стойностите на параметрите)
      • Натиска бутона "Генериране".
    • Потребителските настройки се прилагат към схемата за съставяне на данни, дефинирана от разработчика.
    • Формира се междинно оформление на състава на данните, съдържащо инструкции откъде да се вземат данните. По-специално заявките, посочени в оформлението, са коригирани. Така че полетата, които не се използват в отчета, се премахват от заявката (това се прави, за да се сведе до минимум количеството получени данни). Всички полета, които се използват във формули за изчислени полета, се добавят към заявката.
    • Процесорът за композиране на данни е включен в кутията. Процесорът за оформление изпълнява заявки, свързва набори от данни, изчислява стойностите на изчислените полета и ресурси, извършва групиране. С една дума, той прави всички изчисления, които не са извършени на ниво СУБД.
    • Процесорът за извеждане на данни стартира заявка за изпълнение и извежда получените данни в документ с електронна таблица, диаграма и др.


    Процесът на генериране на отчет от ACS механизма

    Опитваме се да сведем до минимум количеството отчетни данни, прехвърлени от сървъра към клиентското приложение. Когато показваме данни в документ с електронна таблица, когато отваряме документ с електронна таблица, ние прехвърляме от сървъра само онези редове, които потребителят вижда в началото на документа. Докато потребителят се движи по редовете на документа, липсващите данни се изтеглят от сървъра към клиента.

    Потребителски настройки

    Всички ACS инструменти са достъпни както за разработчика, така и за крайния потребител. Но практиката показва, че крайният потребител често е уплашен от изобилието от възможности на инструмента. Освен това в повечето случаи крайният потребител не се нуждае от цялата мощ на настройките - достатъчно е той да има бърз достъп до настройка на един или два параметъра на отчета (например период и контрагент). Започвайки с определена версия на платформата, разработчикът на отчети има възможност да маркира кои настройки на отчета са достъпни за потребителя. Това става чрез квадратчето за отметка „Включване в потребителските настройки“. Освен това настройките на отчета вече имат флаг „Режим на показване“, който приема една от трите стойности:
    • Бърз достъп. Настройката ще се покаже директно в горната част на прозореца на отчета.
    • Обикновен. Настройката ще бъде достъпна чрез бутона "Настройки".
    • Не е наличен. Настройката няма да бъде достъпна за крайния потребител.


    Задаване на режим на показване във времето за проектиране


    Показване на настройката в режим на бърз достъп по време на изпълнение (под бутона Генериране)

    Планове за развитие

    Един от приоритетите в развитието на ACS за нас е опростяването на потребителските настройки. Нашият опит показва, че за някои крайни потребители работата с потребителските настройки все още е сериозна работа. Отчитаме това и работим в тази посока. Съответно, за разработчиците ще стане по-лесно да работят с ACS, защото ние, както и преди, искаме да предоставим единен инструментариум за настройка на отчети както за разработчика, така и за крайния потребител.

    В тази кратка бележка искам да покажа как можете да обобщите стойности на различни нива на групиране в отчет, като използвате система за съставяне на данни.
    Както е показано на изображението, само на ниво групиране "Групи артикули" ресурсът "Поръчка" се изчислява, той показва колко да поръчате за текущата група артикули въз основа на определени условия:


    Тази стойност може да се изчисли само на това ниво на групиране, тъй като над или по-долу няма стойности за изчисляване. Например на ниво подробни записи няма данни за максималния брой в група, тъй като тези данни са верни само за групата като цяло, а не за отделните й компоненти.

    Съответно, сега е необходимо да се изчислят общите суми за по-високите групи („Складове“, „Видове складове“) и общата сума.
    За целта се използва функцията Изчисляване на израз с групиран масив:
    ОЦЕНЯВАНЕ НА ИЗРАЗ ЗА ГРУПИРАНЕ НА МАСИВ (EVALEXPRESSIONWITHGROUPARRAY)
    Синтаксис:
    ComputeExpressionGroupedArray(,)
    Описание:
    Функцията връща масив, всеки елемент от който съдържа резултата от изчисляването на израза за групиране по зададеното поле.
    Създателят на оформление, когато генерира оформление, преобразува параметрите на функцията в термини на полета за оформление на оформление на данни. Например полето Account ще бъде преобразувано в Dataset. Account.
    Конструкторът на оформление, когато генерира изрази за показване на персонализирано поле, чийто израз съдържа само функцията CalculateArrayWithGroupArray(), генерира изходния израз по такъв начин, че изходната информация е подредена. Например за потребителско поле с израз:

    Изчислете ExpressionWith GroupingArray("Amount(AmountTurnover)", "Counterparty")
    Създателят на оформление ще генерира следния израз за изход:

    ConcatenateStrings(Array(Order(CalculateGroup ExpressionValueTable("View(Amount(DataSet.AmountTurnover)),Amount(DataSet.AmountTurnover)","DataSet.Counterparty"),"2")))

    Настроики:

    Тип: низ. Изразът, който трябва да се оцени. Низ, например Amount(AmountTurnover).

    Тип: низ. Групиране на изрази на полета – групиране на изрази на полета, разделени със запетаи. Например Изпълнител, Страна.

    Тип: низ. Израз, който описва филтъра, приложен към подробни записи. Агрегираните функции не се поддържат в израз. Например DeletionMark = False.

    Тип: низ. Израз, който описва филтъра, приложен към групови записи. Например Сума(СумаОборот) > &Параметър1.
    Пример:

    Maximum(Calculate ExpressionWith GroupingArray("Amount(AmountTurnover)", "Counterparty"));

    Подробно описание на синтаксиса на функцията можете да намерите на http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
    Сега за изчислението ще дублираме полето „Поръчка“ с различни стойности на „Изчисляване по ...“, използвайки следните изрази, имайте предвид, че във всяко по-високо ниво, стойностите на нивата на по-ниското се използват групировки.

    В резултат на това получаваме следната конструкция:

    Влезте като студент

    Влезте като ученик за достъп до училищно съдържание

    1C 8.3 система за съставяне на данни за начинаещи: преброяване на резултатите (ресурси)

    Целта на този урок ще бъде:

    • Напишете отчет, който показва списък с продукти (Директория с храни), тяхното съдържание на калории и вкус.
    • Групирайте продуктите по цвят.
    • Запознайте се с функцията за обобщаване (ресурси) и изчисляемите полета.

    Създаване на нов отчет

    Както в предишните уроци, отворете базата данни " Деликатес" в конфигуратора и създайте нов отчет през менюто " Файл"->"Нов...":

    Тип на документа - външен доклад:

    Във формата за настройки на отчета напишете името " Урок 3"и натиснете бутона" Отворена диаграма на състава на данните":

    Оставете името на схемата по подразбиране и щракнете върху " Готов":

    Добавяне на заявка чрез конструктора

    В раздела " Набор от данни"щракване зеленознак плюс и изберете " Добавяне на набор от данни - Заявка":

    Вместо да пишете текста на заявката ръчно, стартирайте отново конструктор на заявки:

    В раздела " маси"плъзнете масата" Храна" от първата колона към втората:

    Изберете от таблицата Храна" полетата, които ще поискаме. За да направите това, плъзнете полетата " Име", "вкус", "Цвят" И " калории"от втора колона до трета:

    Оказа се така:

    Натисни бутона " Добре" - текстът на заявката се генерира автоматично:

    Формиране на настройки за представяне на отчет

    Отидете на отметка Настройки"и щракнете върху магическа пръчка, да се обади конструктор на настройки:

    Изберете вида на отчета списък..." и натиснете бутона " По-нататък":

    Плъзнете и пуснете от лявата колона вдясно полетата, които ще се показват в списъка, и щракнете върху " По-нататък":

    Плъзнете от лявата колона към дясното поле " Цвят„- според това ще стане групиранередове в отчета. Натиснете " Добре":

    И ето резултата от конструктора. Йерархия на нашия доклад:

    • отчет като цяло
    • групиране "Цвят"
    • подробни записи - редове с имена на храни

    Запазване на отчета (бутон дискета) И без затварянеконфигуратор, веднага ще го отворим в потребителски режим. Оказа се така:

    Промяна на реда на колоните

    Но нека промени редаколони (стрелки нагоре и надолу), така че да изглежда като на снимката по-долу:

    Запазете отчета и го отворете отново в потребителски режим:

    Страхотно, така е много по-добре.

    Обобщаване (сумиране) по съдържание на калории

    Би било хубаво да се показва общото калорично съдържание на храните по групи. За да видите сумата от съдържанието на калории на всички продукти, да речем, бяло или жълто. Или разберете общото съдържание на калории на всички храни в базата данни.

    За това има механизъм за изчисляване на ресурсите.

    Отидете на раздела " Ресурси" и плъзнете полето " калории„(ще го обобщим) от лявата колона в дясната.

    В същото време в полето за израз изберете от падащия списък " Количество (калории)", тъй като общата сума ще бъде сумата от всички елементи, включени в общата сума:

    Запазване и генериране на отчет:

    Разполагаме с резултатите за всяка от групите и за доклада като цяло.

    Обобщаване (средно) по съдържание на калории

    Сега нека направим така, че да се показва друга колона средно аритметичнокалорично съдържание на продукти по групи и общо за отчета.

    Невъзможно е да се докосне вече съществуващата колона „Съдържание на калории“ - общата сума вече се показва в нея, следователно нека добавим още едно поле, което ще бъде точно копиекалорични полета.

    За да създадем такова "виртуално" поле, използваме механизма изчислени полета.

    Отидете на отметка Изчисляеми полета"и натиснете зеленознак плюс:

    В колона " Път на данни"напишете името на новото поле ( заедно, без интервали). Нека се нарича Средни калории", и в колоната " Изразяване" пишем името на вече съществуващо поле, на базата на което ще се изчислява новото поле. Пишем там " калории". Колона " заглавка“ ще се попълни автоматично.

    Добавихме ново поле (" Средни калории“), но няма да се появи в отчета сам – трябва или да го извикате отново конструктор на настройки("вълшебна пръчка") или добавете това поле ръчно.

    Да действаме второначин. За да направите това, отидете на раздела " Настройки", избирам " Докладвай" (все пак искаме да добавим полето като цяло към отчета), изберете раздела по-долу " Избрани полета" и плъзнете полето " Средни калории“ от лявата колона надясно:

    Оказа се така:

    Запазване и генериране на отчет:

    Полето се появи и виждаме, че неговите стойности са стойностите на полето "Калории". Страхотен!

    За да направим това, ние отново използваме вече познатия ни механизъм. ресурси(обобщаване). Отидете на отметка Ресурси" и плъзнете полето " Средни калории“ от лявата колона надясно:

    В същото време в колоната Изразяване"избирам" Средно (средна калория)":

    Запазване и генериране на отчет:

    Виждаме, че за групите, тоест за всеки цвят и за отчета като цяло, средната стойност е изчислена съвсем правилно. Но присъства допълнителни записиза отделни продукти (не за групи), които искате да премахнете от отчета.

    Знаете ли защо са се появили (тоест не групово)? Защото, когато добавихме полето " Средни калории“ в настройките на отчета, във втората стъпка, която избрахме целия доклади това ново поле удари елемента " Подробно записи".

    Нека поправим грешката. За да направите това, върнете се в раздела " Настройки", избирам " Подробни записи" първо отгоре (стъпка 2) и след това " Подробни записи"отдолу (стъпка 3), отидете на отметка" Избрано полета" и вижте в дясната му колона елемента " Автоматичен".

    елемент " Автоматичен" - това не е едно поле. Това са няколко полета, които автоматично стигат тук въз основа на по-високи настройки.

    За да видите какви са тези полета - щракнете върху елемента " Автоматичен" точнои изберете " Разширяване":

    елемент " Автоматичен“ се разширява в следните полета:

    Тук е нашето поле Средни калории"което стигна до тук от параграф" Докладвай"когато го завлечехме там. Просто да излитамеотметнете до това поле, за да премахнете изхода му.

    В светлината на предстоящото издание на 8.2.14, ще се опитам да опиша някои от новите функции на системата за съставяне на данни.

    Отворете схемата за съставяне на данни, за предпочитане във външен отчет, за да улесните редактирането.

    Добавяме набор от данни за заявка и пишем, ръчно или с помощта на конструктора на заявки, най-простата заявка:

    1. Настройте заявка в ACS.

    2. Настройте изчислени полета в ACS

    3. Конфигурираме оформлението на данните в раздела с настройки

    4. Стартираме 1C Enterprise 8.2.14. Отваряме отчета. Формираме, получаваме.

    Описание на самите нови функции:

    1. Текущата дата ()

    Връща системната дата. Когато оформяте оформлението на оформлението, във всички изрази, които присъстват в оформлението, функцията CurrentDate() се заменя със стойността на текущата дата.

    2. ИЗЧИСЛЕН ИЗРАЗ()

    Синтаксис:

    Изчисляване на израз (,)

    Описание:

    Функцията е предназначена да оценява израз в контекста на някакво групиране.

    Функцията взема предвид избора на групи, но не взема под внимание йерархичния избор.

    Функцията не може да бъде приложена към групиране в груповия избор на това групиране. Например при избора на групирането на номенклатурата не можете да използвате израза Изчисляване на израз ("Sum(SumTurnover)", "TotalTotal") > 1000. Но такъв израз може да се използва при йерархичен подбор.

    Ако крайният запис предшества началния запис, тогава се счита, че няма записи за изчисляване на подробни данни и изчисляване на агрегатни функции.

    При изчисляване на интервални изрази за общ сбор (параметърът Групиране е зададен на GrandTotal), се счита, че няма записи за изчисляване на подробни данни и изчисляване на агрегатни функции.

    Конструктор на оформление при генериране на израз на функция Изчисляване на израз, ако подреждащият израз съдържа полета, които не могат да се използват в групирането, замества функцията Изчисляване на изразНа НУЛА.

    Настроики

    Тип: Линия. Изразът, който трябва да се оцени.

    Тип: Линия. Съдържа името на групирането, в чийто контекст изразът трябва да бъде оценен. Ако името на групата е празен ред, изчислението ще се извърши в контекста на текущото групиране. Ако низът GrandTotal се използва като име на групиране, изчислението ще се извърши в контекста на общата сума. В противен случай изчислението ще се извърши в контекста на родителската група с това име.

    Например:

    Sum(Sales.SumTurnover)/Calculate("Sum(Sales.SumTurnover)", "TotalTotal")

    IN този примеррезултатът ще бъде отношението на сумата върху полето Продажби.СумаОборотгрупиране на записи към сумата на едно и също поле в цялото оформление;

    Тип: Линия. Параметърът може да приема следните стойности:

    · общо— изразът ще бъде оценен за всички групиращи записи.

    · Йерархия— изразът ще бъде оценен за родителския йерархичен запис, ако има такъв, и за цялото групиране, ако няма родителски йерархичен запис.

    · групиране— изразът ще бъде оценен за текущия групов запис на групирането.

    · GroupingNotResource— когато се изчислява функция за групов запис по ресурси, изразът ще бъде изчислен за първия групов запис от първоначалното групиране.

    При изчисляване на функцията Изчисляване на израз () със смисъл GroupingNotResourceза групови записи, които не са групи по ресурси, функцията се изчислява по същия начин, както би била изчислена, ако стойността на параметъра е равна на стойността групиране.

    Конструкторът на оформление за съставяне на данни, когато генерира оформление за съставяне на данни, когато показва ресурсното поле, чрез което се извършва групирането, поставя израз в оформлението, който се изчислява с помощта на функцията Изчисляване на израз () , посочвайки параметъра GroupingNotResource. За други ресурси, групирани по ресурс, се поставят регулярни изрази за ресурси.

    Тип: Линия. Указва кой запис да започне фрагмента, в който да се изчислят агрегатните функции на израза и от кой запис да се получат стойностите на полетата извън агрегатните функции. Стойността може да бъде една от следните:

    · Първи (Първи)

    · Последен (последен)

    · Предишна (Предишна)

    · Следващ (Напред)

    · Текущ (Текущ)

    · Ограничаваща стойност(Гранична стойност) Ограничаваща стойност

    Тип: Линия. Показва към кой запис да продължи фрагментът, в който да се изчислят агрегатните функции на израза. Стойността може да бъде една от следните:

    · Първи (Първи). Трябва да получите първия групиращ запис. След думата в скоби можете да посочите израз, резултатът от който ще се използва като отместване от началото на групирането. Получената стойност трябва да е цяло число, по-голямо от нула. Например First(3) - получаване на третия запис от началото на групирането.

    Ако първият запис е извън групата, тогава се счита, че няма записи. Например, ако има 3 записа и искате да получите First(4) , тогава се счита, че няма записи.

    · Последен (последен). Трябва да получите последния запис за групиране. След думата в скоби можете да посочите израз, чийто резултат ще се използва като отместване от края на групирането. Получената стойност трябва да е цяло число, по-голямо от нула. Например Last(3) - вземете третия запис от края на групирането.

    Ако последният запис е извън групирането, тогава се счита, че няма записи. Например, ако има 3 записа и искате да получите Last(4) , тогава се счита, че няма записи.

    · Предишна (Предишна). Трябва да получите предишния запис за групиране. След думата в скоби можете да зададете израз, резултатът от който ще се използва като преместване назад от текущия групиращ запис. Например Previous(2) - вземете предишния от предишния запис.

    Ако предишният запис е извън групирането (например, вторият групиращ запис изисква Previous(3) , тогава се получава първият групиращ запис.

    При получаване на предишния запис за общия сбор се счита, че е получен първият запис.

    · Следващ (Напред). Трябва да получите следващия запис за групиране. След думата в скоби можете да зададете израз, резултатът от който ще се използва като преместване напред от текущия групиращ запис. Например Next(2) - вземете следващия от следващия запис.

    Ако следващият запис надхвърли групирането, тогава се счита, че няма записи. Например, ако има 3 записа и третият запис получава Next(), тогава се счита, че няма записи.

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

    · Текущ (Текущ). Трябва да получите текущия запис.

    Когато се извлича за обща сума за групиране, се извлича първият запис.

    · Ограничаваща стойност(Гранична стойност). Необходимостта да се получи записът с определената стойност. След словото Ограничаваща стойноств скоби трябва да посочите израза, с чиято стойност искате да започнете фрагмента, първото поле за подреждане.

    Записът ще бъде първият запис, чиято стойност на полето за подреждане е по-голяма или равна на указаната стойност. Например, ако използвате полето Период като поле за подреждане и то има стойностите 01/01/2010 , 02/01/2010 , 03/01/2010 и искате да получите LimitValue(ДатаЧас(2010, 1, 15)), тогава ще бъде получен запис с дата 01.02.2010 г.

    Тип: Линия. Изброени са изрази, разделени със запетая, които описват правилата за подреждане. Ако не е посочено, подреждането се извършва по същия начин, както за групирането, за което се оценява изразът. Всеки израз може да бъде последван от ключова дума Asc(за възходящ ред), Спускане(за низходящ ред) и Автоматично подреждане(за подреждане на референтни полета по полетата, по които искате да подредите референтния обект). Слово Автоматично подрежданеможе да се използва като с думата Asc, и със словото Спускане.

    Тип: Линия. Същото като параметър Сортиране. Използва се за подреждане на йерархични записи. Ако не е указано, конструкторът на оформление генерира подреждане според подреждането, указано в параметъра Сортиране.

    Тип: Линия. Указва правило за определяне на предишния или следващия запис, ако има множество записи с еднаква подредена стойност:

    · Отделнопоказва, че последователност от подредени записи се използва за определяне на предишния и следващия запис. Стойност по подразбиране.

    · Заедно (Заедно)показва, че предишният и следващият запис се определят въз основа на стойностите на подреждащите изрази.

    Например, ако получената последователност е подредена по дата:

    дата Пълно име Значение
    1 01 януари 2001 г

    Иванов М.

    10
    2 02 януари 2001 г Петров С. 20
    3 03 януари 2001 г Сидоров Р. 30
    4 04 януари 2001 г Петров С. 40

    Отделно, Че:

    § предишният запис към запис 3 ще бъде запис 2.

    ток, ток(съответно параметрите ЗапочнетеИ Край), тогава за запис 2 този фрагмент ще се състои от един запис 2. Изразът ще бъде равен на 20.

    Ако стойността на параметъра е Заедно, Че:

    § предишният запис към запис 3 ще бъде запис 1.

    § ако изчисленият фрагмент е дефиниран като ток, ток(съответно параметрите ЗапочнетеИ Край), тогава за запис 2 този фрагмент ще се състои от записи 2 и 3. Изразът CalculateExpression("Sum(Value)", Current, Current)ще бъде равно на 50.

    Когато зададете стойност на параметър, равна на Заедно, в параметри ЗапочнетеИ Крайне можете да посочите отместване за позиции Първо, Последно, Предишно, Следващо.

    CalculateExpression("Сума(СумаОборот)", "Първа", "Текуща")

    Ако искате да получите стойността на групирането в предишния ред, можете да използвате следния израз:

    CalculateExpression("Курс", "Предишен")

    списък новХарактеристика:

    ComputeExpressionGroupedArray(,) -

    Функцията връща масив, всеки елемент от който съдържа резултата от изчисляването на израза за групиране по зададеното поле.

    ComputeExpressionGroupedValueTable(,) -

    Функцията връща таблица със стойности, всеки ред от която съдържа резултата от изчисляването на изрази за групиране по указаното поле

    ValueFilled() - Връща True, ако стойността е различна от стойността от този типподразбиране, различно от NULL, различно от нулева препратка, различно от Undefined. Булевите стойности се тестват спрямо NULL. Низовете се проверяват за знаци, които не са интервали.

    формат(, ) - Вземете форматирания низ на предадената стойност. Форматният низ се задава в съответствие с форматния низ на системата 1C:Enterprise.

    Подниз(, , ) - Тази функция е предназначена да избира подниз от низ.

    Дължина на низа() - Функцията е предназначена да определя дължината на низ. Параметърът е израз от тип низ

    Линия() - Ако масивът е предаден като параметър, тогава функцията връща низ, съдържащ низови представяния на всички елементи на масива, разделени със знаците "; ". Ако таблица със стойности е предадена като параметър, тогава функцията връща низ, съдържащ низови представяния на всички редове на таблицата със стойности, а представянията на клетките на всеки ред са разделени със знаците "; ", и линиите са разделени със знака за нов ред. Ако някой елемент има празно представяне на низ, тогава се показва низ вместо неговото представяне.

    Изразен език на системата за съставяне на данни

    Езикът на изразите на системата за съставяне на данни е проектиран да записва изрази, използвани в различни части на системата.

    Изразите се използват в следните подсистеми:

    • схема за съставяне на данни - за описание на изчислени полета, общи полета, изрази за връзки и др.;
    • настройки за съставяне на данни - за описание на персонализирани изрази на полета;
    • оформление на състава на данните - за описание на изрази за релационни набори от данни, описание на параметри на оформление и др.

    Литерали

    Изразът може да съдържа литерали. Възможни литерали от следните типове:

    • линия;
    • Брой;
    • Дата на;
    • Булева стойност.

    Линия

    Литералът на низ се записва със знаците """, например:

    "Низов литерал"

    Ако трябва да използвате знака """ вътре в литерала на низа, трябва да използвате два такива знака.

    Например:

    „буквално „„в кавички“““

    Номер

    Числото се изписва без интервали, в десетичен формат. Дробната част е разделена със знака "." Например:

    10.5 200

    дата

    Литерал от тип дата се записва с помощта на ключовия литерал DATETIME. След тази ключова дума в скоби, разделени със запетаи, са посочени годината, месецът, денят, часовете, минутите, секундите. Индикацията за време не е необходима.

    Например:

    DATETIME(1975, 1, 06) - 6 януари 1975 г. DATETIME(2006, 12, 2, 23, 56, 57) - 2 декември 2006 г., 23:56:57 секунди, 23:56:57 секунди

    булево

    Булевите стойности могат да бъдат записани с помощта на литерали True (True), False (False).

    Значение

    За да посочите литерали от други типове (системни изброявания, предварително дефинирани данни), се използва ключовата дума Value, последвана от името на литерала в скоби.

    Стойност (AccountType. Active)

    Операции с числа

    единичен -

    Тази операция е предназначена да обърне знака на число. Например:

    Продажби.Количество

    Унарен +

    Тази операция не извършва никакви операции с номера. Например:

    Продажби.Количество

    двоичен -

    Тази операция е предназначена за изчисляване на разликата на две числа. Например:

    BalancesAndTurnovers.InitialBalance - BalancesAndTurnovers.EndBalance BalancesAndTurnovers.InitialBalance - 100 400 - 357

    Двоичен +

    Тази операция е предназначена за изчисляване на сумата от две числа. Например:

    BalancesAndTurnovers.InitialBalance + BalancesAndTurnovers.Turnover BalancesAndTurnovers.InitialBalance + 100 400 + 357

    работа

    Тази операция е предназначена за изчисляване на произведението на две числа. Например:

    Номенклатура Цена * 1.2 2 * 3.14

    дивизия

    Тази операция е предназначена да получи резултата от разделянето на един операнд на друг. Например:

    Номенклатура Цена / 1.2 2 / 3.14

    Остатък от делението

    Тази операция е предназначена да получи остатъка от деленето на един операнд на друг. Например:

    Номенклатура Цена % 1.2 2 % 3.14

    Операции върху низове

    Конкатенация (двоичен +)

    Тази операция е предназначена за свързване на два низа. Например:

    Номенклатура.Артикул + “: ”+ Номенклатура.Наименование

    като

    Тази операция проверява дали даден низ съответства на дадения шаблон.

    Стойността на оператора LIKE е TRUE, ако стойността<Выражения>съвпада с шаблона и FALSE в противен случай.

    Следните знаци в<Строке_шаблона>имат значение, различно от просто друг знак в низа:

    • % - процент: поредица, съдържаща нула или повече произволни символи;
    • _ - долна черта: един произволен знак;
    • […] - един или повече знака в квадратни скоби: един знак, който и да е от изброените в квадратните скоби. Едно изброяване може да съдържа диапазони, като a-z, което означава всеки знак в диапазона, включително краищата на диапазона;
    • [^…] - в квадратни скоби икона за отрицание, последвана от един или повече знаци: всеки знак, различен от изброените след иконата за отрицание;

    Всеки друг символ означава себе си и не носи никакво допълнително натоварване. Ако е необходимо да се напише един от изброените знаци като себе си, тогава той трябва да бъде предшестван от<Спецсимвол>Посочената след ключовата дума ESCAPE.

    Например шаблон

    “%ABC[abc]\_abc%” СПЕЦИАЛЕН ЗНАК “\”

    означава подниз, състоящ се от последователност от знаци: букви А; букви B; букви B; една цифра; една от буквите a, b, c или d; знак за подчертаване; букви а; букви b; букви в. Освен това тази последователност може да бъде локализирана, започвайки от произволна позиция в низа.

    Операции за сравнение

    Равно на

    Тази операция е предназначена да сравнява два операнда за равенство. Например:

    Sales.Counterparty = Sales.NomenclatureMainSupplier

    Не е равно

    Тази операция е предназначена да сравнява два операнда за неравенство. Например:

    Продажби.Изпълнител<>Продажби.НоменклатураОсновен доставчик

    По-малко

    Тази операция е предназначена да провери дали първият операнд е по-малък от втория. Например:

    SalesCurrent.Amount< ПродажиПрошлые.Сумма

    | Повече ▼

    Тази операция е предназначена да провери дали първият операнд е по-голям от втория. Например:

    SalesCurrent.Amount > SalesPast.Amount

    По-малко или равно

    Тази операция е предназначена да провери дали първият операнд е по-малък или равен на втория. Например:

    SalesCurrent.Amount<= ПродажиПрошлые.Сумма

    Повече или равно

    Тази операция е предназначена да провери дали първият операнд е по-голям или равен на втория. Например:

    SalesCurrent.Amount >= SalesPast.Amount

    Операция Б

    Тази операция проверява наличието на стойност в предадения списък от стойности. Резултатът от операцията е True, ако стойността е намерена, или False в противен случай. Например:

    Елемент Б (&Елемент1, &Елемент2)

    Операция за проверка дали съществува стойност в набор от данни

    Операцията проверява за наличието на стойност в посочения набор от данни. Наборът от данни за валидиране трябва да съдържа едно поле. Например:

    Продажби. Изпълнител към изпълнители

    NULL операция за проверка

    Тази операция връща True, ако стойността е NULL. Например:

    Продажби.Изпълнител Е НИЩОЖЕН

    Операцията за проверка на стойност за не-NULL

    Тази операция връща True, ако стойността не е NULL. Например:

    Продажби.Изпълнител НЕ Е НИЩОЖЕН

    Булеви операции

    Логическите операции приемат като операнди изрази от тип Boolean.

    Операция НЕ

    Операторът NOT връща True, ако операндът му е False, и връща False, ако операндът му е True. Например:

    НЕ Document.Consignee = Document.Consignor

    Операция И

    Операцията И връща True, ако и двата операнда са True, и връща False, ако един от операндите е False. Например:

    Document.Consignee = Document.Consignor И Document.Consignee = &Изпълнител

    ИЛИ операция

    Операцията OR връща True, ако един от операндите е True, и False, ако и двата операнда са False. Например:

    Document.Consignee = Document.Consignor ИЛИ Document.Consignee = &Изпълнител

    Агрегатни функции

    Агрегираните функции извършват някакво действие върху набор от данни.

    Сума

    Агрегираната функция Sum изчислява сумата от стойностите на изразите, предадени й като аргумент за всички подробни записи. Например:

    Сума(Продажби.СумаОборот)

    Количество

    Функцията Count отчита броя на ненулевите стойности. Например:

    Количество (Продажби.Изпълнител)

    Брой различни

    Тази функция изчислява числото различни значения. Например:

    Количество (Различни продажби. Изпълнител)

    Максимум

    Функцията получава максималната стойност. Например:

    Максимум (Остатъци. Количество)

    минимум

    Функцията получава минималната стойност. Например:

    Минимум (Баланс. Количество)

    Средно аритметично

    Функцията получава средната стойност за ненулеви стойности. Например:

    Средно (Остатъци. Количество)

    Други операции

    Операция SELECT

    Операцията Select е предназначена да избира една от няколко стойности при определени условия. Например:

    Изберете When Sum > 1000 Then Sum Else 0 End

    Правила за сравняване на две стойности

    Ако типовете на сравняваните стойности се различават един от друг, тогава връзката между стойностите се определя въз основа на приоритета на типовете:

    • NULL (най-нисък);
    • булево;
    • Брой;
    • Дата на;
    • линия;
    • Референтни типове

    Връзките между различните типове препратки се дефинират въз основа на референтните номера на таблици, съответстващи на определен тип.

    Ако типовете данни съвпадат, тогава стойностите се сравняват съгласно следните правила:

    • тип Boolean TRUE е по-голямо от FALSE;
    • тип Number има обичайните правила за сравнение за числа;
    • за типа Дата по-ранните дати са по-малко от по-късните;
    • за тип String - сравнения на низове в съответствие с установените национални характеристики на базата данни;
    • референтните типове се сравняват въз основа на техните стойности (номер на запис и т.н.).

    Работа с NULL

    Всяка операция, при която стойността на един от операндите е NULL, ще доведе до NULL резултат.

    Има изключения:

    • операцията AND ще върне NULL само ако нито един от операндите не е False;
    • операцията OR ще върне NULL само ако нито един от операндите не е True.

    Оперативни приоритети

    Операциите имат следните приоритети (първият ред е с най-нисък приоритет):

    • B, Е NULL, НЕ Е NULL;
    • =, <>, <=, <, >=, >;
    • Двоичен +, Двоичен – ;
    • *, /, %;
    • Унарен +, Унарен -.

    Композиция на данни Система Изразяване Езикови функции

    Изчисли

    Функцията Calculate е предназначена да изчислява израз в контекста на някакво групиране. Функцията има следните параметри:

    • Изразяване. Тип String. Съдържа изчислен израз;
    • Групиране. Тип String. Съдържа името на групирането, в чийто контекст изразът трябва да бъде оценен. Ако празен низ се използва като име на групиране, изчислението ще се извърши в контекста на текущото групиране. Ако низът GrandTotal се използва като име на групиране, изчислението ще се извърши в контекста на общата сума. В противен случай изчислението ще се извърши в контекста на родителската група с това име. Например:
    Amount(Sales.AmountTurnover) / Calculate("Amount(Sales.AmountTurnover)", "TotalTotal")

    В този пример резултатът ще бъде съотношението на сумата в полето "Sales.AmountTurnover" на групиращия запис към сумата на същото поле в цялото оформление.

    Ниво

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

    Ниво()

    NumberInOrder

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

    Номер на поръчка()

    NumberIn OrderInGrouping

    Връща следващия пореден номер в текущото групиране.

    NumberInOrderInGroup()

    формат

    Вземете форматирания низ на предадената стойност.

    Форматният низ е зададен в съответствие с форматния низ на 1C:Enterprise.

    Настроики:

    • Значение;
    • Форматиране на низ.

    Формат(Фактури за разходи.СумаDoc, "NPV=2")

    Начало на периода

    Настроики:

      • минута;
      • ден;
      • Седмица;
      • месец;
      • Квартал;
      • десетилетие;
      • Половин година.

    PeriodStart(DateTime(2002, 10, 12, 10, 15, 34), "Месец")

    Резултат:

    01.10.2002 0:00:00

    Краен период

    Функцията е предназначена да извлича конкретна дата от дадена дата.

    Настроики:

    • Дата на. Тип Дата. Дадена дата;
    • Тип период. Тип String. Съдържа една от следните стойности:
      • минута;
      • ден;
      • Седмица;
      • месец;
      • Квартал;
      • десетилетие;
      • Половин година.

    EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Седмица")

    Резултат:

    13.10.2002 23:59:59

    AddDate

    Функцията е предназначена да добави известна стойност към датата.

    Настроики:

    • Тип увеличение. Тип String. Съдържа една от следните стойности:
      • минута;
      • ден;
      • Седмица;
      • месец;
      • Квартал;
      • десетилетие;
      • Половин година.
    • Стойност - с колко искате да увеличите датата. Тип номер. Дробната част се игнорира.

    AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Месец", 1)

    Резултат:

    12.11.2002 10:15:34

    Дата на разликата

    Функцията е предназначена да получава разликата между две дати.

    Настроики:

    • Изразяване. Тип Дата. оригинална дата;
    • Изразяване. Тип Дата. Извадена дата;
    • Тип на разликата. Тип String. Съдържа една от следните стойности:
      • Второ;
      • минута;
      • ден;
      • месец;
      • Квартал;

    DATEDIFF(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "ДЕН")

    Резултат:

    Подниз

    Тази функция е предназначена да избира подниз от низ.

    Настроики:

    • Линия. Тип String. Низът, от който е извлечен поднизът;
    • Позиция. Тип номер. Позицията на знака, от който започва поднизът, който ще бъде извлечен от низа;
    • Дължина. Тип номер. Дължината на избрания подниз.

    ПОДНИЗ(Акаунти.Адрес, 1, 4)

    Дължина на низа

    Функцията е предназначена да определя дължината на низ.

    Параметър:

    • Линия. Тип String. Низът, чиято дължина се определя.

    Низ (Акаунти.Адрес)

    година

    Тази функция е предназначена да извлича годината от стойност от типа Дата.

    Параметър:

    • Дата на. Тип Дата. Датата, от която се определя годината.

    ГОДИНА (вкл. дата)

    Квартал

    Тази функция е предназначена да извлича номера на тримесечието от стойността на типа Дата. Номерът на блока обикновено варира от 1 до 4.

    Параметър

    • Дата на. Тип Дата. Датата, до която се определя тримесечието
    QUARTER(Дата на фактура)

    месец

    Тази функция е предназначена да извлича номера на месеца от стойност от типа Дата. Номерът на месеца обикновено е в диапазона от 1 до 12.

    • Дата на. Тип Дата. Датата, от която се определя месецът.
    МЕСЕЦ(Дата на фактура)

    Ден от годината

    Тази функция е предназначена да получи деня от годината от стойност на тип дата. Денят от годината обикновено варира от 1 до 365 (366).

    • Дата на. Тип Дата. Датата, по която се определя денят от годината.
    ДЕН ОТ ГОДИНАТА (Exp.Inc.Date)

    ден

    Тази функция е предназначена да получи деня от месеца от стойност от типа Дата. Денят от месеца обикновено варира от 1 до 31.

    • Дата на. Тип Дата. Датата, от която се определят дните в месеца.
    ДЕН (Дата на изтичане)

    Седмица

    Тази функция е предназначена да получи номера на седмицата от годината от стойност от типа Дата. Седмиците в годината са номерирани от 1.

    • Дата на. Тип Дата. Датата, до която се определят номерата на седмиците.
    СЕДМИЦА (Дата на изтичане)

    Ден от седмицата

    Тази функция е предназначена да получи деня от седмицата от стойност от типа Дата. Денят от седмицата обикновено варира от 1 (понеделник) до 7 (неделя).

    • Дата на. Тип Дата. Датата, по която се определя денят от седмицата.
    ДЕН ОТ СЕДМИЦАТА (Дата на изтичане)

    час

    Тази функция е предназначена да получи часа от деня от стойността на тип дата. Часът на деня варира от 0 до 23.

    • Дата на. Тип Дата. Датата, до която се определя часът на деня.
    ЧАС (Дата на изтичане)

    минута

    Тази функция е предназначена да получава минутата от часа от стойността на тип дата. Минутата на часа варира от 0 до 59.

    • Дата на. Тип Дата. Датата, до която се определя минутата на часа.
    МИНУТА (Дата на изтичане)

    Второ

    Тази функция е проектирана да получава секунди от минута от стойност на тип дата. Секундата от минута варира от 0 до 59.

    • Дата на. Тип Дата. Датата, на която се определят секундите от минутата.
    SEC(Exp.Inc.Date)

    експресен

    Тази функция е предназначена да избира тип от израз, който може да съдържа композитен тип. Ако изразът съдържа тип, различен от необходимия тип, ще бъде върнато NULL.

    Настроики:

    • Изразът, който трябва да се преобразува;
    • Индикация за типа. Тип String. Съдържа низ тип. Например "Число", "Низ" и т.н. Освен примитивни типове даден низможе да съдържа име на таблица. В този случай ще бъде направен опит за изразяване на препратка към посочената таблица.

    Express(Data.Attribute1, "Number(10,3)")

    Нула

    Тази функция връща стойността на втория параметър, ако стойността на първия параметър е NULL.

    В противен случай ще бъде върната стойността на първия параметър.

    IsNULL(Сума(Продажби.СумаОборот), 0)

    Общи функции на модула

    Изразът на машината за композиране на данни може да съдържа извиквания на функции към глобални общи конфигурационни модули. Не е необходим допълнителен синтаксис за извикване на такива функции.

    В този пример функцията "ShortName" ще бъде извикана от модула за обща конфигурация.

    Обърнете внимание, че използването на споделени модулни функции е разрешено само когато е указана съответната опция за процесор за композиране на данни.

    Освен това общи функции на модула не могат да се използват в персонализирани изрази на полета.