1 வினாடியிலிருந்து காம் இணைப்பு மூலம் தரவைப் பெறுதல். COM பொருள்களுடன் பணிபுரியும் மூன்று தூண்கள். COM இணைப்பில் வேலை செய்வது நீங்கள் நினைப்பதை விட எளிதானது. OLE இணைப்பை நிறுவவும்

அச்சிட (Ctrl+P)

1C தரவுத்தளங்களுக்கு இடையில் தரவு பரிமாற்றத்திற்கான விருப்பங்களில் ஒன்று COM இணைப்பு வழியாக பரிமாற்றம் ஆகும். COM இணைப்பைப் பயன்படுத்தி, நீங்கள் ஒரு 1C தரவுத்தளத்திலிருந்து மற்றொன்றுடன் இணைக்கலாம் மற்றும் தரவைப் படிக்கலாம் அல்லது எழுதலாம். தரவுத்தளங்களின் கிளையன்ட்-சர்வர் பதிப்புகள் மற்றும் கோப்பு தரவுத்தளங்களில் இந்த முறை பயன்படுத்தப்படலாம். இந்த கட்டுரை இந்த வகையான இணைப்புகளை இயங்குதளம் 8.3 இல் விவாதிக்கிறது

காம் இணைப்பு

1C பயன்பாட்டிற்கு நீங்கள் இரண்டு வகையான COM பொருள்களை உருவாக்கலாம். இது ஓலே இணைப்புகள் V83. விண்ணப்பம் மற்றும் காம் இணைப்புகள் V83.COM இணைப்பான் . ஒரு வேளை V83. விண்ணப்பம் 1C பயன்பாட்டின் கிட்டத்தட்ட முழு அளவிலான நகல் தொடங்கப்பட்டது. பயன்படுத்தினால் V83.COM இணைப்பான்ஒரு சிறிய சர்வர் பகுதி தொடங்கப்பட்டது. இந்த வழக்கில் செயல்பாட்டின் வேகம் அதிகமாக உள்ளது, ஆனால் சில செயல்பாடுகள் கிடைக்காமல் போகலாம். குறிப்பாக, வெளிப்புற இணைப்புகளுடன் பணிபுரியும் சொத்து அமைக்கப்படாத படிவங்கள் மற்றும் பொதுவான தொகுதிகளுடன் பணிபுரிதல். பெரும்பாலும் நீங்கள் பயன்படுத்த வேண்டும் V83.COM இணைப்பான்மற்றும் செயல்பாடு இல்லாத நிலையில் மட்டுமே V83. விண்ணப்பம். இயக்க வேகத்தில் உள்ள வேறுபாடு பெரிய அளவிலான தரவுத்தளங்களில் குறிப்பாக கவனிக்கத்தக்கது. இயங்குதளம் 8.2க்கு பயன்படுத்தப்பட்டது V82.Application அல்லது V82.COMConnector

OLE இணைப்பை நிறுவவும்

இணைப்பு = புதிய COMObject(“V83.Application” );

COM இணைப்பை நிறுவவும்

இணைப்பு = புதிய COMObject(“V83.COMConnector” );

இணைப்பு சரம்

//கிளையன்ட்-சர்வர் விருப்பத்திற்கு
இணைப்பு சரம்= “Srvr = ““ServerName” “; Ref = “ “BaseName” ;
// கோப்பு முறை விருப்பத்திற்கு:
இணைப்பு சரம்= “கோப்பு = ““PathKBase” "; Usr = பயனர்பெயர்; Pwd = கடவுச்சொல்”;
முயற்சி
இணைப்பு = இணைப்பு . இணைக்கவும்(கனெக்ஷன்ஸ்ட்ரிங்) ;
விதிவிலக்கு
செய்தி = New MessageToUser;
செய்தி . உரை = "தரவுத்தளத்துடன் இணைக்க முடியவில்லை" + விளக்கம் பிழைகள்(); செய்தி . தெரிவிக்க();
முடிவு முயற்சி ;

துண்டிப்பு

இணைப்பு = வரையறுக்கப்படாத ;
பொருளுக்கு V83. விண்ணப்பம்இணைப்பை நிறுத்த வேண்டியது அவசியம், இல்லையெனில் ஒரு முழுமையற்ற அமர்வு இருக்கும், அது கைமுறையாக நீக்கப்பட வேண்டும். ஒரு வேளை V83.COM இணைப்பான்இணைப்பு செய்யப்பட்ட செயல்முறை முடிந்ததும் இணைப்பு தானாகவே உடைந்து விடுகிறது.மேலும் ஒரு சிறிய புள்ளி உள்ளது. யாருடைய கீழ் இணைப்பு ஏற்படுத்தப்படுகிறதோ அந்த பயனருக்கு, அதன் அமைப்புகளில் "நிரலை மூடும் போது உறுதிப்படுத்தல் கோரிக்கை" தேர்வுப்பெட்டியை முடக்க வேண்டும்.

புதிய பொருள்() முறை

ஒரு புதிய பொருளை உருவாக்க, நீங்கள் NewObject() முறையைப் பயன்படுத்தலாம், எடுத்துக்காட்டாக:

க்கு V83.COM இணைப்பான்

RequestCOM = இணைப்பு. புதிய பொருள்( "கோரிக்கை") ;
TableCOM = இணைப்பு. புதிய பொருள்( "மதிப்பு அட்டவணை") ;
ArrayCOM = இணைப்பு. புதிய பொருள் ("அரே" );

ViewCOM =Connection.NewObject

க்கு V83. விண்ணப்பம்

RequestOLE = இணைப்பு. புதிய பொருள் (" கோரிக்கை") ;
TableOLE = இணைப்பு. புதிய பொருள்("மதிப்பு அட்டவணை") ;
ArrayOLE = Connection.NewObject(“வரிசை” );
ViewCOM =Connection.NewObject("தனித்துவ அடையாளங்காட்டி", StringUID);

RequestCOM . உரை ="தேர்வு
| நிறுவனங்களின் நிலைகள் குறியீடு,
| நிறுவனங்களின் பதவிகள்.பெயர்
|இருந்து | அடைவு.அமைப்புகளின் நிலைகள்
நிறுவனங்களின் பதவிகளை எவ்வாறு அடைவது”;

விளைவாக = RequestCOM. ஓடு();
மாதிரி = முடிவு. தேர்வு ();
பை தேர்வு. அடுத்தது()மிதிவண்டி
எண்ட்சைக்கிள் ;
நீங்கள் கட்டமைப்பு பொருள் மேலாளர்களையும் பயன்படுத்தலாம்:
DirectoryCOM = இணைப்பு. அடைவுகள். அடைவு பெயர்;
DocumentCOM = இணைப்பு. ஆவணப்படுத்தல். ஆவணப்பெயர்;
RegisterCOM = இணைப்பு. தகவல் பதிவுகள். பதிவு பெயர்;

COM இணைப்பு மூலம் கணக்கீட்டைப் பெறுதல் மற்றும் ஒப்பிடுதல்

உள்ளமைவில் வரையறுக்கப்பட்ட எண் கூறுகளின் மதிப்புகளை ஒப்பிட்டுப் பார்க்க, இந்த உறுப்புகளை பழமையான வகைகளில் ஒன்றாக மாற்றுவது அவசியம், அதன் ஒப்பீடு எளிதானது. இத்தகைய வகைகள் எண் அல்லது எண்களாக இருக்கலாம் சரம் வகை. நீங்கள் ஒரு எண்ணும் உறுப்பின் மதிப்பை இது போன்ற எண் வகைக்கு மாற்றலாம்:

எனும் பொருள் = இணைப்பு. அடைவுகள். அடைவு1.FindByCode(1).Props1;

சாத்தியமான மதிப்புகள் = Enum Element.Metadata().Enum மதிப்புகள்;

EnumerationElementNumber = PossibleValues.Index(PossibleValues.Find(Connection.XMLString(EnumerationElement)));

EnumerationItemNumber = 0 எனில் புகாரளிக்கவும்( "எண்ணிய மதிப்பு1");

வேறு எண் = 1 பிறகுஅறிக்கை("கணக்கெடுப்பு மதிப்பு2");

முடிவு என்றால்;

அடையாளங்காட்டி மூலம் COM வழியாக ஒரு பொருளை மீட்டெடுக்கிறது

உள்ளமைவு பொருள் மேலாளர்கள் மூலம் நாம் ஒரு காம் பொருளைப் பெறுகிறோம், எடுத்துக்காட்டாக:
ஆவண காம் = இணைப்பு. ஆவணப்படுத்தல். ஆவணப்பெயர்;

பின்னர் நாம் ஒரு தனித்துவமான அடையாளங்காட்டி சரத்தைப் பெறுகிறோம்:

StringUID =Connection.string ( DocumentCOM.UniqueIdentifier())

அடையாளங்காட்டி = புதிய யு தனித்துவமான அடையாளங்காட்டி (ஸ்ட்ரிங்யுஐடி);
உடன் linkByIdentifier = ஆவணங்கள்[DocumentName].GetLink(Identifier);

அடையாளங்காட்டி மூலம் ஆவணம் மூலம் காம் பொருளைக் கண்டுபிடிக்க வேண்டும் என்றால், நீங்கள் இப்படி எழுத வேண்டும்:

WidCOM = இணைப்பு.புதிய பொருள்("தனித்துவ அடையாளங்காட்டி", StringUID);
LinkByIdentifier = Connection.Documents[DocumentName].GetLink(WidCOM);

வணக்கம் கப்ரச்சான்ஸ்!

