नवीनतम लेख
घर / विंडोज़ सिंहावलोकन / 1c प्रबंधित प्रपत्र मान तालिका स्तंभ जोड़ें। किसी ऑब्जेक्ट प्रॉपर्टी को ऑब्जेक्ट विधि से भ्रमित नहीं करना महत्वपूर्ण है।

1c प्रबंधित प्रपत्र मान तालिका स्तंभ जोड़ें। किसी ऑब्जेक्ट प्रॉपर्टी को ऑब्जेक्ट विधि से भ्रमित नहीं करना महत्वपूर्ण है।

यहाँ शुरू करने के लिए एक छोटा सा तथ्य है - सरल उदाहरणमूल्यों की एक तालिका के साथ काम करें:

1. मूल्यों की तालिका बनाएं

वैल्यूटेबल = नया वैल्यूटेबल;


2. मूल्यों की तालिका के कॉलम बनाएं:

ValueTable.Columns.Add("Name");
ValueTable.Columns.Add ("अंतिम नाम");


3. कॉलम नामों का उपयोग करके नई पंक्तियाँ जोड़ें:


NewString.Name = "वसीली";
NewRow.LastName = "Pupkin";


4. मान तालिका में किसी मान की खोज कैसे करें:
वांछित मान वाली तालिका पंक्ति खोजना आवश्यक है।

FoundString = ValueTable.Find (लुकअपवैल्यू);


5. मूल्यों की तालिका के कुछ स्तंभों में पहली घटना का पता लगाएं

FoundString = ValueTable.Find (लुकअपवैल्यू, "आपूर्तिकर्ता, खरीदार");


6. यदि आपको मूल्यों की तालिका में सभी घटनाओं को खोजने की आवश्यकता है:
हम खोज संरचना का उपयोग करते हैं।

सर्चस्ट्रक्चर = स्ट्रक्चर ("कर्मचारी", लुकअपवैल्यू);
ArrayFoundStrings = ValueTable.FindStrings (SearchStructure);


आइए एक खोज संरचना बनाएं, जिसके प्रत्येक तत्व में एक कुंजी के रूप में स्तंभ का नाम और इस स्तंभ में खोजे गए मान को मान के रूप में शामिल किया जाएगा। हम FindStrings () विधि के पैरामीटर के रूप में खोज संरचना को पास करते हैं। नतीजतन, हमें तालिका की पंक्तियाँ मिलती हैं।
यदि हम खोज संरचना में वांछित मूल्य के लिए खोज जोड़ते हैं, उदाहरण के लिए, जिम्मेदार कॉलम में भी, तो FindRows () पद्धति को लागू करने के परिणामस्वरूप, हमें सभी पंक्तियाँ मिलेंगी जहाँ कर्मचारी और जिम्मेदार दोनों वांछित के बराबर हैं मूल्य।

7. यादृच्छिक क्रम में मूल्यों की तालिका के माध्यम से कैसे लूप करें

ValueTable लूप से प्रत्येक CurrentRow के लिए
रिपोर्ट (CurrentLine.Name);
अंतचक्र;

इंडेक्स का उपयोग करके ऐसा ही करें:

सीनियरइंडेक्स = वैल्यूटेबल। काउंट () - 1;
सीनियर इंडेक्स साइकिल द्वारा एमएफ = 0 के लिए
रिपोर्ट (वैल्यूटेबल [गणना]। नाम);
अंतचक्र;


8. मौजूदा मान तालिका पंक्ति को हटाना

ValueTable.Delete(RemoveRow);

सूचकांक द्वारा

ValueTable.Delete(0);


9. मूल्यों की तालिका के मौजूदा कॉलम को हटाना

ValueTable.Columns.Delete(RemoveColumn);


सूचकांक द्वारा

ValueTable.Columns.Delete(0);

यह ध्यान में रखा जाना चाहिए कि मूल्यों की तालिका के "बीच से" एक पंक्ति (या स्तंभ) को हटाने से उन पंक्तियों के सूचकांक में से एक में कमी आएगी जो हटाए जाने के बाद "के बाद" थे

10. यदि कॉलम नाम वेरिएबल में हैं तो वैल्यू टेबल कैसे भरें?

NewRow = ValueTable.Add ();
न्यूरो [कॉलमनाम] = मान;


11. मूल्यों की तालिका के पूरे कॉलम को वांछित मूल्य से कैसे भरें?
मान तालिका की मान तालिका में वित्तीय लेखा फ़्लैग स्तंभ को मान False से भरा जाना चाहिए

ValueTable.FillValue (गलत, "वित्तीय लेखा ध्वज");


हम मानों की तालिका के लिए FillValues() विधि का उपयोग करते हैं। पहला पैरामीटर भरने का मान है। दूसरा पैरामीटर भरे हुए कॉलम का नाम है।

12. "सोर्सटेबल" मूल्यों की तालिका के डेटा के साथ "टेबल प्राप्तकर्ता" मूल्यों की तालिका कैसे भरें?

यदि ऑपरेशन के समय रिसीवर तालिका अभी तक मौजूद नहीं है, या आपको इसके पिछले कॉलम को सहेजने की आवश्यकता नहीं है, तो आप इसे बना सकते हैं पूरी कॉपीमूल

TableReceiver = TableOriginal.Copy ();


विकल्प दो: टेबल टेबल रिसीवर मौजूद है, और कॉलम डेटा प्रकारों पर इसके कॉलम और प्रतिबंधों को खोना एक दया है। लेकिन आपको उन स्तंभों के लिए डेटा भरना होगा जिनके नाम स्रोत तालिका के नाम से मेल खाते हैं।

मेल खाने वाले नामों वाले स्तंभों के लिए आंशिक डेटा स्थानांतरण:

सोर्सटेबल लूप से सोर्सटेबल की प्रत्येक पंक्ति के लिए
FillPropertyValues ​​​​(NewString, SourceTableString);
अंतचक्र


स्रोत तालिका की प्रत्येक पंक्ति के लिए, गंतव्य तालिका में एक नई पंक्ति जोड़ी जाती है और नई तालिका के उन स्तंभों में मान भरे जाते हैं जिनके नाम स्रोत तालिका में स्तंभों के नाम से मेल खाते हैं

