பைனரி தரவை 1c கோப்பில் சேமிப்பது எப்படி. பைனரி தரவுகளுடன் பணிபுரிதல். முட்டுகளிலிருந்து தரவைப் படித்தல்

அச்சிட (Ctrl+P)

16.3. பைனரி தரவுகளுடன் பணிபுரிதல்

16.3.1. பொதுவான செய்தி

பயன்பாட்டு தீர்வுகளை செயல்படுத்தும் போது, ​​பல்வேறு பைனரி தரவுகளை பகுப்பாய்வு செய்ய வேண்டிய சூழ்நிலைகள் இருக்கலாம். எடுத்துக்காட்டாக, கையொப்பத்தைப் பயன்படுத்தி கோப்பு வகையைத் தீர்மானிக்க வேண்டும் அல்லது ஒரு படத்துடன் சில கையாளுதல்களைச் செய்ய வேண்டும். பைனரி தரவுகளுடன் பணிபுரிய, 1C:Enterprise சிறப்பு மென்பொருள் இடைமுகங்களை வழங்குகிறது. அடுத்து, பைனரி தரவுகளுடன் வேலை செய்வதற்கான சாத்தியக்கூறுகளைப் பார்ப்போம்.
பைனரி தரவுகளுடனான அனைத்து வேலைகளும் ஸ்ட்ரீம் என்ற கருத்தை அடிப்படையாகக் கொண்டது. ஓட்டம்ஒரு தன்னிச்சையான (பொது வழக்கில்) தரவு மூலத்தின் (ஸ்ட்ரீம் பொருள்) தர்க்கரீதியான பொதுமைப்படுத்தலாகும். எந்தவொரு மூலத்துடனும் தொடர்புபடுத்தப்படாத ஒரு சுயாதீன ஸ்ட்ரீம் பொருளை உருவாக்கும் திறனை கணினி வழங்கவில்லை. ஆனால் உருவாக்கக்கூடிய பெறப்பட்ட பொருள்கள் உள்ளன - வட்டில் உள்ள கோப்புடன் தொடர்புடைய ஸ்ட்ரீம் (FileStream object) அல்லது நினைவகத்தில் உருவாக்கப்பட்ட ஸ்ட்ரீம் (MemoryStream object). ஒரு ஸ்ட்ரீம் தரவைப் படிக்கவும் எழுதவும் உங்களை அனுமதிக்கிறது. சில செயல்பாடுகளைச் செய்வதற்கான சாத்தியக்கூறுகளைத் தீர்மானிக்க, ஸ்ட்ரீம் (மற்றும் பெறப்பட்ட பொருள்கள்) சிறப்பு முறைகளைக் கொண்டுள்ளது, இது எதைத் தீர்மானிக்க உங்களை அனுமதிக்கிறது.
இந்த நூல் மூலம் செயல்பாடுகள் கிடைக்கின்றன (முறைகள் கிடைக்கும் பதிவு(), கிடைக்கும் படிக்க (), கிடைக்கும் மாற்றம் நிலை()).
நீங்கள் ஒரு உயர் மட்டத்தில் ஸ்ட்ரீமுடன் பணிபுரிய வேண்டும் என்றால், குறிப்பாக, ஒரு எண் (வெவ்வேறு பிட் ஆழம்) அல்லது ஒரு சரம் போன்ற தரவைப் படிக்க/எழுத, DataRead/DataWrite ஆப்ஜெக்ட்கள் இதற்காக வடிவமைக்கப்பட்டுள்ளன. இந்த பொருட்களைப் பயன்படுத்தி, ஸ்ட்ரீமில் அமைந்துள்ள பைனரி தரவுகளுக்கு நீங்கள் மிகவும் கட்டமைக்கப்பட்ட அணுகுமுறையை எடுக்கலாம். எனவே, எடுத்துக்காட்டாக, ஒரு கோப்பின் வடிவமைப்பை அறிந்து, அத்தகைய கோப்பை நீங்கள் மிகவும் வசதியாகப் படிக்கலாம், தலைப்புகளிலிருந்து தேவையான தரவைப் பெறலாம் (இது ஒரு விதியாக, வகை எண் மற்றும் சரத்தால் குறிப்பிடப்படுகிறது), தேவையற்ற தரவுத் தொகுதிகளைத் தவிர்க்கவும் மற்றும் செயலாக்கத்திற்கு தேவையானவற்றை ஏற்றுகிறது.
பைனரி தரவுகளுடன் பணிபுரியும் பொதுவான திட்டத்தை பின்வருமாறு குறிப்பிடலாம்:

  1. ஸ்ட்ரீம் பெறுதல் செயலில் உள்ளது
  2. டேட்டா ரீடர் அல்லது டேட்டா ரைட்டர் ஆப்ஜெக்ட் உருவாக்கப்பட்டது.
  3. படி 2 இல் உருவாக்கப்பட்ட பொருளைப் பயன்படுத்தி, தேவையான செயல்கள் செய்யப்படுகின்றன.
  4. படி 2 இல் உருவாக்கப்பட்ட பொருள் மூடப்பட்டுள்ளது.
  5. மேலும் செயல்பாடுகள் தேவையில்லை என்றால், படி 1 இல் பெறப்பட்ட ஸ்ட்ரீம் மூடப்படும்.
  6. நீங்கள் ஸ்ட்ரீமுடன் தொடர்ந்து பணியாற்ற வேண்டும் என்றால், நீங்கள் ஸ்ட்ரீமில் ஒரு புதிய நிலையை அமைக்கலாம் (இந்தச் செயல்பாடு ஆதரிக்கப்பட்டால்) மற்றும் படி 2 இலிருந்து வேலையைத் தொடரவும்.

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

