1c মান সারণী তৈরি। কোন পদ্ধতি বিদ্যমান এবং কিভাবে একই সাথে বিভিন্ন মান অনুসন্ধান করতে হয়

21শে সেপ্টেম্বর, 2011 প্রকাশিত

মান সারণী 1C - অংশ 3। মেটাডেটা। মান টেবিল কলাম মাধ্যমে লুপ

এই নিবন্ধে আমি আপনাকে বলব কিভাবে একটি "অজানা" কাঠামোর মানগুলির একটি টেবিলের সাথে কাজ করতে হয়, কীভাবে একটি মানের টেবিলের কলামগুলির মাধ্যমে পুনরাবৃত্তি করতে হয়, কীভাবে কলামের নাম ব্যবহার না করে কলাম এবং সারি থেকে ডেটা বের করতে হয়। (এই নিবন্ধটি স্ক্র্যাচ থেকে 1C নিবন্ধের সিরিজের অন্তর্গত; স্ক্র্যাচ থেকে 1C প্রোগ্রামিং; 1C মানগুলির টেবিল)

উপাদান ব্যাখ্যা করতে এবং আমাদের কোড উদাহরণ "লাইভ" চালাতে সক্ষম হতে, আমাদের কিছু প্রয়োজন মানের পরীক্ষার টেবিল 1C. আমাদের কিছু উদাহরণ মানগুলির একটি সারণী থেকে ডেটা বের করবে, তাই আমরা তিনটি কলাম "শেষ নাম", "প্রথম নাম", "মধ্য নাম" সহ একটি টেবিল তৈরি করব এবং এতে অল্প পরিমাণ ডেটা প্রবেশ করাব - যত বেশি 3 সারি :)

সুতরাং, আসুন 1C মানের একটি পরীক্ষার টেবিল তৈরি করি এবং এটি পূরণ করি:

MyTZ = New ValueTable; // "MyTZ" MyTZ.Columns.Add("শেষ নাম") ভেরিয়েবলে সংরক্ষিত মানগুলির একটি নতুন টেবিল তৈরি করুন; // কলাম তৈরি করুন "শেষ নাম" MyTZ.Columns.Add("Name"); // কলাম "নাম" MyTZ.Columns.Add("Pattronymic") তৈরি করুন; // "মিডল নেম" কলাম তৈরি করুন // আমাদের মানের সারণীতে প্রথম সারি যোগ করুন NewLine = MyTZ.Add(); NewString.LastName = "চাপায়েভ"; NewLine.Name = "Vasily"; NewString.Middle name = "Ivanovich"; // দ্বিতীয় লাইন যোগ করুন NewLine = MyTZ.Add(); NewString.LastName = "Dzerzhinsky"; NewRow.Name = "ফেলিক্স"; NewString.Middle name = "Edmundovich"; // তৃতীয় লাইন যোগ করুন NewLine = MyTZ.Add(); NewLine.LastName = "কোটভস্কি"; NewLine.Name = "গ্রেগরি"; NewString.Middle name = "Ivanovich";

আমাদের পরীক্ষার টেবিলে তিনটি কলাম রয়েছে: প্রথম নাম, শেষ নাম, পৃষ্ঠপোষকতা; এবং গৃহযুদ্ধের নায়কদের নামের সাথে তিনটি ভরাট লাইন রয়েছে।

প্রথম কোড নমুনা একটি সংগ্রহ হিসাবে একটি 1C মান টেবিলের কলাম গণনা করছে।

// MyTZ.Columns সাইকেল রিপোর্ট থেকে প্রতিটি কলামের জন্য TK-এর সমস্ত কলামের নাম প্রদর্শন করুন("কলামের নাম: " + কলাম। এন্ডসাইকেল;

আমাদের চক্র 1C বার্তা উইন্ডোতে সমস্ত কলামের নাম প্রদর্শন করবে:

কলামের নাম: শেষ নাম কলামের নাম: প্রথম নাম কলামের নাম: মধ্য নাম

আমরা দেখতে পাই যে কলামগুলির মাধ্যমে পুনরাবৃত্তি করতে, একটি বিশেষ সংগ্রহের পুনরাবৃত্তি চক্র ব্যবহার করা হয়, সারি পুনরাবৃত্তি চক্রের অনুরূপ (আগের নিবন্ধে)। MyTZ.Columns- এটি 1C মান টেবিলের কলামগুলির একটি সংগ্রহ "MyTZ". সংগ্রহে টাইপের বস্তু রয়েছে "মান টেবিল কলাম"এই ধরনের প্রতিটি বস্তু মান টেবিলের একটি কলাম এবং বৈশিষ্ট্য এবং পদ্ধতি রয়েছে। এই বৈশিষ্ট্যগুলি এবং পদ্ধতিগুলি অ্যাক্সেস করার মাধ্যমে, আমরা একটি কলাম সম্পর্কে প্রয়োজনীয় তথ্য পাই বা এটির সাথে কিছু অন্য কাজ সম্পাদন করি।

উদাহরণস্বরূপ, সম্পত্তি অ্যাক্সেস করা "নাম" (কলাম।নাম) আমরা বর্তমান কলামের নাম পাই।

আমি সিরিজের শিরোনামের প্রতি আপনার দৃষ্টি আকর্ষণ করতে চাই: “সবার জন্য কলাম MyTZ.Column Cycle থেকে" নাম সহ ভেরিয়েবল "কলাম"আমাদের দ্বারা উদ্ভাবিত। একই নাম ব্যবহার করার প্রয়োজন নেই। আপনি এই ভেরিয়েবলটিকে আপনার পছন্দ মতো কিছু বলতে পারেন, উদাহরণস্বরূপ "মাইকারেন্ট কলাম"তারপর উপরের উদাহরণ এই মত দেখাবে:

// MyTK.Columns সাইকেল রিপোর্ট ("কলামের নাম: " + MyCurrentColumn.Name) থেকে প্রতিটি MyCurrentColumn-এর জন্য TK-এর সমস্ত কলামের নাম প্রদর্শন করুন; এন্ডসাইকেল;

যখন 1C এক্সিকিউশন সাবসিস্টেম এই ধরণের একটি চক্রের মুখোমুখি হয়, চক্রের প্রতিটি পাসের সাথে এটি আমাদের সংগ্রহের একটি উপাদানের নির্দিষ্ট নাম সহ একটি পরিবর্তনশীলকে বরাদ্দ করে, এই ক্ষেত্রে - একটি সংগ্রহ উপাদানমান টেবিল কলাম MyTZ.Columnsএবং তারপর আমরা বর্তমান কলাম ধারণকারী পরিবর্তনশীল অ্যাক্সেস এবং সম্পত্তি ব্যবহার "নাম".

আমি কলামের নামের পাশে কলামের সংগ্রহে প্রতিটি কলামের সংখ্যা প্রদর্শন করার প্রস্তাব করছি:

// MyTZ.Columns Cycle ColumnNumber = MyTZ.Columns.Index(কলাম) থেকে প্রতিটি কলামের জন্য মানের টেবিলের সমস্ত কলামের সংখ্যা এবং নাম প্রদর্শন করুন; // কলাম নম্বর পান ColumnName = Column.Name; // কলামের নাম রিপোর্ট পান("কলাম নম্বর:" + কলাম নম্বর + "কলামের নাম:" + কলামের নাম); এন্ডসাইকেল;

নিম্নলিখিত পাঠ্যটি 1C বার্তা উইন্ডোতে প্রদর্শিত হবে:

কলাম সংখ্যা: 0 কলামের নাম: পদবি কলাম নম্বর: 1 কলামের নাম: প্রথম নাম কলাম নম্বর: 2 কলামের নাম: মধ্য নাম

অনুগ্রহ করে মনে রাখবেন যে 1C মান টেবিলের কলামগুলি মান টেবিলের সারির মতোই শূন্য থেকে শুরু করে সংখ্যাযুক্ত।

1C মান সারণিতে কলামের সংখ্যা

মানের সারণীতে কলামের সংখ্যা খুঁজে বের করতে, আমরা কলামের সংগ্রহে "Count()" পদ্ধতি ব্যবহার করি।

কলামের সংখ্যা = MyTZ.Columns.Quantity(); রিপোর্ট (কলামের সংখ্যা);

"3" নম্বরটি স্ক্রিনে প্রদর্শিত হবে। প্রকৃতপক্ষে, আমাদের টেবিলে তিনটি কলাম রয়েছে: "শেষ নাম", "প্রথম নাম", "পৃষ্ঠনাম"

