1s محاسبه منابع SKD برای گروه های خاص. استفاده از منابع در سیستم کنترل دسترسی با استفاده از مثال ایجاد گزارش جدولی خارجی. ایجاد تنظیمات ارائه گزارش

بیایید به یک مثال نگاه کنیم:

چندین واحد از کالاها با تخفیف های مختلف برای مشتری ارسال می شود. شما باید مقادیر تخفیف برای هر محصول را در یک گزارش نمایش دهید و میانگین تخفیف را محاسبه کنید. بیایید یک گزارش در مورد سیستم کنترل دسترسی ایجاد کنیم.
برای تمام فیلدهایی که باید مجموع ها را نمایش دهیم، یک عبارت (روش) برای محاسبه آنها در برگه "منابع" تنظیم می کنیم. برای فیلد «تخفیف»، روش محاسبه را روی «میانگین» قرار دهید.

ما گزارش را خروجی می دهیم:

همانطور که می بینید، کل فیلد "تخفیف" به عنوان میانگین حسابی مقادیر فیلد محاسبه می شود، یعنی. مجموع تمام مقادیر تقسیم بر تعداد مقادیر. اما چون از آنجایی که حجم کالاهای ارسال شده با تخفیف های مختلف متفاوت است، میانگین تخفیف را می توان به روش دیگری محاسبه کرد: به عنوان مثال، به عنوان نسبت کل کالای ارسال شده، با در نظر گرفتن تخفیف، به کل کالای ارسال شده. اما در اینجا یک سوال مطرح می شود: اگر بتوانید فرمولی برای محاسبه مقادیر فیلدهای رکوردهای دقیق در ACS بنویسید، مجموع ها به طور خودکار مطابق عبارت مشخص شده در برگه "منابع" محاسبه می شوند و در آنجا، به عنوان قبلاً دیدیم، "میانگین" به عنوان میانگین حسابی مقادیر نمایش داده شده محاسبه می شود، در این صورت، آیا باید کل این ستون را با استفاده از فرمول خودم محاسبه کنم؟
در واقع سخت نیست. برای انجام این کار، ما گزارش خود را با اضافه کردن فیلدهای لازم که در محاسبه شرکت می کنند، تنظیم می کنیم، در مورد ما اینها "AmountWithDiscount" و "AmountAtPrice" هستند.

به منظور "آموزش" ACS برای نمایش نتایج ما، مراحل زیر را انجام می دهیم:
1. در برگه "تنظیمات"، به گروه "" یک نام بدهید، به عنوان مثال "TotalSKD"، برای این کار ما تماس می گیریم. منوی زمینهبرای گروه بندی و روی "تخصیص یک نام" کلیک کنید.

2. در برگه "Layouts"، "طرح بندی سرصفحه گروه بندی" را اضافه کنید، جایی که نام قبلی "TotalSKD" را انتخاب می کنیم.

3. خطی از طرح ترسیم می کنیم، جایی که تمام نتایج را که محاسبه آنها مناسب است، همانطور که هستند می گذاریم، و برای محاسبه میانگین درصد تخفیف، فرمولی برای محاسبه می نویسیم.

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

برای اینکه خروجی تنها خط کل خود را رها کنید، باید در برگه «تنظیمات» در بخش «تنظیمات دیگر» خروجی طرح‌بندی، خروجی «طرح کل افقی» و «طرح کل عمودی کل» را غیرفعال کنید.

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


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

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

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

ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("مشاهده(Sum(DataSet.AmountTurnover))،Sum(DataSet.AmountTurnover)"،"DataSet.Account")،"2")))

گزینه ها:

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

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

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

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

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

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

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

در ترکیب داده ها تنظیم مجموعکمی متفاوت از درخواست ها به نظر می رسد. اجازه دهید مجموعه داده «پرس و جو» را در سیستم ترکیب داده تعریف کنیم.

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

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

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

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

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

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

نتیجه تنظیمات زیر است:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

به عنوان دانشجو وارد سایت شوید

برای دسترسی به مطالب مدرسه به عنوان دانش آموز وارد شوید

سیستم ترکیب داده 1C 8.3 برای مبتدیان: شمارش نتایج (منابع)

هدف از این درس خواهد بود:

  • گزارشی بنویسید که فهرستی از محصولات (فهرست غذا)، محتوای کالری و طعم آنها را نمایش دهد.
  • گروه بندی محصولات بر اساس رنگ
  • درباره خلاصه کردن (منابع) و فیلدهای محاسبه شده بیاموزید.

یک گزارش جدید ایجاد کنید

مانند درس های قبلی، پایگاه داده را باز می کنیم. اغذیه فروشی"در پیکربندی و ایجاد یک گزارش جدید از طریق منو" فایل"->"جدید...":

نوع سند - گزارش خارجی:

در فرم تنظیم گزارش، نام را بنویسید درس 3"و دکمه را فشار دهید" باز کردن نمودار ترکیب داده ها":