இந்த கட்டுரையில், எனது நிறுவனத்தில் 1C இயங்குதளத்துடன் ஒருங்கிணைப்பு எவ்வாறு நிறுவப்பட்டது என்பதைப் பற்றி பேச விரும்புகிறேன். கிட்டத்தட்ட முழுமையாக இல்லாததுதான் இதைச் செய்ய என்னைத் தூண்டியது தொழில்நுட்ப தகவல்இந்த தீம் பற்றி. எந்தவொரு தகவல் அமைப்புடனும் 1C ஐ இணைக்கும் தலைப்பில் பல்வேறு கட்டுரைகள் மற்றும் அறிக்கைகளைப் படித்தால், அவை அனைத்தும் சந்தைப்படுத்தல், செயல்விளக்கம் மற்றும் தொழில்நுட்பம் அல்ல, சிக்கலையும் அதன் தீர்வின் சாரத்தையும் பிரதிபலிக்கின்றன என்பதை நீங்கள் மீண்டும் மீண்டும் நம்புகிறீர்கள்.

இந்த முறை எந்த வகையிலும் உலகளாவியதாக இல்லை என்று நான் எச்சரிக்கிறேன். பல 1C உள்ளமைவுகள் இருப்பதால், மற்றும் தகவல் அமைப்புகள், மொழிகள் மற்றும் தளங்கள் - இன்னும் அதிகமாக, சாத்தியமான சேர்க்கைகளின் எண்ணிக்கை மிகப்பெரியது. சாத்தியமான ஒரு தீர்வைக் காண்பிப்பதே எனது குறிக்கோள்.


1C உடன் ஒருங்கிணைக்கப்படும் மொழியாக Python ஐ தேர்வு செய்தேன். செயல்முறை ஆட்டோமேஷனுக்கு இது மிகவும் பொருத்தமானது. இது தொடரியல் மினிமலிசத்தால் எளிதாக்கப்படுகிறது (குறியீடு மிக விரைவாக தட்டச்சு செய்யப்படுகிறது), பணக்காரர் நிலையான நூலகம்(மூன்றாம் தரப்பு தொகுதிகளுக்கு குறைவான தேவை), குறுக்கு-தளம் - அதிக நிகழ்தகவுடன், Linix OS இல் எழுதப்பட்ட குறியீடு விண்டோஸில் வெற்றிகரமாக வேலை செய்யும்.

தொடங்குவதற்கு, நாங்கள் வேலை செய்யும் தரவை கோடிட்டுக் காட்டுகிறேன். இந்த அமைப்பு தூர கிழக்கு பிராந்தியத்தில் ஒரு ஆற்றல் விற்பனை நிறுவனமாகும் - இது சுமார் 400 ஆயிரம் சந்தாதாரர்களுக்கு சேவை செய்கிறது, 1C தரவுத்தளம் தனிப்பயன் உள்ளமைவை அடிப்படையாகக் கொண்டது. ஒவ்வொரு சந்தாதாரருக்கும், அவரது கொடுப்பனவுகள், கட்டணங்கள், நுகரப்படும் சேவைகள் மற்றும் கணக்கீட்டு திட்டங்கள், மீட்டர்கள், அளவீடுகள் மற்றும் பல தரவுகள் சேமிக்கப்படும்.

ஒரு காலத்தில், ஒரு நிறுவனம் டெல்பியில் ஒரு நிரல் எழுதப்பட்டு MSSQL/Firebird ஐ தரவுத்தளமாகப் பயன்படுத்தியது. அந்த புகழ்பெற்ற காலங்களில், நீங்கள் எந்த மொழியையும் பயன்படுத்தி தரவுத்தளத்துடன் இணைக்கலாம் மற்றும் பல செயல்களைச் செய்யலாம் - கடனாளி சந்தாதாரர்களைத் தேர்ந்தெடுங்கள், பெறப்பட்ட பணம் செலுத்துதல், பதிவு கருவி வாசிப்பு. வழக்கத்தை தானியக்கமாக்கும் ஸ்கிரிப்ட்களின் தொகுப்பு தொடர்ந்து வளர்ந்து வருவதில் ஆச்சரியமில்லை. புரோகிராமர்கள் நிரலைத் திறக்காமல் எந்தச் செயலையும் செய்ய முடியும்.

ஐயோ, 1C க்கு மாறியவுடன், இலவசம் முடிந்தது - தரவுத்தளத்துடன் நேரடியாக இணைக்க முடியாது. பொதுவாக, 1C இயங்குதளமே பிரிக்க முடியாதது மற்றும் பிற அமைப்புகளுடன் ஒருங்கிணைக்க தன்னை நன்றாகக் கொடுக்காது. அவள், அவர்கள் சொல்வது போல், தனக்குள்ளேயே ஒரு விஷயம். 1C இல் தரவை ஏற்றும்போது, ​​அதை அங்கிருந்து பிரித்தெடுப்பது அவ்வளவு எளிதல்ல என்பதை நினைவில் கொள்ள வேண்டும். ஆனால் நிறுவனத்திற்கு பணம் செலுத்தும் முறைகளை செயல்படுத்த வேண்டும் என்ற உண்மையைக் கருத்தில் கொண்டு தனிப்பட்ட பகுதி, ஏதாவது தீர்வு காண வேண்டியது அவசியம்.

நான் எதிர்கொள்ளும் முக்கிய பணிகள் ஒரு குறிப்பிட்ட தரவை விரைவாகப் பெறும் திறன் தனிப்பட்ட கணக்கு- முழுப் பெயர், முகவரி, அளவீட்டு சாதனங்கள், மீட்டர் அளவீடுகள், கட்டணங்கள், கட்டணங்கள். மேலும் ஆவணங்களின் உருவாக்கம் - நல்லிணக்க அறிக்கை, கட்டண ரசீது. எனவே, தரவுத்தளத்துடன் நேரடி இணைப்பு சாத்தியம் இல்லை - SQL சேவையகத்தில் 1C தரவுத்தளத்தைப் பார்த்த எவரும் aaa1, aaa2 போன்ற அட்டவணைகளின் வெகுஜனத்தைப் புரிந்துகொள்வது கடினம் என்பதைக் கண்டார். அத்தகைய அட்டவணை மற்றும் புலப் பெயர்களுடன் வினவல்களை உருவாக்குவது வெறுமனே நம்பத்தகாதது. கூடுதலாக, பல 1C அட்டவணைகள் (குறிப்பாக மிக முக்கியமானவை, சமீபத்தியவை, இருப்புக்கள் மற்றும் புரட்சிகள் போன்றவை) மெய்நிகர் மற்றும் வெவ்வேறு இயற்பியல் அட்டவணைகளில் சிதறடிக்கப்படுகின்றன, அவை பல இணைப்புகளால் சேகரிக்கப்படுகின்றன. இந்த முறை பொருத்தமானது அல்ல.

1C இயங்குதளமானது COM இணைப்பு வழியாக அதனுடன் இணைக்கும் திறனை வழங்குகிறது. பல விண்டோஸ் நிரல்களைப் போலவே, 1C இன் நிறுவலின் போது இரண்டு COM பொருள்கள் கணினியில் பதிவு செய்யப்படுகின்றன - ஆட்டோமேஷன் சர்வர் மற்றும் COM இணைப்பான். COM தொழில்நுட்பத்தை ஆதரிக்கும் மொழியைப் பயன்படுத்தி இரண்டு பொருள்களையும் வேலை செய்ய முடியும்.

ஆட்டோமேஷன் சர்வர் ஆப்ஜெக்ட் என்பது 1C பயன்பாடாகும், இது வழக்கமான கிளையன்ட் பயன்பாட்டிலிருந்து வேறுபட்டதல்ல. வித்தியாசம் என்னவென்றால், கூடுதல் வாய்ப்பு உள்ளது நிரல் கட்டுப்பாடுவிண்ணப்ப நிகழ்வு. COM கனெக்டர் பொருளுடன் பணிபுரியும் போது, ​​1C பயன்பாட்டின் இலகுரக பதிப்பு தொடங்கப்பட்டது, இதில் படிவங்கள், அத்துடன் இடைமுகம் மற்றும் காட்சி விளைவுகள் தொடர்பான செயல்பாடுகள் மற்றும் முறைகள் கிடைக்காது. பயன்பாடு "வெளிப்புற இணைப்பு" பயன்முறையில் தொடங்குகிறது. உலகளாவிய மாறிகளை துவக்குதல் (உதாரணமாக, வரையறுத்தல் தற்போதைய பயனாளிமற்றும் அதன் அமைப்புகள்) 1C வெளிப்புற இணைப்பு தொகுதியில் செய்யப்பட வேண்டும். வெளிப்புற இணைப்பு பயன்முறையில் குறியீடு இந்த பயன்முறையில் இல்லாத செயல்பாட்டை அழைத்தால், ஒரு விதிவிலக்கு தூக்கி எறியப்படும் (இது எங்கள் பைதான் ஸ்கிரிப்ட்டிற்கு அனுப்பப்படும்). பாதுகாப்பற்ற செயல்பாடுகளுக்கான அழைப்புகள் படிவத்தின் கட்டுமானங்களுடன் வடிவமைக்கப்பட வேண்டும்

#OuterJoin இல்லையெனில் எச்சரிக்கை("வணக்கம்!"); #முடிவு என்றால்