একটি কলাম বস্তুর সংখ্যা (সূচী) দ্বারা পাওয়া এবং কলাম সূচী ব্যবহার করে কলাম গণনা করা

কলাম সূচক (সংখ্যা) ব্যবহার করে মান টেবিলের সমস্ত কলাম অনুসন্ধান করার একটি চক্র তৈরি করা যাক। মনে রাখবেন যে কলাম সংখ্যা শূন্য থেকে শুরু হয়। অতএব, আমাদের অবশ্যই সাইকেল কাউন্টার "Sch" কে শূন্য থেকে বাড়িয়ে কলাম বিয়োগ এক সংখ্যার সমান করতে হবে।

অ্যাকাউন্টের জন্য = 0 দ্বারা MyTZ.Columns.Quantity() - 1 চক্র বর্তমান কলাম = MyTZ.Columns[Act]; রিপোর্ট (বর্তমান কলাম। নাম); এন্ডসাইকেল;

স্ক্রিনে আমরা নিম্নলিখিতগুলি পাব

পুরো নাম

আমি মনে করি এই উদাহরণটি পরিষ্কার ছিল। আমরা পদ্ধতি চালু পরিমাণ()কলাম সংগ্রহ" MyTZ.Columns.Quantity()", কলামের সংখ্যা পেয়েছে, এবং থেকে একটি কাউন্টার দিয়ে একটি লুপ শুরু করেছে৷ শূন্যআগে কলামের সংখ্যা বিয়োগ এক. লুপের ভিতরে আমরা কলামের সংগ্রহ থেকে প্রতিটি কলাম পাই এবং বর্তমান কলাম অবজেক্টটিকে একটি ভেরিয়েবলে বরাদ্দ করি বর্তমান কলামপরবর্তী, পরিবর্তনশীল বর্তমান কলামআমরা সম্পত্তি অ্যাক্সেস নামএবং পর্দায় এই সম্পত্তির মান প্রদর্শন করুন: রিপোর্ট (বর্তমান কলাম। নাম);

একটি বস্তুর সম্পত্তি এবং একটি বস্তুর পদ্ধতি বিভ্রান্ত করা গুরুত্বপূর্ণ.

একটি সম্পত্তি একটি নির্দিষ্ট স্ট্যাটিক মান এবং এটিতে প্রবেশাধিকার বন্ধনী ছাড়াই লেখা হয়, উদাহরণস্বরূপ বর্তমান কলাম।নাম. একটি পদ্ধতি মূলত একটি বস্তুর একটি পদ্ধতি বা ফাংশন, এবং পদ্ধতি এবং ফাংশনের কলগুলি সর্বদা বন্ধনী দিয়ে লেখা হয় (কোনও ইনপুট পরামিতি না থাকলেও)। উদাহরণ স্বরূপ: MyTZ.Columns.Quantity()

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

যদি আমি এই ধরনের ভুল পদ্ধতিতে মেথড কলে বন্ধনী রাখতে ভুলে যাই তাহলে দোভাষী এটিই লিখবে MyTZ.কলাম.পরিমাণ("পরিমাণ()" এর পরে বন্ধনী ছাড়া):

অবজেক্ট ফিল্ড পাওয়া যায়নি (পরিমাণ)

এই ক্ষেত্রে, "ক্ষেত্র" এবং "সম্পত্তি" প্রতিশব্দ হিসাবে বোঝা উচিত, বা 1C বিকাশকারীদের পরিভাষায় একটি ভুলতা। তারা একই ধারণা বোঝাতে এই দুটি শব্দ ব্যবহার করে। যদিও অন্যান্য প্রোগ্রামিং ভাষায় এই পদগুলির অর্থ ভিন্ন জিনিস হতে পারে।

কলাম সংখ্যা ব্যবহার করে 1C মানের একটি টেবিল থেকে ডেটা প্রাপ্ত করা

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

ফার্স্টলাইন = MyTK; // প্রথম সারি পান (শূন্য থেকে সংখ্যাযুক্ত) FirstColumnValue = FirstRow; // প্রথম কলামের মান পান (কলাম সংখ্যা স্ক্র্যাচ থেকেও হয়) রিপোর্ট(প্রথম কলামের মান); // টেবিলের প্রথম সারিতে প্রথম কলামের মান প্রদর্শন করুন

পর্দা প্রদর্শিত হবে:

চাপায়েভ

প্রথমে, আমরা [...] অপারেটর ব্যবহার করে ভ্যালু টেবিল অ্যাক্সেস করে একটি মান টেবিল সারি অবজেক্ট পেয়েছি। (যদি আপনি এটি কীভাবে করবেন তা ভুলে গেছেন, আপনি পূর্ববর্তী নিবন্ধগুলি দেখতে পারেন) আমরা অপারেটরের ভিতরে আর্গুমেন্ট "0" পাস করেছি। এটি মান টেবিলের প্রথম সারির সূচক। ফার্স্টলাইন = MyTK;

উপরন্তু, আমাদের [...] অপারেটর ব্যবহার করে একটি স্ট্রিং অবজেক্ট অ্যাক্সেস করার অধিকার রয়েছে। এই অপারেটরের ভিতরে আমরা মান টেবিলের কলাম নম্বর পাস করেছি, এই ক্ষেত্রেও "0"। এবং এইভাবে, আমরা "0" নম্বরযুক্ত বর্তমান টেবিলের সারির জন্য "0" নম্বরযুক্ত কলামের মান পেয়েছি। আমরা এই মানটি স্ক্রিনে প্রদর্শন করেছি এবং এটি "চাপায়েভ" স্ট্রিংকে উপস্থাপন করে।

আসুন আমাদের উদাহরণকে একটু জটিল করি:

ফার্স্টলাইন = MyTK; // প্রথম লাইন পান (শূন্য থেকে সংখ্যাযুক্ত) রিপোর্ট (প্রথম লাইন); // টেবিল রিপোর্টের প্রথম সারিতে প্রথম কলামের মান প্রদর্শন করুন (প্রথম সারিতে); // টেবিল রিপোর্টের প্রথম সারিতে দ্বিতীয় কলামের মান প্রদর্শন করুন (প্রথম সারিতে); // টেবিলের প্রথম সারিতে তৃতীয় কলামের মান প্রদর্শন করুন

আমরা এখন আমাদের মান টেবিলের প্রথম সারির তিনটি কলামের মানগুলি প্রদর্শন করেছি:

চাপায়েভ ভ্যাসিলি ইভানোভিচ

এখন আমি এই উদাহরণটি পরিবর্তন করব যাতে আমরা পরিবর্তনশীল ছাড়া করতে পারি "প্রথম লাইন"

রিপোর্ট (MyTZ); // টেবিল রিপোর্ট (MyTZ) এর প্রথম সারিতে প্রথম কলামের মান প্রদর্শন করুন; // টেবিল রিপোর্ট (MyTZ) এর প্রথম সারিতে দ্বিতীয় কলামের মান প্রদর্শন করুন; // টেবিলের প্রথম সারিতে তৃতীয় কলামের মান প্রদর্শন করুন

পর্দায়ও তাই হবে

চাপায়েভ ভ্যাসিলি ইভানোভিচ

আমরা উপরের উদাহরণে দেখেছি যে একটি নির্দিষ্ট সারি এবং মানের টেবিলের একটি নির্দিষ্ট কলামে অবস্থিত একটি মান অ্যাক্সেস করতে, আমরা এই ফর্মটিতে দুটি অপারেটরের একটি অনুক্রমিক কল ব্যবহার করতে পারি [...]: মান সারণী [সারি সূচী] [কলাম সূচক]

সুতরাং, আমরা একটি লুপ তৈরি করতে এবং সারি এবং কলাম সূচক ব্যবহার করে সমস্ত সারি এবং সমস্ত কলামের ডেটা পেতে প্রস্তুত:

RowCounter = 0 By MyTZ.Quantity() - 1 লুপ // সারিগুলির মাধ্যমে চক্রের জন্য ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 লুপ // কলামের মাধ্যমে নেস্টেড লুপ // সেল মান পান (বর্তমান সারি থেকে এবং বর্তমান কলাম) সেলভ্যালু = MyTK[RowCounter][ColumnCounter]; // সারি নম্বর, কলাম নম্বর এবং সেল মান রিপোর্ট প্রদর্শন করুন("সারি নং" + সারি সংখ্যা + "কলাম নং" + কলাম সংখ্যা + "=" + সেল মান); এন্ডসাইকেল; এন্ডসাইকেল;

