1s skd منبع را در یک گروه بندی نمایش نمی دهد. توابع زبان بیان سیستم ترکیب داده

در طرح بندی داده ها تنظیم مجموعکمی متفاوت از درخواست ها به نظر می رسد. بیایید مجموعه داده "Query" را در سیستم ترکیب داده تعریف کنیم.

در خود پرس و جو، ما مجموع را تنظیم نمی کنیم، بلکه به برگه "منابع" ترکیب داده ها می رویم. در سطح طرح واره ترکیب داده، ما منابع را تعریف کنید. اینها فیلدهایی هستند که باید در سطح گروه بندی محاسبه شوند. بر روی دکمه ">>" کلیک کنید و خود سیستم تمام فیلدهای عددی را منتقل می کند و آنها را به عنوان منابع تعریف می کند.

منابع همچنین می توانند حاوی فیلدهای غیر عددی باشند. به عنوان مثال، اگر ویژگی "پیوند" را انتخاب کنید، سیستم تعداد اسناد موجود در گروه بندی های ما را شمارش می کند. این اطلاعات نیز ممکن است مفید باشد. بنابراین، در طرح چیدمان ما فقط منابع را تعریف می کنیم، و خود گروه بندی ها در سطح نوع گزارش پیکربندی می شوند. همچنین، خود کاربر می‌تواند گروه‌هایی را ایجاد کند که می‌خواهد در تنظیمات نوع گزارش خود ببیند.

بیایید یک تنظیم استاندارد ترکیب داده ایجاد کنیم.
بر روی دکمه "باز کردن تنظیمات طراح" کلیک کنید.

بیایید نوع گزارش - لیست را انتخاب کنیم. بیایید دکمه "بعدی" را فشار دهیم.

همه فیلدها را انتخاب کنید و فیلد طرف مقابل را به بالاترین موقعیت منتقل کنید. بیایید دکمه "بعدی" را فشار دهیم.

همه فیلدها را انتخاب کنید و فیلد طرف مقابل را به بالاترین موقعیت منتقل کنید. بیایید دکمه "OK" را فشار دهیم.

تنظیمات زیر را دریافت کرد:

همانطور که می بینید، در تنظیمات نوع گزارش، منابع با یک نماد سبز برجسته می شوند تا به سرعت از سایر قسمت ها متمایز شوند.

اگر گزارش خود را در حالت 1C:Enterprise باز کنیم و آن را تولید کنیم، خواهیم دید که داده های نهایی در سطح گروه بندی تولید می شود. نتایج بر اساس نامگذاری و طرف مقابل.

تنظیم منابع در طرح ترکیب داده 1C

حالا بیایید توجه خود را معطوف کنیم تنظیماتی که برای منابع وجود دارد. در قسمت "Expression" می‌توانیم یک تابع تجمیع را مشخص کنیم که با آن می‌توانیم مقدار منبع را بدست آوریم. در لیست کشویی، می توانید تعدادی از توابع استاندارد را ببینید، اما نه همه. به عنوان مثال، هیچ توابعی وجود ندارد.

در اینجا در قسمت "Expression" می توانیم عبارت خود را بنویسیم.

در قسمت "Expression" نیز می توان به عملکرد ماژول های رایج اشاره کرد.

علاوه بر این، می توانید در قسمت "محاسبه بر اساس ..." مشخص کنید که برای کدام گروه ها باید منبع را محاسبه کنید. اگر فیلد «محاسبه بر اساس…» پر نشده باشد، ارزش کل منبع در تمام سطوح گروه بندی که در تنظیمات نوع گزارش تعریف شده است، محاسبه می شود. در مورد ما، باید فیلد "محاسبه بر اساس ..." منبع "تعداد" را پر کنیم، زیرا می توانیم کالاهایی را با واحدهای اندازه گیری مختلف بفروشیم. به عنوان مثال: روغن در لیتر و چرخ به صورت قطعه. آیا جمع کردن تعداد این کالاها غیر منطقی نیست؟ بنابراین، ما باید جمع مقدار را در سطح اقلام و در سطح طرف مقابل بگذاریم
جمع را حذف کنید

اگر گزارشی تهیه کنیم، می بینیم که مجموع بر اساس کمیت فقط با نامگذاری محاسبه می شود و توسط طرف مقابل، مجموع کمیت خالی است.

فرصت هایی برای توصیف منابع در طرح طرح داده 1C

در نظر بگیریم تعدادی از ویژگی های غیر آشکار مرتبط با توصیف منابع.

  • هر منبع می تواند چندین بار تعریف کنید. اما این فقط در صورتی معنا دارد که
    منبع در سطوح مختلف گروه بندی محاسبه خواهد شد. به عنوان مثال، اگر مقدار، در یک مورد
    برای آیتم خلاصه می شود و برای طرف مقابل ما حداقل مقدار را دریافت می کنیم.

اگر گزارشی تهیه کنیم، خواهیم دید که برای طرف مقابل دریا، حداقل خرید پنج واحد از کالای خود چسبنده است.

  • در قسمت "Expression" علاوه بر نوشتن فرمول می توانید استفاده کنید یک تابع ترکیب داده خاص به نام "Ccalculate". این تابع به شما اجازه می دهد تا مقداری از مقدار نهایی را با استفاده از فرمول خاصی محاسبه کنید. به عنوان مثال، برای هر طرف مقابل، باید درصد خرید در واحدهای طبیعی را نسبت به حجم کل. اما چگونه به دست آوریم حجم کلیخرید بر اساس مقدار؟ برای این کار از تابع "Calculate" استفاده کنید و عبارت زیر را در قسمت "Expression" بنویسید:
جمع(تعداد)/محاسبه("جمع(تعداد)"، "کل")*100

همانطور که دیدیم، تمام پارامترهای تابع "Ccalculate" رشته ای هستند. برای اینکه قسمت کمیت به زیبایی در گزارش نمایش داده شود، آن را در برگه "مجموعه داده ها" پیکربندی می کنیم. در خط کمیت، فیلد «گزینه‌های ویرایش» را پیدا کنید. بیایید دیالوگ را باز کنیم، خط "Format" را پیدا کنیم و رشته قالب را در آن ویرایش کنیم، و مقدار "Precision" را روی دو در تب "Number" قرار دهیم.