COM பொருள்களுடன் பணிபுரிவது பிரத்தியேகமாக ஜன்னல்கள் மட்டுமே தொழில்நுட்பம் என்பதால், இது நிலையான பைதான் விநியோகத்தில் சேர்க்கப்படவில்லை என்பதில் ஆச்சரியமில்லை. நீங்கள் ஒரு நீட்டிப்பை நிறுவ வேண்டும் - பைத்தானில் விண்டோஸின் கீழ் நிரலாக்கத்திற்கு தேவையான அனைத்து செயல்பாடுகளையும் வழங்கும் தொகுதிகளின் தொகுப்பு. இதை முன்பே கட்டமைக்கப்பட்ட exe நிறுவியாக பதிவிறக்கம் செய்யலாம். நீட்டிப்பு தானே பதிவகம், சேவைகள், ODBC, COM பொருள்கள் போன்றவற்றிற்கான அணுகலை வழங்குகிறது. மாற்றாக, நீங்கள் உடனடியாக ஆக்டிவ்ஸ்டேட் பைதான் விநியோகத்தை நிறுவலாம், இது பெட்டிக்கு வெளியே Win32 நீட்டிப்புடன் வருகிறது.

வலை பயன்பாடுகளை, குறிப்பாக, தனிப்பட்ட கணக்கை உருவாக்குவதில் COM இணைப்புடன் சிறிது நேரம் நான் பரிசோதனை செய்தேன். பின்வரும் குறைபாடுகள் அடையாளம் காணப்பட்டன:

COM இணைப்பு மெதுவாக உள்ளது. குறைந்த செயல்திறன் COM தொழில்நுட்பத்தின் நன்கு அறியப்பட்ட குறைபாடு ஆகும்.
- 1C உடன் இணைப்பை நிறுவும் செயல்முறை, உள்ளமைவைப் பொறுத்து, 1 முதல் 8 வினாடிகள் வரை ஆகலாம் (என் விஷயத்தில் - 6 வினாடிகள்). ஒவ்வொரு கோரிக்கைக்கும் ஒரு இணைப்பை நிறுவினால், ஒவ்வொரு பக்கமும் ஏற்றுவதற்கு 8 வினாடிகள் ஆகும் என்று சொல்லத் தேவையில்லை.
- பைத்தானில் உள்ள இணைய பயன்பாடுகள் சுயாதீன சேவையகங்களாக செயல்படுவதால், முந்தைய புள்ளியை சில உலகளாவிய மாறிகளில் சேமித்து பிழை ஏற்பட்டால் அதை மீட்டமைப்பதன் மூலம் ஈடுசெய்ய முடியும். உண்மையைச் சொல்வதானால், PHP இல் இணைப்பை எவ்வாறு பராமரிப்பது என்பது பற்றி நான் இன்னும் சிந்திக்கவில்லை.
- இணைய பயன்பாட்டின் குறுக்கு-தள செயல்பாடு இழக்கப்பட்டது.

மேலே பட்டியலிடப்பட்ட புள்ளிகளின் அடிப்படையில், தொடர்பு கொள்கையை மாற்ற முடிவு செய்யப்பட்டது, அதை 2 பகுதிகளாகப் பிரிப்பது - முதல் இயங்குதளம் சார்ந்தது (சாளரம் சார்ந்தது), 1C தரவை எந்த வசதியான வடிவத்திலும் பதிவேற்றுவது மற்றும் இரண்டாவது, இயங்குதளம் சார்ந்தது, கொள்கையளவில் 1C பற்றி எதையும் சந்தேகிக்காமல் தரவுகளுடன் வேலை செய்யும் திறன் கொண்டது.

செயல் உத்தி பின்வருமாறு: பைதான் ஸ்கிரிப்ட் 1C உடன் இணைகிறது, தேவையான வினவல்களை இயக்குகிறது மற்றும் தரவை SQLite தரவுத்தளத்தில் பதிவேற்றுகிறது. Python, PHP, Java இலிருந்து இந்தத் தரவுத்தளத்துடன் இணைக்கலாம். எங்களின் பெரும்பாலான திட்டப்பணிகள் பைத்தானில் வேலை செய்கின்றன, மேலும் SQL வினவல்களை கையால் எழுதுவதை என்னால் தாங்க முடியாது என்பதால், SQLite தரவுத்தளத்தில் உள்ள அனைத்து வேலைகளும் SQLalchemy ORM மூலம் செய்யப்படுகிறது. தரவுத்தள தரவு கட்டமைப்பை ஒரு அறிவிப்பு பாணியில் விவரிக்க வேண்டியது அவசியம்:

sqlalchemy.ext.declarative import declarative_base இலிருந்து sqlalchemy இறக்குமதி நெடுவரிசை, முழு எண், எண், தேதிநேரம், யூனிகோட், பூலியன், LargeBinary, ForeignKey Base = declarative_base() class Abonent(அடிப்படை): __tablename"__= உண்மை) கணக்கு = நெடுவரிசை(யுனிகோட்(32), குறியீட்டு=சரி) குறியீடு = நெடுவரிசை(யூனிகோட்(32)) முகவரி = நெடுவரிசை(யூனிகோட்(512)) fio = நெடுவரிசை(யூனிகோட்(256)) ஆதாரம் = நெடுவரிசை(யூனிகோட்(16) ) psu = நெடுவரிசை(யூனிகோட்(256)) tso = நெடுவரிசை(யூனிகோட்(256)) np = நெடுவரிசை(யூனிகோட்(256)) தெரு = நெடுவரிசை(யூனிகோட்(256)) வீடு = நெடுவரிசை(முழு) பிளாட் = நெடுவரிசை(முழு எண்) mro = நெடுவரிசை(யுனிகோட்(256)) வகுப்பு கட்டணம்(அடிப்படை): __tablename__ = "கட்டணங்கள்" # மற்றும் பல...

இப்போது நீங்கள் இந்த தொகுதியை எந்த பைதான் திட்டத்திலும் இறக்குமதி செய்ய வேண்டும், மேலும் நீங்கள் தரவுடன் வேலை செய்யலாம்.

உங்கள் கேள்வியை நான் எதிர்பார்க்கிறேன் - "ஏன் SQLite"? முக்கிய காரணம், தரவுத்தளமானது படிக்க மட்டுமே, எனவே SQLite இல் எழுதுவதில் உள்ள சிக்கல்கள் நம்மைக் கவலையடையச் செய்யக்கூடாது. இரண்டாவதாக, இந்த DBMS இன் வடிவம் வசதியானது - பார்க்க மிகவும் வசதியானது (பல உள்ளன இலவச பயன்பாடுகள், FireFoxக்கான சூப்பர் நீட்டிப்பு உட்பட). மூன்றாவதாக, சில சந்தர்ப்பங்களில் MySQL சேவையகத்துடன் இணைப்பு இல்லாத இயந்திரங்களிலிருந்து சந்தாதாரர்களுக்கான அணுகலைப் பெறுவது அவசியம். இந்த வழக்கில், SQLite தரவுத்தள கோப்பை நகலெடுப்பது போதுமானது, மேலும் இந்த இயந்திரம் அனைத்து தகவல்களுக்கும் அணுகலைக் கொண்டிருக்கும்.

ஒரு நாளைக்கு ஒரு முறை இரவில் இறக்குதல் ஏற்படுகிறது. 1C இல் தரவை உள்ளிடுவது அதே வழியில் தானியங்கு செய்யப்படலாம். எடுத்துக்காட்டாக, தனிப்பட்ட கணக்கு இணையதளத்தில் சந்தாதாரர்கள் விட்டுச் சென்ற வாசிப்புகளைப் பதிவு செய்ய வேண்டும். இந்த வழக்கில், நாங்கள் மீண்டும் 1C உடன் இணைக்கிறோம் மற்றும் நிரல் ரீதியாக "வாசிப்புச் செயல்" ஆவணத்தை உருவாக்கி இடுகையிடுகிறோம். கீழே குறியீட்டை தருகிறேன்.

பைத்தானில் COM பொருள்களுடன் பணிபுரிவது சற்று அசாதாரணமானது. முதலாவதாக, குறியீட்டின் “பைத்தோனிசிட்டி” இழக்கப்படுகிறது - 1C இல் மாறிகள் மற்றும் செயல்பாடுகளை பெயரிடுவதற்கான விதிகள், லேசாகச் சொல்வதானால், பைத்தானின் ஜென் உடன் பொருந்தாது. இரண்டாவதாக, 1C பொருள்கள் பெரும்பாலும் சிரிலிக் எழுத்துக்களால் பெயரிடப்படுகின்றன என்பது அனைவருக்கும் தெரியும், இது பைத்தானில் வளரும் போது சிக்கல்களை ஏற்படுத்தும் ... ஆனால் அவற்றை தீர்க்க முடியும். குறியீட்டைப் பார்க்க பரிந்துரைக்கிறேன்:

pythoncom இறக்குமதி win32com.client V82_CONN_STRING = "Srvr=v8_server;Ref=v8_db;Usr=username;Pwd=megapass;" pythoncom.CoInitialize() V82 = win32com.client.Dispatch("V82.COMConnector").Connect(V82_CONN_STRING)

குறியீட்டிலிருந்து பார்க்க முடிந்தால், கிளையன்ட் 1C உடன் பணிபுரிய ஆரம்பிக்கப்பட்டது. ஒரு COM பொருள் "V82.COMConnector" என்ற பெயரால் வரையறுக்கப்படுகிறது. இந்த பெயர் V8.2 இயங்குதளத்திற்கு செல்லுபடியாகும் என்பதை நினைவில் கொள்ளவும், உங்களிடம் பதிப்பு 8.1 இருந்தால், அதன் பெயர் "V81.COMConnector" ஆக இருக்கும்.