16.3.2. பைனரி தரவைப் படித்தல்

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

https://msdn.microsoft.com/enus/library/windows/desktop/ee415713.aspx (இல் ஆங்கில மொழி) வாசிப்பு உதாரணத்திற்கு, பின்வரும் வடிவத் தகவல் பயன்படுத்தப்படும்:
1. கோப்பின் முதல் 4 பைட்டுகளில் வடிவ அடையாளங்காட்டி உள்ளது: RIFF.
2. அடுத்த 4 பைட்டுகள் சிறிய எண்டியன் பைட் வரிசையில் உண்மையான ஆடியோ தரவின் அளவைக் கொண்டிருக்கும்.
3. அடுத்த 4 பைட்டுகளில் பயன்படுத்தப்படும் உரை வகை தரவு உள்ளது: WAVE.
இந்த செயல்களைச் செய்ய, உள்ளமைக்கப்பட்ட மொழியில் பின்வரும் குறியீடு உங்களுக்குத் தேவைப்படும்:

படிக்க = புதியது ReadData(FileName, ByteEndian.LittleEndian);
கோப்பு வடிவம் = படிக்க.எழுத்துகள்(4);
DataSize = Read.ReadInteger32();
FileType = Read.Read Characters(4);
கோப்பு வடிவம் என்றால்<>"RIFF" பிறகு
அறிக்கை ("இது RIFF கோப்பு அல்ல");
திரும்ப ;
EndIf ;
FileType = “WAVE” என்றால்
அறிக்கை (“இது தரவு, அளவு ” + DataSize + ”பைட்டுகள் கொண்ட WAV கோப்பு”);
இல்லையெனில்
அறிக்கை ("இது WAV கோப்பு அல்ல");
திரும்பவும்;
முடிவு என்றால்;

உதாரணத்தை இன்னும் விரிவாகப் பார்ப்போம்.
முதலில், FileName மாறியில் பெயர் உள்ள கோப்பு திறக்கப்பட்டது, கோப்பு படிக்க திறக்கப்பட்டது ( FileOpenMode.Open), கோப்பிலிருந்து மட்டுமே படிக்கும் ( கோப்பு அணுகல்.படிக்க) மற்றும் படிக்க 16-பைட் இடையக பயன்படுத்தப்படும்.
பின்னர் தரவைப் படிக்க ஒரு ஸ்ட்ரீம் உருவாக்கப்படுகிறது, இது எண் வகையின் தரவுக்கான குறைந்த குறிப்பிடத்தக்க பைட் வரிசையைக் கொண்டிருக்கும். பின்னர் 4 எழுத்துகள், ஒரு 32-பிட் முழு எண் மற்றும் 4 எழுத்துகள் விளைவாக ஸ்ட்ரீமில் இருந்து படிக்கப்படும். பெறப்பட்ட தரவு பகுப்பாய்வு செய்யப்பட்டு, பகுப்பாய்வின் முடிவுகளின் அடிப்படையில், தேர்ந்தெடுக்கப்பட்ட கோப்பு .wav கோப்பாக உள்ளதா இல்லையா என்பது குறித்து முடிவு செய்யப்படுகிறது.

16.3.3. பைனரி தரவு எழுதுதல்

ஒரு கோப்பில் பைனரி தரவை எழுதுவது, எளிமையான வழக்கில், பின்வருமாறு செய்யப்படுகிறது:

நுழைவு = புதியது எழுதப்பட்ட தரவு(கோப்பு பெயர்);
குறியீட்டுக்கு = 0 முதல் 255 சுழற்சி
எழுது.எழுத பைட்(இண்டெக்ஸ்);
எண்ட்சைக்கிள்;
பதிவு.மூடு() ;

