दस्तावेज़ 1s 8.3 के सारणीबद्ध भाग में एक पंक्ति जोड़ें। हॉटकीज़: सामान्य क्रियाएँ

पिछले उदाहरण के लिए, आप कोड की निम्नलिखित पंक्तियाँ जोड़ सकते हैं:

प्रपत्र Elements.TableField1.AddRow(); पेज = फॉर्मएलिमेंट्स.टेबलफिल्ड1.करंटरो; पी.प्रथम = 3; पी.दूसरा = "आटा"; पी.मात्रा = 350;

1s 8 में मानों की तालिका में पंक्तियों की संख्या कैसे निर्धारित करें?

countRows = तालिका.मात्रा(); रिपोर्ट ("तालिका मानों की तालिका में पंक्तियों की संख्या =" + पंक्तियों की संख्या);

परिणाम:

तालिका मानों की तालिका में पंक्तियों की संख्या = 3

1s 8 में मानों की तालिका में एक पंक्ति को कैसे हटाएं?

पंक्ति तालिका = तालिका; तालिका.हटाएं(पंक्ति तालिका);

1s 8 में मानों की तालिका को कैसे संक्षिप्त करें?

गिर जाना:

तालिका.संक्षिप्त करें ("दूसरा", "मात्रा");

कनवल्शन के बाद हमें मिलता है:

1s 8 में मानों की तालिका को कैसे क्रमबद्ध करें?

दूसरे और तीसरे कॉलम के अनुसार क्रमबद्ध करें:

तालिका.सॉर्ट करें ("दूसरा, मात्रा");

1सी 8 में टेबल फ़ील्ड को एक लाइन पर कैसे रखें?

दूसरी पंक्ति पर:

प्रपत्र Elements.TableField1.CurrentRow = तालिका;

1s 8 में मुद्रण योग्य प्रपत्र

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

प्रक्रिया कमांडपैनल1प्रिंट(बटन) वेरिएबल टीडी, आरएस, आरएस1, लेआउट, कोड, नाम, नोमेन; कोड = 0; लेआउट = GetLayout("उत्पाद"); हेडर = लेआउट.गेटएरिया('हेडर'); हेडर.पैरामीटर.दत्ता = करंटडेट(); पीसी = लेआउट.गेटएरिया('पीसी'); पीसी1 = लेआउट.गेटएरिया('पीसी1'); टीडी = नया सारणीबद्ध दस्तावेज़; td.आउटपुट(कैप); नामकरण = निर्देशिकाएँ.नामपद्धति; चयन = नामांकित.श्रेणीबद्ध रूप से चयन करें(); जबकि फ़ेच.नेक्स्ट() लूप कोड = कोड + 1; यदि नमूना.यह समूह = सत्य है तो pc1.Parameters.code = कोड; पीसी1.पैरामीटर्स.नाम = चयन.नाम; td.आउटपुट(rs1); अन्यथा rs.Parameters.code = कोड; rs.Parameters.name = चयन.नाम; टीडी.निकासी(आरएस); अगर अंत; अंतचक्र; आदि। केवल देखें = सत्य; td.Show("निर्देशिका ""नामपद्धति"""); प्रक्रिया का अंत

प्रोग्रामिंग भाषा की बुनियादी क्षमताओं में आमतौर पर संख्याओं और स्ट्रिंग्स के साथ काम करना शामिल होता है। आमतौर पर इन सुविधाओं को कंपाइलर कोड में हार्ड-कोड किया जाता है (या प्रोग्रामिंग भाषा की "आधार" कक्षाएं लागू की जाती हैं)।

1सी में स्ट्रिंग्स के साथ काम करने की क्षमता को प्लेटफॉर्म में ही प्रोग्राम किया जाता है। आज हम अंतर्निहित 1C भाषा में प्रोग्रामों में 1C स्ट्रिंग्स के साथ काम करने की विशेषताओं को देखेंगे।

रेखा मान 1C