بیایید گزارش را اجرا کنیم و نتیجه محاسبه درصد خرید طرف مقابل "AUPP KOS LLP" را نسبت به
حجم کل:


در پایان مقاله می خواهم به شما رایگان از آناتولی سوتنیکوف توصیه کنم. این دوره از یک برنامه نویس با تجربه است. او به طور جداگانه به شما نحوه ایجاد گزارش در ACS را نشان می دهد. فقط باید با دقت گوش کنید و به خاطر بسپارید! پاسخ به سوالاتی مانند:
  • چگونه یک گزارش لیست ساده ایجاد کنیم؟
  • ستون های فیلد، مسیر و عنوان در تب فیلدها برای چیست؟
  • محدودیت فیلدهای طرح بندی چیست؟
  • چگونه نقش ها را به درستی تنظیم کنیم؟
  • نقش فیلدهای طرح بندی چیست؟
  • از کجا می توانم برگه طرح بندی داده را در یک پرس و جو پیدا کنم؟
  • چگونه پارامترها را در SKD پیکربندی کنیم؟
  • بیشتر جالب تر ...
شاید شما نباید سعی کنید خودتان در جستجوی اطلاعات لازم در اینترنت گشت و گذار کنید؟ علاوه بر این، همه چیز برای استفاده آماده است. فقط شروع کن! تمام جزئیات در مورد آنچه در آموزش های ویدیویی رایگان وجود دارد

در اینجا یکی از درس های مربوط به برگه ترکیب داده در یک پرس و جو آورده شده است:

1. محاسبه (Eval)- طراحی شده برای ارزیابی یک عبارت در زمینه برخی از گروه بندی. این تابع برای سازگاری با نسخه های قبلی پلت فرم استفاده می شود. در عوض، توصیه می شود از تابع Evaluate Expression استفاده کنید.

نحو :
محاسبه (بیان، گروه بندی، نوع محاسبه)

مولفه های :

  • اصطلاح(خط). شامل یک عبارت محاسبه شده است.
  • گروه بندی(خط). شامل نام گروهی است که عبارت باید در زمینه آن ارزیابی شود. اگر یک رشته خالی به عنوان نام گروه بندی استفاده شود، محاسبه در زمینه گروه بندی فعلی انجام می شود. اگر رشته GrandTotal به عنوان نام گروه بندی استفاده شود، محاسبه در زمینه کل کل انجام می شود. در غیر این صورت، محاسبه در زمینه گروه بندی والد با آن نام انجام می شود.
    برای مثال:
    Amount(Sales.AmountTurnover) / Calculate("Amount(Sales.AmountTurnover)"، "TotalTotal").
    در این مثال، نتیجه نسبت مقدار موجود در قسمت "Sales.AmountTurnover" رکورد گروه بندی به مقدار همان فیلد در کل طرح بندی خواهد بود.
  • نوع محاسبه(خط). اگر این پارامتر روی "GeneralTotal" تنظیم شود، عبارت برای تمام رکوردهای گروه بندی محاسبه می شود. اگر مقدار پارامتر "گروه" باشد، مقادیر برای رکورد گروه فعلی گروه محاسبه می شود.
2. ارزیابی بیان (EvalExpression) - طراحی شده برای ارزیابی یک عبارت در زمینه برخی از گروه بندی. این تابع انتخاب گروه بندی ها را در نظر می گیرد، اما انتخاب های سلسله مراتبی را در نظر نمی گیرد. این تابع را نمی توان برای یک گروه بندی در انتخاب گروه آن گروه بندی اعمال کرد.

نحو :
CalculateExpression(Expression، Grouping، CalculationType، Start، End، Sort، HierarchicalSort، HandleSameOrderValues)