இந்த எடுத்துக்காட்டு ஒரு கோப்பில் 0 முதல் 255 வரையிலான பைட்டுகளின் வரிசையை எழுதுகிறது (ஹெக்ஸாடெசிமலில் 0xFF). இது எளிமையான பதிவு விருப்பமாகும்.
முந்தைய எடுத்துக்காட்டில் விவாதிக்கப்பட்ட வாசிப்பு முறையைப் போன்ற ஒரு முறையை நீங்கள் பயன்படுத்தலாம், அங்கு கோப்பு ஸ்ட்ரீம் பெறப்பட்டு, இந்த கோப்பு ஸ்ட்ரீமில் தரவு எழுதப்படுகிறது.

16.3.4. பைனரி தரவு இடையகத்துடன் வேலை செய்கிறது

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

தாங்கல் = புதியது BufferBinaryData(12);
கோப்பு = FileStreams.Open(தற்காலிக கோப்புகள் கோப்பகம்() + “Windows Logon.wav”, FileOpenMode.Open, கோப்பு அணுகல்.படிக்க);
File.Read(Buffer, 0, 12);
அளவு = தாங்கல்.ReadInteger32(4);
ஸ்ட்ரீம்ஸ்ட்ரிங் = newStreamInMemory(Buffer);
StreamRows.Go(0, PositionInStream.Start);

கோப்பு வடிவம் = வாசக வரிகள்.எழுத்துகள் வாசிக்கவும்(4, “விண்டோஸ்-1251”);
ReadLines.Close();
StreamRows.Go(8, PositionInStream.Start);
RowReader = புதிய DataReader(RowStream);
கோப்பு வகை = ReadLines.ReadCharacters( 4, “விண்டோஸ்-1251”);
ReadLines.Close();

பைனரி தரவு இடையகத்திற்கு தரவைப் பெறுவதற்கான செயல்முறை சிறப்பு எதுவும் இல்லை. மேலும் செயல்பாடுகளுக்கு சில கருத்துகள் தேவை. தாங்கலில் உள்ள எந்த நிலையிலிருந்தும் ஆதரிக்கப்படும் பிட் ஆழத்தின் எண்களைப் படிக்கலாம். IN இந்த எடுத்துக்காட்டில் இடையக.ReadInteger32(4); இடையகத்தின் பைட் 4 இலிருந்து தொடங்கும் 32-பிட் முழு எண்ணைப் படிப்பதாகும். இவ்வாறு, நீங்கள் இடையகத்தின் வெவ்வேறு இடங்களில் அமைந்துள்ள பல எண்களைப் படிக்க வேண்டும் என்றால், அந்த இடையகத்தின் நேரடி நிலைப்பாடு இல்லாமல் இதைச் செய்யலாம்.
இருப்பினும், ஒரு சரத்தைப் படிப்பது பைனரி தரவு இடையகத்தால் ஆதரிக்கப்படாது. எனவே, நீங்கள் இதைச் செய்ய அனுமதிக்கும் ஒரு பொருளைப் பயன்படுத்த வேண்டும்: தரவைப் படிக்கவும். பைனரி தரவு இடையகத்திலிருந்து DataReader பொருளை உருவாக்க முடியாது. ஆனால் பைனரி தரவு இடையகத்தின் அடிப்படையில், தகவலின் இயற்பியல் சேமிப்பக இருப்பிடம் (கோப்பு, பைனரி தரவு இடையக) மற்றும் இந்தத் தரவுடன் பணிபுரிய உங்களை அனுமதிக்கும் உயர்நிலைப் பொருளுக்கு இடையே உலகளாவிய இடைத்தரகரான ஒரு ஸ்ட்ரீமை நீங்கள் உருவாக்கலாம்.
ஸ்ட்ரீம் அடிப்படையில் டேட்டா ரீடர் ஆப்ஜெக்ட் உருவாக்கப்பட்டால், அது உள்ள நிலையில் இருந்து தரவைப் படிக்கத் தொடங்குகிறது இந்த நேரத்தில்ஸ்ட்ரீமில் நிறுவப்பட்டது. எனவே, எடுத்துக்காட்டில், ஸ்ட்ரீமில் உள்ள நிலை முதலில் அமைக்கப்பட்டது, பின்னர் ஒரு DataReader பொருள் உருவாக்கப்பட்டு தேவையான எண்ணிக்கையிலான எழுத்துக்கள் படிக்கப்படும். விரிவான விளக்கம்சரங்களைப் படிக்கும் போது பைட்டுகள் மற்றும் எழுத்துகளின் எண்ணிக்கைக்கு இடையே உள்ள வேறுபாட்டிற்கு, அடுத்த பகுதி 16.3.5 ஐப் பார்க்கவும்

16.3.5. பயன்பாட்டின் அம்சங்கள்