यदि तालिकाओं में समान नाम वाले स्तंभ नहीं हैं, तो गंतव्य तालिका में उतनी ही पंक्तियाँ होंगी जितने शून्य मान के साथ स्रोत तालिका में पंक्तियाँ थीं।
यदि समान नाम के कुछ स्तंभों के लिए स्रोत तालिका से डेटा मान प्रकार गंतव्य तालिका के स्तंभ के अनुमत प्रकारों की सरणी में नहीं आता है, तो हमें ऐसे क्षेत्रों में खाली मान मिलेंगे।
आइए तीसरे मामले पर विचार करें। समान नाम वाले स्तंभों के मामले में, गंतव्य तालिका के स्तंभ को स्रोत तालिका के स्तंभ के पूर्ण अनुपालन में लाया जाना चाहिए।

मिलते-जुलते नाम वाले कॉलम के लिए पूरी डेटा कॉपी

समान कॉलम = नया ऐरे ();

SourceTable से प्रत्येक कॉलम के लिए। कॉलम लूप
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

यदि मिलान किया गया कॉलम<>अपरिभाषित तब

// कॉलम गुण प्राप्त करें।
नाम = कॉलम।नाम;
ValueType = Column.ValueType;
शीर्षक = कॉलम। शीर्षक;
चौड़ाई = कॉलम। चौड़ाई;

// गंतव्य तालिका में कॉलम बदलें।
अनुक्रमणिका = TableReceiver.Columns.Index (CoincidentColumn);

TableReceiver.Columns.Delete (इंडेक्स);
TableReceiver.Columns.Insert (सूचकांक, नाम, मान प्रकार, शीर्षक, चौड़ाई);

// मिलान करने वाले कॉलम का अगला नाम सरणी में जोड़ें।
समान-नाम कॉलम। जोड़ें (कॉलम। नाम);

अगर अंत;

अंतचक्र;

// स्रोत तालिका की पंक्तियों के माध्यम से लूप करें।
सोर्सटेबल लूप से सोर्सटेबल की प्रत्येक पंक्ति के लिए

// गंतव्य तालिका में एक नई पंक्ति जोड़ें।
न्यूस्ट्रिंग = टेबल रिसीवर। जोड़ें ();

// मिलान करने वाली कोशिकाओं में मान भरें।
प्रत्येक नाम के लिए समान नाम वाले कॉलम लूप
न्यूस्ट्रिंग [कॉलमनाम] = सोर्सटेबलस्ट्रिंग [कॉलमनाम];

अंतचक्र;

अंतचक्र;


हमें गंतव्य तालिका में कॉलम को एक नए से बदलना होगा, जिसके गुण स्रोत तालिका के कॉलम से पूरी तरह मेल खाएंगे।
इसलिए, यदि प्राप्तकर्ता तालिका में समान नाम का एक कॉलम मिलता है, तो हम नए कॉलम के लिए सभी गुणों को चर में एकत्र करते हैं। इसके बाद, पुराने को हटा दें और एक नया कॉलम बनाएं। फिर हम स्रोत तालिका की पंक्तियों के माध्यम से लूप करते हैं।
लूप में, हम प्राप्तकर्ता तालिका में एक नई पंक्ति जोड़ते हैं और मेल खाने वाले कॉलम की सरणी में कॉलम के नाम के माध्यम से एक लूप खोलते हैं।
इस नेस्टेड लूप के अंदर, हम प्राप्तकर्ता तालिका के सेल को स्रोत तालिका के सेल के डेटा से भरते हैं।

13. प्रकार प्रतिबंधों के साथ "मानों की तालिका" मूल्यों की तालिका में कॉलम कैसे जोड़ें?

कॉलम जोड़ते समय, आप बस उसका नाम निर्दिष्ट कर सकते हैं, और ऐड () विधि के दूसरे पैरामीटर को स्पर्श न करें। इस मामले में, कॉलम का डेटा प्रकार मनमाना है।

डेटा प्रकार निर्दिष्ट किए बिना कॉलम जोड़ना

// बिना किसी प्रकार के प्रतिबंध वाला कॉलम जोड़ें।
ValueTable.Columns.Add("Object");


आप दूसरे पैरामीटर का मान भर सकते हैं। वहां कॉलम के लिए अनुमत प्रकार का विवरण पास करना आवश्यक है। विवरण स्वयं कंस्ट्रक्टर का उपयोग करके प्राप्त किया जा सकता है, स्ट्रिंग प्रकार के नाम को बाद वाले के लिए एक पैरामीटर के रूप में पास करना (यदि कई प्रकार हैं, तो अल्पविराम द्वारा अलग किया गया है) या मान्य प्रकारों की एक सरणी।

डेटा प्रकार निर्दिष्ट करने वाला कॉलम जोड़ना

// कॉलम डेटा प्रकारों पर प्रतिबंध:
// केवल "ठेकेदार" निर्देशिका के तत्व।
ValueTable.Columns.Add("Account", New TypeDescription("ReferenceReference.Accounts"));


यदि कॉलम डेटा भरने के लिए अनुमत प्रकारों के बीच एक स्ट्रिंग है, तो आप इसकी बिट गहराई (लंबाई) को सीमित कर सकते हैं, एक चर या निश्चित लंबाई के उपयोग को निर्दिष्ट कर सकते हैं। यह सब StringQualifiers कंस्ट्रक्टर का उपयोग करके एक ऑब्जेक्ट बनाकर प्रदान किया जाता है। इसके अलावा, इस ऑब्जेक्ट का उपयोग टाइपडिस्क्रिप्शन कंस्ट्रक्टर के मापदंडों में से एक के रूप में किया जाएगा।

मूल्य तालिका कॉलम के डेटा प्रकार को निर्दिष्ट करने के लिए क्वालीफायर का उपयोग करना

// स्ट्रिंग प्रकार के डेटा के लिए सीमा तैयार करें और निर्धारित करें।
स्ट्रिंग क्वालिफायर = न्यू स्ट्रिंग क्वालिफायर (20, ValidLength.Variable);
अनुमत प्रकार = न्यूटाइप डिस्क्रिप्शन ("स्ट्रिंग", स्ट्रिंग क्वालिफायर);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


आप नंबर और डेट क्वालिफायर के लिए भी ऐसा ही कर सकते हैं।
कृपया ध्यान दें: प्रकार का विवरण कंस्ट्रक्टर द्वारा "स्क्रैच से" दोनों तरह से बनाया जा सकता है, और आप आधार के रूप में मौजूदा प्रकार के विवरण का उपयोग कर सकते हैं