துவக்கப்பட்ட கிளையண்டில் கனெக்ட்() முறையை இணைப்புச் சரம் என்று அழைக்கிறோம். சரம் சர்வர் பெயர், தரவுத்தளம், பயனர் மற்றும் கடவுச்சொல் ஆகியவற்றைக் கொண்டுள்ளது. இதன் விளைவாக வரும் V82 பொருள் 1C பயன்பாட்டிற்கான இணைப்பைச் சேமிக்கிறது. இதில் Disconnect() முறை அல்லது அது போன்ற எதுவும் இல்லை. தரவுத்தளத்திலிருந்து துண்டிக்க, del() செயல்பாட்டைப் பயன்படுத்தி நினைவகத்திலிருந்து பொருளை நீக்கவும் அல்லது None மாறிக்கு ஒதுக்கவும்.

ஒரு பொருளை வைத்திருந்தால், 1C உலகளாவிய சூழலின் எந்த புலங்களையும் முறைகளையும் நீங்கள் அணுகலாம், TabularDocument, ValueTable போன்ற உலகளாவிய பொருள்களுடன் செயல்படலாம். COM இணைப்பு வழியாக வேலை செய்யும் போது, ​​1C "வெளிப்புற இணைப்பு" பயன்முறையில் வேலை செய்கிறது என்பதை கவனத்தில் கொள்ள வேண்டும். பாப்-அப் உரையாடல்கள், அறிவிப்புகள் மற்றும் மிக முக்கியமாக படிவங்கள் போன்ற எந்த ஊடாடும் செயல்பாடுகளையும் இது அனுமதிக்காது. Button1Press() செயல்முறையின் மிக முக்கியமான செயல்பாட்டை ஆவணப் படிவத் தொகுதியில் இணைக்கும் உள்ளமைவு உருவாக்குநர்களை நீங்கள் ஒன்றுக்கு மேற்பட்ட முறை சபிப்பீர்கள் என்று நான் உறுதியாக நம்புகிறேன்.

சிரிலிக் பண்புக்கூறுகள் போன்ற ஒரு முக்கியமான விஷயத்தைப் பற்றி பேசலாம். 1C ஒரு இருமொழி சூழல் மற்றும் ஒவ்வொரு ரஷ்ய முறைக்கும் ஒரு ஆங்கில மொழி அனலாக் உள்ளது என்ற போதிலும், விரைவில் அல்லது பின்னர் நீங்கள் சிரிலிக் பண்புக்கு திரும்ப வேண்டும். இது PHP அல்லது VBSCript மொழிகளில் எந்த சிக்கலையும் ஏற்படுத்தவில்லை என்றால்,

செட் கான் = CreateObject("v81.COMConnector") Set v8 =Con.Connect("இணைப்பு சரம்") AccountsManager அமை = v8.Documents.Accounts.... அமை AccountsRecord= AccountsManager.CreateItem() AccountsRecord.Account = ... . .... கணக்குப் பதிவு.எழுத()

பின்னர் பைதான் குறியீடு தொடரியல் பிழையுடன் செயலிழக்கும். என்ன செய்ய? உள்ளமைவைத் திருத்தவா? இல்லை, getattr மற்றும் setattr முறைகளைப் பயன்படுத்தினால் போதும். இந்த செயல்பாடுகளுக்கு ஒரு COM பொருள் மற்றும் பண்புக்கூறின் சிரிலிக் பெயரை அனுப்புவதன் மூலம், நீங்கள் பெறலாம் மற்றும் அதற்கேற்ப மதிப்புகளை அமைக்கலாம்:

#coding=cp1251 catalog = getattr(V82.Catalogs, "PersonalAccounts")

பின்வருபவை முக்கியம்: விவரங்களின் பெயர்கள், செயல்பாடுகள் மற்றும் முறைகளின் அளவுருக்கள் cp1251 குறியாக்கத்தில் அனுப்பப்பட வேண்டும். எனவே, முன்கூட்டியே குறியாக்கங்களுடன் குழப்பத்தைத் தவிர்க்க, கோப்பின் தொடக்கத்தில் அதை அறிவிப்பது அர்த்தமுள்ளதாக இருக்கிறது: #coding=cp1251. நீங்கள் அதன் குறியாக்கத்தைப் பற்றி கவலைப்படாமல் சரங்களை அனுப்பலாம். ஆனாலும்! 1C இலிருந்து பெறப்பட்ட அனைத்து சரங்களும் (அழைப்பு செயல்பாடுகள், வினவல்களின் முடிவுகள்) UTF-8 குறியாக்கத்தில் இருக்கும்.

1C சூழலில் வினவலைச் செயல்படுத்தும் குறியீட்டின் உதாரணம், முடிவு மூலம் மீண்டும் மீண்டும் தரவுத்தளத்தை SQLite இல் சேமிக்கிறது:

#coding=cp1251 q = """ தனிப்பட்ட கணக்குகளைத் தேர்ந்தெடுக்கவும். குறியீடு AS குறியீடு, தனிப்பட்ட கணக்குகள். கட்டிடம். தீர்வு. பெயர் + ", " + தனிப்பட்ட கணக்குகள். குறுகிய முகவரி AS முகவரி, தனிப்பட்ட கணக்குகள். சந்தாதாரர். பெயர் AS fio, தனிப்பட்ட கணக்குகள். பிரிவு. பெயர் AS psu, EXPRESS (கடைசியின் தனிப்பட்ட கணக்குகளின் சிறப்பியல்புகள். கோப்பகத்தின் மதிப்பு. பிராந்திய நெட்வொர்க் நிறுவனங்கள்) பெயர் AS tso, தனிப்பட்ட கணக்குகள். கட்டிடம். மக்கள்தொகை கொண்ட புள்ளி. பெயர் AS np, தனிப்பட்ட கணக்குகள். கட்டிடம். தெரு. AS தெரு, தனிப்பட்ட கணக்குகள். கட்டிடம், வீடு AS வீடு, தனிப்பட்ட கணக்கு a.MainRoom.RoomNumber as flat , PersonalAccounts.Division.Parent.Name AS mro from Directory கடைசி(, வகை பண்புகள் = VALUE(டைரக்டரி. குணாதிசயங்களின் வகைகள். பிராந்திய நெட்வொர்க் அமைப்பு)) AS குணாதிசயங்கள்L PersonalAccountsSliceகடைசி மென்பொருள் PersonalAccounts.Link = குணாதிசயங்கள் தனிப்பட்ட கணக்குகள்SliceLast.Object = """ queewry தேர்வு. .எக்ஸிகியூட்().தேர்வு( ) CONN = db.connect() CONN.query(models.Abonent).delete() while selection.Next(): abonent = models.Abonent() abonent.account = selection.code.strip() abonent.code = தேர்வு .குறியீடு abonent.fio = selection.fio abonent.address = selection.address abonent.psu = selection.psu abonent.tso = தேர்வு. .street abonent.house = selection.house abonent.flat = selection.flat abonent.mro = selection.mro CONN.add(abonent) CONN.commit()

இங்கே CONN என்பது SQLite தரவுத்தளத்துடனான இணைப்பு அமர்வு ஆகும். ஒரு வினவல் பொருள் உருவாக்கப்பட்டு அதன் உரை நிரப்பப்படுகிறது. மேலே குறிப்பிட்டுள்ளபடி, கோரிக்கை உரை cp1251 இல் இருக்க வேண்டும், அதற்கான குறியாக்கம் முதலில் அறிவிக்கப்படும். கோரிக்கையைச் செயல்படுத்திய பிறகு, அனைத்து சந்தாதாரர்களும் தரவுத்தளத்தில் நீக்கப்படுவார்கள், அதனால் நகல்களைச் சேர்க்க வேண்டாம், பின்னர் அவர்கள் ஒரு சுழற்சியில் சேர்க்கப்படுவார்கள் மற்றும் இறுதி உறுதிமொழி பின்வருமாறு.

கோரிக்கைகளுடன் பணிபுரியும் போது, ​​பின்வரும் விதிகளை நான் கண்டுபிடித்தேன்.

புலங்களைத் தேர்ந்தெடுக்கும்போது, ​​லத்தீன் எழுத்துக்களில் பெயர்களை ஒதுக்குங்கள்; getattr() க்குப் பதிலாக, ஒரு தேர்வி (டாட்) மூலம் அவற்றை அணுகுவது மிகவும் வசதியாக இருக்கும்.
- பழமையான தரவு வகைகளை மட்டும் தேர்வு செய்யவும்: சரங்கள், எண்கள், தேதி மற்றும் பூலியன். ஒரு பொருளுக்கு (ஆவணம், குறிப்பு புத்தகம்) இணைப்புகளைத் தேர்ந்தெடுக்க வேண்டாம்! இந்த சூழலில், உங்களுக்கு முற்றிலும் இணைப்புகள் தேவையில்லை மற்றும் தீங்கு விளைவிக்கக் கூடும், ஏனெனில் இணைப்பு ப்ராப் அல்லது முறைக்கான எந்த அழைப்பும் COM இணைப்பு மூலம் கோரிக்கையை ஏற்படுத்தும். நீங்கள் ஒரு லூப்பில் இணைப்பு பண்புகளை அணுகினால், அது மிகவும் மெதுவாக இருக்கும்.
- தேதி வகையின் புலத்தைத் தேர்ந்தெடுத்தால், அது பைடைம் பொருளாகத் திருப்பியளிக்கப்படும். இது ஒரு COM இணைப்பில் தேதி நேரத்தை அனுப்புவதற்கான ஒரு சிறப்பு தரவு வகையாகும். வழக்கமான தேதி நேரத்தைப் போல வேலை செய்வது அவ்வளவு வசதியானது அல்ல. நீங்கள் இந்த பொருளை int() க்கு அனுப்பினால், அது நேர முத்திரையை வழங்கும், அதில் இருந்து நீங்கள் fromtimestamp() முறையைப் பயன்படுத்தி தேதி நேரத்தைப் பெறலாம்.