பைனரி தரவைப் பயன்படுத்தும் போது, ​​சரம் வகையின் தரவுகளுடன் பணிபுரியும் அம்சங்களை நீங்கள் கணக்கில் எடுத்துக்கொள்ள வேண்டும். தனித்தன்மை என்னவென்றால், உலகளாவிய சூழல் செயல்பாடு StrLength() திரும்பும் சரத்தின் நீளம் எழுத்துக்களில் அளவிடப்படுகிறது. குறியீடுகளில், பைனரி தரவுகளுடன் பணிபுரியும் பொருள்களில் சரங்களை எழுதும்/படிப்பதற்கான முறைகளில் படிக்க/எழுத வேண்டிய தரவின் அளவைக் குறிப்பிட வேண்டும் ( வாசிப்பு எழுத்துக்கள்(),
ReadString(), எழுத்துகள்(), WriteString()) இருப்பினும், எழுத்துகளில் உள்ள சரத்தின் நீளத்தை பைட்டுகளில் ஒத்த அளவுருவாக மாற்றுவதற்கு தெளிவான விருப்பம் இல்லை. சரத்தின் உள்ளடக்கங்கள் மற்றும் குறியாக்கத்தைப் பொறுத்து, இந்த விகிதம் வேறுபட்டதாக இருக்கும். எனவே, மாறி நீளத்தின் சரங்களை உள்ளடக்கிய எந்த தரவு கட்டமைப்புகளிலும் பணிபுரியும் போது, ​​சரத்தின் நீளம் எந்த அலகுகளில் வெளிப்படுத்தப்படுகிறது என்பதை நீங்கள் தெளிவாக புரிந்து கொள்ள வேண்டும்.
கிடைக்கக்கூடிய தரவுகளில் சரத்தின் நீளம் பைட்டுகளில் குறிப்பிடப்பட்டு, மல்டி-பைட் மாறி-நீள குறியாக்கத்தில் (உதாரணமாக, UTF-8) சரம் குறிப்பிடப்பட்டிருந்தால், பைனரி தரவு பொருள்களைப் பயன்படுத்தி, அத்தகைய கட்டமைப்பை ஒரு கோப்பிலிருந்து படிக்கவும். சரம் வகை தரவு பொதுவாக சாத்தியமற்றது.
ஆனால் இந்த விஷயத்தில், கோப்பு ஸ்ட்ரீமில் படிக்க/எழுதுவதை எளிதாக மாற்றலாம். ஒரு சரத்தின் நீளம் எழுத்துக்களில் குறிப்பிடப்பட்டிருந்தால், அத்தகைய சரத்தை சரம் வகையின் தரவுகளாகப் படிக்க முடியும், ஆனால் அத்தகைய ஸ்ட்ரீமில் படிக்க/எழுதும் நிலையை மாற்ற இயலாது.
ஒரு சரத்தின் நீளத்தை பைட்டுகளில் பெற, பின்வரும் செயல்பாட்டைப் பயன்படுத்தி சரத்தை பைனரி டேட்டா பொருளாக மாற்றலாம்:

செயல்பாடு சரத்திலிருந்து பைனரி தரவைப் பெறுங்கள்(மதிப்பு StrParameter, மதிப்பு குறியாக்கம் = "UTF-8")
MemoryThread = NewMemoryThread;
எழுத்தாளர் = புதியவர் எழுது தரவு(ஸ்ட்ரீம்மெமரி);
எழுத்தாளர்.சரம் எழுது(StrParameter, Encoding);
எழுத்தாளர்.மூடு();
StreamMemory.CloseAndGetBinaryData ஐத் திருப்பி அனுப்பவும்();
இறுதிச் செயல்பாடு

செயல்பாட்டின் விளைவாக பெறப்படும் பைனரி டேட்டா பொருளில் உள்ள அளவு() செயல்பாட்டை அழைப்பதன் மூலம் பைட்டுகளில் உள்ள உண்மையான அளவைப் பெறலாம்.
பொருட்களை ஒரே நேரத்தில் பயன்படுத்துவது பரிந்துரைக்கப்படவில்லை தரவைப் படிக்கவும்/தரவை எழுதவும்மற்றும் ஸ்ட்ரீம் பொருட்களை. ReadData இலிருந்து இரண்டு தொடர்ச்சியான வாசிப்பு செயல்பாடுகள் அல்லது WriteData க்கு இரண்டு தொடர்ச்சியான எழுதுதல் செயல்பாடுகளுக்கு இடையில் Ch ஆப்ஜெக்ட்கள் செயல்படும் ஸ்ட்ரீமில் நிலை மாற்றம் ஏற்படும். ShadowData/WriteData- ஒரு விதிவிலக்கு உருவாக்கப்படுகிறது. எனவே, ஒரு ஸ்ட்ரீமில் தரவை எழுதும் போது, ​​ஸ்ட்ரீமில் சரியான நிலை மாற்றத்தை பின்வரும் எடுத்துக்காட்டு நிரூபிக்கிறது:

ஸ்ட்ரீம் = newStreamInMemory();

WriteData.WriteString("ஹலோ வேர்ல்ட்!");
Write Data.Close();
ஸ்ட்ரீம்.கோ (0, PositionInStream.Start);
DataWrite = newDataWrite(ஸ்ட்ரீம்);
WriteData.WriteString("வருகிறேன்!");
Write Data.Close();
ஒரு விதிவிலக்கு தூக்கி எறியப்பட்டதற்கு பின்வரும் எடுத்துக்காட்டு வணக்கம்:

ஸ்ட்ரீம் = NewStreamInMemory();

WriteData.WriteString("வணக்கம், உலகம்!");
Stream.Go(0, PositionInStream.Start);
// அடுத்த வரி விதிவிலக்கு
WriteData.WriteString("Bye!");
அதே நேரத்தில், கணினி நடத்தை தவறாக இருக்கும் சூழ்நிலைகள் சாத்தியமாகும், ஆனால் பிழைகள் உருவாக்கப்படாது:

ஸ்ட்ரீம் = GetStream();
ReadData = புதிய ReadData(ஸ்ட்ரீம்);
TestString = ReadData.Read();
ஆரம்ப நிலை = ஸ்ட்ரீம். தற்போதைய நிலை();
DataWrite = newDataWrite(ஸ்ட்ரீம்);
WriteData.WriteString("எதிர்பாராத சரம்");
WriteData.Close();
Stream.Go(InitialPosition, PositionInStream.Start);
// பொதுவாக, TestString2 மாறியில் என்ன மதிப்பு வைக்கப்படும் என்பதை தீர்மானிக்க இயலாது
TestLine2 = ReadData.ReadLine();

இந்த பிரிவில் விவரிக்கப்பட்டுள்ள நடத்தை ஏற்படுகிறது டேட்டா ரீடர்/டேட்டா ரைட்டர் ஆப்ஜெக்ட்கள் ஸ்ட்ரீமுடன் வேலை செய்யும் போது அவற்றின் சொந்த பஃபர்களைப் பயன்படுத்துகின்றன. இதன் விளைவாக, நூலின் உண்மையான நிலை தருக்க நிலையில் இருந்து வேறுபடுகிறது, இது முடிக்கப்பட்ட செயல்பாடுகளின் விளைவாக உருவாகிறது.
மேலும், டேட்டா ரீடர் மற்றும் டேட்டா ரைட்டர் ஆப்ஜெக்ட்களை ஒரே நேரத்தில் பயன்படுத்துவதை ஆதரிக்க முடியாது.

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

1C தகவல் தளத்தில் கோப்பைப் பதிவேற்றும் முன், வட்டில் உள்ள கோப்பின் முழு முகவரியைப் பெற வேண்டும். கோப்பு தேர்வு உரையாடல்களுடன் பணிபுரிவது விவரிக்கப்பட்டுள்ளது.

கோப்புகளைச் சேமிக்க, வகையுடன் ஒரு பண்புக்கூறு (அல்லது ஆதாரத்தை பதிவு செய்யவும்) பயன்படுத்தவும் சேமிப்பக மதிப்புகள்.

ஒரு தன்னிச்சையான கோப்பை 1C தகவல் தளத்தில் பதிவேற்றுகிறது

எந்த கோப்பையும் பைனரி தரவுகளாகக் குறிப்பிடப்பட்டு, அதில் ஏற்றப்படும் மதிப்பு சேமிப்பு.

பைனரி தரவை ஒரு பொருளாக மாற்றும் போது சேமிப்பக மதிப்புகள்வடிவமைப்பு பயன்படுத்தப்பட்டது புதிய சேமிப்பக மதிப்புகள்(தரவு, சுருக்கம்)இரண்டு அளவுருக்களுடன்:

  1. தகவல்கள்— சேமிப்பகத்தில் சேமிக்கப்பட வேண்டிய பைனரி தரவு
  2. சுருக்கம்- பணவாட்டம் அல்காரிதத்தின் சுருக்க விகிதம். -1...9 வரம்பில் உள்ள முழு எண். -1 என்பது இயல்புநிலை சுருக்க நிலை. 0 - சுருக்கம் இல்லை, 9 - அதிகபட்ச சுருக்கம். இயல்புநிலை மதிப்பு: -1. அளவுரு விருப்பமானது; குறிப்பிடப்படவில்லை என்றால், சுருக்கம் பயன்படுத்தப்படாது.

//கோப்பை பைனரி டேட்டாவாக மாற்றவும்
கோப்பு = புதிய பைனரி டேட்டா(பாதை) ;

//புதிய மதிப்பு சேமிப்பு பொருளை உருவாக்கவும்