مولفه های :

  • اصطلاح(خط). شامل یک عبارت محاسبه شده است.
  • گروه بندی(خط). شامل نام گروهی است که عبارت باید در زمینه آن ارزیابی شود. اگر یک رشته خالی به عنوان نام گروه بندی استفاده شود، محاسبه در زمینه گروه بندی فعلی انجام می شود. اگر رشته GrandTotal به عنوان نام گروه بندی استفاده شود، محاسبه در زمینه کل کل انجام می شود. در غیر این صورت، محاسبه در زمینه گروه بندی والد با آن نام انجام می شود.
  • نوع محاسبه(خط). اگر این پارامتر روی "GeneralTotal" تنظیم شود، عبارت برای تمام رکوردهای گروه بندی محاسبه می شود. اگر مقدار پارامتر "گروه" باشد، مقادیر برای رکورد گروه فعلی گروه محاسبه می شود. اگر پارامتر دارای مقدار "GroupingNotResource" باشد، هنگام محاسبه تابع برای رکورد گروهی بر اساس منابع، عبارت برای اولین رکورد گروه گروه بندی اصلی محاسبه می شود. هنگام ارزیابی تابع CalculateExpression با مقدار "GroupingNotResource" برای رکوردهای گروهی که بر اساس منابع گروه بندی نمی شوند، تابع به همان روشی ارزیابی می شود که با مقدار پارامتر "گروه بندی" محاسبه می شود. سازنده طرح‌بندی ترکیب داده‌ها، هنگام ایجاد یک طرح‌بندی ترکیب داده، هنگام نمایش یک فیلد، منبعی که توسط آن گروه‌بندی انجام می‌شود، عبارتی را به طرح‌بندی که با استفاده از تابع Calculate Expression محاسبه می‌شود، با پارامتر «GroupingNotResource» مشخص شده خروجی می‌دهد. . برای بقیه منابع گروه بندی شده بر اساس منبع، عبارات منبع منظم برگردانده می شوند. اگر پارامتر روی "Hierarchy" تنظیم شده باشد، در صورت وجود ورودی سلسله مراتبی والد، و اگر ورودی سلسله مراتبی والد وجود نداشته باشد، عبارت باید برای کل گروه بندی ارزیابی شود. سازنده layout، هنگام تولید عبارتی برای فیلد "% در یک گروه سلسله مراتبی"، عبارتی را تولید می کند که حاوی رابطه عبارت منبع با تابع CalculateExpression برای عبارت منبع است که برای گروه بندی فعلی با محاسبه "Hierarchy" ارزیابی می شود. نوع
  • شروع کنید. مشخص می کند که کدام رکورد برای شروع قطعه شروع شود که در آن توابع جمع عبارت محاسبه شود و از کدام رکورد مقادیر فیلدهای خارج از توابع جمع به دست آید. رشته ای حاوی یکی از:
    • "اولین". شما باید اولین رکورد گروه بندی را بدست آورید. بعد از کلمه داخل پرانتز، می توانید یک عبارت را مشخص کنید که نتیجه آن از ابتدای گروه بندی به عنوان یک افست استفاده می شود. مقدار حاصل باید یک عدد صحیح باشد، بالای صفر. به عنوان مثال، First(3) - گرفتن رکورد سوم از شروع گروه بندی. اگر اولین ورودی خارج از گروه بندی باشد، در نظر گرفته می شود که هیچ ورودی وجود ندارد. به عنوان مثال، اگر 3 رکورد وجود دارد و شما می خواهید اولین (4) را دریافت کنید، در نظر گرفته می شود که هیچ رکوردی وجود ندارد.
    • "آخر". شما باید آخرین ورودی گروه بندی را دریافت کنید. بعد از کلمه داخل پرانتز، می توانید یک عبارت را مشخص کنید که نتیجه آن به عنوان یک افست از انتهای گروه بندی استفاده می شود. مقدار حاصل باید یک عدد صحیح بزرگتر از صفر باشد. به عنوان مثال، Last(3) - رکورد سوم را از انتهای گروه بندی دریافت کنید. اگر آخرین ورودی خارج از گروه بندی باشد، در نظر گرفته می شود که هیچ ورودی وجود ندارد. به عنوان مثال، اگر 3 رکورد وجود دارد، و شما می خواهید آخرین (4) را دریافت کنید، در نظر گرفته می شود که هیچ رکوردی وجود ندارد.
    • "قبلی". شما باید ورودی گروه بندی قبلی را دریافت کنید. بعد از کلمه داخل پرانتز، می توانید عبارتی را مشخص کنید که نتیجه آن به عنوان یک تغییر به عقب از رکورد گروه بندی فعلی استفاده می شود. به عنوان مثال، Previous(2) - قبلی را از رکورد قبلی دریافت کنید. اگر رکورد قبلی خارج از گروه بندی باشد (برای مثال، رکورد گروه بندی دوم باید Previous (3) را دریافت کند)، اولین رکورد گروه بندی به دست می آید. هنگام به دست آوردن رکورد قبلی برای کل گروه بندی، در نظر گرفته می شود که اولین رکورد به دست آمده است.
    • "بعد". باید ورودی گروه بندی بعدی را دریافت کنید. بعد از کلمه داخل پرانتز، می توانید عبارتی را مشخص کنید که نتیجه آن به عنوان یک تغییر به جلو از رکورد گروه بندی فعلی استفاده می شود. به عنوان مثال، Next(2) - بعدی را از رکورد بعدی دریافت کنید. اگر رکورد بعدی فراتر از گروه بندی باشد، در نظر گرفته می شود که هیچ رکوردی وجود ندارد. به عنوان مثال، اگر 3 رکورد وجود داشته باشد و رکورد سوم Next شود، در نظر گرفته می شود که هیچ رکوردی وجود ندارد. هنگامی که رکورد بعدی برای کل گروه بندی دریافت می شود، در نظر گرفته می شود که هیچ رکوردی وجود ندارد.
    • "جاری". شما باید ورودی فعلی را دریافت کنید. هنگامی که برای کل گروه بندی بازیابی می شود، اولین رکورد بازیابی می شود.
    • "BoundaryValue". نیاز به گرفتن رکورد با مقدار مشخص شده. بعد از کلمه RestrictingValue در پرانتز، باید عبارتی را که می‌خواهید قطعه را با مقدار آن شروع کنید، اولین فیلد مرتب‌سازی را مشخص کنید. رکورد اولین رکوردی خواهد بود که مقدار فیلد سفارشی آن بزرگتر یا مساوی مقدار مشخص شده باشد. به عنوان مثال، اگر فیلد Period به عنوان فیلد سفارش استفاده شود و دارای مقادیر 01/01/2010، 02/01/2010، 03/01/2010 باشد، و می خواهید LimitValue(DateTime(2010) را دریافت کنید. ، 1، 15))، سپس رکوردی با تاریخ 02/01 دریافت می شود. 2010.
  • پایان. مشخص می‌کند که قطعه به کدام رکورد ادامه داده شود تا در آن عبارت جمع ارزیابی شود. رشته ای حاوی یکی از:
    • "اولین".
    • "آخر".
    • "قبلی".
    • "بعد".
    • "جاری".
    • "BoundaryValue".
  • مرتب سازی. رشته ای که عبارات جدا شده با کاما را فهرست می کند که در کدام جهت ترتیب ترتیب داده شود. اگر مشخص نشده باشد، ترتیب به همان روشی انجام می شود که برای گروه بندی که عبارت برای آن ارزیابی می شود. بعد از هر عبارت می توانید مشخص کنید کلمه کلیدی Asc، برای مرتب‌سازی به ترتیب صعودی، نزولی، برای مرتب‌سازی به ترتیب نزولی، مرتب‌سازی خودکار، برای مرتب‌سازی فیلدهای ارجاع‌شده بر اساس فیلدهایی که قرار است شی ارجاع‌شده بر اساس آنها مرتب شود. کلمه AutoOrder را می توان با کلمات Ascending و Descending استفاده کرد.
  • مرتب سازی سلسله مراتبی. مشابه مرتب سازی. برای مرتب کردن رکوردهای سلسله مراتبی استفاده می شود. اگر مشخص نشده باشد، سازنده layout یک ترتیب مطابق با ترتیب مشخص شده در پارامتر Sort ایجاد می کند.
  • رسیدگی به سفارش با همان ارزش ها. رشته ای حاوی یکی از:
    • "Together" - نشان می دهد که دنباله ای از رکوردهای مرتب شده برای تعیین رکوردهای قبلی و بعدی استفاده می شود.
    • "به طور جداگانه" - به این معنی است که رکوردهای قبلی و بعدی بر اساس مقادیر عبارات ترتیب تعیین می شوند.
    به عنوان مثال، اگر دنباله حاصل بر اساس تاریخ مرتب شود:
    1. 01 ژانویه 2001 Ivanov M. 10
    2. 02 ژانویه 2001 Petrov S. 20
    3. 02 ژانویه 2001 سیدوروف R. 30
    4. 03 ژانویه 2001 Petrov S. 40
    هنگام استفاده از پردازش همان مقادیر سفارش "به طور جداگانه"، قبلی برای ضبط 3 رکورد 2 خواهد بود و هنگام استفاده از "Together" - رکورد 1. و قطعه برای رکورد فعلی برای ضبط 2 برای "به طور جداگانه" رکورد 2 و برای "Together" - رکوردهای 2 و 3 خواهد بود. بنابراین، مجموع رکورد فعلی برای "Separate" 20 و برای "Together" - 50 خواهد بود. اگر "Together" در Start و پارامترهای پایان، نمی توانید برای موقعیت های "اول"، "آخرین"، "قبلی"، "بعدی" یک افست تعیین کنید. مقدار پیش فرض "جدا" است.