নিম্নলিখিত পর্দায় প্রদর্শিত হবে:

লাইন নং 0 কলাম নং 0 = চাপায়েভ লাইন নং 0 কলাম নং 1 = ভ্যাসিলি লাইন নং 0 কলাম নং 2 = ইভানোভিচ লাইন নং 1 কলাম নং 0 = ডিজারজিনস্কি লাইন নং 1 কলাম নং 1 = ফেলিক্স লাইন নং 1 কলাম নং 2 = এডমুন্ডোভিচ লাইন নং 2 কলাম নং 0 = কোটভস্কি লাইন নং 2 কলাম নং 1 = গ্রিগরি লাইন নং 2 কলাম নং 2 = ইভানোভিচ

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

উপসংহারে, আমি আমাদের উদাহরণকে সামান্য পরিবর্তন করার প্রস্তাব করছি যাতে কলাম সংখ্যার পরিবর্তে এটি তাদের নামগুলি স্ক্রিনে প্রদর্শন করে। এবং উপরন্তু, আমি পর্দায় বিষয়বস্তু প্রদর্শনের জন্য আরও উপস্থাপনযোগ্য নকশা তৈরি করব।

LineCounter = 0 By MyTZ.Quantity() - 1 Loop // loop through rows Report(" ======= লাইন নং" + লাইনকাউন্টার + " ========"); প্রতিবেদন করেত(" "); // লাইন ফিড (একটি খালি সারি ঢোকানো) ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 লুপ // কলামের মাধ্যমে নেস্টেড লুপ // সেল মান পান (বর্তমান সারি এবং বর্তমান কলাম থেকে) সেল ভ্যালু = মাইটিজেড [রোকাউন্টার] [কলাম কাউন্টার]; // কলামের নাম পান ColumnName = MyTZ.Columns[ColumnCounter].Name; // কলামের নাম এবং সেল মান রিপোর্ট প্রদর্শন করুন(ColumnName + ": " + CellValue); এন্ডসাইকেল; প্রতিবেদন করেত(" "); // লাইন ফিড (একটি খালি লাইন ঢোকানো) EndCycle;

এখন, আমাদের স্ক্রিনে তথ্যটি আরও প্রতিনিধিত্বমূলক দেখাতে শুরু করেছে:

লাইন নং 0 ======= পদবি: চাপায়েভ প্রথম নাম: ভ্যাসিলি প্যাট্রোনিমিক: ইভানোভিচ ======= লাইন নং 1 ======= শেষ নাম: ডিজারজিনস্কি প্রথম নাম: ফেলিক্স প্যাট্রোনিমিক: এডমুন্ডোভিচ ===== == লাইন নং 2 ======= পদবি: কোটোভস্কি প্রথম নাম: গ্রিগরি পৃষ্ঠপোষক: ইভানোভিচ

হ্যাঁ, আমি প্রায় ভুলে গেছি। একটি সারিতে দুটি [...][...] অপারেটর ব্যবহার করার সময়, আমরা একটি কলাম সূচকের পরিবর্তে এই কলামের নাম পাস করতে পারি: মান সারণী[RowIndex][ColumnName]

LineCounter = 0 By MyTZ.Quantity() - 1 Loop // loop through rows Report(" ======= লাইন নং" + লাইনকাউন্টার + " ========"); প্রতিবেদন করেত(" "); // লাইন ফিড (একটি খালি লাইন ঢোকানো) ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 লুপ // কলামের মাধ্যমে নেস্টেড লুপ ColumnName = MyTZ.Columns[ColumnCounter].Name; // কলামের নাম সেল মান পান = MyTZ[RowCounter][ColumnName]; //

একটি তীর দিয়ে চিহ্নিত লাইনের দিকে মনোযোগ দিন "। এই লাইনে, বর্তমান কলামের সূচীর পরিবর্তে, আমরা বর্তমান কলামের নামটি বর্গাকার বন্ধনীতে আর্গুমেন্টে পাস করি [...] ফলাফল একই হবে।

এবং এখন, এই নিবন্ধে শেষ জিনিস.

সারি এবং কলামের সংগ্রহের মাধ্যমে লুপ ব্যবহার করে 1C মান টেবিল থেকে সঠিকভাবে সমস্ত ডেটা প্রাপ্ত করা

MyTZ লুপ থেকে প্রতিটি কারেন্টলাইনের জন্য // স্ট্রিং রিপোর্টের একটি সংগ্রহের মাধ্যমে লুপ প্রতিবেদন করেত(" "); MyTZ.Columns লুপ থেকে প্রতিটি বর্তমান কলামের জন্য // কলামগুলির একটি সংগ্রহের মাধ্যমে নেস্টেড লুপ পুনরাবৃত্তি করা হচ্ছে ColumnName = CurrentColumn.Name; // কলাম nameCellValue = CurrentRow[ColumnName] পান; // কলাম NAME রিপোর্ট (ColumnName + ": " + CellValue) দ্বারা সেল মান পান; // কলামের নাম এবং সেল মান প্রদর্শন করুন চক্রের শেষ; প্রতিবেদন করেত(" "); এন্ডসাইকেল;

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

পরিশেষে, আমি মধ্যবর্তী ভেরিয়েবলের ব্যবহার বাদ দিয়ে আমাদের শেষ উদাহরণে কোডের লাইনের সংখ্যা যতটা সম্ভব কমিয়ে দেব। আমরা "ইন্ডাস্ট্রিয়াল কোড" এর একটি নমুনা পাব যা বাস্তব সমস্যায় ব্যবহৃত হয়।

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

MyTZ সাইকেল থেকে প্রতিটি কারেন্টলাইনের জন্য // সারি রিপোর্টের উপর পুনরাবৃত্তি করুন(" ======= লাইন নং" + MyTZ.Index(CurrentLine) + " =======" + Symbols.PS); MyTZ.Columns লুপ থেকে প্রতিটি বর্তমান কলামের জন্য // কলাম রিপোর্টের উপর পুনরাবৃত্তি করুন(CurrentColumn.Name + ": " + CurrentRow[CurrentColumn.Name]); এন্ডসাইকেল; প্রতিবেদন করেত(" "); এন্ডসাইকেল;

স্ক্রিনের আউটপুট পরিবর্তিত হয়নি, এটি আগের উদাহরণের মতোই রয়ে গেছে:

2 সপ্তাহের কোর্স

"প্রবর্তকদের জন্য 1C-এ প্রোগ্রামিং"

কোর্সটি ইমেইলে পাঠানো হবে। ধাপে ধাপে কাজগুলো সম্পন্ন করে একজন প্রোগ্রামার হয়ে উঠুন।

অংশগ্রহণ করতে আপনার শুধুমাত্র একটি কম্পিউটার এবং ইন্টারনেট প্রয়োজন

কোর্সে বিনামূল্যে প্রবেশাধিকার:

Sp-force-hide ( display: none;).sp-form ( প্রদর্শন: ব্লক; ব্যাকগ্রাউন্ড: #eff2f4; প্যাডিং: 5px; প্রস্থ: 270px; সর্বোচ্চ-প্রস্থ: 100%; বর্ডার-ব্যাসার্ধ: 0px; -moz-বর্ডার -ব্যাসার্ধ: 0px; -ওয়েবকিট-বর্ডার-ব্যাসার্ধ: 0px; ফন্ট-পরিবার: Arial, "Helvetica Neue", sans-serif; ব্যাকগ্রাউন্ড-রিপিট: নো-রিপিট; ব্যাকগ্রাউন্ড-অবস্থান: কেন্দ্র; ব্যাকগ্রাউন্ড-আকার: স্বয়ংক্রিয়;) .sp-ফর্ম ইনপুট (ডিসপ্লে: ইনলাইন-ব্লক; অপাসিটি: 1; দৃশ্যমানতা: দৃশ্যমান;).sp-ফর্ম .sp-ফর্ম-ক্ষেত্র-র্যাপার ( মার্জিন: 0 অটো; প্রস্থ: 260px;).sp-ফর্ম .sp -ফর্ম-কন্ট্রোল ( ব্যাকগ্রাউন্ড: #ffffff; বর্ডার-রং: #cccccc; বর্ডার-স্টাইল: কঠিন; বর্ডার-প্রস্থ: 1px; ফন্ট-আকার: 15px; প্যাডিং-বাম: 8.75px; প্যাডিং-ডান: 8.75px; সীমানা -ব্যাসার্ধ: 4px; -moz-বর্ডার-ব্যাসার্ধ: 4px; -ওয়েবকিট-বর্ডার-ব্যাসার্ধ: 4px; উচ্চতা: 35px; প্রস্থ: 100%;).sp-ফর্ম .sp-ক্ষেত্র লেবেল (রঙ: #444444; ফন্ট- আকার: 13px; ফন্ট-স্টাইল: স্বাভাবিক; ফন্ট-ওজন: বোল্ড;).sp-ফর্ম .sp-বোতাম (বর্ডার-ব্যাসার্ধ: 4px; -moz-বর্ডার-ব্যাসার্ধ: 4px; -ওয়েবকিট-বর্ডার-ব্যাসার্ধ: 4px; ব্যাকগ্রাউন্ড-রং: #f4394c; রঙ: #ffffff; প্রস্থ: 100%; ফন্ট-ওজন: 700; ফন্ট-স্টাইল: স্বাভাবিক; font-family: Arial, "Helvetica Neue", sans-serif; বক্স-ছায়া: কোনোটিই নয়; -মোজ-বক্স-ছায়া: কোনোটিই নয়; -ওয়েবকিট-বক্স-ছায়া: কোনোটিই নয়; ব্যাকগ্রাউন্ড: লিনিয়ার-গ্রেডিয়েন্ট (শীর্ষে, #e30d22 , #f77380);).sp-ফর্ম .sp-বোতাম-ধারক (টেক্সট-সারিবদ্ধ: কেন্দ্র; প্রস্থ: স্বয়ংক্রিয়;)

(এই নিবন্ধটি স্ক্র্যাচ থেকে 1C নিবন্ধের সিরিজের অন্তর্গত; স্ক্র্যাচ থেকে 1C প্রোগ্রামিং; 1C মানগুলির টেবিল)

ট্যাবুলার আকারে একটি ভার্চুয়াল ডেটা স্টোরেজ কাঠামো - এটিই তাই

মান সারণী 1C ডাটাবেসের একটি স্থায়ী বস্তু নয় এবং লঞ্চ সেশনের মধ্যে সংরক্ষণ করা হয় না।

মান সারণী 1C(TK) প্রোগ্রাম কোড ব্যবহার করে "অন দ্য ফ্লাই" তৈরি করা হয়, এবং তারপরে এটির সাথে কাজ করা হয় 1C প্রোগ্রামিং ভাষার অন্যান্য প্রোগ্রাম অবজেক্টের মতোই। মেথড কল ব্যবহার করা এবং টেবিল-অবজেক্টের বৈশিষ্ট্য অ্যাক্সেস করা।

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

আসুন মানগুলির একটি টেবিল তৈরি করি এবং কিছু দিয়ে এটি পূরণ করি। এটি অবশ্যই মনে রাখতে হবে যে 1C মানের একটি টেবিল অপারেটরকে কল করে শুধুমাত্র ম্যানুয়ালি তৈরি করা যায় না।

NewValueTable;

একটি মান টেবিল প্রায়শই অন্য বস্তুর একটি পদ্ধতি কলের ফলাফল, উদাহরণস্বরূপ একটি প্রশ্নের ফলাফল একটি মান টেবিলে ডাম্প করা হতে পারে, এবং তাই।

আমাকে এখনই একটি সহজ উদাহরণ দিতে দিন।

// MyTZ = নতুন মান সারণী; // "MyTZ" ভেরিয়েবলে সংরক্ষিত মানগুলির একটি নতুন টেবিল তৈরি করুনমাইটিজেড। কলাম. যোগ করুন("শেষ নাম"); // "শেষ নাম" কলাম তৈরি করুনমাইটিজেড। কলাম. যোগ করুন ("নাম"); // "নাম" কলাম তৈরি করুনরিপোর্ট (MyTZ); // MyTZ ভেরিয়েবলের মান প্রদর্শন করুন //

আমি দুটি কলাম সহ 1C মানের একটি টেবিল তৈরি করেছি: "শেষ নাম", "প্রথম নাম"। পদ্ধতি রিপোর্ট(MyTZ)বার্তা উইন্ডোতে পরিবর্তনশীল প্রকার প্রদর্শন করবে মাইটিজেড: মান সারণী

আমাদের মান টেবিল আপাতত খালি। এর প্রথম এবং শেষ নাম সহ এটিতে কয়েকটি লাইন যুক্ত করা যাক।

// মান সারণী পূরণ করুন // আমাদের মান টেবিলে প্রথম সারি যোগ করুননিউলাইন = MyTZ। যোগ করুন(); নতুন লাইন. পদবি = "সিডোরভ" ; নতুন লাইন. নাম = "ভাস্য" ; // আমাদের মান টেবিলে একটি দ্বিতীয় সারি যোগ করুননিউলাইন = MyTZ। যোগ করুন(); নতুন লাইন. পদবি = "ইভানভ" ; নতুন লাইন. নাম = "পিটার" ;

আমরা এই মত একটি টেবিল পেয়েছি:

মনে রাখা দরকার: মান সারণীতে সারি সংখ্যা শূন্য থেকে শুরু হয়

কেন আমরা এমনকি লাইন নম্বর প্রয়োজন? এবং যাতে আমরা মানের টেবিলের একটি পৃথক সারি অ্যাক্সেস করতে পারি, উদাহরণস্বরূপ, এই সারিটি স্ক্রিনে নিন এবং প্রদর্শন করুন।

// *** স্ক্রিনে শূন্য রেখার মানগুলি প্রদর্শন করুন *** (দৈনিক জীবনে আমরা সাধারণত একটি থেকে শুরু করে জিনিসগুলি সংখ্যা করি, তবে এখানে - শূন্য থেকে) // বর্গাকার বন্ধনীতে সারি সূচক ব্যবহার করে আমাদের টেবিলের শূন্য সারি পান OurNullString = MyTZ[ 0] ; // এখন সম্পূর্ণ শূন্য স্ট্রিং "আওয়ার ফার্স্টলাইন" ভেরিয়েবলের মধ্যে রয়েছেপ্রতিবেদন (আমাদের নলস্ট্রিং। শেষ নাম); // সারি শূন্যে সংরক্ষিত "শেষ নাম" কলামের মান প্রদর্শন করুনরিপোর্ট (OurNullString.Name); // একই লাইন থেকে "নাম" কলামের মান প্রদর্শন করুন

ফলস্বরূপ, পর্দা প্রদর্শিত হবে:

সিডোরভ ভাস্য

এখন, খুব স্মার্ট এবং সংক্ষিপ্তভাবে, আমি একটি উদাহরণ দেখাব যা আপনাকে অমুক এবং অমুক সারিতে একটি কলামের মান অ্যাক্সেস করতে দেয় (অমুক এবং অমুক সারিতে একটি কলামের মান হল মানের টেবিলের একটি ঘর। একটি অনানুষ্ঠানিক শব্দ, কিন্তু একটি সুবিধাজনক)। কিন্তু "OurZeroString" এর মতো একটি মধ্যবর্তী ভেরিয়েবল ব্যবহার না করে।

দ্বিতীয় সারি থেকে ঘরের মান প্রদর্শন করতে (ভুলে যাবেন না যে সারিটি দ্বিতীয়, তবে এই সারির সূচকটি একটি, তাই সংখ্যায়ন শূন্য থেকে শুরু হয়)

অবশেষে, এই নিবন্ধে চূড়ান্ত পয়েন্ট. আমি আপনাকে সূচক (সারি নম্বর) দ্বারা একটি মান টেবিলের একক সারি অ্যাক্সেস করার একটি উদাহরণ দেখিয়েছি। একটি ঘরের বিষয়বস্তু পড়ার বা বরাদ্দ করার জন্য সর্বজনীন ফর্ম হল: "MyValueTable[RowNumber].ColumnName"

এখন আমি আপনাকে মান সারণীর বিষয়বস্তুর সম্পূর্ণ আউটপুটের একটি চক্র দেব। বিশদ ব্যাখ্যা ছাড়াই, যাতে আপনি আপনার মস্তিষ্কও র্যাক করতে পারেন :)

