خانه - تنظیمات
ما یک گزارش با فرکانس مشخص در سیستم ذخیره سازی ایجاد می کنیم.

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

انتخاب محصولات در انبارها باقی مانده است. انبار، کالا در انبارها باقی مانده است. نامگذاری، محصولات موجود در انبارهای باقیمانده. QuantityBalance FROM Accumulation Register. محصولات در انبارها باقی مانده (&MyDate،) AS محصولاتدر انبارها باقی مانده است

حال به تب parameters می رویم و می بینیم که سیستم علاوه بر پارامتر &MyDate ما، پارامتر &Period را نیز ایجاد کرده است.
برای نظارت بصری دوره‌ها، یک فرم گزارش اصلی ایجاد می‌کنیم و یک فیلد جدول با داده‌ها روی آن قرار می‌دهیم: Settings Composer.Settings.DataParameters

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

بر این اساس هر تغییری در این پارامتر نتیجه دلخواه را به همراه نخواهد داشت.

چرا پارامتر &MyDate در دسترس نیست؟ البته، چون در تب پارامترها یک چک باکس علامت زده است محدودیت در دسترس بودن.

علامت کادر را بردارید. اکنون هر دو را در پارامترهای موجود می بینیم. فقط هنگام ایجاد گزارش می بینیم که گزارش به پارامتر &Period واکنش نشان می دهد و نه به &MyDate.

در این مثال ساده ترین کار این است که نام پارامتر &MyDate در درخواست را به &Period تغییر دهید و به نتیجه دلخواه برسید. اما ممکن است شما یک پرس و جو داشته باشید که در آن از پارامتر &Period قبلا استفاده شده باشد یا دیدگاه های مذهبی شما اجازه استفاده از این پارامتر را به شما نمی دهد، در هر صورت می توانید مشکل را به این صورت حل کنید:

انتخاب محصولات در انبارها باقی مانده است. انبار، کالا در انبارها باقی مانده است. نامگذاری، محصولات موجود در انبارهای باقیمانده. QuantityBalance FROM Accumulation Register. محصولات در انبارها Remains((&MyDate) ,) AS ProductsIn WarehousesRemains

UPDاز کاربر بو:

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

بگذارید برای شما مثالی بزنم:

SELECT EmployeesSP.Employee, WorkersSP.ReasonChangesConditions, WorkersSP.Period, WorkersSPAnotherDate.Period AS Period2, WorkersSPAnotherDate.ReasonChangesStates AS ReasonChangesCondition2 =FROM RegisterInformationOEmployerge.Employe. ه) AS Employees JV اتصال چپثبت اطلاعات.کارمندان سازمانها.بخشی از آخرین (&OtherDate ,) AS EmployeesSPAتاریخ دیگر توسط EmployeesSP.Employee = EmployeesSPAnotherDate.Employee

در دومین پرس و جو، از مقدار پارامتر "استاندارد" PERIOD به عنوان پارامتر تاریخ قطعه استفاده می شود، نه مقدار OtherDate.

این "شکلی" مشاهده خواهد شد حتی اگر دومین پرس و جو به مجموعه داده دوم خروجی شود و با استفاده از ACS پیوند داده شود. گزینه ای که در درخواست دوم از عبارتی مانند "ADDATE(&Period, MONTH, -1)" استفاده می کند نیز کار نخواهد کرد، ماه کم نخواهد شد. اما تغییر نام پارامتر "Period" در درخواست به عنوان مثال "FirstDate" این مشکل را حل می کند.

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

این مقاله برخی از ویژگی های تنظیم یک دوره زمانی را در هنگام استفاده از سیستم ترکیب داده (DCS)، مشکلاتی که به دلیل تفاوت در مفهوم دوره بین یک کاربر معمولی و سیستم 1C ایجاد می شود، مورد بحث قرار می دهد و همچنین راه هایی برای حل آنها پیشنهاد می کند. .
اکثر گزارش‌هایی که با استفاده از سیستم ترکیب داده (DCS) تهیه می‌شوند، به کاربر نیاز دارند تا دوره‌ای را که گزارش برای آن ساخته می‌شود، وارد کند. به عنوان یک قاعده، در ACS، ورود دوره از طریق پارامترها، با استفاده از ساختار زیر سازماندهی می شود. عکس. 1این روش ورود به یک دوره "کلاسیک" در نظر گرفته می شود؛ در مقاله ای در مورد ITS و سایر ادبیات اختصاص داده شده به توسعه در 1C توضیح داده شده است، بنابراین بیایید آن را به عنوان پایه در نظر بگیریم. بیایید به عنوان مثال یک درخواست ساده را در نظر بگیریم که تمام اسناد فروش کالا و خدمات را برای یک دوره معین دریافت می کند. شکل 2هنگام استفاده از این گزارش، کاربر دوره را از طریق پارامترها تنظیم می کند، ببینید. شکل 3به نظر می رسد همه چیز درست است ... اما یک مشکل کوچک وجود دارد:

مسئله این است که اکثریت قریب به اتفاق کاربران دوره را به گونه ای متفاوت از آنچه که 1C آن را "درک" می کند، "درک" می کنند، به عنوان مثال:
1). در نظر بگیریم شکل 3
از نظر کاربر دوره مشخص نشده است یعنی نامحدود یعنی تمام اسناد بدون محدودیت تاریخ در گزارش درج شود.
"از دیدگاه" سیستم 1C، پارامتر-پریود تنظیم شده است و ... هر دو مرز آن برابر با 01.01.0001 است و فقط اسناد با تاریخ خالی در گزارش درج می شود که در عمل به این معنی است. یک سند واحد گنجانده نخواهد شد.
2). در نظر بگیریم شکل 4
از دیدگاه کاربر، گزارش باید شامل کلیه اسناد از تاریخ 28/01/2010 باشد.
"از نقطه نظر" 1C، دوره 01/28/2010 - 01/01/0001 یک استثنا ایجاد می کند.

البته می توانید سعی کنید به کاربر توضیح دهید که چرا گزارش اسنادی را که او انتظار دارد ببیند و چگونه دوره از "دیدگاه" 1C ارائه می شود را نشان نمی دهد ، اما این کار ناسپاسی است و نیز اشتباه است. یک برنامه خوب اول از همه باید کاربرپسند باشد، زیرا برنامه برای کاربر وجود دارد و نه برعکس، بنابراین باید 1C را "آموزش" دهید تا دوره را همانطور که کاربر درک می کند، درک کنید، یعنی:
1). شروع دوره و پایان دوره مشخص نشده است -> همه اسناد.
2). فقط شروع دوره مشخص شده است -> همه اسناد از ابتدای دوره شروع می شود
3). علاوه بر این، ما بررسی می کنیم که End of Period >= Beginning of Period، و اگر این درست نباشد، آنگاه فرض می کنیم که End of Period مشخص نشده است، i.e. 2).
بر اساس موارد فوق، عبارت برای پارامتر End Date به شکل زیر خواهد بود:

SELECT WHEN &Period.EndDate=DATETIME(1,1,1) THEN DATETIME(3999,12,31,23,59,59) ELSE SELECT WHEN &Period.EndDate<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

شکل نهایی طراحی انتخاب دوره ما در نشان داده شده است شکل 5

هنگام ایجاد گزارش در یک سیستم کنترل دسترسی، اغلب نیاز به نمایش یک دوره انتخابی در فرم گزارش وجود دارد، به طوری که لازم نیست تاریخ ها را به صورت دستی وارد کنید، بلکه از لیست دوره های استاندارد، مانند: "سال" را انتخاب کنید. ، "ماه"، "هفته" و غیره. برای پارامترهای نوع Date، فقط می توانید «شروع امسال، ماه و غیره» را مشخص کنید، اما «پایان» ارائه نشده است.

مسئله این است که از میان انواع داده، فقط نوع «تاریخ شروع استاندارد» موجود است، اما من «تاریخ پایان استاندارد» را نیز می‌خواهم.

راهی برای دور زدن این موضوع وجود دارد.

  1. بیایید یک پارامتر جدید ایجاد کنیم، آن را "Period" نامگذاری کنیم.
  2. این پارامتر را روی نوع "دوره استاندارد" تنظیم کنید
  3. در قسمت "Expression" پارامترهای "Start of Period" و "End of Period" که در درخواست استفاده می شود، عبارت "Start of Period" را تنظیم کنید. &Period.StartDate" و " &Period.End Date” به ترتیب.

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

برای جلوگیری از این امر، باید تمام پارامترهای جدول مجازی را حذف کنید.

و آنها را به جداول موجود در برگه "ترکیب داده ها" اضافه کنید.

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

اکنون انتخاب دوره در فرم گزارش به این صورت است.

بنابراین، بیایید شروع کنیم.

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

