අද්විතීය නොවන අගයක් අද්විතීය දර්ශකයකට ඇතුල් කිරීමට උත්සාහ කරන ලදී. දෝෂය: අනන්‍ය නොවන අගයක් අද්විතීය දර්ශකයකට ඇතුළු කිරීමට උත්සාහ කිරීම: microsoft sql සේවාදායකය. ගණකාධිකාරී වෘත්තිකයාගේ සිට ආයතනික වෙත මාරු වන විට සහ 1c 8 ගොනුවේ අද්විතීය නොවන දර්ශක ඉවත් කිරීම පමණක් නොවේ.

ඔබට පේළි අඩංගු පණිවිඩයක් ලැබී ඇත:
SQL සේවාදායකය සඳහා Microsoft OLE DB සපයන්නා: දර්ශක හැඳුනුම්පත සඳහා අනුපිටපත් යතුරක් සොයාගත් නිසා අද්විතීය දර්ශකයක් සාදන්න
හෝ
වස්තුවේ අනුපිටපත් යතුරු පේළිය ඇතුළත් කළ නොහැක
හෝ
අද්විතීය නොවන අගයක් අද්විතීය දර්ශකයකට ඇතුල් කිරීමට උත්සාහ කරන ලදී.

විසඳුම්:

1. SQL Server කළමනාකරණ චිත්‍රාගාරයේදී, අපි දෝෂ සහිත දර්ශකය භෞතිකව විනාශ කරමු (මගේ නඩුවේදී එය ගිණුම්කරණ ලේඛනයේ මුළු වගුවේ දර්ශකයකි). 1C හි අපි වැරදි ලේඛන බෙදා හරිමු. පරීක්ෂණ සහ නිවැරදි කිරීමේ මාදිලියේදී, වගු නැවත සුචිගත කිරීම + එකතුව නැවත ගණනය කිරීම සඳහා කොටු පරීක්ෂා කරන්න. 1C දෝෂයකින් තොරව දර්ශකය නැවත නිර්මාණය කරයි. අපි කලින් අසාර්ථක වූ ලියකියවිලි සිදු කරන්නෙමු.

2. 1) භාවිතා කිරීම කළමනාකරණ චිත්රාගාරය 2005 දෝෂ සහිත වූ දර්ශකයක් නිර්මාණය කිරීම සඳහා නිර්මාණය ස්ක්‍රිප්ට් එකක් ජනනය කර එය ගොනුවකට සුරකින ලදී.
2) _AccumRgTn19455 මේසයෙන් ජම්බු දර්ශකය අතින් මැරීම
3) වැනි ඉල්ලීමක් දියත් කරන ලදී
SQL කේතය S_elect count(*), index_fields
AccumRgTn19455 වෙතින්
index_field අනුව GROUP
ගණන (*)>1
2 වන පියවරට පෙර විමසුමෙන් කිසිවක් ආපසු නොදුන්නද, දර්ශකය මරා දැමීමෙන් පසුව, මා සතුව අනුපිටපත් වාර්තා 15ක් දර්ශනය විය.
4) මම සියලුම ඇතුළත් කිරීම් හරහා ගොස් අනුපිටපත් අතින් පිරිසිදු කළෙමි. ඇත්ත වශයෙන්ම, මම ගනුදෙනු කරන්නේ කුමක්ද යන්න තේරුම් ගැනීමට "වාර්තා ව්යුහය" සැකසීමද භාවිතා කළෙමි. _AccumRgTn19455 වගුව “නිෂ්පාදන ප්‍රතිදානය (බදු ගිණුම්කරණය)” සමුච්චකරණ ලේඛනය ගබඩා කරන බව පෙනී ගියේය. මම sql විමසුම් සමඟ ද ටින්කර් කර, අද්විතීය නොවන ලේඛන 15 ක් හඳුනාගෙන, සියලු ක්‍රියා අවසන් වූ පසු, මෙම ලේඛන දෝෂයකින් තොරව සාමාන්‍ය ලෙස සකසා ඇති බව මම 1C හි පරීක්ෂා කළෙමි. ඇත්ත වශයෙන්ම, ඔබ අහඹු ලෙස මේස පිරිසිදු නොකළ යුතුය: පිරිසිදු කරන දේ සහ එය හැරවිය හැක්කේ කෙසේද යන්න තේරුම් ගැනීම වැදගත්ය.
5) ගොනුවක සුරකින ලද දර්ශකයක් සෑදීමට ඉල්ලීමක් දියත් කරන ලදී.
6) දත්ත සමුදාය තනි-පරිශීලක මාදිලියට මාරු කර dbcc checkdb දියත් කරන ලදී - මෙවර කිසිදු දෝෂයක් ජනනය නොවීය.
7) පාදම නැවත තනි පරිශීලක මාදිලියට මාරු කරන ලදී.
එච්චරයි... ප්‍රශ්නය ජයගත්තා. හොඳයි, නැවත 1C දී මම "පරීක්ෂා කිරීම සහ නිවැරදි කිරීම" දියත් කළෙමි, එහිද සෑම දෙයක්ම හොඳින් සිදු විය, මම අද්විතීය නොවන දර්ශකය ගැන පැමිණිලි කිරීම නැවැත්තුවා.

3. අනන්‍යතාවය ශුන්‍ය අගයන් සහිත දින වල පවතී නම්, එවිට 2000 ට සමාන ඕෆ්සෙට් පරාමිතියක් සහිත දත්ත සමුදායක් නිර්මාණය කිරීමෙන් ගැටළුව විසඳනු ලැබේ.

1. ගැටළුව දත්ත සමුදාය පූරණය කරන්නේ නම්, එවිට:
1.1 ඔබ MS SQL Server දත්ත ගබඩාවකට (dt-file එකක් භාවිතා කරමින්) පූරණය කරන්නේ නම්, දත්ත සමුදාය නිර්මාණය කිරීමේදී, පූරණය කිරීමට පෙර, ඕෆ්සෙට් දිනය සඳහන් කරන්න - 2000.
දත්ත සමුදාය දැනටමත් ඕෆ්සෙට් 0 සමඟ නිර්මාණය කර ඇත්නම්, 2000 සමඟ නව එකක් සාදන්න.

1.2 ගොනු අනුවාදයේ දත්ත සමුදාය සමඟ වැඩ කිරීමට හැකි නම්, පරීක්ෂා කිරීම සහ නිවැරදි කිරීම මෙන්ම වින්‍යාස කිරීම - වින්‍යාසය පරීක්ෂා කිරීම - වින්‍යාසයේ තාර්කික අඛණ්ඩතාව පරීක්ෂා කිරීම + වැරදි සබැඳි සෙවීම සිදු කරන්න.

1.3 ගොනු අනුවාදයක් නොමැති නම්, DT වෙතින් DB2 සමඟ සේවාදායක-සේවාදායක අනුවාදයකට පූරණය කිරීමට උත්සාහ කරන්න (එය සුවිශේෂත්වය මත අඩු ඉල්ලුමක් ඇත), ඉන්පසු පරීක්ෂණ සහ නිවැරදි කිරීම් සිදු කරන්න, මෙන්ම වින්‍යාස කිරීම - වින්‍යාසය සත්‍යාපනය කරන්න - වින්‍යාසයේ තාර්කික අඛණ්ඩතාව පරීක්ෂා කරන්න. + වලංගු නොවන යොමු සඳහා සොයන්න.

1.4 ගැටළුව ස්ථානගත කිරීම සඳහා, පැටවීම අසාර්ථක වූ වස්තුවේ දත්ත ඔබට තීරණය කළ හැකිය. මෙය සිදු කිරීම සඳහා, ඔබ ආරම්භයේදී ප්‍රොෆයිලර් උපයෝගිතා තුළ ලුහුබැඳීම සක්‍රීය කිරීම හෝ DBMSSQL සහ EXCP ක්‍රියාවලි සිදුවීම් ලොගය තුළ පටිගත කිරීම සක්‍රීය කිරීම අවශ්‍ය වේ.

