vdcasino
betexper
imajbet
perabet
casinomaxi
ilbet

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

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

انجمن های پشتیبانی سیمرغ نوسا

قبليقبلي Go to previous topic
بعديبعدي Go to next topic
آخرين ارسال 20 آبان 1402 03:17 ب.ظ توسط  Tariverdi
آموزشی: توسعه امکانات تکمه انتخاب در فیلدهای انتخابگر
 0 پاسخ
مرتب:
شما مجاز به پاسخ به اين پست نمي باشيد.
مولف پيغام ها


کاربر باتجربه


کاربر باتجربه


--
20 آبان 1402 03:17 ب.ظ

     

    فهرست مطالب

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

    محاوره انتخاب در فیلدهای نوع منبع دیجیتال

    محاوره انتخاب در فیلدهای انتخابگر حرفی

    محدود کردن فهرستهای انتخاب از طریق جستجو

    مولفه های لازم برای جستجو

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

    تعریف یک گروه پارامتر جدید

    ایجاد یک فرم ورود اطلاعات برای پارامتر

    تدوین یک تابع جستجوی شامل پارامتر فوق

    مثالهای عملی برای محدود کردن فهرستهای انتخاب

    فیلدهای از نوع کاربر

    فیلدهای منبع دیجیتال

    فیلدهای انتخابگر حرفی

     

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

    • فیلدهای نوع کاربر
    • فیلدهای نوع منبع دیجیتال
    • فیلدهای انتخابگر حرفی

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

    ابتدا برای یادآوری به محاوره های انتخاب در این فیلدها توجه کنید:

    محاوره انتخاب در فیلدهای از نوع کاربر

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

     

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

    محاوره انتخاب در فیلدهای منبع دیجیتال

    برای فیلدهای از نوع منبع دیجیتال، فهرست مرور به شکل زیر باز می شود:

     

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

    محاوره انتخاب در فیلدهای انتخابگر حرفی

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

     

    در این فهرست، از طریق جستجو در ستونهای "کد" و "نام" و نیز امکان انتخاب فیلد دسته بندی (در این مثال نام استان) می توانیم فهرست را محدودتر کنیم.

    نیاز به بهینه تر شدن فهرستهای انتخاب

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

    محدود کردن فهرستهای انتخاب از طریق جستجو

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

    برای شرط گذاری، روش کار به این شکل است که ابتدا از طریق یک جستجو، کلیدهای مورد نظر خود (مثلا کلید کاربران) را به شکل یک آرایه بازیابی می کنیم. سپس این آرایه به صورت یک شرط به Query قبلی اعمال می شود. این کار دقیقا مثل این است که یک شرط جدید به  where clause موجود AND  شود. به این ترتیب، فهرست انتخاب، محدود به مواردی می شود که کلید آنها در این آرایه وجود داشته باشد. در نتیجه فهرست انتخاب، محدود به مقادیری می شود که از طریق جستجو بازیابی شده است.

    نکته مهم: در واقع با این امکان، روش ورود اطلاعات از طریق مرور (Browse) ، تبدیل می شود به روش انتخاب از فهرست نتایج جستجو (Search and List)

    برای درک بهتر این موضوع به شکل زیر توجه کنید :

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

    توضیح: در فهرست کاربران و در حالت واقعی، ستون کلید کاربر نمایش داده نمی شود لذا نمایش کلیدها در این مثال برای درک بهتر موضوع انجام شده است.

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

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

    مولفه های لازم برای جستجو

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

    1. مدخل جستجو: برای این کار باید ابتدا یک گروه پارامتر تعریف کنیم که فیلدهای این گروه پارامتر، مداخل جستجوی ماست.
    2. محاوره جستجو: برای این کار باید برای گروه پارامتر فوق، یک فرم ورود اطلاعات تعریف کنیم.
    3. فرمول جستجو : برای جستجو باید مشخص کنیم که  مقدار ثبت شده در محاوره جستجو، با چه شرایطی و در کدام فیلدها جستجو گردد و نتیجه به کدام شکل بازیابی شود. این کار از طریق تعریف یک تابع جستجوی پارامتریک انجام می شود.

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

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

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

     

    1. ایجاد یک فرم ورود اطلاعات برای ثبت مقدار پارامتر: برای این کار باید مانند شکل زیر از مسیر منوی سیستم --> تنظیمات سیستم (برای همه کاربران) --> پیش فرض فرمهای نمایشی، گزینه محاوره گروه پارامترهای برنامه گردش کار را کلیک کنید:

     

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

     

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

     

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

     

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

    مثالهای عملی برای محدود کردن فهرستهای انتخاب

    در اینجا سعی می کنیم با ارائه یک مثال واقعی و کاربردی در هر یک انواع فیلدهای انتخابگر، نحوه محدود کردن فهرستهای انتخاب در این فیلدها را توضیح دهیم.

    1) فیلدهای از نوع کاربر

    مثال: محدود کردن کاربران بر اساس نقش کاربر در جایگاه سازمانی

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

    1. 1. تعریف گروه پارامتر

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

     

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

    1.2. ایجاد یک فرم ورود اطلاعات برای پارامتر

    در این مثال، فرم ورود اطلاعات به شکل زیر است:

     

     

    توجه کنید که در این مثال، مقدار پارامتر به شکل فیلد انتخابی ساده (radio button) تعیین می شود.

    1.3. تدوین یک تابع جستجوی پارامتریک

    تابع جستجو برای این مثال به شرح زیر است:

     برای درک بهتر این تابع، آن را سطر به سطر بررسی می کنیم:

    function WorkFieldEditBtnReferred(p) {

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

       var curUser=WorkUserUtils.CurrentUser;

       var uInf=WorkUtils.GetUserInf(curUser);

       var orgPosKey=uInf.OrgPosition.Key;

    از آنجایی که در این مثال، جایگاه سازمانی، آیتم اساسی است لذا در این قسمت کلید جایگاه سازمانی کاربر جاری را تعیین می کنیم. به این صورت که  ابتدا در سطر اول، کلید کاربر جاری در یک متغیر بنام curUser قرار می گیرد. در سطر بعد مشخصات (UserInf)  این کاربر در یک متغیر بنام uInf قرار می گیرد و در آخر، کلید جایگاه سازمانی این کاربر استخراج و در متغیر orgPosKey قرار می گیرد.

       var roleCode=1;

       if (p.role===true) {roleCode=2 }

       var UserList=WorkUserUtils.GetOrgPositionUserList(orgPosKey, "", roleCode);

    در این مرحله با استفاده از تابع استخراج کاربران یک جایگاه سازمانی خاص (GetOrgPositionUserList) ، آرایه ای از کاربران جایگاه سازمانی تولید می شود. اگر به پارامترهای این تابع توجه کنید می بینید که سه پارامتر دارد. اولین پارامتر کلید جایگاه سازمانی است که با orgPosKey مشخص شده است. دومین پارامتر کلید بخش کاربر است که اگر تعیین نشود (مانند همین مثال)، به معنی تمام بخشهاست و پارامتر سوم، نقش کاربر در جایگاه سازمانی است که با متغیر roleCode تعیین می شود و مقدار آن برای کاربران عادی، عدد 1 و برای کاربران مدیر،  عدد 2 تعیین می شود. این پارامتر همان پارامتری است که باید بسته به انتخاب کاربر در محاوره جستجو، مقداردهی شود. حال که با ساختار تابع آشنا شدیم می توانیم این قسمت از برنامه را تحلیل کنیم:

    var roleCode=1;

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

       if (p.role===true) {roleCode=2 }

    در سطر دوم، تعیین شده است که در صورت انتخاب گزینه "مدیر" در محاوره جستجو، مقدر متغیر roleCode برابر با 2 تعیین شود. توجه کنید که انتخاب گزینه نقش کاربر در محاوره جستجو، در واقع مقدار دهی فیلد نقش سازمانی از گروه پارامتر جایگاه سازمانی (p.role) است.

       var UserList=WorkUserUtils.GetOrgPositionUserList(orgPosKey, "", roleCode);

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

       return JSON.stringify(UserList);

    از آنجایی که UserList در واقع یک Object است لذا باید شکل stringify (متنی شده) این آرایه را بازگشت دهیم.

    نمایش فهرست کاربران محدود شده در این مثال

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

     

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

     

    با این کار، محاوره پارامتر به شکل زیر روی صفحه باز می شود:

     

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

     

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

    تمرین 1: در این مثال فهرست کاربران بصورت اجباری به مدیران یا کاربران عادی محدود می شود و امکان ملاحظه تمام کاربران وجود ندارد. این پارامتر را طوری طراحی کنید که امکان مشاهده تمام کاربران نیز وجود داشته باشد.

    تمرین 2: همانطور که می دانید، فهرست کاربران می تواند شامل دو نوع کاربران ویندوزی و کاربران فاقد شماره شناسایی ویندوز باشد. حال شما امکان محدود کردن فهرست کاربران براساس داشتن یا نداشتن شماره شناسایی ویندوز (SID) را پیاده سازی کنید.

     

    2) فیلدهای منبع دیجیتال

    مثال: فیلتر کردن درختواره دیجیتال بر اساس گروه فیلدها

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

     

    مشخصات خودروها در این شاخه از آرشیو، در قالب یک گروه فیلد و با جزئیات زیر ذخیره شده است:

     

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

    2.1 تعریف گروه پارامتر

    برای این کار یک گروه پارامتر بنام "مشخصات خودرو" شامل با یک پارامتر بنام "سال ساخت" را به شکل عددی تعریف می کنیم

    2.2 ایجاد یک محاوره (کاربرگ) برای پارامتر

    کاربرگ ورود اطلاعات شامل یک پارامتر و به شکل زیر خواهد بود:

     

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

    2.3 تدوین تابع جستجو

    تابع جستجو برای این مثال به شکل زیر خواهد بود:

    مطابق معمول، قسمتهای مهم این تابع را به ترتیب توضیح می دهیم:

    var carYear=p.year;

    در این قسمت، مقدار پارامتر سال ساخت (year) در یک متغیر بنام carYear قرار می گیرد.

    if (carYear) {

    } else {throw "مقدار پارامتر تعيين نشده است"}

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

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

      var ds=WorkUtils.GetDOState("", "45", 31);

    برای امکان جستجو در فهرست خودروها، ابتدا باید DOState سرشاخه را در یک متغیر قرار دهیم. یادآوری می شود که در اینجا باید کد سرشاخه (خودروها) در درختواره منابع دیجیتال (45) و نیز کد گروه فیلد مشخصات خودرو (31) را وارد کنیم.

    جستجو در فهرست فرزندان یک شاخه از منابع دیجیتال با استفاده از یک متن xml انجام می شود که در این قسمت این متن ایجاد و در متغیر data قرار می گیرد. در این مثال، جستجو در محتوای گروه فیلد مشخصات خودرو (carSpecs) و مشخصا در فیلد سال ساخت (year) انجام می شود.

    var fChilds=ds.SearchDOChildren(data);

    در اینجا جستجو در فهرست خودروها انجام می شود و نتیجه جستجو در آرایه fChilds قرار می گیرد.

    return JSON.stringify(fChilds);

    و در نهایت، این آرایه به فرمت متنی بازگشت داده می شود.

    نمایش فهرست محدود شده منابع دیجیتال در این مثال

    برای مثال فرض کنید می خواهیم خودروهای با سال ساخت 1396 به بعد را مشاهده کنیم. در محاوره زیر، فیلد خودرو از نوع منبع دیجیتال است:

     

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

     

    در این مثال، ما خودروهای ساخته شده از 1396 به بعد را می خواهیم لذا این مقدار را همانند شکل بالا وارد می کنیم. با تصویب این محاوره، فهرست خودروها به شکل زیر باز می شود:

     

    تمرین: فهرست خودروها را براساس وضعیت طرح ترافیک فیلتر کنید.

     

    3) فیلدهای انتخابگر حرفی

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

    مثال: محدود کردن فهرست کالاها و خدمات به کالاها

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

    3.1 تعریف یک پارامتر برای تعداد

    برای این کار یک گروه پارامتر بنام "مشخصات کالا" (matSpecs) تعریف می کنیم که دارای یک پارامتر بنام "نوع کالا" (kalaNum) است. این پارامتر از نوع عدد صحیح با دو گزینه "کالا" با مقدار "1" و "خدمات" با مقدار "2" است.

    3.2 ایجاد یک کاربرگ ورود اطلاعات برای پارامتر

    کاربرگ این پارامتر به شکل زیر است:

     

    3.3.  ایجاد ارتباط پارامتر با فیلد  و تدوین تابع جستجو

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

    اصل کلی: در فیلدهای انتخابگر حرفی، جستجو با استفاده از ADOSelect برای بازیابی یک ستون هم محتوا با ستون کد (nwv_code) در View انجام می شود.

    تابع جستجو برای این مثال به شکل زیر می باشد:

    در این تابع، یک جستجوی از طریق ADOSelect در پایگاه سیستم مالی نمونه (_AccXP_hamayesh992)  و در جدول کالاها (_Mats) انجام شده است. نکته ای که در این جستجو وجود دارد در قسمت WhereClause است:

    WorkADOSelect.WhereClause=" mat_IsService =" + matClass  ;

     در جدول _Mats ، ستون mat_IsService به شکل زیر، نشان دهنده نوع کالا /خدمات است:

    • عدد 0 برای تعیین نشده
    • عدد 1 برای کالا
    • عدد 2 برای خدمات

    همانطور که در بالا هم ذکر شد، برای سادگی شرط گذاری در این مثال، گزینه های پارامتر نوع کالا (p.matKind) مشابه با محتوای ستون mat_IsService تعریف شده است. به این ترتیب با انتخاب گزینه نوع کالا در محاوره پارامتر، کالاهای منتاظر با آن نوع، بازیابی می شود.

     

    var data=WorkADOSelect.Execute();

    متغیر data آرایه ای است که شامل کد کالاهاست. اما نکته بسیار مهمی که در اینجا باید به آن دقت کنید این است که اعضای این آرایه، یک کد به شکل ساده نیستند و در واقع   Objectهایی هستند به شکل زیر:

    Data=[{“mat_Code”: “10/05/34”}, {“mat_Code”: “10/08/76”}, {“mat_Code”, “10/14/39”}, …]

    ملاحظه می کنید که هر عضو شامل عنوان محتوا و مقدار محتوا (کد کالا) ست. بدیهی است که این آرایه به این شکل نمی تواند استفاده شود. لذا در بخش بعد روش استخراج مقدار محتوا (کد کالا) توضیح داده شده است:

     

    در این قسمت، یک متغیر از نوع آرایه بنام codes تعریف می کنیم و سپس با استفاده از یک حلقه for، مقدار محتوای تمام عضوهای آرایه data یعنی data.mat_Code را استخراج و به codes اضافه می کنیم.

    return JSON.stringify(codes);

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

     

    نمایش فهرست محدود شده کالاها و خدمات در این مثال

    برای مثال فرض کنید در محاوره زیر، و در فیلد کالا می خواهیم کالا یا خدمات خاصی را انتخاب کنیم:

     

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

     

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

     

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

    پيوست ها
    شما مجاز به پاسخ به اين پست نمي باشيد.


    kurtkoy escort
    bostanci escort
    ankara escort
    comendo minha prima gordinha rajini murugan movie hd moglie con due negri calcaterra e lara scena hot mujeres con ropa interior transparente