मान तालिका कॉलम के डेटा प्रकार को निर्दिष्ट करने के लिए मौजूदा प्रकार की घोषणाओं का उपयोग करना

// पहले इस्तेमाल किए गए प्रकारों के विवरण का विस्तार।
नंबर क्वालिफायर = न्यू नंबर क्वालिफायर (10, 2, ValidSign.Non-negative);
डेटक्वालिफायर्स = न्यू डेटक्वालिफायर्स (डेटपार्ट्स।डेट);
ExtendedValidTypes = NewTypeDescription (ValidTypes, "नंबर, दिनांक", नंबर क्वालिफ़ायर, दिनांक क्वालिफ़ायर);

ValueTable.Columns.Add("Note", ExtendedAllowedTypes);

पैसे और सामान को ध्यान में रखने के लिए, व्यापार में विभिन्न तालिकाओं का व्यापक रूप से उपयोग किया जाता है। लगभग हर दस्तावेज़ एक टेबल है।

एक टेबल में गोदाम से भेजे जाने वाले सामान की सूची होती है। एक अन्य तालिका में - इन वस्तुओं के लिए भुगतान करने की बाध्यता.

इसलिए, 1C में, तालिकाओं के साथ कार्य एक प्रमुख स्थान रखता है।

1C में टेबल्स को "टेबल पार्ट्स" भी कहा जाता है। संदर्भ पुस्तकें, दस्तावेज और अन्य उनके पास हैं।

क्वेरी इसके निष्पादन के परिणामस्वरूप एक तालिका लौटाती है, जिसे दो अलग-अलग तरीकों से एक्सेस किया जा सकता है।

पहला - तेज - चयन, इससे पंक्तियाँ प्राप्त करना केवल क्रम में संभव है। दूसरा क्वेरी परिणाम को मूल्यों की तालिका में उतार रहा है और फिर उस तक यादृच्छिक पहुंच प्राप्त कर रहा है।

// विकल्प 1 - क्वेरी परिणामों के लिए अनुक्रमिक पहुंच

// टेबल प्राप्त करें
चयन = क्वेरी। निष्पादित करें ()। चयन करें ();
// क्वेरी परिणाम की सभी पंक्तियों को क्रम में बायपास करें
जबकि चयन। अगला () लूप
रिपोर्ट (चयन। नाम);
अंतचक्र;

// विकल्प 2 - मूल्यों की तालिका में अपलोड करना
क्वेरी = नई क्वेरी ("निर्देशिका से नाम चुनें। नामकरण");
// टेबल प्राप्त करें
तालिका = Query.Execute ()। अपलोड ()।
// तो हम सभी लाइनों को बायपास भी कर सकते हैं
टेबल लूप से प्रत्येक पंक्ति के लिए
रिपोर्ट (स्ट्रिंग.नाम);
अंतचक्र;
// या मनमाने ढंग से एक्सेस स्ट्रिंग्स
स्ट्रिंग = टेबल। ढूँढें ("फावड़ा", "नाम");

एक महत्वपूर्ण विशेषता यह है कि तालिका में, जो क्वेरी के परिणाम से प्राप्त होती है, सभी कॉलम दृढ़ता से टाइप किए जाएंगे। इसका अर्थ यह है कि नामकरण लुकअप से नाम फ़ील्ड का अनुरोध करने पर, आपको स्ट्रिंग प्रकार का एक कॉलम प्राप्त होगा जिसकी लंबाई N वर्णों से अधिक नहीं होगी।

प्रपत्र पर तालिका (मोटा ग्राहक)

उपयोगकर्ता तालिका के साथ कार्य करता है जब उसे प्रपत्र पर रखा जाता है।

हमने पर और पाठ में रूपों के साथ काम करने के बुनियादी सिद्धांतों पर चर्चा की

तो, चलिए टेबल को फॉर्म पर रखते हैं। ऐसा करने के लिए, आप नियंत्रण कक्ष से तालिका को खींच सकते हैं। इसी प्रकार, आप मेनू से प्रपत्र/सम्मिलित नियंत्रण का चयन कर सकते हैं।

डेटा को कॉन्फ़िगरेशन में संग्रहीत किया जा सकता है - फिर आपको कॉन्फ़िगरेशन ऑब्जेक्ट के मौजूदा (पहले जोड़े गए) सारणीबद्ध भाग का चयन करने की आवश्यकता होती है जिसका फॉर्म आप संपादित कर रहे हैं।

डेटा प्रॉपर्टी में "..." बटन पर क्लिक करें। सारणीबद्ध भागों की सूची देखने के लिए, आपको ऑब्जेक्ट शाखा का विस्तार करने की आवश्यकता है।

सारणीबद्ध भाग का चयन करते समय, 1C स्वयं प्रपत्र पर तालिका में कॉलम जोड़ देगा। उपयोगकर्ता द्वारा ऐसी तालिका में दर्ज की गई स्ट्रिंग्स निर्देशिका/दस्तावेज़ के साथ स्वचालित रूप से सहेजी जाएंगी।

उसी डेटा प्रॉपर्टी में, आप एक मनमाना नाम दर्ज कर सकते हैं और ValueTable प्रकार का चयन कर सकते हैं।

इसका मतलब है कि मूल्यों की एक मनमानी तालिका का चयन किया गया है। यह स्वचालित रूप से कॉलम नहीं जोड़ेगा, यह स्वचालित रूप से सहेजा नहीं जाएगा, लेकिन आप इसके साथ जो चाहें कर सकते हैं।

टेबल पर राइट क्लिक करके आप एक कॉलम जोड़ सकते हैं। कॉलम के गुणों में, आप इसका नाम (1C कोड में संदर्भ के लिए), फॉर्म पर कॉलम हेडिंग, सारणीबद्ध भाग की विशेषता के साथ कनेक्शन (उत्तरार्द्ध - यदि एक मनमाना तालिका नहीं है, लेकिन एक सारणीबद्ध भाग है) निर्दिष्ट कर सकते हैं चयनित)।

प्रपत्र पर तालिका गुणों में, आप निर्दिष्ट कर सकते हैं कि उपयोगकर्ता पंक्तियों को जोड़/हटा सकता है या नहीं। एक अधिक उन्नत फ़ॉर्म केवल ViewOnly चेकबॉक्स है। ये गुण सूचना प्रदर्शित करने के उद्देश्य से तालिकाओं को व्यवस्थित करने के लिए उपयोगी हैं, लेकिन संपादन के लिए नहीं।