2. පරිශීලකයින් වැඩ කරන අතරතුර අද්විතීය නොවන ගැටළුව ඇති වුවහොත්:

2.1 1.4 ඡේදයේ ඇති ක්‍රමය භාවිතා කර ගැටළු සහගත ඉල්ලීම සොයන්න.

2.1.2 සමහර විට විමසුම් ක්‍රියාත්මක කිරීමේදී දෝෂයක් ඇතිවේ, උදාහරණයක් ලෙස:

මෙම දෝෂය සිදුවන්නේ සමුච්චිත රෙජිස්ටර් මොඩියුලයේ " වැඩ කරන වෙලාවසංවිධානවල සේවකයින්" "රෙජිස්ටර් නැවත ගණනය කිරීම්" ක්රියා පටිපාටිය තුළ, ඉල්ලීමෙහි "වෙනස්" යන සේවා වචනය අඩංගු නොවේ.
කේතය 1C v 8.x I.e. විය යුතුයි:
ඉල්ලීම = නව ඉල්ලීමක්(
"විවිධ තෝරන්න
| මූලික තනි පුද්ගල,
. . . . .
ZUP සහ UPP හි නවතම නිකුතු වලදී, දෝෂය සිදු නොවේ, මන්ද එය "වෙනස්" යයි කියයි.

2.2 පෙර ඡේදයෙන් ගැටළුකාරී දර්ශකය සොයා ගැනීමෙන් පසුව, ඔබට අද්විතීය නොවන වාර්තාවක් සොයා ගැනීමට අවශ්ය වේ.
2.2.1. SQL භාවිතයෙන් අද්විතීය නොවන වාර්තා හඳුනා ගැනීම සඳහා "මාළු" ස්ක්‍රිප්ට්:
SQL කේතය S_elect COUNT(*) කවුන්ටරය,<перечисление всех полей соответствующего индекса>සිට<имя таблицы>
කණ්ඩායම විසින්<перечисление всех полей соответствующего индекса>
කවුන්ටරය තිබීම > 1

2.2.2 උදාහරණය. දෝෂයේ ඇති දර්ශකය "_Document140_VT1385_IntKeyIndNG" ලෙස හැඳින්වේ.
වගු ක්ෂේත්ර ලැයිස්තුව:
_Document140_IDRRef, _KeyField, _LineNo1386, _Fld1387, _Fld1388, _Fld1389, _Fld1390, _Fld1391Ref, _Fld1392Ref, 39_Fld1Ref, 39_Fld1 393_RR Ref, _Fld1394,_Fld1395, _Fld1396RRef, _Fld1397, _Fld1398, _Fld1399RRef, _Fld22260_TYPE, _Fld22260_FldRef_260_FRTRef, _Fld22261_RT Ref, _Fld22261_RRRef
පහත ක්රියා පටිපාටිය සිදු කිරීමට පෙර, කරන්න උපස්ථ පිටපතදත්ත සමුදාය.
MS SQL සේවාදායක විමසුම් විශ්ලේෂකය තුළ ධාවනය කරන්න:
SQL කේතය S_elect count(*), _Document140_IDRRef, _KeyField
_Document140_VT1385 වෙතින්
_Document140_IDRRef, _KeyField විසින් සමූහය
ගණන් (*) > 1 තිබීම
_Document140_IDRRef, _KeyField, අනුපිටපත් වාර්තා (id, යතුර) තීරු වල අගයන් සොයා ගැනීමට එය භාවිතා කරන්න.

ඉල්ලීම භාවිතා කරමින්:
SQL කේතය S_elect *
_Document140_VT1385 වෙතින්
හෝ _Document140_IDRRef = id2 සහ _KeyField = key2 හෝ ...
අනුපිටපත් ඇතුළත් කිරීම් වල අනෙකුත් තීරු වල අගයන් බලන්න.
ඇතුළත් කිරීම් දෙකටම අර්ථවත් අගයන් තිබේ නම් සහ අගයන් වෙනස් නම්, _KeyField අගය අද්විතීය ලෙස වෙනස් කරන්න. මෙය සිදු කිරීම සඳහා, _KeyField (keymax) හි උපරිම වාඩිලාගත් අගය තීරණය කරන්න:
SQL කේතය S_elect max(_KeyField)
_Document140_VT1385 වෙතින්
එහිදී _Document140_IDRRef = id1
අනුපිටපත් ඇතුළත් කිරීම් වලින් එකක _KeyField අගය නිවැරදි එක සමඟ ප්‍රතිස්ථාපනය කරන්න:
SQL කේත යාවත්කාලීන _Document140_VT1385
_KeyField = keymax + 1 සකසන්න
මෙහි _LineNo1386 = යනු ඔබට පුනරාවර්තන වාර්තා දෙකෙන් එකක් තෝරා ගැනීමට ඉඩ සලසන අතිරේක කොන්දේසියකි.

අනුපිටපත් ඇතුළත් කිරීම් වලින් එකක් (හෝ දෙකම) පැහැදිලිවම වැරදි අර්ථයක් තිබේ නම්, එය ඉවත් කළ යුතුය:
_Document140_VT1385 වෙතින් SQL කේතය මකන්න
එහිදී _Document140_IDRRef = id1 සහ _LineNo1386 = lineno1
සියලුම තීරු වල අනුපිටපත් ඇතුළත් කිරීම් එකම අගයන් තිබේ නම්, ඔබ ඒවායින් එකක් තැබිය යුතුය:
SQL කේතය S_elect distinct *
#tmp1 වෙත
_Document140_VT1385 වෙතින්
එහිදී _Document140_IDRRef = id1 සහ _KeyField = key1

_Document140_VT1385 වෙතින් මකන්න
එහිදී _Document140_IDRRef = id1 සහ _KeyField = key1

I_Document140_VT1385 වෙත ඇතුල් කරන්න
S_elect #tmp1

D_rop වගුව #tmp1

එක් එක් අනුපිටපත් වාර්තා යුගල සඳහා විස්තර කරන ලද ක්රියා පටිපාටිය සිදු කළ යුතුය.

2.2.3. දෙවන උදාහරණය:
SQL කේතය S_elect COUNT(*) AS Expr2, _IDRRef AS Expr1, _Description
_යොමුව8_ වෙතින්
GROUP by _IDRRef, _Description
තිබීම (COUNT(*) > 1)

2.3.4 1C:Enterprise විමසුමක් භාවිතයෙන් අද්විතීය නොවන වාර්තා නිර්ණය කිරීමේ උදාහරණයක්:
කේතය 1C v 8.x SELECT Directory.Link
නාමාවලියෙන්. නාමාවලිය AS නාමාවලිය
නාමාවලිය අනුව GROUP.Link
ප්‍රමාණය (*) > 1 තිබීම

1C: Enterprise 8.1 සමඟ වැඩ කරන විට, ඔබට රේඛා අඩංගු පණිවිඩයක් හමු වුවහොත් කුමක් කළ යුතුද යන්න මෙම ලිපියෙන් විස්තර කෙරේ:

වස්තුව තුළ අනුපිටපත් යතුරු පේළිය ඇතුළු කළ නොහැක

අද්විතීය නොවන අගයක් අද්විතීය දර්ශකයකට ඇතුල් කිරීමට උත්සාහ කරන ලදී.

දර්ශකයක් යනු කුමක්ද?

දර්ශක යනු එහි තීරු එකක හෝ වැඩි ගණනක අගයන් මත පදනම්ව වගුවක ඇති පේළි වෙත වේගයෙන් ප්‍රවේශ වීමට ඉඩ සලසන ව්‍යුහයකි.
දර්ශකයක වගුවක හෝ දසුනක තීරු එකකින් හෝ කිහිපයකින් ගොඩනගා ඇති යතුරු සහ නිශ්චිත දත්ත ගබඩා කර ඇති ස්ථානයට සිතියම් ගත කරන දර්ශක අඩංගු වේ.
ප්‍රතිඵල කට්ටලයක් ලබා දීමට කියවිය යුතු දත්ත ප්‍රමාණය දර්ශක අඩු කරයි.

වගුවක නිශ්චිත තීරුවක් (හෝ තීරු) සමඟ සුචියක් සම්බන්ධ වුවද, එය තවමත් වෙනම දත්ත සමුදා වස්තුවකි.

1C: Enterprise දත්ත ගබඩාවේ වගු දර්ශක වින්‍යාස වස්තු නිර්මාණය කිරීමේදී මෙන්ම වින්‍යාස වස්තු වල ඇතැම් සැකසුම් වලදී ව්‍යංගයෙන් නිර්මාණය වේ.

MS SQL Server 2005 හි දර්ශකවල භෞතික සාරය.

භෞතිකව දත්ත ගබඩා කර ඇත 8Kb පිටු මත. නිර්මාණය කළ විගසම, වගුවේ දර්ශක නොමැති අතර, වගුව දත්ත ගොඩක් ලෙස පෙනේ. වාර්තාවලට නිශ්චිත ගබඩා අනුපිළිවෙලක් නොමැත.
ඔබට දත්ත වෙත ප්‍රවේශ වීමට අවශ්‍ය වූ විට, SQL සේවාදායකය නිපදවනු ඇත මේස ස්කෑන්(මේස ස්කෑන්). SQL සේවාදායකය එය සොයන වාර්තා සොයා ගැනීමට සම්පූර්ණ වගුව පරිලෝකනය කරයි.
මෙතැන් සිට දර්ශකවල මූලික කාර්යයන් පැහැදිලි වේ:
- දත්ත ප්රවේශ වේගය වැඩි කිරීම,
- දත්ත සුවිශේෂත්වය සඳහා සහාය.

ඒවායේ වාසි තිබියදීත්, දර්ශකවලට අවාසි ගණනාවක් තිබේ. පළමු එක දර්ශක වේ අමතර තැටි ඉඩක් ගන්නසහ තුළ අහඹු ප්රවේශ මතකය. ඔබ දර්ශකයක් සාදන සෑම අවස්ථාවකම, ඔබ බහු මට්ටමේ ව්‍යුහයක් තිබිය හැකි, බැසීමේ හෝ ආරෝහණ අනුපිළිවෙලෙහි යතුරු ගබඩා කරයි. තවද යතුර විශාල/දිගු වන තරමට දර්ශක ප්‍රමාණය විශාල වේ. දෙවන අවාසිය නම් මෙහෙයුම් මන්දගාමී වේවාර්තා ඇතුළත් කිරීම, යාවත්කාලීන කිරීම සහ මකා දැමීම.
MS SQL Server 2005 පරිසරය තුළ, දර්ශක වර්ග කිහිපයක් ක්රියාත්මක වේ:

  • පොකුරු නොවන දර්ශක;
  • පොකුරු (හෝ පොකුරු) දර්ශක;
  • අද්විතීය දර්ශක;
  • ඇතුළත් තීරු සහිත දර්ශක
  • සුචිගත දසුන්
  • පූර්ණ පෙළ

අද්විතීය දර්ශකය

සුචිගත කළ තීරුවේ ඇති අගයන්හි සුවිශේෂත්වය අද්විතීය දර්ශක මගින් සහතික කෙරේ. ඒවා තිබේ නම්, මෙම මෙහෙයුමේ ප්‍රතිඵලයක් ලෙස තීරුවේ සමාන අගයන් දෙකක් දිස්වන ආකාරයෙන් නව අගයක් ඇතුළු කිරීමට හෝ පවතින අගයක් වෙනස් කිරීමට සේවාදායකය ඔබට ඉඩ නොදේ.
අනන්‍ය දර්ශකයක් යනු ඇඩෝන වර්ගයක් වන අතර එය පොකුරු සහ පොකුරු නොවන දර්ශක සඳහා ක්‍රියාත්මක කළ හැක. එක් වගුවකට එක් අනන්‍ය පොකුරු දර්ශකයක් සහ අනන්‍ය නොවන පොකුරු දර්ශක රාශියක් තිබිය හැක.
අද්විතීය දර්ශක නිර්වචනය කළ යුත්තේ සැබවින්ම අවශ්‍ය වූ විට පමණි. තීරුවක දත්ත අඛණ්ඩතාව සහතික කිරීම සඳහා, ඔබට අනන්‍ය දර්ශක වෙත යොමු වීමට වඩා UNIQUE හෝ PRIMARY KEY අඛණ්ඩතා සීමාවක් අර්ථ දැක්විය හැක. දත්ත අඛණ්ඩතාව සහතික කිරීම සඳහා පමණක් ඒවා භාවිතා කිරීම දත්ත සමුදායේ ඉඩ නාස්තියකි. මීට අමතරව, CPU කාලයද ඔවුන්ගේ නඩත්තුව සඳහා වැය වේ.

1C:Enterprise 8.1, 8.1 අනුවාදයෙන් ආරම්භ වන අතර, පොකුරු අනන්‍ය දර්ශක සක්‍රියව භාවිතා කරයි. මෙයින් අදහස් කරන්නේ 8.0 සිට පරිවර්තනය කිරීමේදී හෝ 8.1.7 සිට සංක්‍රමණය කිරීමේදී ඔබට අද්විතීය නොවන දර්ශක දෝෂයක් ඇතිවිය හැකි බවයි.

අද්විතීයභාවය ශුන්‍ය අගයන් සහිත දිනයන් තුළ පවතී නම්, 2000 ට සමාන ඕෆ්සෙට් පරාමිතියක් සහිත දත්ත සමුදායක් නිර්මාණය කිරීමෙන් ගැටළුව විසඳා ගත හැකිය.

කුමක් කරන්න ද?

1. ගැටළුව දත්ත සමුදාය පූරණය කරන්නේ නම්, එවිට:

1.1 ඔබ MS SQL Server දත්ත ගබඩාවකට (dt ගොනුවක් භාවිතා කරමින්) පූරණය කරන්නේ නම්, දත්ත සමුදාය නිර්මාණය කිරීමේදී, පූරණය කිරීමට පෙර, ඕෆ්සෙට් දිනය සඳහන් කරන්න - 2000.

දත්ත සමුදාය දැනටමත් ඕෆ්සෙට් 0 සමඟ නිර්මාණය කර ඇත්නම්, 2000 සමඟ නව එකක් සාදන්න.

1.2 ගොනු අනුවාදයේ දත්ත සමුදාය සමඟ වැඩ කිරීමට හැකි නම්, පරීක්ෂා කිරීම සහ නිවැරදි කිරීම මෙන්ම වින්‍යාස කිරීම - වින්‍යාසය පරීක්ෂා කිරීම - වින්‍යාසයේ තාර්කික අඛණ්ඩතාව පරීක්ෂා කිරීම + වැරදි සබැඳි සෙවීම සිදු කරන්න.

1.3 ගොනු අනුවාදයක් නොමැති නම්, DT වෙතින් DB2 සමඟ සේවාදායක-සේවාදායක අනුවාදයකට පූරණය කිරීමට උත්සාහ කරන්න (එය සුවිශේෂත්වය මත අඩු ඉල්ලුමක් ඇත), ඉන්පසු පරීක්ෂණ සහ නිවැරදි කිරීම් මෙන්ම වින්‍යාස කිරීම - වින්‍යාසය සත්‍යාපනය කරන්න - වින්‍යාසයේ තාර්කික අඛණ්ඩතාව පරීක්ෂා කරන්න. + වලංගු නොවන යොමු සඳහා සොයන්න.

1.4 ගැටළුව ස්ථානගත කිරීම සඳහා, පැටවීම අසාර්ථක වූ වස්තුවේ දත්ත ඔබට තීරණය කළ හැකිය. මෙය සිදු කිරීම සඳහා, ඔබ ආරම්භයේදී ප්‍රොෆයිලර් උපයෝගීතාවයේ ලුහුබැඳීම සක්‍රීය කළ යුතුය හෝ DBMSSQL සහ EXCP තාක්ෂණික සිදුවීම් ලොගයේ පටිගත කිරීම සක්‍රීය කළ යුතුය.

1.5 නෝඩය (හුවමාරු සැලසුම්) තිබේ නම්, හුවමාරුව සිදු කරන්න. හුවමාරු කිරීමට පෙර ඔබට අතිරේකව 2.3.5 ඡේදය සම්පූර්ණ කළ හැක

2. පරිශීලකයින් වැඩ කරන අතරතුර අද්විතීය නොවන ගැටළුව ඇති වුවහොත්:

2.1 1.4 ඡේදයේ ඇති ක්‍රමය භාවිතා කර ගැටළු සහගත ඉල්ලීම සොයන්න.

2.1.2 සමහර විට විමසුම් ක්‍රියාත්මක කිරීමේදී දෝෂයක් ඇතිවේ, උදාහරණයක් ලෙස:

මෙම දෝෂය සිදුවන්නේ සමුච්චිත ලේඛන මොඩියුලයේ “සංවිධානවල සේවකයින්ගේ වැඩ කරන කාලය” “රෙජිස්ටර් නැවත ගණනය කිරීම්” ක්‍රියා පටිපාටියේ “වෙනස්” යන සේවා වචනය ඉල්ලීමට ඇතුළත් නොවීමයි.

එම. විය යුතුයි:

ඉල්ලීම = නව ඉල්ලීම (
"විවිධ තෝරන්න
| මූලික තනි පුද්ගල,

ZUP සහ UPP හි නවතම නිකුතු වලදී, දෝෂය සිදු නොවේ, මන්ද එය "වෙනස්" කියයි.

2.2 පෙර ඡේදයෙන් ගැටළුකාරී දර්ශකය සොයා ගැනීමෙන් පසුව, ඔබට අද්විතීය නොවන වාර්තාවක් සොයා ගැනීමට අවශ්ය වේ.

2.2.1. SQL භාවිතයෙන් අද්විතීය නොවන වාර්තා හඳුනා ගැනීම සඳහා "මාළු" ස්ක්‍රිප්ට්:
COUNT(*) කවුන්ටරය තෝරන්න,<перечисление всех полей соответствующего индекса>සිට<имя таблицы>
කණ්ඩායම විසින්<перечисление всех полей соответствующего индекса>
කවුන්ටරය තිබීම > 1

2.2.2 උදාහරණය. දෝෂයේ ඇති දර්ශකය "_Document140_VT1385_IntKeyIndNG" ලෙස හැඳින්වේ.

වගු ක්ෂේත්ර ලැයිස්තුව:

Document140_IDRRef, _KeyField, _LineNo1386, _Fld1387, _Fld1388, _Fld1389, _Fld1390, _Fld1391RRref, _Fld1392Rref, _Fld_T13,3_FldY139 _RRRef, _Fld1394,

Fld1395, _Fld1396RRef, _Fld1397, _Fld1398, _Fld1399RRef, _Fld22260_TYPE, _Fld22260_RTRef, _Fld22260_RRRref, _Fld13222, 6Fld1322 22261 _RRRef

පහත ක්‍රියා පටිපාටිය සිදු කිරීමට පෙර, කරුණාකර ඔබගේ දත්ත සමුදාය උපස්ථ කරන්න.
MS SQL සේවාදායක විමසුම් විශ්ලේෂකය තුළ ධාවනය කරන්න:

ගණන් (*), _Document140_IDRRref, _KeyField තෝරන්න
_Document140_VT1385 වෙතින්
_Document140_IDRRef, _KeyField විසින් සමූහය
ගණන් (*) > 1 තිබීම

_Document140_IDRRef, _KeyField, අනුපිටපත් වාර්තා (id, යතුර) තීරු වල අගයන් සොයා ගැනීමට එය භාවිතා කරන්න.

ඉල්ලීම භාවිතා කරමින්:

තෝරන්න *
_Document140_VT1385 වෙතින්
හෝ _Document140_IDRRef = id2 සහ _KeyField = key2 හෝ …

අනුපිටපත් ඇතුළත් කිරීම් වල අනෙකුත් තීරු වල අගයන් බලන්න.

ඇතුළත් කිරීම් දෙකටම අර්ථවත් අගයන් තිබේ නම් සහ අගයන් වෙනස් නම්, _KeyField අගය අද්විතීය ලෙස වෙනස් කරන්න. මෙය සිදු කිරීම සඳහා, _KeyField (keymax) හි උපරිම වාඩිලාගත් අගය තීරණය කරන්න:

උපරිම (_KeyField) තෝරන්න
_Document140_VT1385 වෙතින්
එහිදී _Document140_IDRRef = id1

අනුපිටපත් ඇතුළත් කිරීම් වලින් එකක _KeyField අගය නිවැරදි එක සමඟ ප්‍රතිස්ථාපනය කරන්න:

update_Document140_VT1385
_KeyField = keymax + 1 සකසන්න

මෙහි _LineNo1386 = යනු ඔබට පුනරාවර්තන වාර්තා දෙකෙන් එකක් තෝරා ගැනීමට ඉඩ සලසන අතිරේක කොන්දේසියකි.

අනුපිටපත් ඇතුළත් කිරීම් වලින් එකක් (හෝ දෙකම) පැහැදිලිවම වැරදි අර්ථයක් තිබේ නම්, එය ඉවත් කළ යුතුය:


එහිදී _Document140_IDRRef = id1 සහ _LineNo1386 = lineno1

සියලුම තීරු වල අනුපිටපත් ඇතුළත් කිරීම් එකම අගයන් තිබේ නම්, ඔබ ඒවායින් එකක් තැබිය යුතුය:

වෙනස් තෝරන්න *
#tmp1 වෙත
_Document140_VT1385 වෙතින්
එහිදී _Document140_IDRRef = id1 සහ _KeyField = key1

_Document140_VT1385 වෙතින් මකන්න
එහිදී _Document140_IDRRef = id1 සහ _KeyField = key1

_Document140_VT1385 වෙත ඇතුළු කරන්න
#tmp1 තෝරන්න

පහත වගුව #tmp1

එක් එක් අනුපිටපත් වාර්තා යුගල සඳහා විස්තර කරන ලද ක්රියා පටිපාටිය සිදු කළ යුතුය.

2.2.3. දෙවන උදාහරණය:

COUNT(*) AS Expr2, _IDRRef AS Expr1, _විස්තරය තෝරන්න
_යොමුව8_ වෙතින්
GROUP by _IDRRef, _Description
තිබීම (COUNT(*) > 1)

2.3.4 1C:Enterprise විමසුමක් භාවිතයෙන් අද්විතීය නොවන වාර්තා නිර්ණය කිරීමේ උදාහරණයක්:

හෝ ගිණුම්කරණය සඳහා

තෝරා
උප විමසුම.කාලසීමාව,
උප විමසුම.රෙජිස්ට්‍රාටර්,
<измерения>,
SUM(Subquery.Records Number of Records) AS වාර්තා ගණන
සිට
(තෝරා
ස්වයං ආධාරක. කාල සීමාව AS කාල සීමාව,
ස්වයං-සහාය. රෙජිස්ට්‍රාර් ඒඑස් රෙජිස්ට්‍රාර්,
<измерения>,
1 AS වාර්තා ගණන
සිට
ගිණුම් ලේඛනය ස්වයං-සහාය AS ස්වයං-සහාය) AS උප විමසුම

කණ්ඩායම විසින්
උප විමසුම.කාලසීමාව,
උප විමසුම.රෙජිස්ට්‍රාටර්,
<измерения>

තිබීම
SUM(උප විමසුම. වාර්තා ගණන) > 1

2.3.5 subd දර්ශකය අද්විතීය නොවන බවට පත් කරන්න. කළමනාකරණ ස්ටුඩියෝ භාවිතයෙන් දර්ශකය ස්ක්‍රිප්ට් කරන්න.

2.3.6 RDB හි හුවමාරු කිරීමේදී විශේෂ අවස්ථාවක්. සම්පූර්ණ හෝ විශ්ලේෂණ ගණනය කිරීම හා සම්බන්ධ "සහායක" වගු වල දෝෂය සිදු වේ. උදාහරණ වශයෙන්:

සන්දර්භය ක්‍රමය ඇමතීමේ දෝෂය (ලියන්න): අනන්‍ය නොවන අගයක් අනන්‍ය දර්ශකයකට ඇතුළු කිරීමට උත්සාහ කිරීම:
SQL සේවාදායකය සඳහා Microsoft OLE DB සපයන්නා: '_Accnt10319_ByPeriod_TRNRN' අද්විතීය දර්ශකය සමඟ 'dbo._AccntRegED10319' වස්තුවේ අනුපිටපත් යතුරු පේළිය ඇතුළු කළ නොහැක.
HRESULT=80040E2F, SQLSrvr: දෝෂය තත්වය=1, බරපතලකම=E, ස්වදේශික=2601, රේඛාව=1

මෙම අවස්ථාවේදී, පූරණය කිරීමට පෙර, මුළු භාවිතය අක්‍රිය කරන්න, පණිවිඩය පූරණය කරන්න, එකතුව භාවිතා කිරීම සක්‍රීය කර නැවත ගණනය කරන්න.

ඔබට පේළි අඩංගු පණිවිඩයක් ලැබී ඇත:
SQL සේවාදායකය සඳහා Microsoft OLE DB සපයන්නා: දර්ශක හැඳුනුම්පත සඳහා අනුපිටපත් යතුරක් සොයාගත් නිසා අද්විතීය දර්ශකයක් සාදන්න
හෝ
වස්තුවේ අනුපිටපත් යතුරු පේළිය ඇතුළත් කළ නොහැක
හෝ
අද්විතීය නොවන අගයක් අද්විතීය දර්ශකයකට ඇතුල් කිරීමට උත්සාහ කරන ලදී.

විසඳුම්:

1. SQL Server කළමනාකරණ චිත්‍රාගාරයේදී, අපි දෝෂ සහිත දර්ශකය භෞතිකව විනාශ කරමු (මගේ නඩුවේදී එය ගිණුම්කරණ ලේඛනයේ මුළු වගුවේ දර්ශකයකි). 1C හි අපි වැරදි ලේඛන බෙදා හරිමු. පරීක්ෂණ සහ නිවැරදි කිරීමේ මාදිලියේදී, වගු නැවත සුචිගත කිරීම + එකතුව නැවත ගණනය කිරීම සඳහා කොටු පරීක්ෂා කරන්න. 1C දෝෂයකින් තොරව දර්ශකය නැවත නිර්මාණය කරයි. අපි කලින් අසාර්ථක වූ ලියකියවිලි සිදු කරන්නෙමු.

2. 1) Management Studio 2005 භාවිතා කරමින්, මම දෝෂ සහිත වූ දර්ශකයක් නිර්මාණය කිරීම සඳහා නිර්මාණය ස්ක්‍රිප්ට් එකක් සාදා එය ගොනුවකට සුරැකුවෙමි.
2) _AccumRgTn19455 මේසයෙන් ජම්බු දර්ශකය අතින් මැරීම
3) වැනි ඉල්ලීමක් දියත් කරන ලදී
SQL කේතය S_elect count(*), index_fields
FR OM AccumRgTn19455
index_field අනුව GROUP
ගණන (*)>1
2 වන පියවරට පෙර විමසුමෙන් කිසිවක් ආපසු නොදුන්නද, දර්ශකය මරා දැමීමෙන් පසුව, මා සතුව අනුපිටපත් වාර්තා 15ක් දර්ශනය විය.
4) මම සියලුම ඇතුළත් කිරීම් හරහා ගොස් අනුපිටපත් අතින් පිරිසිදු කළෙමි. ඇත්ත වශයෙන්ම, මම ගනුදෙනු කරන්නේ කුමක්ද යන්න තේරුම් ගැනීමට "වාර්තා ව්යුහය" සැකසීමද භාවිතා කළෙමි. _AccumRgTn19455 වගුවේ “නිෂ්පාදන ප්‍රතිදානය (බදු ගිණුම්කරණය)” සමුච්චකරණ ලේඛනය ගබඩා කරන බව පෙනී ගියේය. මම sql විමසුම් සමඟ ද ටින්කර් කර, අද්විතීය නොවන ලේඛන 15 ක් හඳුනාගෙන, සියලු ක්‍රියා අවසන් වූ පසු, මම 1C වලදී මෙම ලේඛන දෝෂයකින් තොරව සාමාන්‍ය ලෙස සකසා ඇත්දැයි පරීක්ෂා කළෙමි. ඇත්ත වශයෙන්ම, ඔබ අහඹු ලෙස මේස පිරිසිදු නොකළ යුතුය: පිරිසිදු කරන දේ සහ එය හැරවිය හැක්කේ කෙසේද යන්න තේරුම් ගැනීම වැදගත්ය.
5) ගොනුවක සුරකින ලද දර්ශකයක් සෑදීමට ඉල්ලීමක් දියත් කරන ලදී.
6) දත්ත සමුදාය තනි-පරිශීලක මාදිලියට මාරු කර dbcc checkdb දියත් කරන ලදී - මෙවර කිසිදු දෝෂයක් ජනනය නොවීය.
7) පාදම නැවත තනි පරිශීලක මාදිලියට මාරු කරන ලදී.
එච්චරයි... ප්‍රශ්නය ජයගත්තා. හොඳයි, නැවත 1C දී මම "පරීක්ෂා කිරීම සහ නිවැරදි කිරීම" දියත් කළෙමි, එහිද සෑම දෙයක්ම හොඳින් සිදු විය, මම අද්විතීය නොවන දර්ශකය ගැන පැමිණිලි කිරීම නැවැත්තුවා.