இப்போது அச்சிடப்பட்ட ஆவணங்கள் எவ்வாறு உருவாகின்றன என்பதைப் பார்ப்போம். உண்மை என்னவென்றால், நுகர்வோருக்கு முன்பே தயாரிக்கப்பட்ட ஆவணங்களைப் பதிவிறக்குவதற்கான வாய்ப்பை வழங்க வேண்டும், எடுத்துக்காட்டாக, பணம் செலுத்தும் ரசீது அல்லது சமரச அறிக்கை. இந்த ஆவணங்கள் நிறுவப்பட்ட தேவைகளுக்கு ஏற்ப 1C இல் உருவாக்கப்படுகின்றன; பைத்தானில் அவற்றை செயல்படுத்த நிறைய நேரம் எடுக்கும். எனவே, 1C இல் ஆவணங்களை உருவாக்கி அவற்றை சேமிப்பது நல்லது எக்செல் வடிவம்.

இவ்வாறு, நல்லிணக்கச் சட்ட ஆவணம் ஒரு சிறப்பு மூலம் உருவாக்கப்பட்டது வெளிப்புற செயலாக்கம். 1C டெர்மினாலஜியை நன்கு அறிந்திராதவர்களுக்கு: செயலாக்கம் என்பது 1C சூழலில் இயங்கும் வகையில் அதன் சொந்த தொகுதி, படிவங்கள், வார்ப்புருக்கள் ஆகியவற்றைக் கொண்ட ஒரு தனித்த நிரலாகும். செயலாக்கத்தைத் தொடங்குவது, அதன் விவரங்களை நிரப்புவது மற்றும் 1C இல் பார்க்கும் நோக்கம் கொண்ட விரிதாள் ஆவணத்தை எங்களுக்கு வழங்கும் செயல்பாட்டை அழைக்க வேண்டியது அவசியம். இந்த ஆவணம் எக்செல் வடிவத்தில் சேமிக்கப்பட்டு சேவையகத்திற்கு நகலெடுக்கப்பட வேண்டும் அல்லது தரவுத்தளத்தில் பதிவு செய்யப்பட வேண்டும்.

இணைப்பு = getattr(V82.Catalogs, "System Reports").FindByDescription("Ellen Reconciliation Report") nav_url = V82.GetURL(இணைப்பு, "அறிக்கை") பெயர் = V82.ExternalReports.Connect(nav_Exterl.Reports.V82) உருவாக்கு (பெயர்) setattr(வெளி அறிக்கை, "தனிப்பட்ட கணக்கு", குறிப்பு) table_doc = ExternalReport.GetDoc() பாதை = V82.GetTempFileName("xls") table_doc.Write(path, V82 .SpreadsheetDocument.Report.SpreadsheetDocument) அறிக்கை

மேலே உள்ள பகுதி பின்வருவனவற்றைச் செய்கிறது: ஆவணத்தை உருவாக்கும் செயலாக்கம் இணைக்கப்பட்டுள்ளது. செயலாக்கமானது உள்ளமைவில் கட்டமைக்கப்பட்டு, வட்டில் அல்லது 1C தரவுத்தளத்தில் (சில கோப்பகத்தில்) சேமிக்கப்படும். செயலாக்கம் அடிக்கடி மாறுவதால், ஒவ்வொரு முறையும் உள்ளமைவைப் புதுப்பிக்காமல் இருப்பதற்காக, அடிக்கடி மாறும் செயலாக்கமானது "கணினி அறிக்கைகள்" கோப்பகத்தில், "மதிப்பு சேமிப்பு" பண்புக்கூறில், அறிக்கை என்ற பெயரில் சேமிக்கப்படும். தரவுத்தளத்திலிருந்து வட்டில் இறக்கி ஏற்றுவதன் மூலம் செயலாக்கத்தை துவக்கலாம் அல்லது GetURL() முறையைப் பயன்படுத்தி, அடைவு உறுப்பு மற்றும் பண்புக்கூறின் பெயருக்கு நீங்கள் இணைப்பை அனுப்ப வேண்டும். பெறப்பட்ட செயலாக்க பொருளுக்கு விவரங்களின் மதிப்புகளை நாங்கள் ஒதுக்குகிறோம், ஏற்றுமதி செய்யப்பட்ட செயல்பாட்டை GetDoc() அழைக்கிறோம், மேலும் ஒரு தற்காலிக எக்செல் கோப்பில் சேமிக்கப்பட்ட விரிதாள் ஆவணத்தைப் பெறுகிறோம். இந்த கோப்பின் உள்ளடக்கங்கள் SQlite தரவுத்தளத்தில் எழுதப்பட்டுள்ளன.

கருத்தில் கொள்ள வேண்டிய கடைசி விஷயம் 1C இல் தரவின் நிரல் நுழைவு ஆகும். நீங்கள் சந்தாதாரர்களிடமிருந்து சாட்சியங்களை உள்ளிட வேண்டும் என்று வைத்துக்கொள்வோம். இதைச் செய்ய, "சாட்சியத்தை எடுத்துக் கொள்ளும் செயல்" ஆவணத்தை உருவாக்கி செயல்படுத்த போதுமானது:

#coding=cp1251 acts = getattr(V82.Documents, "Act of taking Testimony") act = acts.CreateDocument() setattr(act, "Testimony", 1024.23) setattr(act, "Subscriber", "Ivanov") # Filling மற்ற விவரங்களில் ... act.Write()
தரவு உள்ளீடு இப்போது தானியங்கு.

எனவே, COM இணைப்பைப் பயன்படுத்தி நிரல் பதிவேற்றம் மற்றும் தரவைப் பதிவிறக்கும் முறையை அடிப்படையாகக் கொண்ட ஒரு முறையை நான் கோடிட்டுக் காட்டினேன். இந்த முறை கிட்டத்தட்ட ஒரு வருடமாக எனது நிறுவனத்தில் வெற்றிகரமாக செயல்பட்டு வருகிறது. 1C இலிருந்து உருவாக்கப்பட்ட தரவுத்தளம், 3 கட்டண முறைகள், இணையம் பெறுதல் (இணையம் வழியாக அட்டைகள் மூலம் பணம் செலுத்துதல்), அத்துடன் தனிப்பட்ட கணக்கு ஆகியவற்றிற்கு சேவை செய்கிறது. கூடுதலாக, அவை தரவுத்தளத்துடன் இணைக்கப்படுகின்றன பல்வேறு ஸ்கிரிப்டுகள்வழக்கத்தை தானியக்கமாக்க.

முறையின் குறைபாடுகள் இருந்தபோதிலும் (மெதுவான COM இணைப்பு வேகம்), பொதுவாக இது நிலையானதாக செயல்படுகிறது. எங்களிடம் பிளாட்ஃபார்ம்-சுயாதீன வடிவத்தில் (SQLite) தரவு உள்ளது, இது எந்த மொழியிலிருந்தும் வேலை செய்ய முடியும். குறியீட்டின் முக்கிய பகுதி பைத்தானில் எழுதப்பட்டுள்ளது, அதாவது 1C இல் நீங்கள் கனவு காண முடியாத பல கருவிகள் மற்றும் நுட்பங்கள் உள்ளன.

இது ஒன்று சாத்தியமான வழிகள் 1C உடனான தொடர்பு. இது புதியது அல்ல என்றும் ஏற்கனவே யாரோ ஒருவர் பரிசோதித்து மேம்படுத்தப்பட்டிருக்கலாம் என்றும் நான் உறுதியாக நம்புகிறேன். இருப்பினும், நானே அடியெடுத்து வைத்த ஆபத்துக்களில் இருந்து உங்களைப் பாதுகாப்பதற்காக, முடிந்தவரை செயல்முறையின் விவரங்களை முன்வைக்க முயற்சித்தேன்.

நீங்கள் அனைவருக்கும் நல்வாழ்த்துக்களை விரும்புகிறேன், மேலும் 1C ஆனது உருவாக்கப்பட்டதைப் போல பயமாக இல்லை என்பதை நினைவில் கொள்ளுங்கள்!

1C தரவுத்தளங்களுக்கு இடையில் தரவு பரிமாற்றத்திற்கான விருப்பங்களில் ஒன்று COM இணைப்பு வழியாக பரிமாற்றம் ஆகும்.

COM இணைப்பைப் பயன்படுத்தி, நீங்கள் ஒரு 1C தரவுத்தளத்திலிருந்து மற்றொன்றுடன் இணைக்கலாம் மற்றும் தரவைப் படிக்கலாம் அல்லது எழுதலாம். தரவுத்தளங்களின் கிளையன்ட்-சர்வர் பதிப்புகள் மற்றும் கோப்பு தரவுத்தளங்களில் இந்த முறை பயன்படுத்தப்படலாம். இந்த கட்டுரையில் இந்த வகை இணைப்பின் எடுத்துக்காட்டுகளைப் பார்ப்போம். எடுத்துக்காட்டுகள் இயங்குதளம் 8.2 ஐப் பயன்படுத்துகின்றன.

