Изчислете SKD масива с групиране. Изразен език на системата за съставяне на данни (1Cv8)

Изчислете SKD масива с групиране.  Изразен език на системата за съставяне на данни (1Cv8)
Изчислете SKD масива с групиране. Изразен език на системата за съставяне на данни (1Cv8)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Нека обобщим съдържанието на калории

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

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

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

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

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

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

Нека го обобщим (средно) по отношение на калориите

Сега нека го накараме да се появи в друга колона средно аритметичнокалорично съдържание на продукти по групи и в отчета като цяло.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. Настройте заявка в системата за контрол на достъп.

2. Настройте изчислителни полета в системата за контрол на достъп

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

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

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

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

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

2. COMPUTEEXPRESSION()

Синтаксис:

CalculateExpression(,)

Описание:

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

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

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

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

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

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

Настроики

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

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

Например:

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

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

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

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

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

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

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

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

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

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

· Първо

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

· Предишен

· Следващ (Следващ)

· Текущ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

дата Пълно име Значение
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("Sum(SumTurnover)", "First", "Current")

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

CalculateExpression("Оценка", "Предишен")

списък новфункции:

CalculateExpressionWithGroupArray(,) -

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

CalculateExpressionWithGroupValueTable(,) -

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

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

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

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

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

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

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


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

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

CalculateExpressionWithGroupArray("Сума(СумаОборот)", "Контрагент")
Създателят на оформление ще генерира следния израз за изход:

ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

Настроики:

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

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

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

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

Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty"));

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

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

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

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

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

1. Настройте заявка в системата за контрол на достъп.

2. Настройте изчислителни полета в системата за контрол на достъп

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

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

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

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

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

2. COMPUTEEXPRESSION()

Синтаксис:

CalculateExpression(,)

Описание:

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

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

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

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

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

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

Настроики

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

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

Например:

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

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

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

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

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

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

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

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

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

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

· Първо

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

· Предишен

· Следващ (Следващ)

· Текущ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

дата Пълно име Значение
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("Sum(SumTurnover)", "First", "Current")

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

CalculateExpression("Оценка", "Предишен")

списък новфункции:

CalculateExpressionWithGroupArray(,) -

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

CalculateExpressionWithGroupValueTable(,) -

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

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)

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

Унарен –

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

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

Унарен +

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

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

двоичен -

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

ResidualsAndTurnovers.InitialRemaining – RemainingsAndTurnovers.FinalResidualsRemainingsAndTurnovers.InitialRemaining - 100 400 – 357

Двоичен +

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

RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.Turnover ResiduesAndTurnover.InitialRemaining + 100 400 + 357

работа

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

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

дивизия

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

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

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

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

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

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

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

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

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

като

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

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

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

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

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

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

“%ABV[abvg]\_abv%” СПЕЦИАЛЕН ЗНАК “\”

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

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

Равно на

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

Sales.Counterparty = Sales.NomenclatureMainSupplier

Не е равно

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

Продажби. Контрагент<>Продажби.НоменклатураОсновен доставчик

По-малко

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

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

| Повече ▼

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

SalesCurrent.Sum > SalesPast.Sum

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

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

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

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

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

SalesCurrent.Amount >= SalesPast.Amount

Операция Б

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

Елемент Б (&Продукт1, &Продукт2)

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

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

Продажби. Контрагент към контрагенти

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

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

Sales.Counterparty Е НУЛЕВ

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

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

Продажби. Контрагентът НЕ Е НУЛЕВЕН

Логически операции

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

Операция НЕ

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

НЕ Document.Consignee = Document.Consignor

Операция I

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

Document.Consignee = Document.Consignor И Document.Consignee = &контрагент

ИЛИ операция

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

Document.Consignee = Document.Consignor ИЛИ Document.Consignee = &Counterparty

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

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

Сума

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

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

Количество

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

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

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

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

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

Максимум

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

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

минимум

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

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

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

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

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

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

Операция SELECT

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

Изберете When Amount > 1000 След това Amount В противен случай 0 End

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

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

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

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

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

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

Работа с NULL стойност

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

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

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

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

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

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

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

Изчисли

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

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

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

Ниво

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

Ниво()

NumberInOrder

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

NumberByOrder()

NumberInOrderInGrouping

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

NumberByOrderInGroup()

формат

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

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

Настроики:

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

Формат (Фактури за консумативи. Сума на документ, "NPV=2")

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

Настроики:

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

Начален период (Дата и час (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

AddToDate

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

Настроики:

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

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

Резултат:

12.11.2002 10:15:34

Разлика в датата

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

Настроики:

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

DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "DAY")

Резултат:

Подниз

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

Настроики:

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

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

Дължина на линията

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

Параметър:

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

Ред (контрагенти.Адрес)

година

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

Параметър:

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

YEAR(Разход.Дата)

Квартал

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

Параметър

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

месец

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

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

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

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

  • Дата на. Тип Дата. Датата, по която се определя денят от годината.
DAYYEAR(Разходна сметка.Дата)

ден

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

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

Седмица

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

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

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

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

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

час

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

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

минута

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

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

Второ

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

  • Дата на. Тип Дата. Датата, на която се определят секундите от минутата.
SECOND(Разход.Дата)

Експрес

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

Настроики:

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

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

IsNull

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

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

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

Функции на общите модули

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

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

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

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