3. අනන්‍යතාවය ශුන්‍ය අගයන් සහිත දින වල පවතී නම්, එවිට 2000 ට සමාන ඕෆ්සෙට් පරාමිතියක් සහිත දත්ත සමුදායක් නිර්මාණය කිරීමෙන් ගැටළුව විසඳනු ලැබේ.

1. ගැටළුව දත්ත සමුදාය පූරණය කරන්නේ නම්, එවිට:
1.1 ඔබ MS SQL Server දත්ත ගබඩාවකට (dt-file එකක් භාවිතා කරමින්) පූරණය කරන්නේ නම්, දත්ත සමුදාය නිර්මාණය කිරීමේදී, පූරණය කිරීමට පෙර, ඕෆ්සෙට් දිනය සඳහන් කරන්න - 2000.
දත්ත සමුදාය දැනටමත් ඕෆ්සෙට් 0 සමඟ නිර්මාණය කර ඇත්නම්, 2000 සමඟ නව එකක් සාදන්න.

1.2 ගොනු අනුවාදයේ දත්ත සමුදාය සමඟ වැඩ කිරීමට හැකි නම්, පරීක්ෂා කිරීම සහ නිවැරදි කිරීම මෙන්ම වින්‍යාස කිරීම - වින්‍යාසය පරීක්ෂා කිරීම - වින්‍යාසයේ තාර්කික අඛණ්ඩතාව පරීක්ෂා කිරීම + වැරදි සබැඳි සෙවීම සිදු කරන්න.