1. आइए सबसे सरल से शुरू करें। एक वेरिएबल बनाना और उसमें एक स्थिर स्ट्रिंग मान निर्दिष्ट करना 1C में इस तरह दिखता है:

वेरिएबल = "हैलो, दुनिया!";

यदि आपको निरंतर 1C स्ट्रिंग मान में एक उद्धरण वर्ण निर्दिष्ट करने की आवश्यकता है, तो आपको इसे दोगुना करने की आवश्यकता है ""

वेरिएबल = "हैलो, दुनिया"!;

2. लाइन ब्रेक 1C को एक साथ दो तरीकों से निर्दिष्ट किया जा सकता है। पहला प्रतीक | का उपयोग कर रहा है

वेरिएबल = "हैलो,
| दुनिया! ";

दूसरा प्रतीक प्रणाली गणना का उपयोग कर रहा है। यह आपको 1C लाइन ब्रेक और TAB जैसे अन्य गैर-प्रिंटिंग वर्ण दोनों को जोड़ने की अनुमति देता है।

वेरिएबल = "हैलो" + प्रतीक.पीएस + "शांति!";

3. 1सी में कॉन्फ़िगरेशन न केवल एक भाषा (रूसी, अंग्रेजी या अन्य) के लिए विकसित किया जा सकता है - बल्कि एक साथ कई भाषाओं के लिए भी विकसित किया जा सकता है। इस स्थिति में, वर्तमान में उपयोग की जाने वाली भाषा 1C विंडो के नीचे चयनित होती है।

भाषाओं की सूची सामान्य/भाषा शाखा में कॉन्फ़िगरेशन विंडो में स्थित है। प्रत्येक भाषा का एक संक्षिप्त पहचानकर्ता होता है जैसे कि आरयूया इंग्लैंड.

यह स्पष्ट है कि ऐसे कॉन्फ़िगरेशन की प्रोग्रामिंग करते समय, 1C लाइनें बहुभाषी भी हो सकती हैं। ऐसा करने के लिए, निर्दिष्ट करके ऐसी 1C लाइन बनाना संभव है; भाषा पहचानकर्ता द्वारा विकल्प:

वेरिएबल = "आरयू = ""हैलो, दुनिया! ""; एन = ""हैलो, दुनिया! """;

यदि आप हमेशा की तरह इस तरह बनी 1C लाइन का उपयोग करते हैं, तो वही होगा जो इसमें लिखा है। सिस्टम को इसे दो विकल्पों में विभाजित करने और वांछित विकल्प का उपयोग करने के लिए, आपको НStr() फ़ंक्शन का उपयोग करने की आवश्यकता है:

//द्विभाषी विन्यास के लिए सही
रिपोर्ट(एनएसटीआर(परिवर्तनीय));

लाइन टाइप 1सी के साथ प्रॉप्स

विशेषता 1C निर्देशिका/दस्तावेज़ में एक फ़ील्ड है। यह 1C भाषा में किसी प्रोग्राम के एक वेरिएबल से इस मायने में भिन्न है कि विशेषता के लिए इसका प्रकार सटीक रूप से दर्शाया गया है (संख्या, 1C स्ट्रिंग, आदि)। यदि आप अपनी याददाश्त को ताज़ा करना चाहते हैं कि प्रॉप क्या है, तो आगे दिए गए पाठ को देखें।

यदि आप विशेषता का प्रकार निर्दिष्ट करते हैं - पंक्ति 1सी, तो आपको अतिरिक्त पैरामीटर निर्दिष्ट करने होंगे।

1C लाइनें असीमित लंबाई (लंबाई = 0 के रूप में इंगित) और सीमित लंबाई में आती हैं, जो वर्णों की सटीक संख्या दर्शाती हैं। असीमित लंबाई की 1C पंक्तियों को एक अलग SQL तालिका में संग्रहीत किया जाता है, इसलिए उनका उपयोग सीमित लोगों की तुलना में कम उत्पादक होता है।