तालिका को प्रबंधित करने के लिए, आपको प्रपत्र पर कमांड पैनल प्रदर्शित करना होगा। मेनू आइटम फॉर्म/इन्सर्ट कंट्रोल/कमांड पैनल चुनें।

आदेश पट्टी के गुणों में, स्वत: पूर्ण चेकबॉक्स का चयन करें ताकि टूलबार पर बटन स्वचालित रूप से दिखाई दें।

प्रपत्र पर तालिका (पतला/प्रबंधित ग्राहक)

प्रबंधित रूप में, ये क्रियाएँ थोड़ी भिन्न दिखती हैं। यदि आपको प्रपत्र पर एक सारणीबद्ध अनुभाग रखने की आवश्यकता है, तो ऑब्जेक्ट शाखा का विस्तार करें और एक सारणीबद्ध अनुभाग को बाईं ओर खींचें। और बस!

यदि आपको मानों की तालिका रखने की आवश्यकता है, तो एक नया प्रपत्र विशेषता जोड़ें और इसके गुणों में प्रकार निर्दिष्ट करें - मानों की एक तालिका।

कॉलम जोड़ने के लिए, इस फॉर्म एट्रिब्यूट पर राइट माउस बटन मेनू का उपयोग करें, आइटम एट्रीब्यूट कॉलम जोड़ें।

फिर तालिका को बाईं ओर भी खींचें।

तालिका में कमांड बार रखने के लिए, तालिका गुणों में, उपयोग - कमांड बार स्थिति अनुभाग में मानों का चयन करें।

एक्सेल में टेबल एक्सपोर्ट करना

प्रपत्र पर स्थित कोई भी 1सी तालिका मुद्रित या एक्सेल पर अपलोड की जा सकती है।

ऐसा करने के लिए, टेबल में खाली जगह पर राइट-क्लिक करें और शो लिस्ट चुनें।

एक प्रबंधित (पतले) क्लाइंट में, मेनू आइटम सभी क्रियाओं/प्रदर्शन सूची का उपयोग करके समान क्रियाएं की जा सकती हैं।

1C 8.3 प्लेटफॉर्म (8.2) में मूल्य तालिका मूल्यों का एक सार्वभौमिक संग्रह है जिसका उपयोग एक डेवलपर अपने एल्गोरिदम को लागू करने के लिए सॉफ्टवेयर विकास में कर सकता है। वास्तव में, 1C मान तालिका मानों का एक गतिशील सेट है जिसमें कॉलम और कॉलम होते हैं।

1C . में मूल्यों के अन्य सार्वभौमिक संग्रह के बारे में लेख

मेरी पुस्तक "11 चरणों में 1C में कार्यक्रम" से एक स्थान पर 1C में प्रोग्रामिंग सीखें

  1. पुस्तक स्पष्ट और सरल भाषा में लिखी गई है - एक शुरुआत के लिए।
  2. 1सी आर्किटेक्चर को समझना सीखें;
  3. आप 1C भाषा में कोड लिखना शुरू करेंगे;
  4. प्रोग्रामिंग की बुनियादी तकनीकों में महारत हासिल करें;
  5. कार्यपुस्तिका की सहायता से अर्जित ज्ञान को समेकित करना;

शुरुआती डेवलपर्स और अनुभवी प्रोग्रामर दोनों के लिए प्रबंधित 1C एप्लिकेशन में विकसित करने के लिए एक उत्कृष्ट मार्गदर्शिका।

  1. बहुत ही सुलभ और समझने योग्य भाषा
  2. पुस्तक को भेजा जाता है ईमेलपीडीएफ प्रारूप में। किसी भी डिवाइस पर खोला जा सकता है!
  3. प्रबंधित 1C एप्लिकेशन की विचारधारा को समझें
  4. प्रबंधित एप्लिकेशन विकसित करने का तरीका जानें;
  5. डिजाइन करना सीखें प्रबंधित प्रपत्र 1सी;
  6. आप प्रबंधित रूपों के बुनियादी और आवश्यक तत्वों के साथ काम करने में सक्षम होंगे
  7. एक प्रबंधित एप्लिकेशन के तहत प्रोग्रामिंग स्पष्ट हो जाएगी

15% छूट के लिए प्रोमो कोड - 48PVXहेयू


यदि इस पाठ ने आपको किसी समस्या को हल करने में मदद की, इसे पसंद किया या उपयोगी था, तो आप किसी भी राशि को स्थानांतरित करके मेरी परियोजना का समर्थन कर सकते हैं:

मैन्युअल रूप से भुगतान किया जा सकता है:

यांडेक्स.मनी — 410012882996301
वेब मनी - R955262494655

मेरे समूहों में शामिल हों।

21 सितंबर 2011 को पोस्ट किया गया

मूल्यों की तालिका 1C - भाग 3। मेटाडेटा। मूल्यों की तालिका के स्तंभों पर पुनरावृति

इस लेख में, मैं आपको बताऊंगा कि "अज्ञात" संरचना के मूल्यों की तालिका के साथ कैसे काम करना है, मूल्यों की तालिका के स्तंभों के माध्यम से कैसे पुनरावृति करना है, स्तंभ नामों का उपयोग किए बिना स्तंभों और पंक्तियों से डेटा कैसे निकालना है। (यह लेख खरोंच से लेख 1C की एक श्रृंखला को संदर्भित करता है; खरोंच से प्रोग्रामिंग 1c; मूल्यों की तालिका 1c)

सामग्री की व्याख्या करने के लिए और प्रोग्राम कोड "लाइव" के हमारे उदाहरणों को चलाने में सक्षम होने के लिए, हमें कुछ चाहिए मूल्यों की परीक्षण तालिका 1C. हमारे उदाहरणों का एक हिस्सा मूल्यों की तालिका से डेटा निकालेगा, इसलिए हम तीन कॉलम "अंतिम नाम", "प्रथम नाम", "संरक्षक" के साथ एक तालिका बनाएंगे और इसमें थोड़ी मात्रा में डेटा दर्ज करेंगे - जितनी कि 3 पंक्तियाँ :)

तो, आइए 1C मानों की एक परीक्षण तालिका बनाएं और उसे भरें:

MyTR = नया ValueTable; // "MyTR" चर MyTR.Columns.Add ("अंतिम नाम") में संग्रहीत मूल्यों की एक नई तालिका बनाएं; // कॉलम "अंतिम नाम" बनाएं MyTR.Columns.Add("First name"); // "नाम" कॉलम बनाएं MyTM.Columns.Add("Patronymic"); // "मध्य नाम" कॉलम बनाएं // हमारे मूल्यों की तालिका में पहली पंक्ति जोड़ें NewRow = MyТЗ.Add (); NewLine.उपनाम = "चपाएव"; NewString.Name = "वसीली"; न्यूस्ट्रिंग। पेट्रोनामिक = "इवानोविच"; // दूसरी पंक्ति जोड़ें NewLine = MyТЗ.Add (); NewLine.Lastname = "Dzerzhinsky"; NewString.Name = "फेलिक्स"; न्यूलाइन। पेट्रोनामिक = "एडमंडोविच"; // तीसरी पंक्ति जोड़ें NewLine = MyTR.Add (); NewRow.LastName = "कोटोव्स्की"; NewString.Name = "ग्रेगरी"; न्यूस्ट्रिंग। पेट्रोनामिक = "इवानोविच";

हमारी परीक्षण तालिका में तीन कॉलम होते हैं: पहला नाम, अंतिम नाम, पेट्रोनेमिक; और गृहयुद्ध के नायकों के नाम के साथ तीन पूर्ण पंक्तियाँ हैं।

पहला कोड नमूना संग्रह के रूप में 1C मान तालिका के स्तंभों के माध्यम से पुनरावृति कर रहा है।

// My TK से प्रत्येक कॉलम के लिए TK के सभी कॉलम के नाम प्रदर्शित करें। कॉलम सूचित करें लूप ("कॉलम का नाम:" + Column.Name); अंतचक्र;

हमारा लूप 1C संदेश बॉक्स में सभी कॉलम नाम प्रदर्शित करेगा:

कॉलम का नाम: अंतिम नाम कॉलम का नाम: पहला नाम कॉलम का नाम: मध्य नाम

हम देखते हैं कि एक विशेष संग्रह लूप का उपयोग कॉलम के माध्यम से पुनरावृति करने के लिए किया जाता है, पंक्ति पुनरावृत्ति लूप (पिछले लेख में) के समान। MyTM.कॉलम- यह मूल्यों की तालिका के स्तंभों का एक संग्रह है 1C "मोयात्ज़". संग्रह में प्रकार की वस्तुएं हैं "कॉलम वैल्यूटेबल"इस प्रकार की प्रत्येक वस्तु मान तालिका का एक स्तंभ है और इसमें गुण और विधियाँ शामिल हैं। इन गुणों और विधियों का उल्लेख करते हुए, हम एक कॉलम के बारे में आवश्यक जानकारी प्राप्त करते हैं या इसके साथ कुछ अन्य क्रियाएं करते हैं।

उदाहरण के लिए, संपत्ति तक पहुंचना "नाम" (आम नाम) हमें वर्तमान कॉलम का नाम मिलता है।

मैं आपका ध्यान चक्र के शीर्षक की ओर आकर्षित करना चाहता हूं: "प्रत्येक के लिए" कॉलम MyTR.Columns Loop" से वैरिएबल नाम "कॉलम"हमारे द्वारा आविष्कार किया गया। एक ही नाम का उपयोग करना आवश्यक नहीं है। आप इस वेरिएबल को जो चाहें नाम दे सकते हैं, उदाहरण के लिए "माईकरंट कॉलम"तो ऊपर दिया गया उदाहरण इस तरह दिखेगा:

// MyTK से प्रत्येक MyCurrentColumn के लिए TK के सभी कॉलम के नाम प्रिंट करें। Columns Notify Loop ("कॉलम का नाम:" + MyCurrentColumn.Name); अंतचक्र;

जब 1C निष्पादन सबसिस्टम इस तरह के एक चक्र का सामना करता है, तो चक्र के प्रत्येक पास पर, यह हमारे संग्रह से एक तत्व को निर्दिष्ट नाम के साथ चर में निर्दिष्ट करता है, ये मामला - संग्रह का एक तत्वमूल्य तालिका कॉलम MyTM.कॉलमऔर फिर हम उस चर को संदर्भित करते हैं जिसमें वर्तमान कॉलम होता है, और संपत्ति का उपयोग करता है "नाम".

मैं कॉलम नाम के आगे कॉलम संग्रह में प्रत्येक कॉलम की संख्या प्रदर्शित करने का सुझाव देता हूं:

// MyTR.Columns से प्रत्येक कॉलम के लिए मानों की तालिका के सभी कॉलमों की संख्या और नाम प्रदर्शित करें। // कॉलम नंबर प्राप्त करें ColumnName = Column.Name; // कॉलम नाम प्राप्त करें रिपोर्ट ("कॉलम नंबर:" + कॉलम नंबर + "कॉलम का नाम:" + कॉलम नाम); अंतचक्र;

पाठ 1C संदेश बॉक्स में प्रदर्शित किया जाएगा:

कॉलम नंबर: 0 कॉलम का नाम: अंतिम नाम कॉलम नंबर: 1 कॉलम का नाम: पहला नाम कॉलम नंबर: 2 कॉलम का नाम: मध्य नाम

आइए इस तथ्य पर ध्यान दें कि मानों की तालिका की पंक्तियों की तरह, मूल्यों की तालिका में कॉलम 1C की संख्या शून्य से शुरू होती है।

मान तालिका में स्तंभों की संख्या 1C

मान तालिका में स्तंभों की संख्या का पता लगाने के लिए, हम स्तंभ संग्रह पर "संख्या ()" विधि का उपयोग करते हैं।

कॉलम की संख्या = MyTM.Columns.Number (); रिपोर्ट (कॉलम की संख्या);

स्क्रीन पर "3" नंबर प्रदर्शित होगा। दरअसल, हमारी तालिका में तीन कॉलम हैं: "अंतिम नाम", "प्रथम नाम", "संरक्षक"

कॉलम ऑब्जेक्ट को उसकी संख्या (इंडेक्स) से प्राप्त करना और कॉलम इंडेक्स का उपयोग करके कॉलम पर पुनरावृत्ति करना

आइए स्तंभ सूचकांकों (संख्याओं) का उपयोग करके मूल्यों की तालिका के सभी स्तंभों के माध्यम से एक लूप बनाएं। याद रखें कि कॉलम नंबरिंग शून्य से शुरू होती है। इसलिए, हमें चक्र "श" के काउंटर को शून्य से घटाकर एक कॉलम की संख्या के बराबर संख्या में बढ़ाना चाहिए।