1C பயன்பாட்டிற்கு நீங்கள் இரண்டு வகையான COM பொருள்களை உருவாக்கலாம். இது V82. விண்ணப்பம்மற்றும் V82.COM இணைப்பான். ஒரு வேளை V82. விண்ணப்பம் 1C பயன்பாட்டின் கிட்டத்தட்ட முழு அளவிலான நகல் தொடங்கப்பட்டது. பயன்பாட்டின் விஷயத்தில் V82.COM இணைப்பான்ஒரு சிறிய சர்வர் பகுதி தொடங்கப்பட்டது.
இந்த வழக்கில் செயல்பாட்டின் வேகம் அதிகமாக உள்ளது, ஆனால் சில செயல்பாடுகள் கிடைக்காமல் போகலாம். குறிப்பாக, வெளிப்புற இணைப்புகளுடன் பணிபுரியும் சொத்து அமைக்கப்படாத படிவங்கள் மற்றும் பொதுவான தொகுதிகளுடன் பணிபுரிதல். பெரும்பாலும் நீங்கள் பயன்படுத்த வேண்டும் V82.COM இணைப்பான்மற்றும் செயல்பாடு இல்லாத நிலையில் மட்டுமே V82. விண்ணப்பம். இயக்க வேகத்தில் உள்ள வேறுபாடு பெரிய அளவிலான தரவுத்தளங்களில் குறிப்பாக கவனிக்கத்தக்கது.

எனவே ஆரம்பிக்கலாம்

  1. COM பொருளை உருவாக்குவோம்
    • க்கு V82. விண்ணப்பம்இணைப்பு = புதிய COMObject("V82.Application" );
    • க்கு V82.COM இணைப்பான்இணைப்பு = புதிய COMObject("V82.COMConnector" );
  2. இணைப்பு சரத்தை உருவாக்குவோம்
    • தரவுத்தளத்தின் சர்வர் பதிப்பிற்கு ConnectionString = "Srvr = " "ServerName" ";Ref = " "BaseName" ;
    • தரவுத்தளத்தின் கோப்பு பதிப்பிற்கு ConnectionString = "கோப்பு = " "PathKBase" "; Usr = பயனர்பெயர்; Pwd = கடவுச்சொல்";
  3. தரவுத்தளத்துடன் இணைக்கிறதுமுயற்சி இணைப்பு = இணைப்பு. இணைப்பு (இணைப்பு சரம்) ; விதிவிலக்கு செய்தி = New MessageToUser; செய்தி. உரை = + ErrorDescription() ; செய்தி. தெரிவிக்க() ; முடிவு முயற்சி ;
  4. தரவுத்தளத்திலிருந்து துண்டிக்கப்படுகிறதுஇணைப்பு = வரையறுக்கப்படாத ;

    பொருளுக்கு V82. விண்ணப்பம்இணைப்பை நிறுத்த வேண்டியது அவசியம், இல்லையெனில் ஒரு முழுமையற்ற அமர்வு இருக்கும், அது கைமுறையாக நீக்கப்பட வேண்டும். ஒரு வேளை V82.COM இணைப்பான்இணைப்பு செய்யப்பட்ட செயல்முறை முடிந்ததும் இணைப்பு தானாகவே உடைந்து விடுகிறது.மேலும் ஒரு சிறிய புள்ளி உள்ளது.

    யாருடைய கீழ் இணைப்பு ஏற்படுத்தப்படுகிறதோ அந்த பயனருக்கு, அதன் அமைப்புகளில் "நிரலை மூடும் போது உறுதிப்படுத்தல் கோரிக்கை" தேர்வுப்பெட்டியை முடக்க வேண்டும்.

இப்போது அனைத்து குறியீடுகளையும் ஒன்றாக இணைக்கலாம்

இணைப்பு = புதிய COMObject("V82.Application" ); //இணைப்பு = புதிய COMObject("V82.COMConnector"); ConnectionString = "Srvr = " "Server1C" ";Ref = " "MyBase" "; Usr = Petya; Pwd = 123" ; //ConnectionString = "File = ""С:\MyBase""; Usr = Petya; Pwd = 123";முயற்சி இணைப்பு = இணைப்பு. இணைப்பு (இணைப்பு சரம்) ; விதிவிலக்கு செய்தி = New MessageToUser; செய்தி. உரை = "தரவுத்தளத்துடன் இணைக்க முடியவில்லை"+ விளக்கம் பிழை() ; செய்தி. தெரிவிக்க() ; முடிவு முயற்சி ; இணைப்பு = வரையறுக்கப்படாத ;

இணைப்பு வகைக்கு V82. விண்ணப்பம்ஆரம்பத்தில் உருவாக்கப்பட்ட COM பொருளுக்கு இந்த முறை பயன்படுத்தப்படுகிறது V82.COM இணைப்பான்முறை இணைப்புக்கு பயன்படுத்தப்படுகிறது. கோரிக்கையுடன் மேலும் பணி தொடரும் நிலையான பொருள் 1C. குறியீட்டில் இது போல் தெரிகிறது:

கோரிக்கை = இணைப்பு. புதிய பொருள் ("கோரிக்கை" ); //இதற்கு V82.COM இணைப்பான் கோரிக்கை = இணைப்பு. புதிய பொருள் ("கோரிக்கை" ); //இதற்கு V82. விண்ணப்பம் கோரிக்கை. உரை = "தேர்ந்தெடு | நிறுவனங்களின் நிலைகள் குறியீடு, | நிறுவனங்களின் பதவிகள்.பெயர்|இருந்து | டைரக்டரி. நிறுவனங்களின் நிலைகள் AS நிறுவனங்களின் நிலைகள்"; முடிவு = கோரிக்கை. ஓடு(); மாதிரி = முடிவு. தேர்வு() ; பை தேர்வு. Next() Loop EndLoop ;

பதிப்பு 1C: எண்டர்பிரைஸ் 8.3 க்கு COM பொருள்களை உருவாக்கும் போது நீங்கள் பயன்படுத்த வேண்டியதைத் தவிர அனைத்தும் மாறாமல் இருக்கும் "V83.COMConnector"அல்லது "V83. பயன்பாடு".

) அது சரி

அதே சமயம், 10 புள்ளிகளைக் கூட எட்டாத வெளியீடுகள் வெறுமனே “டேக் ஆஃப்” செய்யப்பட்டதை நான் ஒன்றுக்கு மேற்பட்ட முறை பார்த்திருக்கிறேன்.
இது ஏன் நடந்தது? யாரோ அவர்களை தெளிவாக விரும்பியதால் வெளிப்படையாக.


இதைத்தான் நான் சொல்கிறேன், ரேட்டிங் கட்டுரையைப் படிக்காமல் உங்களுக்கு எவ்வளவு தேவை என்பதைப் புரிந்துகொள்வது அல்லது அதை மிகவும் பழமையானதாக மதிப்பிடாமல் +/- மதிப்பிடுவது நன்றாக இருக்கும். நான் விரும்பியதைப் பொறுத்தவரை, நான் அதை இந்த வழியில் சரிசெய்வேன்: நட்சத்திரங்கள் சீரமைக்கப்பட்டதாலும், தளத்தில் நிறைய பேர் கூடி, பலர் விரும்பியதாலும், இது மிகவும் லாபகரமானது, இது ஒரு வாய்ப்பு விஷயம் என்பதை நீங்களே புரிந்துகொள்கிறீர்கள். கட்டுரை வெளியேறியவுடன் முகப்பு பக்கம்பின்னர் அதை ஏற்கனவே கோரிக்கை மூலம் மட்டுமே கண்டுபிடிக்க முடியும், எனவே அனைவரும் வாக்குகளால் கடந்து செல்கின்றனர். மேலும், நான் புரிந்து கொண்ட வரையில், நிலையான கருத்துகள் = கட்டுரையின் விளம்பரம் அதை பிரதான பக்கத்தில் பராமரிக்க உங்களை அனுமதிக்கிறது.
அதனால்தான் அவர்கள் பொதுத் தெருக்களில் கடைகளை வைக்கிறார்கள் - எல்லாவற்றிற்கும் மேலாக, பெரும்பாலும் முக்கியமானது பொருட்களின் தரம் மற்றும் பொருத்தம் அல்ல, ஆனால் அந்த இடத்தின் போக்குவரத்து; நடைபயிற்சி மக்கள் பெரும்பாலும் அடுத்த நாள் தூக்கி எறிந்துவிடும் ஒன்றை வாங்குகிறார்கள். செயல்முறையின் பொருட்டு. இது நீண்ட காலமாக அனைவருக்கும் தெரிந்த ஒரு நோய் - ஷாப்பிங் போதை. அல்லது ஓட்டத்தை அதிகரிப்பது சரியான வாங்குபவரின் வாய்ப்பை அதிகரிக்கிறது.

மற்றும் நன்மை தீமைகள் ... - இது ஒரு வகையான "நன்றி" ஆகும்


அந்த. ஒரு கழித்தல் "நன்றி" என்றும் கணக்கிடப்படுமா? இதுபோன்ற சந்தர்ப்பங்களில் இதைப் பயன்படுத்த வேண்டுமா, மற்றவர்கள் எவ்வளவு சுவாரஸ்யமாக நினைக்கிறார்கள் என்பது குறித்த உங்கள் கருத்தை அறிய விரும்பினேன். கட்டுரை தீங்கிழைக்கும்/மோசமாக இருக்கும் போது அல்லது அது உங்களுக்குப் பயனற்றதாக/வெறுமையாக இருக்கும் போது நீங்கள் அதை வைக்க வேண்டுமா?
என் கருத்துப்படி, கட்டுரை ஒரு எளிய மதிப்பீடு அதிகரிப்பு போல் தெரிகிறது, ஏனெனில்:
1. நான் மேற்கோள் காட்டிய வகைகளில் உள்ள சிக்கல் ஆசிரியரால் முற்றிலும் புறக்கணிக்கப்பட்டது, இருப்பினும் அவர் கருத்துகளை எழுதுவதற்கு மிகவும் சோம்பேறியாக இல்லை.
2. கட்டுரையில் ஒரு தெளிவான பிழை உள்ளது: இது ஒரே வழி என்று கூறப்படுகிறது