1.3 ගොනු අනුවාදයක් නොමැති නම්, DT වෙතින් DB2 සමඟ සේවාදායක-සේවාදායක අනුවාදයකට පූරණය කිරීමට උත්සාහ කරන්න (එය සුවිශේෂත්වය මත අඩු ඉල්ලුමක් ඇත), ඉන්පසු පරීක්ෂණ සහ නිවැරදි කිරීම් මෙන්ම වින්‍යාස කිරීම - වින්‍යාසය සත්‍යාපනය කරන්න - වින්‍යාසයේ තාර්කික අඛණ්ඩතාව පරීක්ෂා කරන්න. + වලංගු නොවන යොමු සඳහා සොයන්න.

1.4 ගැටළුව ස්ථානගත කිරීම සඳහා, පැටවීම අසාර්ථක වූ වස්තුවේ දත්ත ඔබට තීරණය කළ හැකිය. මෙය සිදු කිරීම සඳහා, ඔබ ආරම්භයේදී ප්‍රොෆයිලර් උපයෝගිතා තුළ ලුහුබැඳීම සක්‍රීය කිරීම හෝ DBMSSQL සහ EXCP ක්‍රියාවලි සිදුවීම් ලොගය තුළ පටිගත කිරීම සක්‍රීය කිරීම අවශ්‍ය වේ.