DataStorage = NewValueStorage(File, NewDataCompression(9) ) ;

ஒரு தன்னிச்சையான கோப்பை 1C இன்ஃபோபேஸிலிருந்து வட்டில் சேமிக்கிறது

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

//சேமிப்பகத்திலிருந்து பைனரி தரவைப் பெறுங்கள்
//தரவு சேமிப்பு - மதிப்பு சேமிப்பு வகை கொண்ட ஒரு பொருளின் பண்பு

//பெறப்பட்ட தரவை வட்டில் எழுதவும்
//IN மாறி பாதைவட்டில் உள்ள கோப்பின் முழு முகவரி
தகவல்கள். எழுது(பாதை) ;

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

தரவுத்தளத்தில் சேமிக்கப்பட்ட கோப்பைப் பார்க்க, கோப்பைத் திறக்கும் ஒரு பயன்பாட்டை உங்கள் கணினியில் நிறுவியிருக்க வேண்டும்.

//தேவையான நீட்டிப்புடன் தற்காலிக கோப்பின் பெயரைப் பெறவும்
//நீட்டிப்பு மாறியில் நீங்கள் கோப்பு நீட்டிப்பை வைக்க வேண்டும், எடுத்துக்காட்டாக "pdf"
பாதை = GetTemporaryFileName(நீட்டிப்பு) ;

//சேமிப்பகத்திலிருந்து தரவைப் பெறவும்
//தரவு சேமிப்பு - மதிப்பு சேமிப்பு வகை கொண்ட ஒரு பொருளின் பண்பு
தரவு = டேட்டாஸ்டோர். பெறு() ;

//ஒரு தற்காலிக கோப்பில் தரவை எழுதவும்
தகவல்கள். எழுது(பாதை) ;

//உத்தேசிக்கப்பட்ட பயன்பாட்டில் கோப்பைத் திறக்க முயற்சிக்கிறது
//அப்ளிகேஷன் கிடைக்கவில்லை என்றால், கணினி உரையாடல் "இதனுடன் திற..." தோன்றும்.
LaunchApplication(பாதை) ;

ஏறக்குறைய எந்த தகவலையும் ஒரு மதிப்புக் கடையில் சேமிக்க முடியும், எ.கா.

... படங்கள் (புகைப்படங்கள்):

CurrentImage.Object = SprFabric.Link; CurrentImage.DataType = Enumerations.பொருளின் கூடுதல் தகவலின் வகைகள்.படம்; சேமிப்பகம் = NewValueStorage(NewPicture, NewDataCompression()); CurrentImage.Storage = Storage.Get();

// இந்த இடத்தில் அது அனைத்தையும் காட்டுகிறது... படிவம் கூறுகள்.பட களம்1.படம் = சேமிப்பு.Get(); CurrentImage.Write();

...விரிதாள் ஆவணம்:

TabDoc=புதிய அட்டவணை ஆவணம்; TabDoc.Output(FormElements.TabularDocumentField1); சேமிப்பகம்=புதிய மதிப்பு சேமிப்பு(TabDoc); எழுது();

நடைமுறையின் முடிவு

ஸ்டோர்ஜ் பிரஸ் (உறுப்பு) இலிருந்து மீட்டமைக்கும் செயல்முறை

TabDoc=Storage.Get(); TabDoc என்றால்<>வரையறுக்கப்படாததென்ஃபார்ம்எலிமென்ட்ஸ்.டேபுலர்டாகுமென்ட்ஃபீல்ட்1.அவுட்புட்(டாப்டாக்); முடிவு என்றால்;

நடைமுறையின் முடிவு

...தன்னிச்சையான கோப்புகள் (பைனரி தரவு):

XZ = NewValueStorage(NewBinaryData(file));

சேமிப்பகத்தில் வைக்கப்பட்டுள்ள தரவுகளின் சுருக்கத்தை எட்டு ஆதரிக்கிறது:

XZ = NewValueStorage(NewBinaryData(file),NewDataCompression(9));

... வெளிப்புற செயலாக்கம் மற்றும் அறிக்கை:

செயல்முறை சுமை சேமிப்பகத்தில் செயலாக்கம் (PropsStorageType)

சுருக்க விகிதம் = NewDataCompression(9); //9 அதிகபட்ச PropsStorageType = புதிய StorageValues(New BinaryData("c:\reports\report.epf", Compression Rate));

நடைமுறையின் முடிவு

சேமிப்பகத்திலிருந்து செயலாக்கத்தைத் தொடங்குதல் (PropsStorageType)

TemporaryFileName = TemporaryFileDirectory()+"report.epf"; பைனரி டேட்டா = PropsStorageType.Get(); BinaryData.Write(TemporaryFileName); ExternalProcessing = ExternalProcessing.Create(TemporaryFileName); ExternalProcessing.GetForm().Open();