V82 = புதிய COMObject("V82.ComConnector"); குறியீடு = AccountCOM.Code;


ஆனால் இதுபோன்ற செயலாக்கத்தைப் பயன்படுத்தி என்னால் எளிதாகச் செய்ய முடியும்:

அறிக்கை(அடிப்படை. கோப்பகங்கள். எதிர் கட்சிகள். பெயர் ("எல்எல்சி") மூலம் கண்டறியவும். குறியீடு);


மற்றும் எல்லாம் நன்றாக இருக்கிறது! நான் இணைப்பு V82.ComConnector ஐ தேர்வு செய்கிறேன்
அவரது கட்டுரையில் சுட்டிக்காட்டப்பட்ட சிக்கல்கள் இருப்பதை ஆசிரியர் கவலைப்படவில்லை என்பது எப்படியோ விசித்திரமானது, ஆனால் அவர் எந்த வகையிலும் எதிர்வினையாற்றவில்லை.
3. ஆனால் "வகுப்பு இல்லை" என்ற பிழை தோன்றும் போது இன்னும் சிக்கல் உள்ளது
4. ஆனால் 8.2 நிறுவப்படும் போது ஒரு சிக்கல் உள்ளது, பின்னர் 8.1 நிறுவப்பட்டது - நிலையான UT-BP பரிமாற்றத்துடன் OLE/COM வழியாக பரிமாற்றம் செய்ய முயற்சிக்கவும்!
5. நீங்கள் OLE/COM வழியாக உலகளாவிய ரீதியில் இணைக்க அனுமதிக்கும் தளத்தின் முக்கிய செயலாக்கத்தைக் குறிப்பிட முடியுமா, இதனால் ஆரம்பநிலையாளர்கள் நேரத்தை வீணடிக்க வேண்டாம், நீங்கள் அவர்களுக்காக எழுதுங்கள்! சில காரணங்களால் அவள் படம் உங்கள் காட்சியில் உள்ளது, ஏன்? இதன் விளைவாக, தகுதிகளில் 2 வார்த்தைகள், மேலும் 6 திரைக்குப் பின்னால்.

பொதுவாக, நான் சேற்றை வீசுவதில்லை, ஆனால் குறிப்பிட்ட இடைவெளிகளை சுட்டிக்காட்டுகிறேன், ஆனால் பூஜ்ஜிய எதிர்வினை உள்ளது. நீங்கள் பகிர்ந்து கொள்ளும் அனுபவமாக இது இருந்தால், அது எப்படியோ பிழையானது மற்றும் முழுமையற்றது.
எனது கருத்து என்னவென்றால், ஆசிரியருக்கு அனைத்து குறைபாடுகளையும் சேகரிக்க விருப்பம் இருந்தால், அவர் குறைந்தபட்சம் மற்றவர்களின் அனுபவங்களைக் கேட்க முடியும், மேலும் கருத்துகளை எடுக்க முடியாது. ஆசிரியரை விட அதைப் படிப்பவருக்கு அதிகம் தெரியும் என்று ஒரு சூழ்நிலை உடனடியாக எழுகிறது, அவர்கள் அவரிடம் (சில நேரங்களில் தவறாக), அவரும் சண்டையிடுகிறார். இதன் விளைவாக, அனைத்து தகவல்களும் கட்டுரையில் இல்லை, ஆனால் கருத்துகளில்! வேடிக்கை! இது அடிக்கடி நிகழ்கிறது, ஆனால் நீங்கள் சிறந்ததை விரும்புகிறீர்கள் என்பதில் கவனம் செலுத்த வேண்டிய அவசியமில்லை - நான் சிறந்ததைக் காட்டுகிறேன், மற்றவர்கள் அதைக் காட்டுகிறார்கள்! இதை கட்டுரையில் சேர்க்கவும், அது பயனுள்ளதாக இருக்கும்; இந்த மோதலைப் படிப்பதில் அனைவருக்கும் ஆர்வம் இல்லை.

ஒரு 1C உள்ளமைவிலிருந்து மற்றொன்றுக்கு தரவை மாற்றுவதற்கான ஒரு வழி மென்பொருள் இணைப்பு COM ஐப் பயன்படுத்துகிறது. பல நிறுவனங்கள் பல்வேறு தரவுத்தளங்களைப் பயன்படுத்துகின்றன, அவற்றுக்கிடையே சில இணைப்புகள் மற்றும் சார்புகள் இருக்க வேண்டும். தரவை மாற்றுவது மட்டுமல்லாமல், சில தரவு செயலாக்கத்தையும் செய்ய வேண்டியது அவசியம் என்றால், COM இணைப்பு உகந்த பொறிமுறையாக இருக்கும். மற்றொரு 1C தரவுத்தளத்திலிருந்து தரவை பகுப்பாய்வு செய்யும் திறன் எந்தவொரு டெவலப்பருக்கும் பயனுள்ளதாக இருக்கும்.

COM வழியாக 1C தரவுத்தளத்துடன் இணைக்கிறோம்

1C இல் COM இணைப்பைச் செயல்படுத்த, COMConnector எனப்படும் சிறப்பு வழிமுறை பயன்படுத்தப்படுகிறது. இந்த பொருள் தளத்துடன் நிறுவப்பட்டு தகவல்தொடர்புக்கு பயன்படுத்தப்படுகிறது தகவல் அடிப்படைகள். 8.2 மற்றும் 8.3 பதிப்புகளுக்கு வெவ்வேறு பெயர்களைக் கொண்ட பொருள்கள் பயன்படுத்தப்படுகின்றன என்பதை கவனத்தில் கொள்ள வேண்டும் - முறையே “V82.COMConnector” மற்றும் “V83.COMConnector”.

தரவுத்தளத்திற்கான COM இணைப்பின் கால அளவு உரிமம் செலவாகும் என்பதை நினைவில் கொள்ளுங்கள் - பல இணைப்புகளை ஒரே நேரத்தில் செயல்படுத்துவதன் மூலம் எடுத்துச் செல்ல வேண்டாம். குறைந்த எண்ணிக்கையிலான உரிமங்களைக் கொண்ட நிறுவனங்களுக்கு இது மிகவும் முக்கியமானது. பயன்படுத்தி இந்த சிக்கலை தீர்க்க முடியும் வழக்கமான பணிகள்இன்போபேஸில் செயலில் உள்ள பயனர் இணைப்புகள் இல்லாதபோது செயல்படுத்துகிறது.

மற்றொரு தரவுத்தளத்துடன் இணைக்க மற்றும் தேவையான தகவலைக் கோர, பின்வரும் தரவை நீங்கள் அறிந்திருக்க வேண்டும்:

  1. இது என்ன வகை - கோப்பு அல்லது கிளையன்ட்-சர்வர்;
  2. அது எங்கே அமைந்துள்ளது;
  3. உள்நுழைய என்ன பெயர் மற்றும் கடவுச்சொல்லைப் பயன்படுத்தலாம்?
  4. நீங்கள் எந்த தரவுகளில் ஆர்வமாக உள்ளீர்கள்?

முதல் மூன்று புள்ளிகளிலிருந்து, COM இணைப்பைச் செயல்படுத்த, நீங்கள் அளவுருக்களின் சரத்தை உருவாக்க வேண்டும். தகவல் பாதுகாப்பு வகையைப் பொறுத்து, அது மாறுபடும் தோற்றம். பெறப்பட்ட சரத்தைப் பயன்படுத்தி, ஒரு இணைப்பு செய்யப்படுகிறது, அதன் உதவியுடன் நீங்கள் எந்த முறைகளையும் பயன்படுத்தி பகுப்பாய்வு மற்றும் செயலாக்கத்திற்காக மற்றொரு தரவுத்தளத்திலிருந்து தரவை சேகரிக்கலாம்.

இணைப்பு அளவுருக்கள்FileIB = "File=""Path_to_database""; Usr=""User_name"";Pwd=""கடவுச்சொல்"""; இணைப்பு அளவுருக்கள்ClientServerIB = "Srvr=""Server_Name""; Ref=""Database_Name""; Usr=""User_Name""; Pwd=""கடவுச்சொல்""";

இணைப்பு செயல்பாடு எளிமையானது மற்றும் அனைத்து அளவுருக்கள் சரியாக குறிப்பிடப்பட்டிருந்தால் எந்த கேள்வியையும் எழுப்பக்கூடாது. பிழைத்திருத்தம் மற்றும் பகுப்பாய்வை விரைவுபடுத்த சாத்தியமான பிழைகள்"முயற்சி" கட்டுமானத்தில் இணைப்பை இணைப்பது நல்லது. செயல்பாடு "COM பொருள்" வகையின் மதிப்பை வழங்கும், அதனுடன் தேவையான தரவைப் பெற நீங்கள் செயல்படுவீர்கள்.

&OnServer Function ConnectToBase() exportConnectionIB Parameters = "File=""E:\1c database\ERP""; Usr=""Administrator"";Pwd=""1"""; V83COMCon= புதிய COMObject("V83.COMConnector"); முயற்சி திரும்ப V83COMCon.Connect(IB இணைப்பு அளவுருக்கள்); விதிவிலக்கு அறிக்கை(பிழை விளக்கம்()); Return Undefined; EndAttempt; இறுதிச் செயல்பாடு