مثال :
دریافت نسبت مبلغ در قسمت "Sales.AmountTurnover" یک رکورد گروه بندی به مقدار همان فیلد در کل طرح بندی:
Amount(Sales.AmountTurnover) / CalculateExpression("Amount(Sales.AmountTurnover)"، "TotalTotal").

در این مثال، مقدار سلسله مراتب فعلی محاسبه می شود:
انتخاب
هنگامی که Level() > 0 باشد
سپس EvaluateExpression ("مرجع"، "سلسله مراتب")
در غیر این صورت پوچ
پایان

یادداشت :
این تابع انتخاب گروه بندی ها را در نظر می گیرد، اما انتخاب های سلسله مراتبی را در نظر نمی گیرد. این تابع را نمی توان برای یک گروه بندی در انتخاب گروه آن گروه بندی اعمال کرد. برای مثال، در انتخاب گروه‌بندی نام‌گذاری، نمی‌توانید از عبارت Calculate Expression ("Sum(SumTurnover)"، "TotalTotal") > 1000 استفاده کنید. اما چنین عبارتی را می توان در انتخاب سلسله مراتبی استفاده کرد. اگر رکورد پایانی قبل از رکورد شروع باشد، در نظر گرفته می شود که هیچ رکوردی برای محاسبه داده های تفصیلی و محاسبه توابع جمع وجود ندارد. هنگام محاسبه عبارات بازه ای برای کل کل (پارامتر Grouping روی "GrandTotal" تنظیم شده است)، در نظر گرفته می شود که هیچ رکوردی برای محاسبه داده های دقیق و محاسبه توابع جمع وجود ندارد. سازنده layout، هنگام تولید عبارت تابع Calculate Expression، اگر عبارت ترتیبی حاوی فیلدهایی باشد که نمی توان از آنها در گروه بندی استفاده کرد، تابع Calculate Expression را با NULL جایگزین می کند.

3. EvalExpressionWithGroupArray - تابع آرایه ای را برمی گرداند که هر عنصر آن حاوی نتیجه محاسبه عبارت برای گروه بندی بر اساس فیلد مشخص شده است.

نحو :
ComputeExpressionGroupedArray(Expression، GroupingFieldExpressions، SelectRecords، SelectGroups)

مولفه های :

  • اصطلاح(رشته) - عبارتی که باید ارزیابی شود. به عنوان مثال، "Amount(AmountTurnover)"؛
  • گروه بندی عبارات فیلد
  • انتخاب رکورد
  • انتخاب گروه بندی- انتخاب برای رکوردهای گروه اعمال می شود. برای مثال: "Amount(AmountTurnover) > &Parameter1".
مثال :
حداکثر (محاسبه ExpressionWith GroupingArray ("Amount(AmountTurnover)"، "Counterparty"));