நடைமுறையின் முடிவு

சேமிப்பகத்துடன் வேலை செய்கிறது

அது பைனரி டேட்டாவாக இருந்தால், பெறு முறையைப் பயன்படுத்தி மதிப்புக் கடையிலிருந்து மீட்டெடுக்கலாம் மற்றும் எழுது() முறையைப் பயன்படுத்தி ஒரு கோப்பில் எழுதலாம்.

வகை மதிப்பு (சேமிப்பு) என்றால்<>பின்னர் ("பைனரி டேட்டா") என தட்டச்சு செய்யவும்

BinaryData = Storage.Get();

பைனரி டேட்டா = சேமிப்பு;

முடிவு என்றால்; BinaryData.Write(FileName);

எடுத்துக்காட்டாக, இது ஒரு வேர்ட் ஆவணம் (டாக் கோப்பு அல்லது பிற பதிவு செய்யப்பட்ட கோப்பு வகை) என்றால், அதை இப்படித் திறக்கலாம்:

துவக்க பயன்பாடு (கோப்பு பெயர்);

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

PropsStorage = வரையறுக்கப்படாத;

உள்ளமைக்கப்பட்ட மொழி 1C: Enterprise 8 இல் கோப்புகள் மற்றும் படங்களுடன் பணிபுரிதல்

நோக்கம்

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

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

முறை நோக்கம்

தற்காலிக சேமிப்பு

தற்காலிக சேமிப்பு என்பது பைனரி தரவுகளை வைக்கக்கூடிய தகவல் தளத்தின் ஒரு சிறப்புப் பகுதியாகும். தரவுத்தளத்திற்கு மாற்றப்படுவதற்கு முன்பு கிளையன்ட்-சர்வர் தொடர்புகளின் போது தகவல்களை தற்காலிகமாக சேமிப்பதே முக்கிய நோக்கம்.

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

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

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

தகவல் அடிப்படை

மதிப்பு சேமிப்பக வகையின் பண்புக்கூறுகளில் சேமிக்கப்பட்ட பைனரி தரவை அணுக பொறிமுறை உங்களை அனுமதிக்கிறது.

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

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

கோப்புகளுடன் பணிபுரியும் முறைகளின் விளக்கம்

தற்காலிக சேமிப்பகத்தில் தரவைச் சேமிக்கிறது

இந்த பொறிமுறையைப் பயன்படுத்துவதற்கான மிகவும் பொதுவான காட்சி ஆரம்பத்தில் பயனர் தரவை தற்காலிக சேமிப்பகத்தில் வைப்பதை உள்ளடக்கியது. இதற்கு இரண்டு முறைகள் உள்ளன: PlaceFile() மற்றும் PlaceFileInTemporaryStorage().

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

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

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

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

தற்காலிக சேமிப்பகத்திலிருந்து கோப்பை மீட்டெடுக்கிறது

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

தற்காலிக சேமிப்பகத்திலிருந்து கோப்பை நீக்குகிறது

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

தற்காலிக சேமிப்பகத்திற்கான முகவரியைச் சரிபார்க்கிறது

கோப்பு முகவரியானது இன்ஃபோபேஸில் தற்காலிக சேமிப்பகம் மற்றும் விவரங்கள் இரண்டையும் குறிக்கலாம். அதன் வகையைச் சரிபார்க்க, ஒரு முறை உள்ளது இது தற்காலிக சேமிப்பக முகவரி().

அனுப்பப்பட்ட முகவரி கடையை சுட்டிக்காட்டும் முகவரியா என்பதை இது சரிபார்க்கிறது. முகவரி தற்காலிக சேமிப்பகத்தை சுட்டிக்காட்டினால் உண்மை என வழங்கும். முறை சர்வரில் கிடைக்கிறது.

முட்டுகள் முகவரியைப் பெறுதல்

இன்ஃபோபேஸில் உள்ள விவரங்களில் தரவு வைக்கப்பட்ட பிறகு, கோப்பு முறைகளைப் பயன்படுத்தி அதை அணுக வேண்டியிருக்கலாம்.

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

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

இன்ஃபோபேஸில் இருந்து ஒரு கோப்பை மீட்டெடுக்கிறது

GetFile() முறையானது இன்ஃபோபேஸிலிருந்து ஒரு கோப்பைப் பெற்று அதை உள்ளூரில் சேமிக்கிறது கோப்பு முறைபயனர். முதல் அளவுரு முட்டுகள் அல்லது தற்காலிக கோப்பு சேமிப்பகத்தில் உள்ள கோப்பின் முகவரியைக் குறிப்பிடுகிறது. இரண்டாவது அளவுரு விளைவான கோப்பின் இலக்கு இருப்பிடத்தைக் குறிப்பிடுகிறது. ஊடாடாத பயன்முறையில், நீங்கள் பாதையைக் குறிப்பிட வேண்டும். ஊடாடும் பயன்முறையில், அளவுரு விருப்பமானது.

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