2. පරිශීලකයින් වැඩ කරන අතරතුර අද්විතීය නොවන ගැටළුව ඇති වුවහොත්:

2.1 1.4 ඡේදයේ ඇති ක්‍රමය භාවිතා කර ගැටළු සහගත ඉල්ලීම සොයන්න.

2.1.2 සමහර විට විමසුම් ක්‍රියාත්මක කිරීමේදී දෝෂයක් ඇතිවේ, උදාහරණයක් ලෙස:

මෙම දෝෂය සිදුවන්නේ සමුච්චිත ලේඛන මොඩියුලයේ “සංවිධානවල සේවකයින්ගේ වැඩ කරන කාලය” “රෙජිස්ටර් නැවත ගණනය කිරීම්” ක්‍රියා පටිපාටියේ “වෙනස්” යන සේවා වචනය ඉල්ලීමට ඇතුළත් නොවීමයි.
කේතය 1C v 8.x I.e. විය යුතුයි:
ඉල්ලීම = නව ඉල්ලීම (
"විවිධ තෝරන්න
| මූලික තනි පුද්ගල,
. . . . .
ZUP සහ UPP හි නවතම නිකුතු වලදී, දෝෂය සිදු නොවේ, මන්ද එය "වෙනස්" යයි කියයි.

2.2 පෙර ඡේදයෙන් ගැටළුකාරී දර්ශකය සොයා ගැනීමෙන් පසුව, ඔබට අද්විතීය නොවන වාර්තාවක් සොයා ගැනීමට අවශ්ය වේ.
2.2.1. SQL භාවිතයෙන් අද්විතීය නොවන වාර්තා හඳුනා ගැනීම සඳහා "මාළු" ස්ක්‍රිප්ට්:
SQL කේතය S_elect COUNT(*) කවුන්ටරය,<перечисление всех полей соответствующего индекса>සිට<имя таблицы>
කණ්ඩායම විසින්<перечисление всех полей соответствующего индекса>
කවුන්ටරය තිබීම > 1

2.2.2 උදාහරණය. දෝෂයේ ඇති දර්ශකය "_Document140_VT1385_IntKeyIndNG" ලෙස හැඳින්වේ.
වගු ක්ෂේත්ර ලැයිස්තුව:
_Document140_IDRRef, _KeyField, _LineNo1386, _Fld1387, _Fld1388, _Fld1389, _Fld1390, _Fld1391Ref, _Fld1392Ref, 39_Fld1Ref, 39_Fld1 393_RR Ref, _Fld1394,_Fld1395, _Fld1396RRef, _Fld1397, _Fld1398, _Fld1399RRef, _Fld22260_TYPE, _Fld22260_FldRef_260_FRTRef, _Fld22261_RT Ref, _Fld22261_RRRef
පහත ක්‍රියා පටිපාටිය සිදු කිරීමට පෙර, කරුණාකර ඔබගේ දත්ත සමුදාය උපස්ථ කරන්න.
MS SQL සේවාදායක විමසුම් විශ්ලේෂකය තුළ ධාවනය කරන්න:
SQL කේතය S_elect count(*), _Document140_IDRRef, _KeyField
om _Document140_VT1385 වෙතින්
_Document140_IDRRef, _KeyField විසින් සමූහය
ගණන් (*) > 1 තිබීම
_Document140_IDRRef, _KeyField, අනුපිටපත් වාර්තා (id, යතුර) තීරු වල අගයන් සොයා ගැනීමට එය භාවිතා කරන්න.

ඉල්ලීම භාවිතා කරමින්:
SQL කේතය S_elect *
om _Document140_VT1385 වෙතින්
එහිදී _Document140_IDRRef = id1 සහ _KeyField = key1 හෝ _Document140_IDRRef = id2 සහ _KeyField = key2 හෝ ...
අනුපිටපත් ඇතුළත් කිරීම් වල අනෙකුත් තීරු වල අගයන් බලන්න.
ඇතුළත් කිරීම් දෙකටම අර්ථවත් අගයන් තිබේ නම් සහ අගයන් වෙනස් නම්, _KeyField අගය අද්විතීය ලෙස වෙනස් කරන්න. මෙය සිදු කිරීම සඳහා, _KeyField (keymax) හි උපරිම වාඩිලාගත් අගය තීරණය කරන්න:
SQL කේතය S_elect max(_KeyField)
om _Document140_VT1385 වෙතින්
කුමන _Document140_IDRRef = id1
අනුපිටපත් ඇතුළත් කිරීම් වලින් එකක _KeyField අගය නිවැරදි එක සමඟ ප්‍රතිස්ථාපනය කරන්න:
SQL කේතය යාවත්කාලීන කිරීම _Document140_VT1385
_KeyField = keymax + 1 සකසන්න

මෙහි _LineNo1386 = යනු ඔබට පුනරාවර්තන වාර්තා දෙකෙන් එකක් තෝරා ගැනීමට ඉඩ සලසන අතිරේක කොන්දේසියකි.

අනුපිටපත් ඇතුළත් කිරීම් වලින් එකක් (හෝ දෙකම) පැහැදිලිවම වැරදි අර්ථයක් තිබේ නම්, එය ඉවත් කළ යුතුය:
_Document140_VT1385 වෙතින් SQL කේතය මකන්න
කුමන _Document140_IDRRef = id1 සහ _LineNo1386 = lineno1
සියලුම තීරු වල අනුපිටපත් ඇතුළත් කිරීම් එකම අගයන් තිබේ නම්, ඔබ ඒවායින් එකක් තැබිය යුතුය:
SQL කේතය S_elect distinct *
#tmp1 වෙත
_Document140_VT1385 වෙතින්

_Document140_VT1385 වෙතින් මකන්න
කවදාද _Document140_IDRRef = id1 සහ _KeyField = key1

I_Document140_VT1385 වෙත ඇතුල් කරන්න
S_elect #tmp1

D_rop වගුව #tmp1

එක් එක් අනුපිටපත් වාර්තා යුගල සඳහා විස්තර කරන ලද ක්රියා පටිපාටිය සිදු කළ යුතුය.

2.2.3. දෙවන උදාහරණය:
SQL කේතය S_elect COUNT(*) AS Expr2, _IDRRef AS Expr1, _Description
_යොමුව8_ වෙතින්
GROUP by _IDRRef, _Description
තිබීම (COUNT(*) > 1)

2.3.4 1C:Enterprise විමසුමක් භාවිතයෙන් අද්විතීය නොවන වාර්තා නිර්ණය කිරීමේ උදාහරණයක්:
කේතය 1C v 8.x SELECT Directory.Link
නාමාවලියෙන්. නාමාවලිය AS නාමාවලිය
නාමාවලිය අනුව GROUP.Link
ප්‍රමාණය (*) > 1 තිබීම

වෙබ් අඩවියෙන් ලබාගත් තොරතුරු

ඔබට පේළි අඩංගු පණිවිඩයක් ලැබී ඇත:
SQL සේවාදායකය සඳහා Microsoft OLE DB සපයන්නා: දර්ශක හැඳුනුම්පත සඳහා අනුපිටපත් යතුරක් සොයාගත් නිසා අද්විතීය දර්ශකයක් සාදන්න
හෝ
වස්තුවේ අනුපිටපත් යතුරු පේළිය ඇතුළත් කළ නොහැක
හෝ
අද්විතීය නොවන අගයක් අද්විතීය දර්ශකයකට ඇතුල් කිරීමට උත්සාහ කරන ලදී.

විසඳුම්:

1. SQL Server කළමනාකරණ චිත්‍රාගාරයේදී, අපි දෝෂ සහිත දර්ශකය භෞතිකව විනාශ කරමු (මගේ නඩුවේදී එය ගිණුම්කරණ ලේඛනයේ මුළු වගුවේ දර්ශකයකි). 1C හි අපි වැරදි ලේඛන බෙදා හරිමු. පරීක්ෂණ සහ නිවැරදි කිරීමේ මාදිලියේදී, වගු නැවත සුචිගත කිරීම + එකතුව නැවත ගණනය කිරීම සඳහා කොටු පරීක්ෂා කරන්න. 1C දෝෂයකින් තොරව දර්ශකය නැවත නිර්මාණය කරයි. අපි කලින් අසාර්ථක වූ ලියකියවිලි සිදු කරන්නෙමු.

2. 1) Management Studio 2005 භාවිතා කරමින්, මම දෝෂ සහිත වූ දර්ශකයක් නිර්මාණය කිරීම සඳහා නිර්මාණය ස්ක්‍රිප්ට් එකක් සාදා එය ගොනුවකට සුරැකුවෙමි.
2) _AccumRgTn19455 මේසයෙන් ජම්බු දර්ශකය අතින් මැරීම
3) වැනි ඉල්ලීමක් දියත් කරන ලදී
SQL කේතය S_elect count(*), index_fields
AccumRgTn19455 වෙතින්
index_field අනුව GROUP
ගණන (*)>1
2 වන පියවරට පෙර විමසුමෙන් කිසිවක් ආපසු නොදුන්නද, දර්ශකය මරා දැමීමෙන් පසුව, මා සතුව අනුපිටපත් වාර්තා 15ක් දර්ශනය විය.
4) මම සියලුම ඇතුළත් කිරීම් හරහා ගොස් අනුපිටපත් අතින් පිරිසිදු කළෙමි. ඇත්ත වශයෙන්ම, මම ගනුදෙනු කරන්නේ කුමක්ද යන්න තේරුම් ගැනීමට "වාර්තා ව්යුහය" සැකසීමද භාවිතා කළෙමි. _AccumRgTn19455 වගුව “නිෂ්පාදන ප්‍රතිදානය (බදු ගිණුම්කරණය)” සමුච්චකරණ ලේඛනය ගබඩා කරන බව පෙනී ගියේය. මම sql විමසුම් සමඟ ද ටින්කර් කර, අද්විතීය නොවන ලේඛන 15 ක් හඳුනාගෙන, සියලු ක්‍රියා අවසන් වූ පසු, මෙම ලේඛන දෝෂයකින් තොරව සාමාන්‍ය ලෙස සකසා ඇති බව මම 1C හි පරීක්ෂා කළෙමි. ඇත්ත වශයෙන්ම, ඔබ අහඹු ලෙස මේස පිරිසිදු නොකළ යුතුය: පිරිසිදු කරන දේ සහ එය හැරවිය හැක්කේ කෙසේද යන්න තේරුම් ගැනීම වැදගත්ය.
5) ගොනුවක සුරකින ලද දර්ශකයක් සෑදීමට ඉල්ලීමක් දියත් කරන ලදී.
6) දත්ත සමුදාය තනි-පරිශීලක මාදිලියට මාරු කර dbcc checkdb දියත් කරන ලදී - මෙවර කිසිදු දෝෂයක් ජනනය නොවීය.
7) පාදම නැවත තනි පරිශීලක මාදිලියට මාරු කරන ලදී.
එච්චරයි... ප්‍රශ්නය ජයගත්තා. හොඳයි, නැවත 1C දී මම "පරීක්ෂා කිරීම සහ නිවැරදි කිරීම" දියත් කළෙමි, එහිද සෑම දෙයක්ම හොඳින් සිදු විය, මම අද්විතීය නොවන දර්ශකය ගැන පැමිණිලි කිරීම නැවැත්තුවා.