इसीलिए असीमित लंबाई के 1C तारों के उपयोग की अपनी सीमाएँ हैं - उन्हें हर जगह उपयोग करना संभव नहीं है। उदाहरण के लिए, इसे दस्तावेज़ संख्या, संदर्भ कोड या माप के रूप में अनुमति नहीं है।

1C स्ट्रिंग्स के साथ कार्य करना

स्ट्रिंग्स के साथ काम करने के लिए 1C प्लेटफ़ॉर्म में कई अंतर्निहित फ़ंक्शन हैं।

  • AbbrLP ("अविश्वसनीय, लेकिन सच!")
    1C लाइन से अतिरिक्त स्थान हटाता है। इसका उपयोग किसी भी प्रकार को 1सी स्ट्रिंग (उदाहरण के लिए, संख्याएं) में परिवर्तित करने के लिए भी किया जा सकता है।
  • वेरिएबल = "वास्या" + एबीबीआरएलपी ("प्लस") + "ओल्या"; //वहाँ "वास्या प्लस ओला" होगा
    कई 1C स्ट्रिंग मानों के योग का एक उदाहरण। परिणाम एक पंक्ति 1सी होगा।
  • चर = लेव("संगीत", 2); // "म्यू" होगा
    चर = मध्यम("संगीत", 2, 2); // "खतरा" होगा
    चर = अधिकार("संगीत", 2); //वहाँ "का" होगा
    1C स्ट्रिंग से सबस्ट्रिंग प्राप्त करने के लिए विभिन्न विकल्प।
  • वेरिएबल = ढूँढें ("संगीत", "ज़ी"); //3 होंगे
    वर्ण 1 से शुरू करके, स्ट्रिंग 1C में एक सबस्ट्रिंग खोजें।
  • वेरिएबल = स्ट्रेलेंथ ("संगीत"); // 6 होंगे
    1C पंक्ति में वर्णों की संख्या लौटाता है।
  • रिपोर्ट("हैलो") //1सी विंडो के नीचे संदेश विंडो में
    चेतावनी('हैलो') //पॉपअप संवाद
    स्टेटस('हैलो') // नीचे बाईं ओर स्टेटस डिस्प्ले लाइन में
    .

वस्तुओं को पंक्ति 1C पर लाना

जैसा कि आप जानते हैं, वर्तमान में संरचित जानकारी के आदान-प्रदान के लिए सबसे लोकप्रिय प्रारूप XML है। यहां तक ​​कि MS Office Word और Excel का नवीनतम संस्करण भी इस प्रारूप में फ़ाइलें सहेजता है (क्रमशः docx और xlsx, एक्सटेंशन को ज़िप में बदलें, एक संग्रहकर्ता में खोलें)।

डेटा एक्सचेंज के लिए 1C प्लेटफ़ॉर्म कई विकल्प प्रदान करता है, जिनमें से मुख्य XML भी है।

1. सबसे सरल तरीका संक्षेप() या स्ट्रिंग() फ़ंक्शन का उपयोग करना है। आप अनुरोध निकाय में प्रतिनिधित्व() फ़ंक्शन का उपयोग कर सकते हैं। उनकी कार्रवाई का परिणाम एक ही है - वे उपयोगकर्ता के लिए किसी भी 1C ऑब्जेक्ट का एक स्ट्रिंग प्रतिनिधित्व उत्पन्न करते हैं।

डिफ़ॉल्ट रूप से किसी निर्देशिका के लिए, यह उसका नाम होगा। दस्तावेज़ के लिए - दस्तावेज़ का नाम, संख्या और दिनांक।

2. किसी भी 1C ऑब्जेक्ट (प्रतिबंधों के साथ) को XML में बदला जा सकता है और इसके विपरीत भी। रूपांतरण प्रक्रिया को क्रमांकन कहा जाता है।