கோப்பு முறைகளைப் பயன்படுத்துவதற்கான எடுத்துக்காட்டு

// ஊடாடும் பயன்முறையில் வட்டில் இருந்து கோப்பைப் பெறுதல் // மற்றும் தற்காலிக சேமிப்பகத்தில் வைப்பது &கிளையன்ட் நடைமுறையில் SelectDiskFileAndWrite()

மாறி தேர்ந்தெடுக்கப்பட்ட பெயர்; மாறி தற்காலிக சேமிப்பக முகவரி; PutFile (தற்காலிக சேமிப்பக முகவரி, தேர்ந்தெடுக்கப்பட்ட பெயர், உண்மை) என்றால் Object.FileName = SelectedName; PlaceObjectFile(தற்காலிக சேமிப்பக முகவரி); முடிவு என்றால்;

நடைமுறையின் முடிவு

// தற்காலிக சேமிப்பகத்திலிருந்து ஒரு கோப்பகத்திற்கு ஒரு கோப்பை நகலெடுத்தல் // பண்புக்கூறு, ஒரு பொருளைப் பதிவு செய்தல், தற்காலிக // சேமிப்பகத்திலிருந்து ஒரு கோப்பை நீக்குதல் // சேமிப்பகம் &சர்வர் நடைமுறையில் பொருள் கோப்பு (தற்காலிக சேமிப்பக முகவரி)

அடைவு உறுப்பு = படிவம் பண்புக்கூறு மதிப்பு("பொருள்"); பைனரி டேட்டா = GetFileFromTemporaryStorage(TemporaryStorageAddress); அடைவு உறுப்பு.கோப்பு தரவு = NewValueStorage(BinaryData); FilePathOnDisk = புதிய கோப்பு (DirectoryItem.FileName); அடைவு உருப்படி.FileName = FilePathOnDisk.Name; அடைவு உறுப்பு.Write(); திருத்திய = பொய்; தற்காலிக சேமிப்பகத்திலிருந்து கோப்பை நீக்கு (தற்காலிக சேமிப்பக முகவரி); ValueВFormAttributes(அடைவு உறுப்பு, "பொருள்");

நடைமுறையின் முடிவு

// ப்ராப்ஸிலிருந்து கோப்பைப் படித்து அதைச் சேமித்தல் // க்கு உள் வட்டுஊடாடும் பயன்முறையில் &கிளையன்ட் நடைமுறையில் ReadFileAndSaveToDisk()

முகவரி = GetFileAddressInInformationBase(Object.Link, "FileData"); GetFile(முகவரி, பொருள்.கோப்பு பெயர், உண்மை);

நடைமுறையின் முடிவு

படத் துறையில் முகவரிகளுக்கான ஆதரவு

பிக்சர் ஃபீல்ட் கன்ட்ரோல் ஒரு கோப்பின் முகவரியால் குறிப்பிடப்பட்ட படத்தை தற்காலிக சேமிப்பில் அல்லது தரவுத்தளத்தில் காட்டுவதை ஆதரிக்கிறது.

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

உதாரணமாக // தற்காலிக // சேமிப்பகத்தில் பட முகவரியுடன் பட புலத்தை பிணைத்தல். முகவரி படங்கள் சரம் வகை விவரங்கள்

இடக் கோப்பு (பட முகவரி, உண்மை)

படம்.தரவு = முகவரி படங்கள்

வலை கிளையண்டுடன் பணிபுரியும் போது வரம்புகள்

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

கிளையண்டில் மதிப்பு சேமிப்பகத்துடன் பணிபுரியும் போது அம்சங்கள்

பிரச்சனை:

ஒரு ஆவணமானது அட்டவணைப் பிரிவில் மதிப்புச் சேமிப்பக வகையின் பண்புக்கூறைக் கொண்டிருக்கும்போது, ​​இந்தப் பண்புக்கூறில் பெரிய தரவு இருந்தால் ஆவணப் படிவத்தைத் திறப்பதைக் குறைக்கிறது.

கூறப்படும் காரணம்:

ஒருவேளை, ஒரு படிவத்தைத் திறக்கும்போது, ​​வாடிக்கையாளருக்கு அனுப்பப்படும் மதிப்பு அங்காடியில் உள்ள தரவுக்கான இணைப்பு அல்ல, ஆனால் தரவு தானே.

தீர்வு

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

பயன்படுத்துவது இன்னும் சிறந்தது தற்காலிக சேமிப்புகிளையன்ட் மற்றும் சர்வர் இடையே கோப்புகளை மாற்ற.