3. අනන්‍යතාවය ශුන්‍ය අගයන් සහිත දින වල පවතී නම්, එවිට 2000 ට සමාන ඕෆ්සෙට් පරාමිතියක් සහිත දත්ත සමුදායක් නිර්මාණය කිරීමෙන් ගැටළුව විසඳනු ලැබේ.

1. ගැටළුව දත්ත සමුදාය පූරණය කරන්නේ නම්, එවිට:
1.1 ඔබ MS SQL Server දත්ත ගබඩාවකට (dt-file එකක් භාවිතා කරමින්) පූරණය කරන්නේ නම්, දත්ත සමුදාය නිර්මාණය කිරීමේදී, පූරණය කිරීමට පෙර, ඕෆ්සෙට් දිනය සඳහන් කරන්න - 2000.
දත්ත සමුදාය දැනටමත් ඕෆ්සෙට් 0 සමඟ නිර්මාණය කර ඇත්නම්, 2000 සමඟ නව එකක් සාදන්න.

1.2 ගොනු අනුවාදයේ දත්ත සමුදාය සමඟ වැඩ කිරීමට හැකි නම්, පරීක්ෂා කිරීම සහ නිවැරදි කිරීම මෙන්ම වින්‍යාස කිරීම - වින්‍යාසය පරීක්ෂා කිරීම - වින්‍යාසයේ තාර්කික අඛණ්ඩතාව පරීක්ෂා කිරීම + වැරදි සබැඳි සෙවීම සිදු කරන්න.