स्ट्रिंगव्यूएक्सएमएल = एक्सएमएलस्ट्रिंग(मान); //1C मान से XML प्राप्त करें
वैल्यू1सी = XMLValue(प्रकार("DirectoryLink.Nomenclature"),TypeStringXml); //XML स्ट्रिंग से 1C मान प्राप्त करें, आपको 1C प्रकार निर्दिष्ट करना होगा जिसे प्राप्त किया जाना चाहिए

3. किसी भी 1C ऑब्जेक्ट को स्ट्रिंग में बदलने का 1C प्लेटफ़ॉर्म का अपना तरीका है। यह संस्करण 1C 7.7 से माइग्रेट हुआ। यह प्रारूप अन्य प्रोग्रामों द्वारा नहीं समझा जाता है, लेकिन अन्य 1C इसे समझते हैं, जिससे 1C डेटाबेस के बीच आदान-प्रदान के लिए इसका उपयोग करना आसान हो जाता है।

पंक्ति = वैल्यूइनरोइंट(वैल्यू1सी); // मान 1C से स्ट्रिंग 1C प्राप्त करें
वैल्यूवीफ़ाइल('C:\MyFile.txt', वैल्यू1सी); // दूसरा विकल्प, हमें 1C मान से सहेजी गई स्ट्रिंग वाली एक फ़ाइल मिलती है
वैल्यू1सी = वैल्यूफ्रॉमस्ट्रिंगइंट(स्ट्रिंग); // लाइन 1सी से वापस
वैल्यू1सी = वैल्यूफाइल('सी:\माईफाइल.txt'); // फ़ाइल से वापस

प्रपत्र पर 1सी पंक्तियों का संपादन

1सी भाषा में एक प्रोग्राम में 1सी स्ट्रिंग्स के साथ काम करने के अलावा, निश्चित रूप से मैं चाहूंगा कि उपयोगकर्ता उन्हें संपादित करने में सक्षम हो। इसके लिए कई संभावनाएँ हैं:

1. सबसे आसान तरीका है मांग पर 1सी लाइन के प्रवेश का अनुरोध करना। इस पद्धति का उपयोग 1C प्रोग्रामिंग सिखाते समय किया जाता है; जीवन में इसका उपयोग बहुत कम किया जाता है (लेकिन इसका उपयोग किया जाता है!)।

चर = "";
पंक्ति = EnterValue (चर, "पूरा नाम दर्ज करें");

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

3. इनपुट फ़ील्ड की क्षमताओं का विस्तार किया जा सकता है (इनपुट फ़ील्ड के गुण देखें, उस पर राइट-क्लिक करें, अधिक विवरण):

  • चेकबॉक्स मल्टीलाइन संपादन मोड
  • उन्नत संपादन चेकबॉक्स (यदि पिछला चेकबॉक्स चेक किया गया है तो उपलब्ध)
  • चेकबॉक्स पासवर्ड मोड (देखें)।

4. यदि इनपुट फ़ील्ड की सभी क्षमताएं आपके लिए पर्याप्त नहीं हैं, तो एक अंतर्निहित संपादक है। इसे फ़ॉर्म में जोड़ने के लिए, आपको फ़ॉर्म/इंसर्ट कंट्रोल मेनू में एक टेक्स्ट दस्तावेज़ फ़ील्ड जोड़ना होगा। इसके गुणों में आप इसके ऑपरेटिंग मोड - एक्सटेंशन प्रॉपर्टी को निर्दिष्ट कर सकते हैं।

टेक्स्ट दस्तावेज़ फ़ील्ड को सीधे डेटा से संबद्ध नहीं किया जा सकता है। फॉर्म के OnOpen() इवेंट हैंडलर में एक फ़ंक्शन लिखना आवश्यक है (देखें):

प्रपत्र Elements.ElementNameTextDocumentField.SetText(StringValue); // यहां वैल्यूस्ट्रिंग प्राप्त पाठ है, उदाहरण के लिए, विशेषता से

और सेव हैंडलर में - उदाहरण के लिए, सेव बटन में - एक सेव जोड़ें:

वैल्यूस्ट्रिंग = फॉर्मएलिमेंट्स.एलिमेंटनामटेक्स्टडॉक्यूमेंटफिल्ड.गेटटेक्स्ट(); //Valueयहाँ पंक्ति वह विशेषता है जहाँ हम मान सहेजते हैं

5. 1सी संस्करण 8.2.11 में, प्रबंधित रूपों में, 1सी लाइन का प्रतिनिधित्व करने के लिए एक नया विकल्प दिखाई दिया है - स्वरूपित दस्तावेज़ फ़ील्ड।


टेक्स्ट दस्तावेज़ के फ़ील्ड के समान, आपको इसे खोलते समय सेट करना होगा और प्रोग्राम का उपयोग करके इसे सहेजते समय इसे लिखना होगा।

  • 1C ऑब्जेक्ट में जिसका फॉर्म हम बना रहे हैं (निर्देशिका, दस्तावेज़, प्रसंस्करण, आदि) - वैल्यू स्टोरेज प्रकार के साथ एक विशेषता जोड़ें
  • OnReadOnServer() फ़ंक्शन में हम विशेषता से टेक्स्ट सेट करते हैं

    // यहां विशेषता 1C ऑब्जेक्ट की अतिरिक्त विशेषता है
    //यहां FormattedDocument संपादन के लिए फॉर्म पर फ़ील्ड का नाम है
    &सर्वर पर

    FormattedDocument = currentObject.Attributes.Get();
    प्रक्रिया का अंत

  • beforeWritingOnServer() फ़ंक्शन में या बटन का उपयोग करके, हम फ़ील्ड से टेक्स्ट लिखेंगे

    &सर्वर पर
    सर्वर पर रीडिंग करते समय प्रक्रिया(CurrentObject)
    currentObject.Props = NewValueStorage(FormattedDocument);
    प्रक्रिया का अंत

1C में कई वस्तुओं के लिए सारणीबद्ध भाग मौजूद हैं:

  • निर्देशिका
  • प्रलेखन
  • रिपोर्ट और प्रसंस्करण
  • खातों के चार्ट
  • विशेषता प्रकार की योजनाएँ
  • गणना प्रकार की योजनाएँ
  • व्यावसायिक प्रक्रियाएँ और कार्य

सारणीबद्ध भाग आपको एक वस्तु से संबंधित असीमित मात्रा में संरचित जानकारी संग्रहीत करने की अनुमति देते हैं।

आइए सारणीबद्ध भागों के साथ काम करने की कुछ तकनीकों पर नजर डालें।

सारणीबद्ध भाग को कैसे बायपास करें

तालिका भाग को पार करने के लिए, आप एक लूप का उपयोग कर सकते हैं प्रत्येक के लिए

चक्र के सारणीबद्ध भाग से प्रत्येक पंक्ति के लिए

रिपोर्ट (स्ट्रिंग। टेबुलरपार्ट विशेषता);

अंतचक्र;

चर में प्रत्येक पुनरावृत्ति पर रेखासारणीबद्ध अनुभाग की अगली पंक्ति संचरित होती है। पंक्ति विवरण का मान अभिव्यक्ति द्वारा प्राप्त किया जा सकता है रेखा.विशेषतानाम.

सारणीबद्ध भाग की चयनित पंक्तियों को कैसे प्राप्त करें और बायपास करें

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

चयनित पंक्तियों की सूची प्राप्त करने के लिए, निम्नलिखित कोड का उपयोग करें:

चयनित पंक्तियों के माध्यम से पुनरावृति करने के लिए एक लूप का उपयोग किया जाता है। प्रत्येक के लिए:

चयनित पंक्तियाँ = फॉर्म एलिमेंट्स। टेबलफ़ील्डनाम. चयनित पंक्तियाँ;

चयनित पंक्ति लूप से प्रत्येक पंक्ति के लिए

//लूप सामग्री