در مورد من، این ثبت انباشت "حسابداری در حال انجام" است.

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

لطفا توجه داشته باشید که فرکانس جدول مجازی "Record" است.

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

همانطور که از اسکرین شات مشاهده می شود، پارامتری به درخواست ارسال می شود که کاربر آن را در فرم مشخص می کند: مقدار شمارش "Frequency" - این شمارش تقریباً در تمام راه حل های استاندارد یافت می شود.

ما انواع موجود آن را در برگه "پارامترها" نشان خواهیم داد:

با این تنظیمات ما دوره خود را طوری فرم می دهیم که همه چیز زیبا و چشم نواز باشد)

در اینجا خود فرمت ها آمده است:

ماه: DF="MMMM yyyy "y.""

روز: DF = dd.MM.yyyy

Week: DF = "" هفته از "dd.MM.yyyy"

ربع: DF = "به "ربع" yyyy "y."

سال: DF = "yyyy "y."

Decade: DF = "" دهه با "dd.MM.yyyy"

نیم سال: DF = ""نیم سال از" dd.MM.yyyy"

همین. خروجی یک عکس فوق العاده است:

برخی از ویژگی های تنظیم دوره در سیستم کنترل دسترسی.

اکثر گزارش‌هایی که با استفاده از سیستم ترکیب داده (DCS) تهیه می‌شوند، به کاربر نیاز دارند تا دوره‌ای را که گزارش برای آن ساخته می‌شود، وارد کند.

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

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

مسئله این است که اکثریت قریب به اتفاق کاربران دوره را به گونه ای متفاوت از آنچه که 1C آن را "درک" می کند، "درک" می کنند، به عنوان مثال:

از نظر کاربر دوره مشخص نشده است یعنی نامحدود یعنی تمام اسناد بدون محدودیت تاریخ در گزارش درج شود.

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

از دیدگاه کاربر، گزارش باید شامل کلیه اسناد از تاریخ 28/01/2010 باشد.

"از نقطه نظر" 1C، دوره 01/28/2010 - 01/01/0001 یک استثنا ایجاد می کند.

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

1). شروع دوره و پایان دوره مشخص نشده است -> همه اسناد.

2). فقط شروع دوره مشخص شده است -> همه اسناد از ابتدای دوره شروع می شود

3). علاوه بر این، ما بررسی می کنیم که End of Period >= Beginning of Period، و اگر این درست نباشد، آنگاه فرض می کنیم که End of Period مشخص نشده است، i.e. 2).

بر اساس موارد فوق، عبارت برای پارامتر End Date به صورت زیر است:

WHEN &Period.EndDate=DATETIME(1،1،1)

سپس DATETIME(3999,12,31)

WHEN &Period.تاریخ پایان<&Период.ДатаНачала

سپس DATETIME(3999,12,31) DATETIME(3999,12,31,23,59,59)

&دوره.تاریخ پایان

شکل نهایی طراحی انتخاب دوره ما در نشان داده شده است

توجه: این مکانیسم برای تنظیم پارامترها برای پلتفرم های قدیمی 1C 8.1 و 8.2 در نظر گرفته شده است (و پیکربندی هایی که تحت کنترل آنها در حال اجرا هستند)؛ نسخه های قدیمی تر پلت فرم 1C دارای مکانیسم های داخلی برای کنترل پارامترهای خالی هستند و نیازی به متوسل شدن به مکانیسم نیست. در این مقاله توضیح داده شده است، علاوه بر این در برخی از نسخه های پلت فرم 1C، خطاها و عملکرد نادرست ممکن است.



 


خواندن:



بررسی گوشی هوشمند Motorola Moto Z Droid: گسترش مرزها با ماژول ها

بررسی گوشی هوشمند Motorola Moto Z Droid: گسترش مرزها با ماژول ها

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

مشکلات هنگام استفاده از دو سیستم عامل و حذف نصب یکی از آنها

مشکلات هنگام استفاده از دو سیستم عامل و حذف نصب یکی از آنها

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

در حالت UEFI یا حالت BIOS قدیمی بوت شود

در حالت UEFI یا حالت BIOS قدیمی بوت شود

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

حجم RAM و کانال ها

حجم RAM و کانال ها

RAM برای ذخیره موقت داده های لازم برای عملکرد سیستم عامل و همه برنامه ها استفاده می شود. حافظه دسترسی تصادفی...

فید-تصویر RSS