// // লুপ করুন এবং আমাদের মানের টেবিলের সমস্ত সারি প্রদর্শন করুন// MyTK অনুযায়ী LineNumber = 0 এর জন্য। পরিমাণ() - 1 সাইকেল রিপোর্ট (MyTZ[লাইন নম্বর]। শেষনাম); // "শেষ নাম" কলামের মান প্রদর্শন করুনরিপোর্ট (MyTK[লাইন নম্বর]। নাম); // "নাম" কলামের মান প্রদর্শন করুনএন্ডসাইকেল;

এই লুপটি চালানোর ফলে, স্ক্রিনে নিম্নলিখিতগুলি প্রদর্শিত হবে:

সিডোরভ ভাস্য ইভানভ পেটিয়া

এখানে আমি আপনাকে 1C মান সারণীর সাথে কাজ করার মূল বিষয়গুলি বলেছি। এই তথ্যটি 1C 8.0, 8.1, 8.2-এর ক্ষেত্রে প্রযোজ্য৷ "1C মান সারণী" অবজেক্ট সম্পর্কে আকর্ষণীয় বিবরণ এখানে শেষ হয় না৷ এই বস্তুর ডেটা সহ সুবিধাজনক কাজের জন্য প্রচুর ক্ষমতা রয়েছে। আমি নিম্নলিখিত নিবন্ধে এই সম্পর্কে কথা বলতে হবে.

দেগতয়ারেভ রোমান।

কিভাবে স্ক্র্যাচ থেকে 1C প্রোগ্রাম শিখতে?

কিভাবে 1C প্রোগ্রামার হিসাবে কাজ করবেন এবং প্রতি মাসে 150,000 রুবেল পর্যন্ত উপার্জন করবেন?

বিনামূল্যে সাইন আপ করুন

2 সপ্তাহের কোর্স

"প্রবর্তকদের জন্য 1C-এ প্রোগ্রামিং"

কোর্সটি ইমেইলে পাঠানো হবে। ধাপে ধাপে কাজগুলো সম্পন্ন করে একজন প্রোগ্রামার হয়ে উঠুন।

অংশগ্রহণ করতে আপনার শুধুমাত্র একটি কম্পিউটার এবং ইন্টারনেট প্রয়োজন

কোর্সে বিনামূল্যে প্রবেশাধিকার:

Sp-force-hide ( display: none;).sp-form ( প্রদর্শন: ব্লক; ব্যাকগ্রাউন্ড: #eff2f4; প্যাডিং: 5px; প্রস্থ: 270px; সর্বোচ্চ-প্রস্থ: 100%; বর্ডার-ব্যাসার্ধ: 0px; -moz-বর্ডার -ব্যাসার্ধ: 0px; -ওয়েবকিট-বর্ডার-ব্যাসার্ধ: 0px; ফন্ট-পরিবার: Arial, "Helvetica Neue", sans-serif; ব্যাকগ্রাউন্ড-রিপিট: নো-রিপিট; ব্যাকগ্রাউন্ড-অবস্থান: কেন্দ্র; ব্যাকগ্রাউন্ড-আকার: স্বয়ংক্রিয়;) .sp-ফর্ম ইনপুট (ডিসপ্লে: ইনলাইন-ব্লক; অপাসিটি: 1; দৃশ্যমানতা: দৃশ্যমান;).sp-ফর্ম .sp-ফর্ম-ক্ষেত্র-র্যাপার ( মার্জিন: 0 অটো; প্রস্থ: 260px;).sp-ফর্ম .sp -ফর্ম-কন্ট্রোল ( ব্যাকগ্রাউন্ড: #ffffff; বর্ডার-রং: #cccccc; বর্ডার-স্টাইল: কঠিন; বর্ডার-প্রস্থ: 1px; ফন্ট-আকার: 15px; প্যাডিং-বাম: 8.75px; প্যাডিং-ডান: 8.75px; সীমানা -ব্যাসার্ধ: 4px; -moz-বর্ডার-ব্যাসার্ধ: 4px; -ওয়েবকিট-বর্ডার-ব্যাসার্ধ: 4px; উচ্চতা: 35px; প্রস্থ: 100%;).sp-ফর্ম .sp-ক্ষেত্র লেবেল (রঙ: #444444; ফন্ট- আকার: 13px; ফন্ট-স্টাইল: স্বাভাবিক; ফন্ট-ওজন: বোল্ড;).sp-ফর্ম .sp-বোতাম (বর্ডার-ব্যাসার্ধ: 4px; -moz-বর্ডার-ব্যাসার্ধ: 4px; -ওয়েবকিট-বর্ডার-ব্যাসার্ধ: 4px; ব্যাকগ্রাউন্ড-রং: #f4394c; রঙ: #ffffff; প্রস্থ: 100%; ফন্ট-ওজন: 700; ফন্ট-স্টাইল: স্বাভাবিক; font-family: Arial, "Helvetica Neue", sans-serif; বক্স-ছায়া: কোনোটিই নয়; -মোজ-বক্স-ছায়া: কোনোটিই নয়; -ওয়েবকিট-বক্স-ছায়া: কোনোটিই নয়; ব্যাকগ্রাউন্ড: লিনিয়ার-গ্রেডিয়েন্ট (শীর্ষে, #e30d22 , #f77380);).sp-ফর্ম .sp-বোতাম-ধারক (টেক্সট-সারিবদ্ধ: কেন্দ্র; প্রস্থ: স্বয়ংক্রিয়;)

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

কাজের বৈশিষ্ট্য।

যে কেউ নিয়মিত অ্যাপ্লিকেশনে প্রোগ্রাম করেছেন তারা প্রায়শই একটি ফর্মে মানগুলির একটি নির্বিচারে টেবিল পাওয়ার কাজের মুখোমুখি হয়েছেন। মানগুলির একটি নির্বিচারে সারণী হল একটি টেবিল যার সংখ্যা এবং কলামের ধরন আগে থেকে জানা যায় না। অর্থাৎ, 3টি কলাম থাকতে পারে, বা 6টি হতে পারে বা 8টি হতে পারে৷ একটি সাধারণ অ্যাপ্লিকেশনে, সবকিছুই সহজ: আপনি প্রক্রিয়াকরণ ফর্মে "মূল্যের সারণী" উপাদানটি স্থাপন করতে পারেন এবং তারপরে তৈরি করা মানগুলির টেবিলটি স্থানান্তর করতে পারেন৷ প্রোগ্রামগতভাবে এই উপাদান. তারপর একটি সহজ কমান্ড দিয়ে:

Form Elements.TableField.CreateColumns();

ফর্মে মানগুলির একটি প্রস্তুত টেবিল পান। এটা সহজ হতে পারে বলে মনে হবে.

এই সব নিয়মিত আবেদন ছিল. একটি পরিচালিত অ্যাপ্লিকেশনে, সবকিছু পরিবর্তিত হয়েছে। একটি নির্বিচারে টেবিল তৈরি করা এত সহজ নয়। এখন আপনাকে ফর্মের মানগুলির সারণীটিকে কঠোরভাবে প্যারামিটারাইজ করতে হবে, বা এটি প্রোগ্রাম্যাটিকভাবে তৈরি করতে হবে (বর্ণনা করুন, ভাল, এটি আসলে, পরিচালিত অ্যাপ্লিকেশনটির সারাংশ)। আমরা এটি করার চেষ্টা করব: প্রোগ্রাম্যাটিকভাবে একটি নিয়ন্ত্রিত ফর্মে মানগুলির একটি নির্বিচারে টেবিল তৈরি করুন।

সমস্যার সমাধান।

আমাদের প্রথম জিনিসটি নির্ধারণ করতে হবে যে ফর্মটিতে টেবিলটি কীভাবে উপস্থিত হবে। প্রধান জিনিস হল যে আপনাকে প্রক্রিয়াকরণে কোন ফর্ম উপাদান তৈরি করতে হবে না। আমরা পুরো টেবিলের মতো এটি প্রোগ্রাম্যাটিকভাবে তৈরি করব। অর্থাৎ, ফর্মটি খোলার বা একটি বোতাম ব্যবহার করার মুহুর্তে টেবিলটি বর্ণনা এবং তৈরি করা হবে - কার এটি প্রয়োজন তার উপর নির্ভর করে।

ফর্মে একটি টেবিল তৈরি একটি বৈশিষ্ট্য হিসাবে মান টেবিলের বর্ণনার মাধ্যমে ঘটে:
SelectionTypeArray = নতুন অ্যারে; SelectionType এর অ্যারে। Add(Type("Value Table")); চয়েস টাইপ বর্ণনা = নতুন টাইপ বর্ণনা (চয়েস টাইপ অ্যারে); বিস্তারিত অ্যারে = নতুন অ্যারে; অ্যাট্রিবিউটের অ্যারে। অ্যাড(নতুন ফর্ম অ্যাট্রিবিউটস("শিডিউল টেবিল", সিলেকশন টাইপের বর্ণনা, "", "TZN")); এখন আমাদের একটি প্রোগ্রাম মান টেবিল তৈরি করতে হবে যাতে ডেটা রয়েছে। যদি একটি ক্যোয়ারী থেকে মানের সারণী পাওয়া যায়, তাহলে সবকিছুই কমবেশি ক্রমানুসারে। যদি টেবিলটি ম্যানুয়ালি তৈরি করা হয়, তাহলে যে কলামগুলিতে সংখ্যা বা তারিখ থাকবে তার অর্থ "প্রকারের বর্ণনা" এর মাধ্যমে তৈরি করা যেতে পারে। বিন্দু হল যে মান সারণীর কলামগুলি অবশ্যই কিছু টাইপ থাকতে হবে। যদি, উদাহরণস্বরূপ, এটি প্রত্যাশিত হয় যে ব্যবহারকারী এই কলামগুলিতে ইন্টারেক্টিভভাবে ডেটা পূরণ করবে, তাহলে আপনি একটি নামের সাথে মান টেবিলের একটি কলাম যোগ করতে পারবেন না; এটির একটি প্রকার থাকতে হবে। মনে রাখবেন - এটি খুবই গুরুত্বপূর্ণ কারণ... আমরা ফর্মের টেবিলে এই প্রকারগুলি স্থানান্তর করব।
আমরা একটি টেবিল তৈরি করি যাতে বেশ কয়েকটি কলাম রয়েছে:
CD = NewDateQualifiers(DateParts.Time); ArrayKD = নতুন অ্যারে; ArrayCD.Add(Type("তারিখ")); DescriptionTypesTime = নতুন বর্ণনা প্রকার (ArrayCD,CD); TZ = New ValueTable;
TK.Columns.Add("With", DescriptionTypesTime);
TK.Columns.Add("আগে", DescriptionTypesTime);
TK.Columns.Add("নাম");
TK.Columns.Add("নোট"); // সম্পূর্ণ নাম এবং নোট - সারি পরবর্তী, আমরা প্রয়োজনীয় ডেটা দিয়ে আমাদের TK প্রোগ্রাম টেবিলটি পূরণ করব। আমরা একটি TK টেবিল পেয়েছি যাতে প্রয়োজনীয় মান রয়েছে এবং তৈরি ফর্ম বৈশিষ্ট্যে স্থানান্তর করার জন্য প্রস্তুত। TK থেকে প্রতিটি কলামের জন্য। কলাম চক্র

অ্যাট্রিবিউটের অ্যারে। অ্যাড(নতুন ফর্ম অ্যাট্রিবিউটস(কলাম। নাম, কলাম। ভ্যালু টাইপ,"শিডিউল টেবিল"));
এন্ডসাইকেল;
পরিবর্তনের বিবরণ (অ্যারে বিবরণ);
SelectionFieldsTable = Elements.Add("TZN", Type("FormTable"));
SelectionFieldsTable.DataPath = "ScheduleTable";
SelectionFieldTable.Display = TableDisplay.List;

এটি একটি সহজ সমন্বয় এবং আমাদের টেবিল প্রস্তুত।

TK থেকে প্রতিটি কলামের জন্য। কলাম চক্র

NewElement = Elements.Add(Column.Name, Type("FormField"), SelectionFieldTable);
NewElement.View = FormFieldView.InputField;
NewElement.DataPath = "শিডিউল টেবিল।" + কলাম।নাম;
NewElement.Width = 10;
এন্ডসাইকেল;

শর্তসাপেক্ষ নকশা, যদি আমাদের এটির প্রয়োজন হয়, আমরা এটি নিজেও লিখি, কমান্ড মেনু - ম্যানুয়ালি। টেবিল হ্যান্ডলারগুলিও হাতে লেখা হয়। উদাহরণস্বরূপ, "নির্বাচন" টেবিলের জন্য একটি ইভেন্ট হ্যান্ডলার যোগ করতে:

SelectionFields.SetAction এর সারণী("নির্বাচন","TZNSনির্বাচন");

এই ঘটনাটি প্রক্রিয়া করার জন্য, একটি পৃথক পদ্ধতি একটি পদ্ধতির আকারে নির্ধারিত হয়:

&অনক্লায়েন্ট
পদ্ধতি TKNSনির্বাচন(TK, SelectedRow, Field, Standard Processing)
//হ্যান্ডলার এন্ডপ্রসিডিউর কমান্ড করে

মনে রাখবেন যে টেবিল হ্যান্ডলাররা ক্লায়েন্টের উপর ফায়ার করে এবং তাই একটি কম্পাইলার পয়েন্টার কমান্ড থাকতে হবে

&অনক্লায়েন্ট

ঠিক আছে, শেষ জিনিসটি আমি যোগ করতে চেয়েছিলাম যে এই সমস্ত পদক্ষেপের পরে, ফর্ম অ্যাট্রিবিউটে সমাপ্ত টেবিলটি পাস করতে ভুলবেন না:

ValueV FormAttributes(ToR, "ScheduleTable");

ফলস্বরূপ এটি আমাদের রয়েছে:


এবং এখানে "নির্বাচন" ইভেন্টের পরিচালনা:



আফটারওয়ার্ড

আমি আশা করি নিবন্ধটি সেই 1C প্রোগ্রামারদের সাহায্য করবে যারা প্রোগ্রামে একটি ফর্মে টেবিল তৈরি করতে শুরু করছে।

আপনি একটি প্রসেসিং ডাউনলোড করতে পারেন যা প্রোগ্রাম্যাটিকভাবে মানগুলির একটি টেবিল তৈরি করে এবং মন্তব্য সহ একটি পরিচালনাযোগ্য ফর্মে এটি প্রদর্শন করে যা আপনাকে আপনার নিজস্ব টেবিল তৈরি করতে সহায়তা করবে।

অর্থ এবং পণ্যের হিসাব করার জন্য, ব্যবসায় বিভিন্ন টেবিল ব্যাপকভাবে ব্যবহৃত হয়। প্রায় প্রতিটি নথি একটি টেবিল।

একটি টেবিল গুদাম থেকে পাঠানো পণ্য তালিকা. অন্য টেবিলে এই পণ্যগুলির জন্য অর্থ প্রদানের বাধ্যবাধকতা দেখায়।

অতএব, 1C-তে, টেবিলের সাথে কাজ করা একটি বিশিষ্ট স্থান দখল করে।

1C-এর টেবিলগুলিকে "টেবুলার অংশ"ও বলা হয়। ডিরেক্টরি, নথি এবং অন্যান্য তাদের আছে.

ক্যোয়ারী, যখন কার্যকর করা হয়, একটি টেবিল ফেরত দেয় যা দুটি ভিন্ন উপায়ে অ্যাক্সেস করা যেতে পারে।

প্রথম - দ্রুত - নির্বাচন, এটি থেকে সারি প্রাপ্তি শুধুমাত্র ক্রমানুসারে সম্ভব। দ্বিতীয়টি হল ক্যোয়ারী ফলাফলটিকে মানগুলির একটি টেবিলে আপলোড করা এবং তারপরে এটিতে র্যান্ডম অ্যাক্সেস।

//বিকল্প 1 - ক্যোয়ারী ফলাফলের অনুক্রমিক অ্যাক্সেস

// টেবিল পান
নির্বাচন = Query.Run().Select();
// আমরা ক্রমানুসারে কোয়েরির ফলাফলের সমস্ত লাইনের মধ্য দিয়ে যাই
Select.Next() লুপ করার সময়
রিপোর্ট (নির্বাচন. নাম);
এন্ডসাইকেল;

//বিকল্প 2 - মানগুলির একটি টেবিলে আপলোড করা
অনুরোধ = নতুন অনুরোধ ("নির্দেশিকা থেকে নাম নির্বাচন করুন। নামকরণ");
// টেবিল পান
টেবিল = Query.Run().Unload()।
//আরও আমরা সমস্ত লাইনের মাধ্যমে পুনরাবৃত্তি করতে পারি
টেবিল সাইকেল থেকে প্রতিটি সারির জন্য
রিপোর্ট(স্ট্রিং.নাম);
এন্ডসাইকেল;
//অথবা ইচ্ছামত অ্যাক্সেস স্ট্রিং
সারি = টেবিল। খুঁজুন("বেলচা", "নাম");

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

ফর্মের উপর টেবিল (মোটা ক্লায়েন্ট)

ব্যবহারকারী টেবিলের সাথে কাজ করে যখন এটি ফর্মের উপর স্থাপন করা হয়।

আমরা ফর্মের সাথে কাজ করার প্রাথমিক নীতিগুলি নিয়ে পাঠে এবং পাঠে আলোচনা করেছি৷

সুতরাং, ফর্মের উপর টেবিল স্থাপন করা যাক. এটি করার জন্য, আপনি কন্ট্রোল প্যানেল থেকে টেবিলটি টেনে আনতে পারেন। একইভাবে, আপনি মেনু থেকে ফর্ম/ইনসার্ট কন্ট্রোল নির্বাচন করতে পারেন।

ডেটা কনফিগারেশনে সংরক্ষণ করা যেতে পারে - তারপরে আপনাকে কনফিগারেশন অবজেক্টের বিদ্যমান (পূর্বে যোগ করা) ট্যাবুলার অংশ নির্বাচন করতে হবে যার ফর্ম আপনি সম্পাদনা করছেন।

ডেটা প্রপার্টিতে "..." বোতামে ক্লিক করুন। ট্যাবুলার অংশগুলির তালিকা দেখতে, আপনাকে অবজেক্ট শাখা প্রসারিত করতে হবে।

আপনি যখন ট্যাবুলার অংশ নির্বাচন করবেন, 1C নিজেই ফর্মের টেবিলে কলাম যুক্ত করবে। এই জাতীয় টেবিলে ব্যবহারকারীর দ্বারা প্রবেশ করা সারিগুলি রেফারেন্স বই/নথির সাথে স্বয়ংক্রিয়ভাবে সংরক্ষণ করা হবে।

একই ডেটা সম্পত্তিতে, আপনি একটি নির্বিচারে নাম লিখতে পারেন এবং মান সারণী প্রকার নির্বাচন করতে পারেন।

এর মানে হল মানগুলির একটি নির্বিচারে টেবিল নির্বাচন করা হয়েছে। এটি স্বয়ংক্রিয়ভাবে কলাম যোগ করবে না, বা এটি স্বয়ংক্রিয়ভাবে সংরক্ষিত হবে না, তবে আপনি এটি দিয়ে যা চান তা করতে পারেন।

টেবিলে ডান-ক্লিক করে আপনি একটি কলাম যোগ করতে পারেন। একটি কলামের বৈশিষ্ট্যগুলিতে, আপনি এর নাম (1C কোডে রেফারেন্সের জন্য), ফর্মের কলামের শিরোনাম, ট্যাবুলার অংশের বৈশিষ্ট্যের সাথে সংযোগ (পরবর্তীটি - যদি একটি নির্বিচারে টেবিল নির্বাচন করা না হয় তবে একটি) নির্দিষ্ট করতে পারেন। সারণী অংশ)।

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