نام طرح پیش فرض را بگذارید و روی دکمه " کلیک کنید آماده":

افزودن درخواست از طریق سازنده

روی برگه " مجموعه داده ها" کلیک سبزبعلاوه را علامت بزنید و " افزودن مجموعه داده - پرس و جو":

به جای اینکه متن درخواست را به صورت دستی بنویسیم، دوباره آن را اجرا می کنیم سازنده پرس و جو:

در "برگه" جداول"میز را بکشید" غذااز ستون اول تا ستون دوم:

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

اینطور معلوم شد:

دکمه را فشار دهید " خوب" - متن درخواست به طور خودکار ایجاد شد:

ایجاد تنظیمات ارائه گزارش

برو به برگه " تنظیمات"و کلیک کنید عصای جادویی، تماس گرفتن طراح تنظیمات:

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

فیلدهایی که در لیست نمایش داده می شوند را از ستون سمت چپ به سمت راست بکشید و روی "کلیک کنید" به علاوه":

از ستون سمت چپ به فیلد سمت راست بکشید " رنگ" - اتفاق خواهد افتاد گروه بندیخطوط در گزارش کلیک " خوب":

و در اینجا نتیجه کار طراح است. سلسله مراتب گزارش ما:

  • گزارش به عنوان یک کل
  • گروه بندی "رنگ"
  • ورودی های دقیق - خطوط با نام غذا

ذخیره گزارش (دکمه دیسکت) و بدون بستنما بلافاصله پیکربندی را در حالت کاربر باز می کنیم. اینطور معلوم شد:

تغییر ترتیب ستون ها

اما اجازه دهید بیایید ترتیب را تغییر دهیمستون ها (فلش های بالا و پایین) به طوری که شبیه شکل زیر باشد:

بیایید گزارش را ذخیره کرده و دوباره در حالت کاربر باز کنیم:

عالیه خیلی بهتره

بیایید محتوای کالری را خلاصه کنیم

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

برای این منظور مکانیزمی برای محاسبه منابع وجود دارد.

برو به برگه " منابع"و میدان را بکشید" محتوای کالری"(ما آن را خلاصه می کنیم) از ستون چپ به راست.

در این مورد، در قسمت، عبارت را از لیست کشویی انتخاب کنید " مقدار (کالری)"، از آنجایی که کل، مجموع همه عناصر موجود در کل خواهد بود:

ما گزارشی را ذخیره و تولید می کنیم:

ما اکنون نتایجی برای هر یک از گروه ها و برای کل گزارش داریم.

بیایید آن را (متوسط) از نظر کالری خلاصه کنیم

حالا بیایید آن را در ستون دیگری نشان دهیم میانگینمحتوای کالری محصولات بر اساس گروه ها و در کل گزارش.

شما نمی توانید ستون "کالری" موجود را لمس کنید - کل قبلاً در آن نمایش داده شده است، بنابراین بیایید یک زمینه دیگر ایجاد کنیم، که یک کپی دقیق از قسمت "کالری" خواهد بود.

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

برو به برگه " فیلدهای محاسبه شده"و فشار دهید سبزعلامت جمع:

در یک ستون " مسیر داده"ما نام فیلد جدید را می نویسیم ( یکپارچه, بدون فاصله). بگذار اسمش گذاشته شود " محتوای کالری متوسط"، و در ستون" اصطلاح"ما نام یک فیلد موجود را می نویسیم که بر اساس آن فیلد جدید محاسبه می شود. ما در آنجا می نویسیم." محتوای کالری". ستون" سرفصل" به طور خودکار پر می شود.

ما یک فیلد جدید اضافه کرده ایم (" محتوای کالری متوسط")، اما به خودی خود در گزارش ظاهر نمی شود - باید دوباره تماس بگیرید طراح تنظیمات ("عصای جادویی") یا این فیلد را اضافه کنید به صورت دستی.

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

اینطور معلوم شد:

ما گزارشی را ذخیره و تولید می کنیم:

فیلد ظاهر شده است و می بینیم که مقادیر آن مقادیر فیلد "کالری" است. عالی!

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

علاوه بر این، در ستون " اصطلاح"انتخاب کنید" متوسط ​​(متوسط ​​کالری)":

ما گزارشی را ذخیره و تولید می کنیم:

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

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

بیایید خطا را برطرف کنیم. برای انجام این کار، به برگه بازگردید " تنظیمات"، انتخاب کنید " ورودی های تفصیلی"اول از بالا (مرحله 2) و سپس" ورودی های تفصیلی"از پایین (مرحله 3)، به نشانک بروید" انتخاب شد زمینه های"و ما در ستون سمت راست آن عنصر را خواهیم دید" خودکار".

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

برای دیدن این فیلدها، روی عنصر "کلیک کنید" خودکار" درسترا فشار دهید و " را انتخاب کنید بسط دادن":

عنصر " خودکار" در زمینه های زیر گسترش یافته است:

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