SC = 0 MyTM.Columns.Quantity() के लिए - 1 लूप करेंट कॉलम = MyTM.Columns[SC]; सूचित करें (वर्तमान कॉलम। नाम); अंतचक्र;

स्क्रीन पर हमें निम्नलिखित मिलेगा

पूरा नाम

मुझे लगता है कि यह उदाहरण स्पष्ट था। हमने विधि की ओर रुख किया मात्रा()स्तंभ संग्रह" MyTM.Columns.Quantity()", कॉलम की संख्या प्राप्त की, और काउंटर के साथ एक लूप शुरू किया शून्यइससे पहले कॉलम की संख्या घटा एक. लूप के अंदर, हम कॉलम संग्रह से प्रत्येक कॉलम प्राप्त करते हैं और वर्तमान कॉलम ऑब्जेक्ट को एक वेरिएबल में असाइन करते हैं वर्तमान कॉलमअगला, चर वर्तमान कॉलमहम संपत्ति का उपयोग करते हैं नामऔर स्क्रीन पर इस संपत्ति का मूल्य प्रदर्शित करें: सूचित करें (वर्तमान कॉलम। नाम);

किसी ऑब्जेक्ट प्रॉपर्टी को ऑब्जेक्ट विधि से भ्रमित नहीं करना महत्वपूर्ण है।

एक संपत्ति एक प्रकार का स्थिर मूल्य है और उस तक पहुंच बिना कोष्ठक के लिखी जाती है, उदाहरण के लिए वर्तमान कॉलम.नाम. एक विधि अनिवार्य रूप से किसी वस्तु की एक प्रक्रिया या कार्य है, और प्रक्रियाओं और कार्यों के लिए कॉल हमेशा कोष्ठक के साथ लिखे जाते हैं (भले ही कोई इनपुट पैरामीटर न हों)। उदाहरण के लिए: MyTM.Columns.Quantity()

यदि हम विधि का उल्लेख करते हैं, कोष्ठक लिखना भूल जाते हैं, तो 1C दुभाषिया हमें एक त्रुटि संदेश देगा और निष्पादन के लिए कोड नहीं चलाएगा। चूंकि दुभाषिया यह मान लेगा कि हम एक विधि नहीं, बल्कि एक संपत्ति का उपयोग कर रहे हैं - क्योंकि कोई कोष्ठक नहीं हैं। और यह उस नाम के साथ गुण नहीं ढूंढ पाएगा (क्योंकि उस नाम के साथ केवल एक विधि है) - जो त्रुटि संदेश में कहा जाएगा।

अगर मैं इस तरह के गलत तरीके से एक विधि कॉल में कोष्ठक रखना भूल जाता हूं तो दुभाषिया यही लिखेगा MyTM.Columns.Quantity("मात्रा ()" के बाद कोई कोष्ठक नहीं):

ऑब्जेक्ट फ़ील्ड नहीं मिला (गणना)

इस मामले में, "फ़ील्ड" और "प्रॉपर्टी" को समानार्थक शब्द या 1C डेवलपर्स की शब्दावली में अशुद्धि के रूप में समझा जाना चाहिए। वे एक ही अवधारणा को संदर्भित करने के लिए इन दोनों शब्दों का उपयोग करते हैं। हालाँकि अन्य प्रोग्रामिंग भाषाओं में इन शब्दों का अर्थ अलग-अलग अवधारणाएँ हो सकता है।

कॉलम नंबरों का उपयोग करके 1C मान तालिका से डेटा प्राप्त करना

शुरुआत के लिए, मैं आपको हमारी तालिका की पहली पंक्ति से डेटा प्राप्त करने का एक सरल उदाहरण प्रदान करता हूं। कृपया ध्यान दें कि हम लेख की शुरुआत से पहले से भरी हुई तालिका का उपयोग कर रहे हैं। हम निश्चित रूप से जानते हैं कि तालिका में पहली पंक्ति और कम से कम एक कॉलम है। यदि हम इस उदाहरण को एक खाली तालिका पर लागू करते हैं, तो एक त्रुटि होगी। इसलिए:

फर्स्टलाइन = MyTR; // पहली पंक्ति प्राप्त करें (शून्य से नंबरिंग) ColumnFirstValue = RowFirst; // पहले कॉलम का मान प्राप्त करें (कॉलम नंबरिंग भी शून्य से है) रिपोर्ट (FirstColumnValue); // तालिका की पहली पंक्ति में पहले कॉलम का मान प्रदर्शित करें

स्क्रीन प्रदर्शित होगी:

चपाएव

हमें पहले [...] ऑपरेटर का उपयोग करके मूल्य तालिका तक पहुंचकर मूल्य तालिका पंक्ति वस्तु प्राप्त हुई। (यदि आप भूल गए कि यह कैसे करना है, तो आप पिछले लेख देख सकते हैं) ऑपरेटर के अंदर, हमने तर्क "0" पारित किया। यह मूल्यों की तालिका की पहली पंक्ति का सूचकांक है। फर्स्टलाइन = MyTR;

इसके अलावा, हमें [...] ऑपरेटर का उपयोग करके स्ट्रिंग ऑब्जेक्ट को संदर्भित करने का भी अधिकार है। इस कथन के अंदर, हमने मूल्यों की तालिका के कॉलम नंबर को पास किया, इस मामले में भी "0"। और इस प्रकार हमें "0" संख्या के साथ कॉलम का मान मिला वर्तमान लाइनतालिका क्रमांकित "0"। हमने इस मान को स्क्रीन पर प्रदर्शित किया है और यह स्ट्रिंग "चपाएव" का प्रतिनिधित्व करता है।

आइए हमारे उदाहरण को थोड़ा जटिल करें:

फर्स्टलाइन = MyTR; // पहली पंक्ति प्राप्त करें (शून्य से क्रमांकित) रिपोर्ट (फर्स्टलाइन); // तालिका की पहली पंक्ति में पहले कॉलम का मान प्रदर्शित करें रिपोर्ट (फर्स्टरो); // तालिका की पहली पंक्ति में दूसरे कॉलम का मान प्रदर्शित करें रिपोर्ट (फर्स्टरो); // तालिका की पहली पंक्ति में तीसरे कॉलम का मान प्रदर्शित करें

अब हमने अपने मूल्यों की तालिका की पहली पंक्ति के सभी तीन स्तंभों से मान प्रदर्शित किए हैं:

