SCD-তে নির্বাচন ব্যবহার করা। রিপোর্টের ভিতরে একটি ডেটা লেআউট ডায়াগ্রাম তৈরি করা

আমার শেষ নিবন্ধে, আমি ইতিমধ্যেই লিখেছি যে 1C একটি প্যারাডক্সিক্যাল প্ল্যাটফর্ম। ডেটা কম্পোজিশন সিস্টেম এই প্যারাডক্সগুলির মধ্যে একটি। SKD জটিল রিপোর্ট ডিজাইন করার জন্য ডিজাইন করা হয়েছে এবং একটি মাল্টিফাংশনাল টুলকিটে ডিজাইনের সাথে "ম্যানুয়াল" রিপোর্ট প্রোগ্রামিং প্রতিস্থাপন করা জড়িত। সুযোগ অ্যাক্সেস কন্ট্রোল সিস্টেম ব্যবহারঅষ্টম সংস্করণে আবির্ভূত হয়েছে, কিন্তু সংস্করণ 8.2 প্রদর্শিত হতে অনেক সময় লেগেছে যাতে 1C এটিকে তার মানক পণ্যগুলিতে ব্যবহার করতে পারে। একদিকে, ACS হল একটি বহুমুখী টুলকিট, যা ব্যবহার করে আপনি কোডের একটি লাইন ছাড়াই খুব জটিল রিপোর্ট তৈরি করতে পারেন। যাইহোক, অ্যাক্সেস কন্ট্রোল সিস্টেমে প্রবেশের জন্য একটি মোটামুটি উচ্চ বাধা রয়েছে; এটি "একবারে" এটিকে সম্পূর্ণরূপে ব্যবহার করা শুরু করা খুব কঠিন, কারণ ইন্টারফেসটি সম্পূর্ণরূপে স্বজ্ঞাত নয়, তবে সবচেয়ে বেশি সম্পূর্ণ ম্যানুয়ালব্যবহার শুধুমাত্র প্রদত্ত সাহিত্যের আকারে উপলব্ধ।

আমার SKD অধ্যয়নের প্রক্রিয়ায়, একটি সমস্যা দেখা দেয়। একটি ক্যোয়ারী ভাষা ব্যবহার করে মানগুলির একটি তৃতীয়-পক্ষের টেবিল থেকে ডেটা প্রাপ্ত করা প্রয়োজন এবং তারপর ডাটাবেস টেবিলের অনুরূপ ডেটার মতো এই ডেটাটি পরিচালনা করুন (কমানোর ক্রিয়াকলাপ, গ্রুপিং এবং আরও অনেক কিছু)। ক্লাসিক বিন্যাসে, আমরা একটি প্রশ্ন তৈরি করব যা একটি প্যারামিটার হিসাবে ক্যোয়ারীতে পাস করা টেবিল থেকে তথ্য গ্রহণ করে।