layout builder هنگام تولید عباراتی برای نمایش یک فیلد سفارشی که در بیان آن فقط تابع CalculateArrayWithGroup وجود دارد، یک عبارت خروجی تولید می کند به گونه ای که داده ها برای نمایش نماها و داده ها مرتب شوند.
به عنوان مثال، برای یک فیلد سفارشی با عبارت:
محاسبه ExpressionWith GroupingArray ("Amount(AmountTurnover)"، "Counterparty")
سازنده layout عبارت زیر را برای خروجی ایجاد می کند:
ConcatenateStrings(Array(Order(CalculateExpressionGroupedValueTable("View(Amount(DataSet.AmountTurnover)))، Amount(DataSet.AmountTurnover)"، "DataSet.Counterparty")، "2"))

4. EvalExpressionWithGroupValueTable - تابع جدولی از مقادیر را برمی گرداند که هر عنصر آن حاوی نتیجه محاسبه عبارت برای گروه بندی توسط فیلد مشخص شده است.

نحو :
محاسبه عبارت با GroupingValueTable (عبارت، گروه بندی عبارات فیلد، انتخاب رکوردها، انتخاب گروه بندی)

مولفه های :

  • اصطلاح(رشته) - عبارتی که باید ارزیابی شود. یک خط می تواند شامل چندین عبارت باشد که با کاما از هم جدا شده اند. هر عبارت ممکن است با کلمه کلیدی اختیاری AS و نام ستون جدول مقدار دنبال شود. به عنوان مثال: "پیمانکار، مبلغ (مبلغ گردش مالی) به عنوان حجم فروش".
  • گروه بندی عبارات فیلد- گروه بندی عبارات فیلد که با کاما از هم جدا شده اند. به عنوان مثال، "پیمانکار، طرف"؛
  • انتخاب رکوردعبارتی است که برای سوابق دقیق اعمال می شود. به عنوان مثال، "DeletionMark = False". اگر یک تابع تجمیع در این پارامتر استفاده شود، در ترکیب داده ها خطایی رخ می دهد.
  • انتخاب گروه بندی- انتخاب برای رکوردهای گروه اعمال می شود. برای مثال: "Amount(AmountTurnover) > &Parameter1".
مثال :
محاسبه بیان با جدول GroupingValue ("Counterparty AS Counterparty، Amount(AmountTurnover) as sales Volume"، "Counterparty")

نتیجه این تابع جدولی از مقادیر با ستون های Counterparty و Sales Volume خواهد بود که شامل طرف مقابل با حجم فروش آنها خواهد بود.
سازنده layout، هنگام ایجاد یک طرح، پارامترهای تابع را به فیلدهای طرح بندی داده ها تبدیل می کند. به عنوان مثال، قسمت Account به Dataset تبدیل می شود.
به عنوان مثال، یک فیلد سفارشی با عبارت:
محاسبه بیان با جدول GroupingValue ("Counterparty، Amount(AmountTurnover)"، "Counterparty")
سازنده layout عبارت زیر را برای خروجی ایجاد می کند:
ConnectStrings(GetPart(Order(CalculateExpressionWithGroupingValueTable("DataSet.Account، DataSet.AccountView، Sum(DataSet.AmountTurnover)، View(DataSet.AmountTurnover)، DataSet.OrderingOrderingFieldSet،.5، "D. " )، "2، 4"))

5. سطح (سطح) - عملکرد برای دریافت سطح ضبط فعلی طراحی شده است.

نحو :
مرحله()

مثال :
مرحله()

6. تعداد به ترتیب (SequenceNumber) - شماره سریال بعدی را دریافت کنید.

نحو :
شماره سفارش()

مثال :
شماره سفارش()

7. SequenceNumberInGrouping - شماره دنباله بعدی را در گروه بندی فعلی برمی گرداند.

مثال :
NumberInOrderInGroup()

8. قالب بندی - رشته فرمت شده مقدار ارسال شده را دریافت کنید.

نحو :
قالب (مقدار، FormatString)

مولفه های :

  • معنی- عبارتی که باید قالب بندی شود.
  • FormatString- رشته قالب مطابق با رشته قالب 1C: Enterprise تنظیم شده است.
مثال :
قالب (صورت‌حساب‌های هزینه.AmountDoc، "NPV=2")

9. شروع دوره (BeginOfPeriod)

نحو :
دوره شروع (تاریخ، نوع دوره)

مولفه های :

  • تاریخ(تاریخ). تاریخ داده شده؛
  • نوع دوره
مثال :
PeriodStart(DateTime(2002, 10, 12, 10, 15, 34), "Month")
نتیجه: 01.10.2002 0:00:00

10. EndPeriod (EndOfPeriod) - این تابع برای استخراج یک تاریخ خاص از یک تاریخ معین طراحی شده است.

نحو :
پایان دوره (تاریخ، نوع دوره)

مولفه های :

  • تاریخ(تاریخ). تاریخ داده شده؛
  • نوع دوره(خط). حاوی یکی از مقادیر زیر است: Minute; ساعت؛ روز؛ یک هفته؛ ماه؛ ربع؛ سال؛ دهه؛ نصف سال.
مثال :
EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Week")
نتیجه: 13.10.2002 23:59:59

11. AddKdate (DateAdd) - این تابع برای افزودن مقدار مشخصی به تاریخ طراحی شده است.

نحو :
AddToDate (عبارت، نوع افزایشی، مقدار)

مولفه های :

  • اصطلاح(تاریخ). تاریخ اصلی؛
  • نوع بزرگنمایی(خط). حاوی یکی از مقادیر زیر است: Minute; ساعت؛ روز؛ یک هفته؛ ماه؛ ربع؛ سال؛ دهه؛ نصف سال.
  • مقدار(عدد). تا چه میزان باید تاریخ را افزایش دهید، قسمت کسری نادیده گرفته می شود.
مثال :
AddToDate(DateTime(2002، 10، 12، 10، 15، 34)، "Month"، 1)
نتیجه: 11/12/2002 10:15:34 صبح

12. تفاوت تاریخ - این تابع برای بدست آوردن تفاوت بین دو تاریخ طراحی شده است.

نحو :
DifferenceDate(Expression1, Expression2, DifferenceType)

مولفه های :

  • بیان 1(تاریخ). تاریخ کسر شده؛
  • بیان 2(تاریخ). تاریخ اصلی؛
  • TypeDifference(خط). حاوی یکی از مقادیر زیر است: Second; دقیقه؛ ساعت؛ روز؛ ماه؛ ربع؛ سال
مثال :
تفاوت تاریخ (DATETIME(2002، 10، 12، 10، 15، 34)،
DATETIME(2002، 10، 14، 9، 18، 06)، "DAY")
نتیجه: 2

13. رشته فرعی - این تابع برای انتخاب یک رشته فرعی از یک رشته طراحی شده است.

نحو :
رشته فرعی (رشته، موقعیت، طول)

مولفه های :

  • خط(خط). رشته ای که رشته فرعی از آن استخراج می شود.
  • موقعیت(عدد). موقعیت کاراکتری که رشته فرعی که باید از رشته استخراج شود از آن شروع می شود.
  • طول(عدد). طول رشته فرعی انتخاب شده
مثال :
SUBSTRING(Accounts.Address, 1, 4)

14. طول رشته - تابع برای تعیین طول رشته طراحی شده است.

نحو :
طول رشته (رشته)

پارامتر :

  • خط(خط). رشته ای که طول آن در حال تعیین است.
مثال :
رشته (Accounts. Address)

15. سال- این تابع برای استخراج سال از مقداری از نوع Date طراحی شده است.

نحو :
سال (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که در آن سال تعیین می شود.
مثال :
YEAR (تاریخ شامل)

16. ربع (ربع) - این تابع برای استخراج تعداد یک چهارم از مقدار نوع Date طراحی شده است. تعداد بلوک معمولاً از 1 تا 4 متغیر است.

نحو :
ربع (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که سه ماهه تعیین می شود
مثال :
QUARTER (فاکتور. تاریخ)

17. ماه - این تابع برای استخراج عدد ماه از مقدار نوع Date طراحی شده است. شماره ماه معمولاً در محدوده 1 تا 12 است.

نحو :
ماه (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که ماه تعیین می شود.
مثال :
MONTH (فاکتور. تاریخ)

18. DayOfYear - این تابع برای دریافت روز سال از مقدار نوع Date طراحی شده است. روز سال معمولاً از 1 تا 365 (366) متغیر است.

نحو :
روز سال (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که در آن روز سال تعیین می شود.
مثال :
روز سال (تاریخ Exp.Inc.Date)

19. روز (روز)- این تابع برای دریافت روز ماه از مقدار نوع Date طراحی شده است. روز ماه معمولاً از 1 تا 31 متغیر است.

نحو :
روز (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که در آن روزهای ماه تعیین می شود.
مثال :
DAY (تاریخ Exp.Inc.Date)

20. هفته - این تابع برای بدست آوردن شماره هفته از یک مقدار از نوع Date طراحی شده است. هفته های سال از 1 شماره گذاری می شوند.

نحو :
هفته (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که اعداد هفته تعیین می شود.
مثال :
WEEK (تاریخ Exp.Inc.Date)

21. روز هفته (روز هفته) - این تابع برای دریافت روز هفته از مقدار نوع Date طراحی شده است. روز هفته معمولاً از 1 (دوشنبه) تا 7 (یکشنبه) متغیر است.

نحو :
روز هفته (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که در آن روز هفته تعیین می شود.
مثال :
روز هفته (تاریخ Exp.Inc.Date)

22. ساعت- این تابع برای دریافت ساعت روز از مقداری از نوع Date طراحی شده است. ساعت روز از 0 تا 23 متغیر است.

نحو :
ساعت (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که ساعت روز تعیین می شود.
مثال :
HOUR (تاریخ Exp.Inc.)

23. دقیقه - این تابع برای بدست آوردن دقیقه ساعت از مقدار نوع Date طراحی شده است. دقیقه ساعت از 0 تا 59 متغیر است.

نحو :
دقیقه (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که دقیقه ساعت تعیین می شود.
مثال :
MINUTE (تاریخ Exp.Inc.)

24. دوم - این تابع برای دریافت ثانیه از یک دقیقه از مقدار نوع Date طراحی شده است. ثانیه از یک دقیقه از 0 تا 59 متغیر است.

نحو :
دوم (تاریخ)

پارامتر :

  • تاریخ(تاریخ). تاریخی که ثانیه های دقیقه تعیین می شود.
مثال :
SEC (تاریخ Exp.Inc.)

25. اکسپرس (بازیگران) - این تابع برای انتخاب یک نوع از عبارتی طراحی شده است که ممکن است دارای یک نوع ترکیبی باشد. اگر عبارت حاوی یک نوع متفاوت از نوع مورد نیاز باشد، NULL برگردانده می شود.

نحو :
اکسپرس (بیان، نشانگر نوع)

مولفه های :

  • اصطلاح- عبارتی که باید تبدیل شود.
  • نشانگر نوع(خط). شامل یک رشته نوع به عنوان مثال، "Number"، "String" و غیره. علاوه بر انواع اولیه، این رشته ممکن است حاوی نام یک جدول باشد. در این صورت سعی می شود به یک ارجاع به جدول مشخص شده بیان شود.
مثال :
Express(Data.Attribute1، "Number(10,3)")

26. IsNull (IsNull) - اگر مقدار پارامتر اول NULL باشد، این تابع مقدار پارامتر دوم را برمی گرداند. در غیر این صورت، مقدار پارامتر اول برگردانده می شود.

نحو :
IsNull(Expression1, Expression2)

مولفه های :

  • بیان 1- مقدار بررسی شده
  • بیان 2- مقدار بازگشتی اگر مقدار Expression1 NULL باشد.
مثال :
IsNULL(مبلغ(فروش، مقدار گردش)، 0)

27.ACos- کسینوس قوس الکتریکی را بر حسب رادیان محاسبه می کند.

نحو :
ACos (بیان)

پارامتر :

  • اصطلاح(عدد). مقدار کسینوس (در محدوده -1 ... 1) که زاویه را تعیین می کند.
28.ASin- آرکسین را بر حسب رادیان محاسبه می کند.

نحو :
ASin (بیان)

پارامتر :

  • اصطلاح(عدد). مقدار سینوس (در محدوده -1 ... 1) که زاویه را تعیین می کند.
29. ATan- مماس قوس را بر حسب رادیان محاسبه می کند.

نحو :
ATan (بیان)

پارامتر :

  • اصطلاح(عدد). مقدار مماس که با آن زاویه تعیین می شود.
30. Cos- کسینوس را محاسبه می کند.

نحو :
Cos (بیان)

پارامتر :

  • اصطلاح
31. انقضا- افزایش عدد e به توان.

نحو :
Exp (بیان)

پارامتر :

  • اصطلاح(عدد). ارزش مدرک
32. ورود به سیستم- محاسبه لگاریتم طبیعی.

نحو :
گزارش (بیان)

پارامتر :

  • اصطلاح
33.Log10- لگاریتم X تا پایه 10 را محاسبه می کند.

نحو :
Log10 (عبارت)

پارامتر :

  • اصطلاح(عدد). عدد اصلی بزرگتر از 0 است.
34. پاو- توانمندی

نحو :
پاو (پایه، نما)

مولفه های :

  • پایه(عدد). پایه عملیات توان.
  • نشانگر(عدد). توان.
35. گناه- سینوس را محاسبه می کند.

نحو :
گناه (بیان)

پارامتر :

  • اصطلاح(عدد). بر حسب رادیان مشخص شده است.
36. مربع- جذر را محاسبه می کند.

نحو :
Sqrt (بیان)

پارامتر :

  • اصطلاح(عدد). عدد غیر منفی
37. قهوهای مایل به زرد- مماس را محاسبه می کند.

نحو :
قهوهای مایل به زرد (بیان)

پارامتر :

  • اصطلاح(عدد). مقدار سینوس که با آن زاویه تعیین می شود.
38. اوکر (دور)- عدد اصلی را به عمق بیت مورد نظر گرد می کند. حالت گرد کردن استاندارد است (1.5 مانند 2 است).

نحو :
Env (بیان، عمق بیت)

مولفه های :

  • اصطلاح(عدد). شماره اولیه؛
  • عمق بیت(عدد). تعداد ارقام اعشار برای گرد کردن.
39. بین- قسمت کسری عدد را قطع می کند.

نحو :
Int (بیان)

پارامتر :

  • اصطلاح(عدد). عدد کسری
40. توابع ماژول های رایج

عبارت موتور ترکیب داده می تواند شامل فراخوانی تابع به ماژول های پیکربندی مشترک جهانی باشد. برای فراخوانی چنین توابعی نیازی به نحو اضافی نیست.

مثال :
نام اختصاری (اسناد. پیوند، اسناد. تاریخ، اسناد. شماره)

در این مثال، تابع "ShortName" از ماژول پیکربندی عمومی فراخوانی می شود.
توجه داشته باشید که استفاده از توابع ماژول مشترک تنها زمانی مجاز است که گزینه پردازشگر ترکیب داده مربوطه مشخص شده باشد.
همچنین، توابع متداول ماژول را نمی توان در عبارات فیلد سفارشی استفاده کرد.

41. نمایندگی - این تابع یک نمایش رشته ای از مقدار ارسال شده از یک نوع غیر ابتدایی را برمی گرداند. برای مقادیر نوع اولیه، خود مقدار را برمی‌گرداند.

<Пустое значение>".

مثال :
مشاهده (حساب)

42. رشته - این تابع مقدار ارسال شده را به یک رشته تبدیل می کند.

اگر از یک آرایه یا جدولی از مقادیر به عنوان پارامتر استفاده شود، تابع رشته ای حاوی نمایش رشته تمام عناصر آرایه را برمی گرداند که با کاراکترهای ";" از هم جدا شده اند. اگر هر عنصری یک نمایش رشته خالی داشته باشد، رشته "<Пустое значение>".

مثال :
رشته (تاریخ فروش)

43. ValueFilled (ValueIsFilled)

برای مقادیر NULL، Undefined همیشه False را برمی‌گرداند.
برای مقادیر، Boolean همیشه True را برمی‌گرداند.
برای انواع دیگر، اگر مقدار با مقدار پیش‌فرض نوع داده شده متفاوت باشد، True را برمی‌گرداند.

مثال :
ValueFilled (تاریخ تحویل)

44. LevelInGroup (LevelInGroup) - این تابع سطح رکورد فعلی را نسبت به گروه بندی دریافت می کند.

می توان برای بدست آوردن سطح تودرتوی یک ورودی در یک گروه بندی سلسله مراتبی استفاده کرد.

مثال :
LevelInGroup()

45. ValueType

نحو :
ValueType (عبارت)

پارامتر :

  • اصطلاح(خط). مقدار رشته نوع.
مقداری از نوع Type حاوی نوع مقدار پارامتر تابع را برمی‌گرداند.

در این یادداشت کوتاه، می‌خواهم نشان دهم که چگونه می‌توانید مقادیر را جمع کنید سطوح مختلفگروه بندی، در یک گزارش با استفاده از سیستم ترکیب داده ها.
همانطور که در تصویر نشان داده شده است، تنها در سطح گروه بندی "گروه های آیتم"، منبع "سفارش" محاسبه می شود، نشان می دهد که بر اساس شرایط خاص چقدر باید برای گروه مورد فعلی سفارش دهید:


این مقدار فقط در این سطح گروه بندی قابل محاسبه است، زیرا، در بالا یا پایین، هیچ مقداری برای محاسبه وجود ندارد. به عنوان مثال، در سطح سوابق دقیق، هیچ داده ای در مورد حداکثر تعداد در یک گروه وجود ندارد، زیرا این داده ها فقط برای گروه به عنوان یک کل صادق است و نه برای اجزای جداگانه آن.

بر این اساس، اکنون لازم است مجموع گروه‌های بالاتر ("انبارها"، "انواع انبار") و کل محاسبه شود.
برای این کار از تابع استفاده می شود محاسبه عبارت با آرایه گروهی:
ارزیابی بیان گروه بندی آرایه (EVALEXPESSIONWITHGROUPARRAY)
نحو:
ComputeExpressionGroupedArray(,)
شرح:
تابع آرایه ای را برمی گرداند که هر عنصر آن حاوی نتیجه ارزیابی عبارت برای گروه بندی بر اساس فیلد مشخص شده است.
سازنده layout، هنگام ایجاد یک طرح، پارامترهای تابع را به فیلدهای طرح بندی داده ها تبدیل می کند. به عنوان مثال، قسمت Account به Dataset تبدیل می شود.
سازنده layout، هنگام تولید عباراتی برای نمایش یک فیلد سفارشی که عبارت آن فقط حاوی تابع ()CalculateArrayWithGroupArray است، عبارت خروجی را به گونه‌ای تولید می‌کند که اطلاعات خروجی مرتب شوند. به عنوان مثال، برای یک فیلد سفارشی با عبارت:

محاسبه ExpressionWith GroupingArray ("Amount(AmountTurnover)"، "Counterparty")
سازنده layout عبارت زیر را برای خروجی ایجاد می کند:

ConcatenateStrings(Array(Order(CalculateExpressionWithGroupingValueTable("View(Amount(DataSet.AmountTurnover))، Amount(DataSet.AmountTurnover)"،"DataSet.Counterparty")،"2"))

مولفه های:

نوع: رشته عبارتی که باید ارزیابی شود. یک رشته، به عنوان مثال، Amount (AmountTurnover).

نوع: رشته گروه بندی عبارات فیلد - گروه بندی عبارات فیلد که با کاما از هم جدا شده اند. به عنوان مثال، پیمانکار، طرف.

نوع: رشته عبارتی که فیلتر اعمال شده روی رکوردهای جزئیات را توصیف می کند. توابع انبوه در یک عبارت پشتیبانی نمی شوند. به عنوان مثال، DeletionMark = False.

نوع: رشته عبارتی که فیلتر اعمال شده روی رکوردهای گروه را توصیف می کند. برای مثال، Amount(AmountTurnover) > &Parameter1.
مثال:

حداکثر (محاسبه ExpressionWith GroupingArray ("Amount(AmountTurnover)"، "Counterparty"));

شرح مفصلی از نحو تابع را می توان در http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582 یافت.
حال برای محاسبه، فیلد «Order» را با مقادیر مختلف «Calculate by ...» با استفاده از عبارات زیر کپی می کنیم، توجه داشته باشید که در هر سطح بالاتر، مقادیر سطوح پایین تر از حالت ایستاده گروه بندی استفاده می شود.

در نتیجه، ساختار زیر را دریافت می کنیم:

مقاله نمونه ای از استفاده عملی از میانگین موزون در مجموع گزارش را شرح می دهد. برخی از روش های کار با ACS نشان داده شده است. این مقاله برای یک خواننده آماده است که حداقل مهارت های اولیه در کار با ACS و سازنده پرس و جو دارد.

محاسبه میانگین موزون به طور فعال در وظایف مربوط به حسابداری مدیریت و سایر محاسبات تجاری استفاده می شود.

طبق تعریف، - میانگین وزنی(میانگین وزنی) میانگین حسابی است که وزن هر یک از عبارت هایی را که این میانگین برای آنها محاسبه می شود در نظر می گیرد.

تقریباً در تمام کتاب‌های درسی حسابداری مدیریت، برای نشان دادن میانگین وزنی، با خرید سه دسته از یک محصول یک مثال می‌دهند - هر دسته از کالاها قیمت خرید متفاوتی دارند و مقدار متفاوتی دارند. واضح است که اگر در چنین شرایطی میانگین حسابی قیمت‌های خرید را بگیریم، میانگین دمای بیمارستان را به دست خواهیم آورد - رقمی که معنای عملی ندارد. در چنین شرایطی، میانگین وزنی است که منطقی است.

همان مثال کتاب درسی: کالاها در سه دسته خریداری شد که یکی از آنها 100 تن در 70 لیتر بود. هنر در هر تن، دیگری - 300 تن در 80 لیتر. هنر در هر تن و سوم - 50 تن در 95 پوند. هنر در هر تن، سپس در مجموع 450 تن کالا می خرد. میانگین قیمت خرید معمولی (70 + 80 + 95) خواهد بود: 3 = 81.7 لیتر. هنر میانگین وزنی قیمت با در نظر گرفتن حجم هر یک از لات ها (100 × 70) + (300 × 80) + (50 × 95): 450 = 79.4 پوند است. هنر در هر تن

فرمول:

که در آن X مقادیری هستند که می خواهیم میانگین وزن کنیم و W وزن ها هستند.

اینجاست که تئوری به پایان می رسد.

زمانی که داده‌های مربوط به فروش کالاها را در گزارشی به‌صورت گروه‌بندی شده توسط مدیران نمایش می‌دادم، با این موضوع مقابله می‌کردم، جایی که برای بدست آوردن سودآوری در نتایج ضروری بود. در سطرهای گزارش سودآوری هر محصول در فروش نمایش داده شد، در پایان باید دید مدیر با چه سودآوری کار کرده است. بر این اساس، سودآوری یک "ارزش" است و "وزن" این ارزش درآمد است. تعدادی توضیح برای تکمیل تصویر. درآمد (حجم فروش) حاصلضرب قیمت فروش کالا و مقدار آن است. سود ناخالص درآمد منهای هزینه است (چگونه هزینه دقیقاً در چارچوب این مقاله محاسبه شده است مهم نیست). و در نهایت، سودآوری ما نسبت سود ناخالص به درآمد است که به صورت درصد بیان می شود.

این سوال مطرح می شود - مدیر با چه سودآوری در دوره گزارش کار کرده است. برای پاسخ صحیح به این سوال، باید میانگین وزنی ارزش سودآوری را محاسبه کنید.

برای به دست آوردن میانگین وزنی سودآوری در ACS، در سازنده query یک فیلد کمکی از فرم ایجاد می کنیم.بیان دلخواه، جایی که محصول سودآوری به درآمد را می نویسیم. یک نام مستعار به این فیلد اختصاص دهید -فیلد کمکی. تصویر زیر را ببینید.

ما این فیلد را در گزارش نمایش نمی دهیم، برای محاسبه مجموع به داده هایی نیاز داریم. ما نتایج را از قبل در ACS در برگه محاسبه خواهیم کردمنابع.

روش دیگری برای کار با ACS در برگه "منابع"، که در آن محاسبه کل نشان داده شده است، امکان استفاده از عبارات در فیلد "Expression" با داده های فیلد "فیلدهای موجود" است. تصویر زیر را ببینید.

برای ستون گزارش "درصد سودآوری" عبارت را می نویسیم مقدار (فیلد کمکی) / مبلغ (درآمد).

به طور خلاصه، اول از همه، مهم است که بفهمید میانگین وزنی چیست، و در کجا باید از میانگین حسابی استفاده کنید، و در کجا - میانگین وزنی. از نقطه نظر فنی، دو نکته می تواند مشکلی ایجاد کند - ایجاد یک فیلد کمکی در گزارش، و امکان استفاده از یک عبارت دلخواه در منابع ACS برای محاسبه کل مورد نیاز.

امیدوارم این مقاله برای کسی مفید باشد.