1.3 ගොනු අනුවාදයක් නොමැති නම්, DT වෙතින් DB2 සමඟ සේවාදායක-සේවාදායක අනුවාදයකට පූරණය කිරීමට උත්සාහ කරන්න (එය සුවිශේෂත්වය මත අඩු ඉල්ලුමක් ඇත), ඉන්පසු පරීක්ෂණ සහ නිවැරදි කිරීම් සිදු කරන්න, මෙන්ම වින්‍යාස කිරීම - වින්‍යාසය සත්‍යාපනය කරන්න - වින්‍යාසයේ තාර්කික අඛණ්ඩතාව පරීක්ෂා කරන්න. + වලංගු නොවන යොමු සඳහා සොයන්න.

1.4 ගැටළුව ස්ථානගත කිරීම සඳහා, පැටවීම අසාර්ථක වූ වස්තුවේ දත්ත ඔබට තීරණය කළ හැකිය. මෙය සිදු කිරීම සඳහා, ඔබ ආරම්භයේදී ප්‍රොෆයිලර් උපයෝගිතා තුළ ලුහුබැඳීම සක්‍රීය කිරීම හෝ DBMSSQL සහ EXCP ක්‍රියාවලි සිදුවීම් ලොගය තුළ පටිගත කිරීම සක්‍රීය කිරීම අවශ්‍ය වේ.