अंतचक्र;

सारणीबद्ध भाग (तालिका फ़ील्ड) की पंक्तियों को प्रोग्रामेटिक रूप से कैसे चुनें और उन्हें अचयनित कैसे करें

तालिका फ़ील्ड की पंक्तियों को प्रोग्रामेटिक रूप से अचयनित करने के लिए:

प्रपत्र तत्व. टेबलफ़ील्डनाम. चयनित पंक्तियाँ। स्पष्ट() ;

तालिका फ़ील्ड की सभी पंक्तियों को प्रोग्रामेटिक रूप से चुनने के लिए:

टेबुलरपार्ट लूप से प्रत्येक करंटरो के लिए
प्रपत्र तत्व. टेबलफ़ील्डनाम. चयनित पंक्तियाँ। जोड़ें(वर्तमान पंक्ति);
अंतचक्र;

टेबल भाग को कैसे साफ़ करें

सारणीबद्ध भाग. स्पष्ट() ;

तालिका अनुभाग की वर्तमान पंक्ति कैसे प्राप्त करें

वर्तमान लाइन वह समयरेखा है जिसमें उपयोगकर्ता के पास वर्तमान में कर्सर है। इसे प्राप्त करने के लिए, आपको प्रपत्र पर नियंत्रण तत्व तक पहुंचने की आवश्यकता है जो सारणीबद्ध भाग से जुड़ा है।

नियमित फॉर्म के लिए कोड इस तरह दिखेगा:

प्रपत्र तत्व. टेबलफ़ील्डनाम. मौजूदा डेटा;

प्रबंधित प्रपत्रों के लिए:

तत्व. टेबलफ़ील्डनाम. मौजूदा डेटा;

टेबल सेक्शन में नई पंक्ति कैसे जोड़ें

तालिका भाग के अंत में एक नई पंक्ति जोड़ना:

न्यूरो = टेबलपार्ट। जोड़ना() ;

तालिका अनुभाग में कहीं भी एक नई पंक्ति जोड़ना (बाद की पंक्तियों को स्थानांतरित कर दिया जाएगा):

न्यूरो = टेबलपार्ट। सम्मिलित करें(सूचकांक)
//सूचकांक - जोड़ी गई पंक्ति की संख्या। लाइन नंबरिंग शून्य से शुरू होती है.

नई पंक्ति। प्रॉप्स1 = "मान" ;

किसी तालिका पंक्ति का विवरण प्रोग्रामेटिक रूप से कैसे भरें

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

हैंडलर द्वारा बनाई गई प्रक्रिया में तीन पैरामीटर हैं:

  • तत्व- इसमें एक नियंत्रण तत्व होता है सारणीबद्ध फ़ील्ड.
  • नई पंक्ति- बूलियन। मूल्य समाहित है सत्य, यदि एक नई तालिका पंक्ति जोड़ी जाती है, और झूठ,यदि उपयोगकर्ता ने पहले से मौजूद लाइन को संपादित करना शुरू कर दिया है।
  • प्रतिलिपि- बूलियन। मूल्य समाहित है सत्य, यदि उपयोगकर्ता लाइन की प्रतिलिपि बनाता है, और झूठअन्य मामलों में।

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

प्रक्रिया TabularPartAtStartEditing(तत्व, NewRow, प्रतिलिपि)

//यदि उपयोगकर्ता किसी मौजूदा लाइन को संपादित करता है, तो हम कुछ नहीं करते हैं
यदि न्यूरो नहीं है तो
वापस करना;
अगर अंत ;

//यदि लाइन नई है, तो अकाउंटिंग अकाउंट सेट करें
टेकस्ट्रिंग = आइटम। मौजूदा डेटा; // सारणीबद्ध भाग की वर्तमान पंक्ति प्राप्त करें
टेकस्ट्रिंग। लेखांकन = खातों का चार्ट। स्वावलम्बी। आवश्यकखाता;
प्रक्रिया का अंत