টেবিল পরিচালনা করতে, আপনাকে ফর্মটিতে একটি কমান্ড প্যানেল প্রদর্শন করতে হবে। মেনু আইটেম ফর্ম/ইনসার্ট কন্ট্রোল/কমান্ড বার নির্বাচন করুন।

কমান্ড বারের বৈশিষ্ট্যগুলিতে, স্বয়ংক্রিয় পূরণ চেকবক্স নির্বাচন করুন যাতে প্যানেলের বোতামগুলি স্বয়ংক্রিয়ভাবে প্রদর্শিত হয়।

ফর্মে টেবিল (পাতলা/পরিচালিত ক্লায়েন্ট)

একটি পরিচালিত ফর্মে, এই কর্মগুলি একটু ভিন্ন দেখায়। আপনি যদি ফর্মটিতে একটি টেবুলার অংশ রাখতে চান তবে অবজেক্ট শাখাটি প্রসারিত করুন এবং সারণী অংশগুলির একটিকে বাম দিকে টেনে আনুন। এখানেই শেষ!

আপনি যদি মানগুলির একটি সারণী স্থাপন করতে চান তবে একটি নতুন ফর্ম বৈশিষ্ট্য যুক্ত করুন এবং এর বৈশিষ্ট্যগুলিতে মানগুলির ধরণ – টেবিলটি নির্দিষ্ট করুন৷

কলাম যোগ করতে, এই ফর্ম অ্যাট্রিবিউটে ডান-ক্লিক মেনু ব্যবহার করুন, অ্যাট্রিবিউট কলাম যোগ করুন নির্বাচন করুন।

তারপর টেবিলটি বাম দিকে টেনে আনুন।

একটি টেবিলে একটি কমান্ড বার থাকার জন্য, টেবিলের বৈশিষ্ট্যগুলিতে, ব্যবহার - কমান্ড বার অবস্থান বিভাগে মানগুলি নির্বাচন করুন।

Excel এ একটি টেবিল আপলোড করা হচ্ছে

ফর্মে অবস্থিত যেকোন 1C টেবিল প্রিন্ট বা এক্সেলে আপলোড করা যেতে পারে।

এটি করার জন্য, টেবিলের একটি খালি জায়গায় ডান-ক্লিক করুন এবং তালিকা নির্বাচন করুন।

একটি পরিচালিত (পাতলা) ক্লায়েন্টে, মেনু আইটেমটি সমস্ত অ্যাকশন/ডিসপ্লে তালিকা ব্যবহার করে অনুরূপ ক্রিয়া সম্পাদন করা যেতে পারে।

প্রশ্ন 1C v8 এ বিভিন্ন ধরণের মানগুলির একটি টেবিল কলাম তৈরি করা
উত্তর
একটি মান টেবিল কলাম তৈরি করার সময়, আপনি পাস করতে পারেন প্রকারের অ্যারে, এবং হতে পারে একটি নির্দিষ্ট ধরনের। যখন আপনাকে একটি কলামের জন্য বিভিন্ন ধরণের নির্দিষ্ট করতে হবে তখন প্রকারের একটি অ্যারে ব্যবহার করা হয়।

প্রকারগুলি নির্দেশ করতে ব্যবহৃত হয় "সাধারণ বস্তু" - "প্রকারের বর্ণনা". অতএব, প্রথমে আমরা ব্যাখ্যা করব "প্রকারের বর্ণনা" ("মান প্রকারের বর্ণনা") কী।

"মান প্রকারের বর্ণনা". সিস্টেমে বিভিন্ন অবজেক্টের গ্রহণযোগ্য ধরনের সম্পত্তির মান বর্ণনা করতে, একটি বিশেষ বস্তু ব্যবহার করা হয় "প্রকারের বর্ণনা". এই অবজেক্টটি ব্যবহার করে, আপনি বৈশিষ্ট্যগুলিতে বরাদ্দ করা যেতে পারে এমন বৈধ ধরণের মানগুলি বর্ণনা করতে পারেন। আদিম প্রকারের সম্ভাব্য মানগুলিকে আরও সীমিত করতে নম্বর, স্ট্রিং এবং তারিখ প্রদান করা হয়েছে কোয়ালিফায়ার. কোয়ালিফায়ারগুলি পরামিতিগুলি বর্ণনা করে যেমন একটি স্ট্রিং বা সংখ্যার দৈর্ঘ্য, একটি তারিখের বৈধ অংশ ইত্যাদি।

"টাইপ বর্ণনা" পদ্ধতির সিনট্যাক্স