चपदेव वसीली इवानोविच

अब मैं इस उदाहरण को और संशोधित कर रहा हूं ताकि हम बिना किसी चर के कर सकें "पहली पंक्ति"

सूचित करें (MyTM); // तालिका की पहली पंक्ति में पहले कॉलम का मान प्रदर्शित करें रिपोर्ट (MyTR); // तालिका की पहली पंक्ति में दूसरे कॉलम का मान प्रदर्शित करें रिपोर्ट (MyTR); // तालिका की पहली पंक्ति में तीसरे कॉलम का मान प्रदर्शित करें

स्क्रीन वही होगी।

चपदेव वसीली इवानोविच

हमने ऊपर के उदाहरण में देखा कि एक विशिष्ट पंक्ति और मूल्यों की तालिका के विशिष्ट कॉलम में एक मान तक पहुंचने के लिए, हम इस फॉर्म में दो ऑपरेटरों [...] की लगातार कॉल का उपयोग कर सकते हैं: ValueTable[IndexRows][IndexColumns]

इसलिए, हम एक लूप ओवर बनाने और पंक्ति और स्तंभ सूचकांकों का उपयोग करके सभी पंक्तियों और सभी स्तंभों का डेटा प्राप्त करने के लिए तैयार हैं:

RowCount के लिए = 0 MyTM.Quantity () द्वारा - 1 लूप // पंक्तियों के माध्यम से ColumnCount = 0 MyTM.Columns.Quantity () द्वारा - 1 लूप // कॉलम के माध्यम से नेस्टेड लूप // सेल वैल्यू प्राप्त करें (वर्तमान पंक्ति से) और वर्तमान कॉलम) सेलवैल्यू = माईटीआर [रोकाउंट] [कॉलमकाउंट]; // पंक्ति संख्या, कॉलम नंबर और सेल वैल्यू रिपोर्ट प्रदर्शित करें ("लाइन #" + रोकाउंट + "कॉलम #" + कॉलमकाउंट + "=" + सेलवैल्यू); अंतचक्र; अंतचक्र;

निम्नलिखित स्क्रीन पर प्रदर्शित होगा:

लाइन #0 कॉलम #0 = चापेव लाइन #0 कॉलम # 1 = वासिली लाइन #0 कॉलम #2 = इवानोविच लाइन # 1 कॉलम #0 = डेजरज़िन्स्की लाइन # 1 कॉलम # 1 = फेलिक्स लाइन # 1 कॉलम # 2 = एडमंडोविच लाइन # 2 कॉलम नंबर 0 = कोटोव्स्की लाइन नंबर 2 कॉलम नंबर 1 = ग्रिगोरी लाइन नंबर 2 कॉलम नंबर 2 = इवानोविच

दो छोरों की मदद से, जिनमें से एक दूसरे में नेस्टेड है, हमने मूल्यों की 1C तालिका की सभी पंक्तियों से सभी स्तंभों के मान प्रदर्शित किए। इस मामले में, हमने स्तंभों के नामों का उपयोग नहीं किया, बल्कि उनके सूचकांकों द्वारा स्तंभों और पंक्तियों को संदर्भित किया। बेहतर समझ के लिए, उदाहरण के अंदर टिप्पणियों पर ध्यान दें।

अंत में, मैं अपने उदाहरण को थोड़ा बदलने का प्रस्ताव करता हूं ताकि कॉलम नंबरों के बजाय यह स्क्रीन पर उनके नाम प्रदर्शित करे। और इसके अलावा मैं स्क्रीन पर सामग्री प्रदर्शित करने के लिए एक और अधिक प्रस्तुत करने योग्य डिज़ाइन बनाउंगा।

RowCount = 0 MyTR.Quantity() के लिए - 1 लूप // पंक्तियों के माध्यम से लूप रिपोर्ट (" ======= पंक्ति # " + RowCount + " ======="); रिपोर्ट करना(" "); // लाइन फीड (खाली लाइन डालें) कॉलमकाउंट के लिए = 0 MyTR.Columns.Quantity () द्वारा - 1 लूप // कॉलम के माध्यम से नेस्टेड लूप // सेल वैल्यू प्राप्त करें (वर्तमान पंक्ति और वर्तमान कॉलम से) सेलवैल्यू = MyTR [RowCount [कॉलमकाउंट]; // कॉलम का नाम प्राप्त करें ColumnName = MyTR.Columns[ColumnCount].Name; // कॉलम नाम और सेल वैल्यू रिपोर्ट प्रदर्शित करें (कॉलमनाम + ":" + सेलवैल्यू); अंतचक्र; रिपोर्ट करना(" "); // न्यूलाइन (खाली लाइन डालें) एंडसाइकल;

अब, हमारी स्क्रीन पर, जानकारी अधिक प्रतिनिधि दिखने लगी:

लाइन नंबर 0 ======= अंतिम नाम: चपदेव पहला नाम: वसीली मध्य नाम: इवानोविच ======= लाइन नंबर 1 ======= अंतिम नाम: डेज़रज़िन्स्की पहला नाम: फेलिक्स मिडिल नाम: एडमंडोविच ===== == लाइन नंबर 2 ======= उपनाम: कोटोव्स्की पहला नाम: ग्रिगोरी पेट्रोनेमिक: इवानोविच

हाँ, मैं लगभग भूल गया था। एक पंक्ति में दो ऑपरेटरों [...][...] का उपयोग करते समय, हम कॉलम इंडेक्स के बजाय इस कॉलम का नाम पास कर सकते हैं: ValueTable[RowIndex][ColumnName]

RowCount = 0 MyTR.Quantity() के लिए - 1 लूप // पंक्तियों के माध्यम से लूप रिपोर्ट (" ======= पंक्ति # " + RowCount + " ======="); रिपोर्ट करना(" "); // लाइन फीड (एक खाली लाइन डालने) कॉलमकाउंट के लिए = 0 MyTR.Columns.Quantity() - 1 लूप // कॉलम के माध्यम से नेस्टेड लूप ColumnName = MyTR.Columns[ColumnCount].Name; // कॉलम नाम प्राप्त करेंCellValue = MyTR[RowCount][ColumnName]; //

तीर के साथ चिह्नित लाइन पर ध्यान दें "। इस लाइन में, वर्तमान कॉलम के इंडेक्स के बजाय, हम वर्तमान कॉलम का नाम तर्क में पास करते हैं वर्ग कोष्ठक[...] परिणाम वही होगा।