2. පරිශීලකයින් වැඩ කරන අතරතුර අද්විතීය නොවන ගැටළුව ඇති වුවහොත්:

2.1 1.4 ඡේදයේ ඇති ක්‍රමය භාවිතා කර ගැටළු සහගත ඉල්ලීම සොයන්න.

2.1.2 සමහර විට විමසුම් ක්‍රියාත්මක කිරීමේදී දෝෂයක් ඇතිවේ, උදාහරණයක් ලෙස:

මෙම දෝෂය සිදුවන්නේ සමුච්චිත ලේඛන මොඩියුලයේ “සංවිධානවල සේවකයින්ගේ වැඩ කරන කාලය” “රෙජිස්ටර් නැවත ගණනය කිරීම්” ක්‍රියා පටිපාටියේ “වෙනස්” යන සේවා වචනය ඉල්ලීමට ඇතුළත් නොවීමයි.
කේතය 1C v 8.x I.e. විය යුතුයි:
ඉල්ලීම = නව ඉල්ලීම(
"විවිධ තෝරන්න
| මූලික තනි පුද්ගල,
. . . . .
ZUP සහ UPP හි නවතම නිකුතු වලදී, දෝෂය සිදු නොවේ, මන්ද එය "වෙනස්" යයි කියයි.

2.2 පෙර ඡේදයෙන් ගැටළුකාරී දර්ශකය සොයා ගැනීමෙන් පසුව, ඔබට අද්විතීය නොවන වාර්තාවක් සොයා ගැනීමට අවශ්ය වේ.
2.2.1. SQL භාවිතයෙන් අද්විතීය නොවන වාර්තා හඳුනා ගැනීම සඳහා "මාළු" ස්ක්‍රිප්ට්:
SQL කේතය S_elect COUNT(*) කවුන්ටරය,<перечисление всех полей соответствующего индекса>සිට<имя таблицы>
කණ්ඩායම විසින්<перечисление всех полей соответствующего индекса>
කවුන්ටරය තිබීම > 1

2.2.2 උදාහරණය. දෝෂයේ ඇති දර්ශකය "_Document140_VT1385_IntKeyIndNG" ලෙස හැඳින්වේ.
වගු ක්ෂේත්ර ලැයිස්තුව:
_Document140_IDRRef, _KeyField, _LineNo1386, _Fld1387, _Fld1388, _Fld1389, _Fld1390, _Fld1391Ref, _Fld1392Ref, 39_Fld1Ref, 39_Fld1 393_RR Ref, _Fld1394,_Fld1395, _Fld1396RRef, _Fld1397, _Fld1398, _Fld1399RRef, _Fld22260_TYPE, _Fld22260_FldRef_260_FRTRef, _Fld22261_RT Ref, _Fld22261_RRRef
පහත ක්‍රියා පටිපාටිය සිදු කිරීමට පෙර, කරුණාකර ඔබගේ දත්ත සමුදාය උපස්ථ කරන්න.
MS SQL සේවාදායක විමසුම් විශ්ලේෂකය තුළ ධාවනය කරන්න:
SQL කේතය S_elect count(*), _Document140_IDRRef, _KeyField
_Document140_VT1385 වෙතින්
_Document140_IDRRef, _KeyField විසින් සමූහය
ගණන් (*) > 1 තිබීම
_Document140_IDRRef, _KeyField, අනුපිටපත් වාර්තා (id, යතුර) තීරු වල අගයන් සොයා ගැනීමට එය භාවිතා කරන්න.

ඉල්ලීම භාවිතා කරමින්:
SQL කේතය S_elect *
_Document140_VT1385 වෙතින්
හෝ _Document140_IDRRef = id2 සහ _KeyField = key2 හෝ ...
අනුපිටපත් ඇතුළත් කිරීම් වල අනෙකුත් තීරු වල අගයන් බලන්න.
ඇතුළත් කිරීම් දෙකටම අර්ථවත් අගයන් තිබේ නම් සහ අගයන් වෙනස් නම්, _KeyField අගය අද්විතීය ලෙස වෙනස් කරන්න. මෙය සිදු කිරීම සඳහා, _KeyField (keymax) හි උපරිම වාඩිලාගත් අගය තීරණය කරන්න:
SQL කේතය S_elect max(_KeyField)
_Document140_VT1385 වෙතින්
එහිදී _Document140_IDRRef = id1
අනුපිටපත් ඇතුළත් කිරීම් වලින් එකක _KeyField අගය නිවැරදි එක සමඟ ප්‍රතිස්ථාපනය කරන්න:
SQL කේත යාවත්කාලීන _Document140_VT1385
_KeyField = keymax + 1 සකසන්න
මෙහි _LineNo1386 = යනු ඔබට පුනරාවර්තන වාර්තා දෙකෙන් එකක් තෝරා ගැනීමට ඉඩ සලසන අතිරේක කොන්දේසියකි.

අනුපිටපත් ඇතුළත් කිරීම් වලින් එකක් (හෝ දෙකම) පැහැදිලිවම වැරදි අර්ථයක් තිබේ නම්, එය ඉවත් කළ යුතුය:
_Document140_VT1385 වෙතින් SQL කේතය මකන්න
එහිදී _Document140_IDRRef = id1 සහ _LineNo1386 = lineno1
සියලුම තීරු වල අනුපිටපත් ඇතුළත් කිරීම් එකම අගයන් තිබේ නම්, ඔබ ඒවායින් එකක් තැබිය යුතුය:
SQL කේතය S_elect distinct *
#tmp1 වෙත
_Document140_VT1385 වෙතින්
එහිදී _Document140_IDRRef = id1 සහ _KeyField = key1

_Document140_VT1385 වෙතින් මකන්න
එහිදී _Document140_IDRRef = id1 සහ _KeyField = key1

I_Document140_VT1385 වෙත ඇතුල් කරන්න
S_elect #tmp1

D_rop වගුව #tmp1

එක් එක් අනුපිටපත් වාර්තා යුගල සඳහා විස්තර කරන ලද ක්රියා පටිපාටිය සිදු කළ යුතුය.

2.2.3. දෙවන උදාහරණය:
SQL කේතය S_elect COUNT(*) AS Expr2, _IDRRef AS Expr1, _Description
_යොමුව8_ වෙතින්
GROUP by _IDRRef, _Description
තිබීම (COUNT(*) > 1)

2.3.4 1C:Enterprise විමසුමක් භාවිතයෙන් අද්විතීය නොවන වාර්තා නිර්ණය කිරීමේ උදාහරණයක්:
කේතය 1C v 8.x SELECT Directory.Link
නාමාවලියෙන්. නාමාවලිය AS නාමාවලිය
නාමාවලිය අනුව GROUP.Link
ප්‍රමාණය (*) > 1 තිබීම




ඉහල