অনুরোধ = নতুন অনুরোধ (
"চোখ
| ছক। নামকরণ,
| টেবিল.গুদাম
| থেকে
| &TK AS টেবিল");
Request.SetParameter("TZ", TZ);

কিন্তু SKD এর সাথে সবকিছু এত সহজ নয়। হায়রে, ডেটা কম্পোজিশন সিস্টেমে উপরে বর্ণিত অপারেশনটি করা অসম্ভব। যাইহোক, সিস্টেমটি মানগুলির বাহ্যিক টেবিল লোড করার ক্ষমতা প্রয়োগ করেছে।

এখানে একটি সংক্ষিপ্ত ডিগ্রেশন করা এবং ডেটাসেট সম্পর্কে কথা বলা মূল্যবান। ডেটা সেট হল তথ্যের উৎস যেখান থেকে ডেটা ম্যানেজমেন্ট সিস্টেম ডেটা গ্রহণ করে যা পরবর্তীতে একটি রিপোর্টে কম্পাইল করে। ডেটা সেটগুলিকে প্রধানত "কোয়েরি" টাইপ ব্যবহার করে বিভিন্ন প্রকারে ভাগ করা হয়, যার মূল অংশে প্রোগ্রামার ডাটাবেসে একটি ক্যোয়ারী লেখেন। "অবজেক্ট" টাইপটি বাহ্যিক বস্তু থেকে ডেটা লোড করতে ব্যবহৃত হয়। উভয় ক্ষেত্রেই, আউটপুট হল একটি নির্দিষ্ট ক্ষেত্রগুলির একটি সেট যা একটি অনুরোধ চালানো বা একটি বহিরাগত বস্তু লোড করার ফলে প্রাপ্ত হয়। পরে, এই ক্ষেত্রগুলি সহ "সেটিংস" ট্যাবে পরিচালনা করা যেতে পারে বিস্তারিত সেটিংসরিপোর্ট গঠন। বিভিন্ন সেটকে আন্তঃসংযোগ করতে, ACS একই নামের ট্যাবে ডেটা সেটের মধ্যে সংযোগ নির্দেশ করার ক্ষমতা প্রদান করে। এই সংযোগগুলি একটি ক্লাসিক ক্যোয়ারীতে বাম যোগদানের একটি সরাসরি অ্যানালগ। যাইহোক, এটি বিবেচনা করা উচিত যে কোনও ডেটা সেটের প্রশ্নগুলি অন্যান্য ডেটা সেটগুলির অস্তিত্ব সম্পর্কে "জানে না" শেষ পর্যন্ত, ডেটা সেটগুলির মধ্যে সম্পর্কগুলি "এ নির্দিষ্ট কাঠামো অনুসারে ডেটার বিন্যাসকে প্রভাবিত করবে; সেটিংস" ট্যাব।

আসুন একটি উদাহরণে সমস্যাটি বিস্তারিত করি। একটি স্ট্যান্ডার্ড রিপোর্ট আছে: কনফিগারেশন ZiK 8 এর সংগঠনের জন্য বেতন বিবৃতি। রিপোর্টে গণনার ধরনগুলি নির্দিষ্ট গোষ্ঠীতে বিভক্ত করা প্রয়োজন। গণনা ভিউ-গ্রুপ চিঠিপত্রগুলি একটি বাহ্যিক মান সারণীতে সংরক্ষণ করা হয়। এটিকে প্রধান ডেটা লেআউট স্কিমে লোড করতে, আমরা "গ্রুপস" (চিত্র 2) নামে একটি "ডেটা সেট অবজেক্ট" তৈরি করি। আমরা গণনার ধরন অনুসারে "কোয়েরি ডেটা সেট" - "অর্জন" এর সাথে একটি সংযোগ তৈরি করি (চিত্র 3)। "অনুরোধ ডেটা সেট" - "অধিগ্রহণ"-এ গোষ্ঠীগুলির জন্য তথ্য রয়েছে, আমরা সমস্ত এন্ট্রি মুছে ফেলি। তারপরে, "সেটিংস" ট্যাবে আমরা "গ্রুপ" ক্ষেত্রটি ব্যবহার করতে পারি, যার মান একটি বাহ্যিক ডেটা উত্স থেকে লোড করা হয় (চিত্র 4)। রিপোর্ট জেনারেশন ফাংশনে, আমরা বাহ্যিক ডেটা লোড করার পরিপূরক করি।

ফাংশন জেনারেট রিপোর্ট (ফলাফল = অনির্ধারিত, ডিক্রিপশন ডেটা = অনির্ধারিত, আউটপুটইনরিপোর্টফর্ম = সত্য) রপ্তানি

// "গ্রুপ" মানগুলির প্রয়োজনীয় সারণী প্রাপ্ত করা বা গঠন করা এবং একই নামের ভেরিয়েবলে লেখা

ExternalData = নতুন স্ট্রাকচার();// এক্সটার্নাল ডাটা স্ট্রাকচার তৈরি করুন এবং পূরণ করুন
ExternalData.Insert(Groups);

UserPanelValue = TypicalReports.GetUserPanelSettingsValuesofObject(ThisObject);
ডিফল্টসেটিংস = SettingsComposer.GetSettings();
TypicalReports.GetAppliedSetting(ThisObject);
TypicalReports.GenerateTypicalReport(This Object, Result, Decryption Data, OutputToReportForm, ExternalData);
SettingsLinker.LoadSettings(DefaultSetting);
রিটার্ন ফলাফল;

এন্ড ফাংশন

যদি আমরা স্ক্র্যাচ থেকে একটি প্রতিবেদন তৈরি করি, তাহলে রিপোর্ট জেনারেশন লঞ্চ কোডটি দেখতে এইরকম হবে:

ExternalDataSets = নতুন কাঠামো;
ExternalDataSets.Insert("Groups", Groups); //গোষ্ঠী - মানগুলির পছন্দসই সারণী
DataCompositionSchema = GetLayout("MainDataCompositionSchema"); //ডাটা ফ্লো ডায়াগ্রাম সহ আমাদের লেআউট
সেটিংস = DataCompositionScheme.DefaultSettings;
লেআউটলিঙ্কার = newDataLayoutLayoutLinker;
LayoutLayout = LayoutComposer.Execute(DataLayoutSchema, Settings);
DataCompositionProcessor = newDataCompositionProcessor;
DataCompositionProcessor.Initialize(LayoutLayout, ExternalDataSets);
TabDoc = নতুন ট্যাবুলার ডকুমেন্ট;
আউটপুটপ্রসেসর = নতুন আউটপুটপ্রসেসরডেটা কম্পোজিশন রেসল্টইনটিবুলার ডকুমেন্ট;
OutputProcessor.SetDocument(TabDoc);
আউটপুটপ্রসেসর।আউটপুট(ডেটা কম্পোজিশনপ্রসেসর);

পড়ুন 9660 একবার

ডেটা কম্পোজিশন সিস্টেমের জন্য কোয়েরি ল্যাঙ্গুয়েজ এক্সটেনশন

ডাটা কম্পোজিশন সিস্টেমের জন্য ক্যোয়ারী ল্যাঙ্গুয়েজের এক্সটেনশন কোঁকড়া বন্ধনীতে আবদ্ধ বিশেষ সিনট্যাকটিক নির্দেশাবলী ব্যবহার করে করা হয় এবং সরাসরি ক্যোয়ারী টেক্সটে রাখা হয়।

ডেটা কম্পোজিশন সিস্টেম কোয়েরি ল্যাঙ্গুয়েজ এক্সটেনশনের সিনট্যাকটিক উপাদান

বেছে নিন

এই বাক্যটি ক্ষেত্রগুলি বর্ণনা করে যা ব্যবহারকারী আউটপুটের জন্য নির্বাচন করতে সক্ষম হবে। এর পর কীওয়ার্ডকমা দ্বারা পৃথক করা, প্রধান অনুরোধ নির্বাচন তালিকা থেকে ক্ষেত্রগুলির উপনামগুলি যা কনফিগারেশনের জন্য উপলব্ধ হবে তা তালিকাভুক্ত করা হয়েছে।

যেমন:

(আইটেম, গুদাম নির্বাচন করুন)

ক্ষেত্রের উপনামের পরে ".*" অক্ষরের সংমিশ্রণ থাকতে পারে, যা এই ক্ষেত্র থেকে চাইল্ড ক্ষেত্রগুলি ব্যবহার করার সম্ভাবনা নির্দেশ করে৷

উদাহরণস্বরূপ, এন্ট্রি নামকরণ।* "নামকরণ" ক্ষেত্রের শিশু ক্ষেত্রগুলি ব্যবহার করার সম্ভাবনা নির্দেশ করে (উদাহরণস্বরূপ, "নামকরণ. কোড" ক্ষেত্র)। SELECT উপাদানটি শুধুমাত্র প্রথম যোগদানের প্রশ্নে উপস্থিত হতে পারে।

কোথায়

যে ক্ষেত্রগুলিতে ব্যবহারকারী নির্বাচন প্রয়োগ করতে পারে সেগুলি বর্ণনা করা হয়েছে। এই প্রস্তাব টেবিল ক্ষেত্র ব্যবহার করে. নির্বাচন তালিকা ক্ষেত্রের উপনাম ব্যবহার অনুমোদিত নয়। ইউনিয়নের প্রতিটি অংশের নিজস্ব WHERE উপাদান থাকতে পারে।

(যেখানে নামকরণ।*, গুদাম)

একটি সহজ উদাহরণ

সময়কালের জন্য বিক্রয় পাওয়া প্রয়োজন + সম্পূর্ণ আইটেম প্রদর্শন করুন, বিক্রয় ছিল কিনা তা নির্বিশেষে। অর্থাৎ, আপনাকে সেলস রেজিস্টারের টার্নওভার টেবিল থেকে ডেটা নির্বাচন করতে হবে, নামকরণ ডিরেক্টরি থেকে ডেটা। আসুন আমরা কেন সমস্ত নামকরণের প্রয়োজন সেই প্রশ্নটি এড়িয়ে যাই।

সমস্যা সমাধানের জন্য, আপনি একটি ক্যোয়ারী তৈরি করতে পারেন যা আইটেম এবং বিক্রয় টার্নওভার টেবিলকে বাম যোগদানের সাথে সংযুক্ত করে, ফলস্বরূপ, যে আইটেমটি নির্বাচিত সময়ের মধ্যে বিক্রি হয়নি, আমরা ফিল্ডের মানগুলি পাব কাউন্টারপার্টি, চুক্তি, পরিমাণ, সমষ্টি= শূন্য। এই অনুরোধ:

ReferenceNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty, SalesTurnover.QuantityTurnover AS পরিমাণ, SalesTurnover.CostTurnover AS Cost FROM Reference.NomenferenceccNLESTERNECLATION Sales.Turnover AS SalesTurnover Software SprNomenclature.Link = SalesTurnover. নামকরণ

এখানে ফলাফল:

কাউন্টারপার্টি চুক্তি নামকরণ পরিমাণ সমষ্টি
নাল নাল _পরীক্ষা ১ নাল নাল
এলএলসি "হর্ন এবং খুর" চুক্তি ১ চপ্পল 10 1200
ওজেএসসি "গ্যাজপ্রম" শান্ত চুক্তি বুট 5 13000
নাল নাল গ্যালোশেস নাল নাল
নাল নাল স্লেট নাল নাল

এই উদাহরণে, আইটেমগুলির কোনও বিক্রয় ছিল না: "ওভারশুস" এবং "স্লিপারস"

এবং সবকিছু ঠিক হবে, যদি আমরা কাউন্টারপার্টি দ্বারা নমুনাকে গোষ্ঠীবদ্ধ করি, তাহলে সমস্ত অবিক্রীত আইটেম একটি পৃথক গ্রুপে পড়বে, যেখানে কাউন্টারপার্টি = নাল, কিন্তু ক্লায়েন্ট কাউন্টারপার্টি ক্ষেত্রের রিপোর্টে একটি এলোমেলো নির্বাচন করতে চায় (স্বাভাবিকভাবে, এটি সেলস রেজিস্টার থেকে কাউন্টারপার্টি মানে)। আমি কি করব? সর্বোপরি, আসলে, আমাদের কেবল টেবিলটি ফিল্টার করতে হবে বিক্রয়. যদি আমরা ACS কনস্ট্রাক্টরে স্বয়ংসম্পূর্ণ ব্যবহার করি, তাহলে উপলব্ধ নির্বাচন ক্ষেত্রগুলি ক্ষেত্রটি অন্তর্ভুক্ত করবে কাউন্টারপার্টি, সবকিছু ঠিক আছে বলে মনে হচ্ছে, কিন্তু প্রতিপক্ষের দ্বারা নির্বাচনের সাথে একটি প্রতিবেদন কার্যকর করার সময়, আমরা আইটেমের সাথে সংযোগ থেকে সমস্ত রেকর্ড হারাবো। উদাহরণস্বরূপ, আসুন নির্বাচন সেট করি: কাউন্টারপার্টি = LLC "হর্ন এবং খুর". ফলাফল এই মত দেখাবে:

আমাদের যা প্রয়োজন তা নয়, তাই না?

সমস্যা সমাধানের জন্য, আপনি অবশ্যই, ক্যোয়ারীতে একটি প্যারামিটার যোগ করতে পারেন, উদাহরণস্বরূপ, একটি ভার্চুয়াল টেবিলের পরামিতিগুলিতে সেলস টার্নওভার, কিন্তু একই সময়ে তুলনার ধরন সেট করার নমনীয়তা হারিয়ে গেছে।

একটি সমাধান আছে: এই জন্য কোয়েরি নির্মাতাট্যাবে ডেটা রচনা => টেবিলভার্চুয়াল টেবিল শর্তাবলী একটি শর্ত ক্ষেত্র যোগ করুন সেলস টার্নওভারএবং তার ডাক নাম পরিবর্তন করুন কাউন্টারপার্টি নির্বাচন

ব্যবহারকারীকে নির্বাচনের ক্ষেত্রে বিভ্রান্ত না করার জন্য, আমরা শর্ত ক্ষেত্রটি নিষ্ক্রিয় করব কাউন্টারপার্টিএবং ক্ষেত্রের জন্য শিরোনাম পরিবর্তন করুন কাউন্টারপার্টি নির্বাচন


কাউন্টারপার্টি ক্ষেত্র দ্বারা সক্রিয় নির্বাচনের সাথে এই স্কিমটি কার্যকর করার ফলে, ফলাফলের ক্যোয়ারীটি ফর্মটি গ্রহণ করবে:

রেফারেন্স নামকরণ.লিঙ্ক হিসাবে নামকরণ, SalesTurnover.Counterparty AS কাউন্টারপার্টি চুক্তি, SalesTurnover.QuantityTurnover AS >পরিমাণ, SalesTurnover.CostPRESTurnover চুক্তি) কন্ট্রাক্ট কন্ট্রোলার এজেন্ট ভূমিকা, প্রতিনিধি লিঙ্ক (সেলস টার্নওভার। কাউন্টারপার্টি) কাউন্টারপার্টিপরিচয়, SprNomenclature.SprNomenclature হিসাবে উপস্থাপনা নির্দেশিকা থেকে।Nomenclature AS SprNomenclature LEFT Connection Register Accumulations.Sales.Turnover(&P , , ink = SalesTurnover.Nomenclature

এবং সেই অনুযায়ী ফলাফল:

কাউন্টারপার্টি চুক্তি নামকরণ পরিমাণ সমষ্টি
নাল নাল _পরীক্ষা ১ নাল নাল
এলএলসি "হর্ন এবং খুর" চুক্তি ১ চপ্পল 10 1200
নাল নাল বুট নাল নাল
নাল নাল গ্যালোশেস নাল নাল
নাল নাল স্লেট নাল নাল

Test1 হল নামকরণ ডিরেক্টরির একটি গ্রুপ যেখানে সবকিছু অবস্থিত

প্রকাশনার সাথে সংযুক্ত করা হয়েছে প্রকাশনায় ব্যবহৃত প্রতিবেদনের XML স্কিমা। আমি ইন্টিগ্রেটেড অটোমেশনে সার্কিট তৈরি করেছি, কিন্তু আমি মনে করি UPP এবং UT 10 উভয় ক্ষেত্রেই সবকিছু ঠিকঠাক কাজ করবে

সারসংক্ষেপ

এই উদাহরণটি দেখায় কিভাবে অ্যাক্সেস কন্ট্রোল সিস্টেমে আপনার নিজস্ব নির্বাচন সেটিংস তৈরি করতে হয় এবং যদি আপনি পতাকা সক্ষম করে একটি সার্কিট ডিজাইন করেন তবে স্বয়ংক্রিয়ভাবে তৈরি হওয়াগুলিকে অক্ষম করবেন অটোফিল.

ব্যবহার না করে সার্কিট তৈরি করার যথেষ্ট অভিজ্ঞতা থাকলে অটোফিল- তাহলে এই পরামর্শের কোন মানে হয় না।

সফটওয়্যার ব্যবহার করা হয়েছে

মনোযোগ! এটি পাঠের একটি প্রাথমিক সংস্করণ, যার উপকরণগুলি অসম্পূর্ণ হতে পারে।

একজন ছাত্র হিসাবে সাইটে লগইন করুন

স্কুলের উপকরণ অ্যাক্সেস করতে একজন ছাত্র হিসাবে লগইন করুন

নতুনদের জন্য ডেটা কম্পোজিশন সিস্টেম 1C 8.3: ডেটা সেট সংযোগ করা

  • একটি প্রতিবেদন লিখুন যা গ্রাহকদের এবং তাদের প্রিয় পণ্যগুলি প্রদর্শন করে। প্রতিটি ক্লায়েন্টের একটি প্রিয় রঙ থাকে এবং প্রতিটি পণ্যের নিজস্ব রঙ থাকে - এই রঙগুলির উপর ভিত্তি করে আপনাকে পণ্যটির "প্রিয়" নির্ধারণ করতে হবে। উদাহরণস্বরূপ, যদি আন্দ্রেয়ের প্রিয় রঙ লাল হয়, তবে তার প্রিয় খাবারগুলির মধ্যে একটি হবে টমেটো (তারা লাল)।
  • প্রতিবেদনে ডেটার দুটি সেট প্রয়োগ করুন। প্রথম সেট হল "ক্লায়েন্ট" ডিরেক্টরি টেবিল থেকে ডেটা। দ্বিতীয়টি হল "খাদ্য" ডিরেক্টরি টেবিলের ডেটা।
  • বাস্তবায়ন করুন এই দুটি সেটের মধ্যে সংযোগ, যাতে প্রতিবেদনে প্রতিটি ক্লায়েন্টের জন্য শুধুমাত্র প্রিয় পণ্য থাকে।

একটি নতুন প্রতিবেদন তৈরি করুন

কনফিগারেটে "গ্যাস্ট্রোনম" ডাটাবেস খুলুন এবং প্রধান মেনুর মাধ্যমে একটি নতুন প্রতিবেদন তৈরি করুন:

নথির ধরন - "বহিরাগত প্রতিবেদন":

একটি নতুন প্রতিবেদনের আকারে, "পাঠ 6" নামটি নির্দেশ করুন এবং "ওপেন ডেটা কম্পোজিশন ডায়াগ্রাম" বোতামটি ক্লিক করুন:

ডিফল্ট স্কিমা নাম ছেড়ে দিন:

প্রথম ডেটা সেট যোগ করা হচ্ছে

যে ডায়াগ্রামটি খোলে, সেখানে "ডেটা সেট" ট্যাবে যান এবং সবুজ প্লাস চিহ্ন ব্যবহার করে "ডেটা সেট - ক্যোয়ারী যোগ করুন" নির্বাচন করুন:

অনুরোধ কনস্ট্রাক্টরকে কল করুন:

আমরা "গ্রাহক" টেবিল এবং অনুরোধ থেকে প্রাপ্ত করা প্রয়োজন এমন ক্ষেত্রগুলি নির্দেশ করি:

একটি দ্বিতীয় ডেটা সেট যোগ করা হচ্ছে

ডেটার একটি দ্বিতীয় সেট যোগ করুন:

এটি নির্বাচন করুন (DataSet2) এবং ক্যোয়ারী কনস্ট্রাক্টরকে আবার কল করুন:

আমরা "খাদ্য" ডিরেক্টরির সারণী এবং অনুরোধ থেকে প্রাপ্ত ক্ষেত্রগুলি নির্দেশ করি:

ফলস্বরূপ অনুরোধ পাঠ্য ছিল:

দয়া করে মনে রাখবেন যে আমাদের কাছে এখন রিপোর্টে দুটি ডেটা সেট রয়েছে: ডেটা সেট 1 এবং ডেটা সেট2৷ প্রত্যেকের নিজস্ব অনুরোধের পাঠ্য এবং ডেটা রয়েছে।

নামগুলিকে আরও বর্ণনামূলক করা

স্বচ্ছতার জন্য, আসুন DataSet1 এর নাম পরিবর্তন করে গ্রাহক এবং DataSet2-এর নাম খাদ্যে রাখি।

প্রতিটি সেটে ডাবল ক্লিক করে এটি করুন:

আমরা আমাদের প্রতিবেদনে প্রতিটি সেট থেকে ডেটা ব্যবহার করতে পারি। আমরা ক্ষেত্রগুলির মাধ্যমে এই ডেটা অ্যাক্সেস করব।

IN এই মুহূর্তে"ক্লায়েন্ট" সেটে নিম্নলিখিত ক্ষেত্র রয়েছে: "নাম" এবং "প্রিয় রং", এবং "খাদ্য" সেটে রয়েছে: "নাম" এবং "রঙ"।

আমরা দেখি যে নামগুলি ওভারল্যাপ হয় এবং আমরা সহজেই বিভ্রান্ত হতে পারি। তাই আরো অর্থপূর্ণ হতে ক্ষেত্রের নাম পরিবর্তন করা যাক.

"ক্লায়েন্ট" সেটটি নির্বাচন করুন এবং এইভাবে ক্ষেত্রের নাম পরিবর্তন করুন:

তারপরে "খাদ্য" সেটটি নির্বাচন করুন এবং এইভাবে ক্ষেত্রের নাম পরিবর্তন করুন:

সেটিংস কনস্ট্রাক্টরকে কল করা হচ্ছে

অবশেষে, "সেটিংস" ট্যাবে যান এবং সেটিংস ডিজাইনার আনতে যাদুর কাঠিটিতে ক্লিক করুন:

রিপোর্টের ধরন - "তালিকা...":

উভয় সেট থেকে রিপোর্টের জন্য ক্ষেত্র নির্বাচন করুন:

দেখুন কেন মাঠের নাম পরিবর্তন করা এত গুরুত্বপূর্ণ ছিল? ডেটা কম্পোজিশন সেটিংসের পর্যায়ে, এই ক্ষেত্রগুলি কোন সেট থেকে এসেছে তা আমরা দেখতে পাই না। আমরা শুধু তাদের নাম দেখি।

রিপোর্ট চেক করছে

আমরা প্রতিবেদনটি সংরক্ষণ করি এবং এটি ব্যবহারকারী মোডে তৈরি করি:

হ্যাঁ। ঠিক আছে, কিন্তু সত্যিই না. দুটি সেটের একটি তথাকথিত ক্রস-জয়ন ঘটেছে (আমরা পূর্ববর্তী মডিউলগুলিতে অধ্যয়ন করা প্রশ্নগুলির যোগদান থেকে এটির সাথে আপনার খুব পরিচিত হওয়া উচিত)। গ্রাহকদের টেবিল থেকে প্রতিটি রেকর্ড খাদ্য টেবিল থেকে একটি সংশ্লিষ্ট রেকর্ড আছে.

কিন্তু এই সমস্ত রেকর্ড থেকে আমাদের শুধুমাত্র সেইসব ক্ষেত্র ছেড়ে দিতে হবে যাদের ক্ষেত্র "গ্রাহকের পছন্দের রঙ" ফিল্ড "ফুড কালার" এর সমান:

আমরা দুটি ডেটা সেট সংযুক্ত করি

এটি করার জন্য, আমরা কাস্টমার ফেভারিট কালার এবং ফুড কালার ক্ষেত্রগুলি ব্যবহার করে ডেটার দুটি সেট (গ্রাহক এবং খাদ্য) সংযুক্ত করব।

"ডেটা সেট লিঙ্ক" ট্যাবে যান এবং একটি নতুন লিঙ্ক যোগ করতে প্লাস বোতামে ক্লিক করুন:

আমরা নীচের চিত্রের মতো পরামিতিগুলি কনফিগার করি:

আমি একটি ব্যাখ্যা করব.

যোগাযোগের উত্স এবং রিসিভার।আচ্ছা, এখানে সবকিছু পরিষ্কার। আমরা ডেটার প্রথম সেট (গ্রাহক) এবং দ্বিতীয় সেট (খাদ্য) নির্দেশ করি। আমি এই বিষয়টিতে বিশেষ মনোযোগ আকর্ষণ করতে চাই যে যোগাযোগ নীতি অনুসারে পরিচালিত হবে বাইরের বাম যোগদান(আমরা পূর্ববর্তী মডিউলগুলিতে অনুরোধের বিষয়ে এটিকে কভার করেছি)। এর উপর ভিত্তি করে, আপনাকে বেছে নিতে হবে কোন সেটটি উৎস এবং কোনটি রিসিভার হবে।

অভিব্যক্তি উৎস।আমরা এখানে উৎস ডেটা সেট থেকে একটি অভিব্যক্তি বা কেবল একটি ক্ষেত্র নির্দেশ করি (আমরা এখানে সেট করা ক্লায়েন্টদের থেকে ClientFavoriteColor ক্ষেত্রটি নির্দিষ্ট করেছি)।

রিসিভার এক্সপ্রেশন।আমরা এখানে রিসিভার ডেটা সেট থেকে একটি অভিব্যক্তি বা কেবল একটি ক্ষেত্র নির্দেশ করি (আমরা এখানে ফুড সেট থেকে কালারফুড ক্ষেত্র নির্দেশ করেছি)।

এভাবে এই সংযোগপূর্ববর্তী তালিকা থেকে শুধুমাত্র সেই সারিগুলি ছেড়ে যাবে যার জন্য গ্রাহকের পছন্দের রঙের ক্ষেত্রটি FoodColor ক্ষেত্রের সমান।

আসুন প্রতিবেদনটি সংরক্ষণ করি এবং এটি ব্যবহারকারী মোডে চালাই:

দারুণ!

আমি ক্ষেত্র সম্পর্কে একটি ব্যাখ্যা করব " যোগাযোগের শর্ত", যার সম্পর্কে নবাগত প্রোগ্রামাররা প্রায়শই তাদের বর্শা আঘাত করে।

সংযোগ শর্ত একটি সহায়ক ক্ষেত্র. আপনি সেখানে অভিব্যক্তি লিখতে পারেন শুধুমাত্র লিঙ্ক উত্সে নির্দিষ্ট ডেটা সেট থেকে ক্ষেত্র জড়িত.

এই ক্ষেত্রে, লিঙ্ক উত্স থেকে সমস্ত সারির জন্য, লিঙ্কটি তৈরি করার আগে এই অভিব্যক্তিটি (লিঙ্ক শর্ত) পরীক্ষা করা হবে। এবং যদি এই অভিব্যক্তিটি সত্য হয়, তবে লিঙ্ক রিসিভার থেকে এই সারি এবং সারির মধ্যে লিঙ্ক স্থাপন করার চেষ্টা করা হবে। যদি অভিব্যক্তিটি FALSE হয়, তাহলে এমন কোনো প্রচেষ্টা করা হবে না।

কিভাবে কাজ করতে হয়