और अब, इस लेख में आखिरी।

पंक्तियों के संग्रह और स्तंभों के संग्रह पर पुनरावृति करने के लिए लूप का उपयोग करके, 1C मान तालिका के सभी डेटा की सही प्राप्ति

MyTR लूप से प्रत्येक CurrentRow के लिए // स्ट्रिंग्स के संग्रह के माध्यम से चक्र रिपोर्ट ("======= लाइन #" + MyTR.Index(CurrentRow) + " ======="); रिपोर्ट करना(" "); MyTR.Columns से प्रत्येक CurrentColumn के लिए लूप // नेस्टेड लूप कॉलम के संग्रह के माध्यम से ColumnName = CurrentColumn.Name; // कॉलम नाम प्राप्त करेंCellValue = CurrentRow [ColumnName]; // कॉलम NAME रिपोर्ट द्वारा सेल वैल्यू प्राप्त करें (कॉलमनाम + ":" + सेलवैल्यू); // कॉलम का नाम और सेल वैल्यू एंडसाइकल प्रदर्शित करें; रिपोर्ट करना(" "); अंतचक्र;

उदाहरण में, दो छोरों का उपयोग किया गया था। कॉलम कलेक्शन लूप को रो लूप के अंदर नेस्ट किया जाता है। यदि आपने ऊपर के उदाहरणों को देखा है और पिछले लेखों को पढ़ा है, तो आपको यह समझने में कोई कठिनाई नहीं होगी कि यह उदाहरण कैसे काम करता है।

अंत में, मैं अपने पिछले उदाहरण में मध्यवर्ती चरों के उपयोग को समाप्त करके कोड की पंक्तियों की संख्या को यथासंभव छोटा रखूंगा। हमें "औद्योगिक कोड" का एक नमूना मिलेगा जो वास्तविक दुनिया के अनुप्रयोगों में उपयोग किया जाता है।

यह तभी किया जाना चाहिए जब आपको इस बात की अच्छी समझ हो कि आप क्या कर रहे हैं। यदि कोड बहुत जटिल है, तो बाद में अपने स्वयं के कोड को समझना आसान बनाने के लिए मध्यवर्ती चर छोड़ना स्वीकार्य है। साथ ही, किसी भी कोड पर कम से कम न्यूनतम टिप्पणी की जानी चाहिए, ताकि कुछ समय बाद प्रोग्राम के टेक्स्ट को समझना आसान हो जाए।

MyTR लूप से प्रत्येक CurrentRow के लिए // लूप थ्रू लाइन्स रिपोर्ट ("======= लाइन #" + MyTR.Index(CurrentRow) + " =======" + Symbols.PS); MyTr.Columns लूप से प्रत्येक CurrentColumn के लिए // कॉलम पर पुनरावृति रिपोर्ट (CurrentColumn.Name + ":" + CurrentRow[CurrentColumn.Name]); अंतचक्र; रिपोर्ट करना(" "); अंतचक्र;

स्क्रीन पर आउटपुट नहीं बदला है, यह पिछले उदाहरण की तरह ही रहता है:

2-सप्ताह का कोर्स

"शुरुआती के लिए 1C में प्रोग्रामिंग"

पाठ्यक्रम आपको ईमेल किया जाएगा। चरण-दर-चरण कार्यों को पूरा करके प्रोग्रामर बनें।

भाग लेने के लिए आपको केवल एक कंप्यूटर और इंटरनेट की आवश्यकता है।

पाठ्यक्रम के लिए नि: शुल्क प्रवेश:

एसपी-बल-छिपाना (प्रदर्शन: कोई नहीं;)। एसपी-फॉर्म (प्रदर्शन: ब्लॉक; पृष्ठभूमि: # eff2f4; पैडिंग: 5 पीएक्स; चौड़ाई: 270 पीएक्स; अधिकतम-चौड़ाई: 100%; सीमा-त्रिज्या: 0 पीएक्स; -मोज़-बॉर्डर -त्रिज्या: 0px; -वेबकिट-बॉर्डर-त्रिज्या: 0px; फ़ॉन्ट-परिवार: एरियल, "हेल्वेटिका न्यू", सेन्स-सेरिफ़; बैकग्राउंड-रिपीट: नो-रिपीट; बैकग्राउंड-पोज़िशन: सेंटर; बैकग्राउंड-साइज़: ऑटो;) .sp-form इनपुट (डिस्प्ले: इनलाइन-ब्लॉक; अस्पष्टता: 1; दृश्यता: दृश्यमान;)।sp-form .sp-form-fields-wrapper (मार्जिन: 0 ऑटो; चौड़ाई: 260px;)।sp-form .sp -फॉर्म-कंट्रोल (पृष्ठभूमि: #ffffff; सीमा-रंग: #cccccc; सीमा-शैली: ठोस; सीमा-चौड़ाई: 1px; फ़ॉन्ट-आकार: 15px; पैडिंग-बाएं: 8.75px; पैडिंग-दाएं: 8.75px; सीमा -त्रिज्या: 4पीएक्स; -मोज़-बॉर्डर-त्रिज्या: 4पीएक्स; -वेबकिट-बॉर्डर-त्रिज्या: 4पीएक्स; ऊंचाई: 35पीएक्स; चौड़ाई: 100%;)।एसपी-फॉर्म .एसपी-फ़ील्ड लेबल (रंग: #444444; फ़ॉन्ट- आकार: 13px; फ़ॉन्ट-शैली: सामान्य; फ़ॉन्ट-वजन: बोल्ड;)।sp-form .sp-button (सीमा-त्रिज्या: 4px; -मोज़-सीमा-त्रिज्या: 4px; -वेबकिट-सीमा-त्रिज्या: 4px; पृष्ठभूमि-रंग: #f4394c;रंग: #ffffff;चौड़ाई: 100%;फ़ॉन्ट-वीग एचटी: 700; फ़ॉन्ट-शैली: सामान्य फ़ॉन्ट-परिवार: एरियल, "हेल्वेटिका नीयू", सेन्स-सेरिफ़; बॉक्स-छाया: कोई नहीं -मोज़-बॉक्स-छाया: कोई नहीं; -वेबकिट-बॉक्स-छाया: कोई नहीं; पृष्ठभूमि: रैखिक-ढाल (शीर्ष पर, #e30d22, #f77380);).sp-form .sp-button-container (पाठ-संरेखण: केंद्र; चौड़ाई: ऑटो;)