COM இணைப்பு மூலம், நீங்கள் தரவைத் தேர்ந்தெடுப்பது மட்டுமல்லாமல், நீங்கள் இணைக்கும் தரவுத்தளத்தில் சேர்க்கலாம். COM பொருள் வழியாக 4 பழமையான தரவு வகைகளை மாற்ற முடியும் என்பதை நினைவில் கொள்ளுங்கள். இயங்குதளத்தின் உள்ளமைந்த தேடல் செயல்பாடுகளைப் பயன்படுத்தி மற்ற வகைகளைக் குறிப்பிட வேண்டும். உலகளாவிய இயங்குதள செயல்பாடுகள் COM இணைப்பு வழியாகவும் அழைக்கப்படுகின்றன என்பதை நினைவில் கொள்ளவும்.

1C தரவுத்தளத்திலிருந்து தரவைப் பெறுகிறோம்

நீங்கள் விரும்பிய பொருளைப் பெற்ற பிறகு, நீங்கள் மற்றொரு தரவுத்தளத்திலிருந்து தரவைப் படிக்க வேண்டும். இதைச் செய்ய, செயல்பாட்டிலிருந்து "COM பொருள்" வகையின் பெறப்பட்ட மதிப்பைப் பயன்படுத்தி 1C 8.3 இல் COM இணைப்பு வழியாக ஒரு கோரிக்கையைப் பயன்படுத்துகிறோம். முதலில் தரவுத்தளத்துடன் இணைத்து கோரிக்கையை நிறைவேற்றுவது முக்கியம். நியூஆப்ஜெக்ட் முறை மூலம் செயல்படுத்தல் நிகழ்கிறது, சரம் வடிவத்தில் பொருள் வகையை ஒரு அளவுருவாகக் குறிப்பிடுகிறது - “கோரிக்கை”.

&OnServer செயல்முறை TestCOMOnServer() இணைப்பு = ConnectToBase(); TypeValue(இணைப்பு) வகை("வரையறுக்கப்படாதது") எனில் RequestBPZO = Connection.NewObject("Request"); RequestBPZO.Text = "முதல் 15 ஐத் தேர்வுசெய்க தேர்ந்தெடு = RequestBPZO. Execute().select(); அதே நேரத்தில் Selection.next() loop Report(Selection.Number); எண்ட்சைக்கிள்; முடிவு என்றால்; நடைமுறையின் முடிவு >

எடுத்துக்காட்டாக, ஒரு குறிப்பிட்ட துறையின் பயனர்களைப் பற்றிய தகவலைப் பெற, அளவுருக்கள் மூலம் கோரிக்கையில் ஒரு நிபந்தனையை அமைப்போம். ஒரு அளவுரு ஒரு எளிய வகையாக இருக்கும் - ஒரு சரம், மற்றும் பிரிவு "எண்டர்பிரைஸ் ஸ்ட்ரக்சர்" என்ற அடைவு உறுப்புக்கான இணைப்பாக இருக்கும். வினவலின் முடிவு, COM இணைப்பு ஏற்பட்ட தரவுத்தளத்தில் இருக்கும் வகையின் பட்டியலிடப்பட்ட புலங்களைக் கொண்ட அட்டவணையாகும். நீங்கள் அவற்றை மற்ற வகைகளுக்கு மாற்ற வேண்டும் என்றால், நிலையான இயங்குதள செயல்பாடுகளைப் பயன்படுத்தவும்:

  • வரி ();
  • எண் ();
  • நாளில்().
RequestBPZO = Connection.NewObject("கோரிக்கை"); RequestBPZO.Text = "முதல் 15 ஐத் தேர்ந்தெடு | டைரக்டரியூசர்.பெயரை பெயர் கோரிக்கை BPZO.SetParameter("தேவையான துறை", இணைப்பு. கோப்பகங்கள். நிறுவன அமைப்பு. குறியீடு மூலம் கண்டுபிடி("00-000023")); RequestBPZO.SetParameter("தேவையான பெயர்","எகடெரினா"); தேர்ந்தெடு = RequestBPZO. Execute().select(); அதே நேரத்தில் Selection.next() loop Report(Selection.Name); எண்ட்சைக்கிள்;

பல அளவுருக்கள், எடுத்துக்காட்டாக, துறைகள் அடிப்படையில் தேர்வு செய்ய தரவுத்தளத்திற்கு ஒரு வரிசையை மாற்ற வேண்டும் என்றால், NewObject கட்டளையும் பயன்படுத்தப்படுகிறது. இதேபோல், நீங்கள் ஒரு பட்டியல் அல்லது மதிப்புகளின் அட்டவணையை அனுப்பலாம், அவற்றை ஒரு இணைப்பு மூலம் மற்றொரு தரவுத்தளத்தின் கூறுகளுடன் நிரப்பலாம். தற்போதுள்ள அனைத்து பொருள்களின் முறைகள் மற்றும் தளத்தின் வழிமுறைகள் தேடுவதற்கு உங்களுக்குக் கிடைக்கின்றன.

RequestBPZO = Connection.NewObject.("கோரிக்கை"); RequestBPZO.Text = "முதல் 15 ஐத் தேர்ந்தெடு | டைரக்டரியூசர்.பெயரை பெயர் "; துறைகளின் வரிசை = இணைப்பு.NewObject("அரே"); துறைகளின் வரிசை. சேர்(இணைப்பு. அடைவுகள். நிறுவன அமைப்பு. குறியீட்டின் மூலம் கண்டுபிடி("00-000023")); துறைகளின் வரிசை. சேர்(இணைப்பு. அடைவுகள். நிறுவன அமைப்பு. குறியீட்டின் மூலம் கண்டுபிடி("00-000038")); துறைகளின் வரிசை. சேர்(இணைப்பு. அடைவுகள். நிறுவன அமைப்பு. குறியீட்டின் மூலம் கண்டுபிடி("00-000046")); கோரிக்கை BPZO.SetParameter("தேவையான துறை", துறைகளின் வரிசை); RequestBPZO.SetParameter("தேவையான பெயர்","எகடெரினா"); தேர்ந்தெடு = RequestBPZO. Execute().select(); அதே நேரத்தில் Selection.next() loop Report(Selection.Name); எண்ட்சைக்கிள்;

ஆவணங்கள் அல்லது அடைவு கூறுகளை மாற்றும் போது, ​​ஒரு குறிப்பிட்ட பொருளின் பரிமாற்றத்தை கட்டுப்படுத்தும் கேள்வி எப்போதும் எழுகிறது. COM இணைப்புகளின் உதவியுடன், இத்தகைய சிக்கல்களை ஒரு தனித்துவமான அடையாளங்காட்டி மூலம் தீர்க்க முடியும். "GetLink" செயல்பாட்டைப் பயன்படுத்தி, அடையாளங்காட்டியை சரமாகப் பயன்படுத்தி, தற்போதைய தகவல் பாதுகாப்பிலிருந்து அடையாளங்காட்டி மூலம் செருகுநிரல் தரவுத்தளத்தில் ஒரு பொருளைக் கண்டறிய வேண்டும். ஒன்று கிடைக்கவில்லை என்றால், COM இணைப்பைப் பயன்படுத்தி அதை உருவாக்கலாம்.

StrIdent = String(Directories.Users.FindByCode("00-0000313").UniqueIdentifier()); மதிப்பு நிரப்பப்படவில்லை என்றால்(Connection.Directories.Users.GetLink(Connection.NewObject("UniqueIdentifier", StrIdent))) பின்னர் NewUser = Connection.Directories.Users.CreateItem(); NewUser.Name = Directories.Users.FindByCode("00-0000313").பெயர்; NewUser.Individual = Directories.Users.FindByCode("00-0000313").தனிநபர்; NewUser.Write(); முடிவு என்றால்;

மேலும், ஒரு COM இணைப்பிற்கு பொதுவான 1C மாட்யூல்களில் இருந்து நடைமுறைகள் மற்றும் செயல்பாடுகளைப் பயன்படுத்த உரிமை உண்டு "வெளி இணைப்பு" பண்புடன். இந்த நிபந்தனைக்கு கூடுதலாக, அழைக்கப்படும் செயல்பாடு அல்லது செயல்முறை ஏற்றுமதியாக இருக்க வேண்டும் மற்றும் சேவையகத்தில் செய்யப்படும் ஊடாடும் செயல்களைச் சேர்க்கக்கூடாது. இல்லையெனில், செயல்பாடு தவறானது என்ற பிழையைக் காண்பீர்கள்.

கலவை..; மாறி செயல்பாடு = இணைப்பு..; செயல்பாடு அழைப்பு>பொது தொகுதி பெயர்>செயல்முறை அழைப்பு>பொது தொகுதி பெயர்>

1C இல் உள்ள மற்றொரு தரவுத்தளத்துடன் வெளிப்புற இணைப்புக்கான சாத்தியக்கூறுகள் மிகவும் விரிவானவை மற்றும் பல பணிகளைச் செய்ய உங்களை அனுமதிக்கும். கருவிகளை சரியாக மதிப்பீடு செய்து தேர்வு செய்வது முக்கியம் உகந்த தீர்வு. பெரும்பாலான சந்தர்ப்பங்களில், இந்த திறன் அனுபவத்துடன் அல்லது அனுபவம் வாய்ந்த நிபுணர்களின் பணியின் எடுத்துக்காட்டுகளைப் படிப்பதன் மூலம் மட்டுமே தோன்றும்.