নতুন বর্ণনার ধরন(<Исходное описание типов>, <Добавляемые типы>, <Вычитаемые типы>, <Квалификаторы числа>, <Квалификаторы строки>, <Квалификаторы даты>)
বিকল্প:
<Исходное описание типов> (ঐচ্ছিক)
প্রকার: বর্ণনা প্রকার। প্রকারের প্রাথমিক বিবরণ, যার ভিত্তিতে একটি নতুন তৈরি করা হবে।
<Добавляемые типы> (ঐচ্ছিক)
প্রকার: অ্যারে, স্ট্রিং। টাইপ মানগুলির একটি অ্যারে অবজেক্টে ব্যবহার করা হবে এমন প্রকারগুলি নিয়ে গঠিত একটি টাইপ বা কমা দ্বারা পৃথক করা প্রকারগুলির নাম ধারণকারী একটি স্ট্রিং।
<Вычитаемые типы> (ঐচ্ছিক)
প্রকার: অ্যারে, স্ট্রিং। টাইপ মানগুলির একটি অ্যারে (অথবা কমা-বিচ্ছিন্ন টাইপ নাম ধারণকারী একটি স্ট্রিং) যে প্রকারগুলি নিয়ে গঠিত যা প্রথম প্যারামিটারে নির্দিষ্ট করা প্রাথমিক ঘোষণা থেকে বাদ দেওয়া হবে।
<Квалификаторы числа> (ঐচ্ছিক)
প্রকার: কোয়ালিফায়ার নম্বর। সংখ্যা বাছাইকারী যা একটি সাংখ্যিক প্রকারের বৈধ মান বর্ণনা করে।
<Квалификаторы строки> (ঐচ্ছিক)
প্রকার: QualifiersStrings. স্ট্রিং কোয়ালিফায়ার যা একটি স্ট্রিং প্রকারের বৈধ মান বর্ণনা করে।
<Квалификаторы даты> (ঐচ্ছিক)
প্রকার: যোগ্যতার তারিখ। তারিখ কোয়ালিফায়ার যা তারিখের প্রকারের বৈধ মান বর্ণনা করে।
বর্ণনা:
কিছু প্রকার যোগ করে এবং অন্যদের বাদ দিয়ে অন্য ধরনের বর্ণনার উপর ভিত্তি করে একটি টাইপ বিবরণ তৈরি করে। যদি একটি নতুন কোয়ালিফায়ার নির্দিষ্ট না করা হয়, তবে মূল ধরনের ঘোষণার যোগ্যতা বজায় রাখা হবে।
"টাইপ বর্ণনা" অবজেক্ট ব্যবহার করার একটি উদাহরণ:

// নতুন ধরনের সহ বৈধ প্রকারের বিবরণ প্রসারিত করুনঅ্যারে = New Array; অ্যারে। যোগ করুন(প্রকার( "রেফারেন্স লিঙ্ক। পদ্ধতি")); অ্যারে। যোগ করুন(টাইপ("নম্বর")); সাইন = ValidSign. অ-নেতিবাচক; QuNumbers = নতুন Qualifiers Numbers(10, 2, Sign); ValidTypes = NewTypeDescription(ValidTypes, Array, QNumbers);
এখন, আসলে, একটি টেবিলে বিভিন্ন ধরণের কলাম মান সঠিক তৈরির উদাহরণ।

সাধারণভাবে, কলামের প্রকারগুলি নিম্নরূপ সংজ্ঞায়িত করা যথেষ্ট:

টাকা। কলাম. যোগ করুন( "সূচী সাজান", নতুন বর্ণনার ধরন ( "সংখ্যা" ) ); টাকা। কলাম. যোগ করুন("বিভাগের নাম", নতুন টাইপ বর্ণনা ("স্ট্রিং") ); টাকা। কলাম. যোগ করুন("DataCorr" , নতুন TypeDescription("তারিখ") ); টাকা। কলাম. যোগ করুন( "নিঃশর্ত মুছে ফেলা", নতুন TypeDescription("বুলিয়ান")); টাকা। কলাম. যোগ করুন ("নামকরণ" , নতুন টাইপ বর্ণনা() ); টাকা। কলাম. যোগ করুন("বিভাগ ডেটা" , নতুন টাইপ বর্ণনা ("কাঠামো") ); // প্যারামিটারের স্পষ্টীকরণ সহ কলাম "সংখ্যা" এবং "স্ট্রিং" তৈরির উদাহরণ:টাকা। কলাম. যোগ করুন( "শতাংশ সম্পূর্ণ", নতুন বর্ণনার ধরন ( "সংখ্যা" , নতুন যোগ্যতা সংখ্যা ( 18 , 2 ) ) ); টাকা। কলাম. যোগ করুন("বিভাগের নাম" , NewTypeDescription("স্ট্রিং" , , NewStringQualifiers(200, অনুমোদিত দৈর্ঘ্য। পরিবর্তনশীল) ) ); টাকা। কলাম. যোগ করুন("DecommissionedDate" , NewTypeDescription("তারিখ" , , , NewDateQualifiers(DateParts.DateTime) ) );

যাইহোক, আরও সাধারণভাবে, কলামের ধরন হিসাবে একটি অ্যারে পাস করা হয়। একটি অ্যারে ব্যবহার করা হয় যখন একটি কলামে একাধিক প্রকার বরাদ্দ করা প্রয়োজন। তাহলে কাঠামোর সংজ্ঞাটি এরকম কিছু হবে (উদাহরণগুলি বিভিন্ন ধরণের কলামের জন্য দেওয়া হয়, যখন টাইপটি একটি অ্যারে, কিন্তু সরলতার জন্য, অ্যারের রচনাটি একই ধরণের দেওয়া হয়, যাতে বিভ্রান্ত না হয় )

////// প্রযুক্তিগত বৈশিষ্ট্যের গঠন গঠন (কলাম তৈরি) //// প্রযুক্তিগত স্পেসিফিকেশনের কোয়ালিফায়ার ক্ষেত্রগুলিতে প্রতিস্থাপনের জন্য যোগ্যতা নির্ধারণ করুন CN = নতুন কোয়ালিফায়ার সংখ্যা(18, 9); KS = NewStringQualifiers(200); CD = NewDateQualifiers(DataParts.DateTime); //// ভবিষ্যত TK কলামের জন্য টাইপ বিবরণ সংজ্ঞায়িত করুন // একটি অ্যারে হল প্রকারের প্রাথমিক বিবরণ, যার ভিত্তিতে একটি নতুন তৈরি করা হবে // দয়া করে মনে রাখবেন যে TK কলামের জন্য এই উদাহরণে প্রাথমিক প্রকারের বিবরণ একটি অ্যারেঅ্যারে = New Array; অ্যারে। যোগ করুন(টাইপ("স্ট্রিং") ); TypeDescriptionString = New TypeDescription(Array, , KS); অ্যারে। পরিষ্কার() ; অ্যারে। যোগ করুন(টাইপ("নম্বর") ); TypeDescriptionNumber = নতুন TypeDescription(Array, , , CN) ; অ্যারে। পরিষ্কার() ; অ্যারে। যোগ করুন(টাইপ("তারিখ") ); DescriptionTypesDate = নতুন বর্ণনা প্রকার (অ্যারে, , , , CD) ; অ্যারে। পরিষ্কার() ; অ্যারে। যোগ করুন(প্রকার( "DirectoryLink.Nomenclature") ); টাইপ DescriptionNomenclature = নতুন প্রকার বর্ণনা (অ্যারে) ; অ্যারে। পরিষ্কার() ; অ্যারে। যোগ করুন(প্রকার( "DirectoryLink.SeriesNomenclature") ); TypeDescriptionSeries = নতুন TypeDescription(Array); অ্যারে। পরিষ্কার() ; অ্যারে। যোগ করুন(প্রকার( "DirectoryLink.Quality") ); TypeDescriptionQuality = নতুন TypeDescription(Array); অ্যারে। পরিষ্কার() ; অ্যারে। যোগ করুন(টাইপ("বুলিয়ান") ); TypeDescriptionBoolian = নতুন TypeDescription(Array); // আসলে TK তে কলাম যোগ করা (ভবিষ্যত TK এর কাঠামো তৈরি করা)টাকা। কলাম. যোগ করুন("নামকরণ", বিবরণ প্রকার নামকরণ); টাকা। কলাম. যোগ করুন("কোড" , টাইপডেসক্রিপশনস্ট্রিং); টাকা। কলাম. যোগ করুন( "সিরিজ নামকরণ"বর্ণনার ধরন সিরিজ); টাকা। কলাম. যোগ করুন ("অ্যাকাউন্টকোড" , বর্ণনা স্ট্রিং টাইপ করুন); টাকা। কলাম. যোগ করুন("ActionDate" , TypeDescriptionDate); টাকা। কলাম. যোগ করুন("গুণমান" , টাইপডেসক্রিপশন কোয়ালিটি); টাকা। কলাম. যোগ করুন("NumberUS", DescriptionTypesNumber); টাকা। কলাম. যোগ করুন ("লিখুন বন্ধ করুন" , টাইপডেসক্রিপশনবুলিয়ান); . . . //////// প্রযুক্তিগত বৈশিষ্ট্যের গঠন গঠন (কলাম তৈরি) ////////////////////////////////////////////////////////

একটি মান সারণিতে একটি সারি যোগ করতে, দেখুন