محاولة إدراج قيمة فريدة في فهرس فريد. محاولة لإدراج قيمة فريدة في فهرس فريد لإزالة الفهارس غير المقصودة في ملف 1C 8

يمكنك التقيت برسالة تحتوي على خطوط:
موفر Microsoft OLE DB ل خادم قاعدة البيانات: إنشاء مؤشر فريد تم إنهاءه لأنه تم العثور على مفتاح مكرر لمعرف الفهرس
أو
لا يمكن _nsert ruplicate الصف الرئيسي في الكائن
أو
محاولة إدراج قيمة فريدة في فهرس فريد.

خيارات الحل:

1. في SQL Server Management Studio، تدمير الفقر الفاشل جسديا (في حالتي، كان مؤشرا على جدول نتائج السجل المحاسبي). في 1C، سنقوم بفحص وثائق الفشل. في وضع الاختبار والتصحيح، نضع Reindexing Dunk من الجداول + إعادة حساب النتائج. 1C إعادة إنشاء الفهرس دون خطأ. لدينا وثائق مذهلة سابقا.

2. 1) استخدام Management Studio 2005 تم إنشاؤه إلى إنشاء البرنامج النصي لإنشاء فهرس كان عربات التي تجرها الدواب وحفظ الملف.
2) قتل يدويا فهرس سترة من طاولة _accumrgtn19455
3) أطلقت طلب عرض
رمز SQL S_ELECT العد (*)، الحقول_Index
من Accumrgtn19455.
المجموعة حسب الحقول_index.
وجود عدد (*)\u003e 1
بعد قتل المؤشر، اختفت 15 من سجلات مكررة، على الرغم من قبل تنفيذ الفقرة 2، لم أعد أي شيء.
4) ينظر إلى كل السجلات وتنظيف التكرارات يدويا. في الواقع، استخدمت أيضا معالجة "هيكل التقرير" لفهم ما أتعامل معه. اتضح أن الجدول _accumrgtn19455 يخزن سجل التراكم "الإنتاج (المحاسبة الضريبية)". ما زلت حفرت طلبات SQL، كشفت 15 مستندات محرومة وبعد نهاية جميع الأفعال التي راجعت في 1C أن هذه المستندات يتم تنفيذها بشكل طبيعي، دون أخطاء. فقط قم بتنظيف جدول Nameum، بالطبع، لا يستحق كل هذا العناء: من المهم أن نفهم أنه يتم تنظيفه وما يمكن أن يتحول إليه.
5) أطلقت طلبا لإنشاء فهرس تم حفظه في الملف.
6) ترجم قاعدة البيانات إلى وضع مستخدم واحد وإطلاق CheckDB DBCC - هذه المرة لا يتم إصدار خطأ واحد.
7) نقل قاعدة البيانات العودة إلى وضع المستخدم الفردي.
كل شيء ... المشكلة هزمت. حسنا، في 1C أطلقت "اختبار وتصحيح"، كل شيء على ما يرام هناك، كان طبيعيا، توقف عن اليمين على مؤشر غير فريد.

3. إذا تكمن عدم الإرسال في التواريخ مع قيم صفرتم حل المشكلة عن طريق إنشاء قاعدة بيانات مع معلمة إزاحة إلى 2000.

1. إذا كانت مشكلة تحميل قاعدة البيانات، ثم:
1.1. إذا قمت بإنشاء التنزيل (استخدم ملف DT) إلى قاعدة بيانات SQL Server MS، ثم عند إنشاء قاعدة قبل التنزيل، حدد إزاحة التواريخ - 2000.
إذا تم إنشاء القاعدة بالفعل باستخدام النزوح 0، فقم بإنشاء واحدة جديدة من عام 2000.

1.2. إذا كان لديك القدرة على العمل مع قاعدة البيانات في الملف، فستتختبار وإصلاحها، بالإضافة إلى التحقق من التكوين - التحقق من تكامل التكوين المنطقي + البحث عن روابط غير صحيحة.

1.3. إذا لم يكن هناك إصدار ملف، فحاول التنزيل من DT إلى إصدار خادم العميل مع DB2 (وهو أقل مطالبة بالتفرد)، ثم إجراء الاختبار والإصلاح، بالإضافة إلى التكوين - التحقق من التكوين - التحقق من سلامة التكوين المنطقي + البحث للحصول على روابط غير صحيحة.

1.4. لتوطين المشكلة، يمكنك تحديد بيانات الكائنات، التي فشلت تحميلها. للقيام بذلك، يجب عليك تمكين التتبع في الأداة المساعدة Profiler أثناء التنزيل أو تمكين السجل في سجل تقنية DBMSSQL و Excp.

2. إذا تتجلى مشكلة غير سارة أثناء المستخدمين:

2.1. ابحث عن طريقة طلب مشكلة الفقرة 1.4.

2.1.2. في بعض الأحيان يحدث الخطأ أثناء تنفيذ الطلبات، على سبيل المثال:

يحدث هذا الخطأ بسبب حقيقة أنه في وحدة تسجيل سجل التسجيل "ساعات عمل موظفي المنظمات" في إجراء "التسجيلات" في الطلب لا يكلف الكلمة الرسمية "مختلفة".
رمز 1C V 8. أ. يجب أن يكون:
طلب \u003d طلب جديد (
"اختر مختلفا
| المعينين الرئيسيين،
. . . . .
في أحدث إصدار من zup و UPP، لا يحدث الخطأ بسبب هناك "مختلفة".

2.2. بعد العثور على مؤشر مشكلة من العنصر السابق، من الضروري العثور على إدخال غير فريد.
2.2.1. "الأسماك" البرنامج النصي لتحديد الإدخالات غير الفريدة باستخدام SQL:
كود SQL S_ELETT عد (*) عداد،<перечисление всех полей соответствующего индекса> من عند.<имя таблицы>
مجموعة من.<перечисление всех полей соответствующего индекса>
وجود مكافحة\u003e 1

2.2.2 مثال. يسمى الفهرس في الخطأ "_document140_vt13855_intkeyindng".
قائمة الحقول الجدول:
_Document140_IDRRef، _KeyField، _LineNo1386، _Fld1387، _Fld1388، _Fld1389، _Fld1390، _Fld1391RRef، _Fld1392RRef، _Fld1393_TYPE، _Fld1393_RTRef، _Fld1393_RRRef، _Fld1394، _Fld1395، _Fld1396RRef، _Fld1397، _Fld1398، _Fld1399RRef، _Fld22260_TYPE، _Fld22260_RTRef، _Fld22260_RRRef، _Fld22261_TYPE، _Fld22261_RTRef، _Fld22261_RRRef
قبل إجراء الإجراء التالي، دعم قاعدة البيانات.
تشغيل في MS SQL Server Query analizer:
SQL S_ELECT عدد (*)، _Document140_idrref، _Keyfield
من _document140_vt1385.
المجموعة بواسطة _Document140_idrref، _keyfield
وجود عدد (*)\u003e 1
مع ذلك، تعرف على قيم _Document140_idrref، _KEYFILDEND العمود، الإدخالات المكررة (المعرف، المفتاح).

باستخدام الاستعلام:
SQL S_ELECT * رمز *
من _document140_vt1385.
أو _Document140_idrref \u003d ID2 و _keyfield \u003d key2 أو ...
انظر إلى قيم أعمدة السجلات المكررة الأخرى.
إذا كانت كلا السجلات لها قيم ذات مغزى وهذه القيم مختلفة، فقم بتصحيح القيمة _KEYFILDE على واحدة فريدة من نوعها. للقيام بذلك، حدد الحد الأقصى لقيمة مشغول _KEYFILD (KEYMAX):
SQL S_ELECT MAX (_KEYFIELT)
من _document140_vt1385.
حيث _document140_idrref \u003d ID1
استبدل القيمة _Keyfield في أحد السجلات المتكررة إلى الصحيح:
رمز SQL Update _Document140_VT1385
تعيين _keyfield \u003d Keymax + 1
هنا _lineno1386 \u003d - حالة إضافيةالذي يسمح لك بتحديد أحد إدخالات متكررة.

إذا كان واحد (أو كليهما) من السجلات المتكررة واضحة قيمة غير صحيحة، ثم يجب إزالته:
SQL حذف من رمز _Document140_VT1385
حيث _document140_idrref \u003d ID1 و _lineno1386 \u003d lineno1
إذا كانت السجلات المتكررة لها نفس القيم في جميع الأعمدة، فأنت بحاجة إلى مغادرة واحدة:
رمز SQL S_ELECT متميز *
في # TMP1.
من _document140_vt1385.
حيث _document140_idrref \u003d ID1 و _keyfield \u003d key1

حذف من _document140_vt1385.
حيث _document140_idrref \u003d ID1 و _keyfield \u003d key1

i_nsert في _document140_vt1385.
S_ELECT # TMP1.

D_ROP Table # TMP1

يجب إجراء الإجراء الموصوف لكل زوج من السجلات المتكررة.

2.2.3. المثال الثاني:
Code SQL S_ELECT COUNT (*) كما expr2، _idrref كما expr1، _descriftion
من _Reference8_
مجموعة بواسطة _idrref، _Description
وجود (العد (*)\u003e 1)

2.3.4 مثال على تحديد الإدخالات غير الفريدة باستخدام طلب 1C: Enterprise:
رمز 1C V 8.x حدد كتيب الرابط
من كتيب. كتيب كدليل
مجموعة في كتاب مرجعي
وجود كمية (*)\u003e 1

يمكنك التقيت برسالة تحتوي على خطوط:
Microsoft OLE DB مزود SQL Server: إنشاء فهرس فريد تم إنهاءه لأنه تم العثور على مفتاح مكرر لمعرف الفهرس
أو
لا يمكن _nsert ruplicate الصف الرئيسي في الكائن
أو
محاولة إدراج قيمة فريدة في فهرس فريد.

خيارات الحل:

1. في SQL Server Management Studio، تدمير الفقر الفاشل جسديا (في حالتي، كان مؤشرا على جدول نتائج السجل المحاسبي). في 1C، سنقوم بفحص وثائق الفشل. في وضع الاختبار والتصحيح، نضع Reindexing Dunk من الجداول + إعادة حساب النتائج. 1C إعادة إنشاء الفهرس دون خطأ. لدينا وثائق مذهلة سابقا.

2. 1) استخدام Management Studio 2005 تم إنشاؤه إلى إنشاء البرنامج النصي لإنشاء فهرس كان عربات التي تجرها الدواب وحفظ الملف.
2) قتل يدويا فهرس سترة من طاولة _accumrgtn19455
3) أطلقت طلب عرض
رمز SQL S_ELECT العد (*)، الحقول_Index
من Accumrgtn19455.
المجموعة حسب الحقول_index.
وجود عدد (*)\u003e 1
بعد قتل المؤشر، اختفت 15 من سجلات مكررة، على الرغم من قبل تنفيذ الفقرة 2، لم أعد أي شيء.
4) ينظر إلى كل السجلات وتنظيف التكرارات يدويا. في الواقع، استخدمت أيضا معالجة "هيكل التقرير" لفهم ما أتعامل معه. اتضح أن الجدول _accumrgtn19455 يخزن سجل التراكم "الإنتاج (المحاسبة الضريبية)". ما زلت حفرت طلبات SQL، كشفت 15 مستندات محرومة وبعد نهاية جميع الأفعال التي راجعت في 1C أن هذه المستندات يتم تنفيذها بشكل طبيعي، دون أخطاء. فقط قم بتنظيف جدول Nameum، بالطبع، لا يستحق كل هذا العناء: من المهم أن نفهم أنه يتم تنظيفه وما يمكن أن يتحول إليه.
5) أطلقت طلبا لإنشاء فهرس تم حفظه في الملف.
6) ترجم قاعدة البيانات إلى وضع مستخدم واحد وإطلاق CheckDB DBCC - هذه المرة لا يتم إصدار خطأ واحد.
7) نقل قاعدة البيانات العودة إلى وضع المستخدم الفردي.
كل شيء ... المشكلة هزمت. حسنا، في 1C أطلقت "اختبار وتصحيح"، كل شيء على ما يرام هناك، كان طبيعيا، توقف عن اليمين على مؤشر غير فريد.

3. إذا تكمن عدم الإرسال في التواريخ مع قيم صفرتم حل المشكلة عن طريق إنشاء قاعدة بيانات مع معلمة إزاحة إلى 2000.

1. إذا كانت مشكلة تحميل قاعدة البيانات، ثم:
1.1. إذا قمت بإنشاء التنزيل (استخدم ملف DT) إلى قاعدة بيانات SQL Server MS، ثم عند إنشاء قاعدة قبل التنزيل، حدد إزاحة التواريخ - 2000.
إذا تم إنشاء القاعدة بالفعل باستخدام النزوح 0، فقم بإنشاء واحدة جديدة من عام 2000.

1.2. إذا كان لديك القدرة على العمل مع قاعدة البيانات في الملف، فستتختبار وإصلاحها، بالإضافة إلى التحقق من التكوين - التحقق من تكامل التكوين المنطقي + البحث عن روابط غير صحيحة.

1.3. إذا لم يكن هناك إصدار ملف، فحاول التنزيل من DT إلى إصدار خادم العميل مع DB2 (وهو أقل مطالبة بالتفرد)، ثم إجراء الاختبار والإصلاح، بالإضافة إلى التكوين - التحقق من التكوين - التحقق من سلامة التكوين المنطقي + البحث للحصول على روابط غير صحيحة.

1.4. لتوطين المشكلة، يمكنك تحديد بيانات الكائنات، التي فشلت تحميلها. للقيام بذلك، يجب عليك تمكين التتبع في الأداة المساعدة Profiler أثناء التنزيل أو تمكين السجل في سجل تقنية DBMSSQL و Excp.

2. إذا تتجلى مشكلة غير سارة أثناء المستخدمين:

2.1. ابحث عن طريقة طلب مشكلة الفقرة 1.4.

2.1.2. في بعض الأحيان يحدث الخطأ أثناء تنفيذ الطلبات، على سبيل المثال:

يحدث هذا الخطأ بسبب حقيقة أنه في وحدة تسجيل سجل التسجيل "ساعات عمل موظفي المنظمات" في إجراء "التسجيلات" في الطلب لا يكلف الكلمة الرسمية "مختلفة".
رمز 1C V 8. أ. يجب أن يكون:
طلب \u003d طلب جديد (
"اختر مختلفا
| المعينين الرئيسيين،
. . . . .
في أحدث إصدار من zup و UPP، لا يحدث الخطأ بسبب هناك "مختلفة".

2.2. بعد العثور على مؤشر مشكلة من العنصر السابق، من الضروري العثور على إدخال غير فريد.
2.2.1. "الأسماك" البرنامج النصي لتحديد الإدخالات غير الفريدة باستخدام SQL:
كود SQL S_ELETT عد (*) عداد،<перечисление всех полей соответствующего индекса> من عند.<имя таблицы>
مجموعة من.<перечисление всех полей соответствующего индекса>
وجود مكافحة\u003e 1

2.2.2 مثال. يسمى الفهرس في الخطأ "_document140_vt13855_intkeyindng".
قائمة الحقول الجدول:
_Document140_IDRRef، _KeyField، _LineNo1386، _Fld1387، _Fld1388، _Fld1389، _Fld1390، _Fld1391RRef، _Fld1392RRef، _Fld1393_TYPE، _Fld1393_RTRef، _Fld1393_RRRef، _Fld1394، _Fld1395، _Fld1396RRef، _Fld1397، _Fld1398، _Fld1399RRef، _Fld22260_TYPE، _Fld22260_RTRef، _Fld22260_RRRef، _Fld22261_TYPE، _Fld22261_RTRef، _Fld22261_RRRef
قبل إجراء الإجراء التالي، قم بعمل نسخة احتياطية من قاعدة البيانات.
تشغيل في MS SQL Server Query analizer:
SQL S_ELECT عدد (*)، _Document140_idrref، _Keyfield
من _document140_vt1385.
المجموعة بواسطة _Document140_idrref، _keyfield
وجود عدد (*)\u003e 1
مع ذلك، تعرف على قيم _Document140_idrref، _KEYFILDEND العمود، الإدخالات المكررة (المعرف، المفتاح).

باستخدام الاستعلام:
SQL S_ELECT * رمز *
من _document140_vt1385.
أو _Document140_idrref \u003d ID2 و _keyfield \u003d key2 أو ...
انظر إلى قيم أعمدة السجلات المكررة الأخرى.
إذا كانت كلا السجلات لها قيم ذات مغزى وهذه القيم مختلفة، فقم بتصحيح القيمة _KEYFILDE على واحدة فريدة من نوعها. للقيام بذلك، حدد الحد الأقصى لقيمة مشغول _KEYFILD (KEYMAX):
SQL S_ELECT MAX (_KEYFIELT)
من _document140_vt1385.
حيث _document140_idrref \u003d ID1
استبدل القيمة _Keyfield في أحد السجلات المتكررة إلى الصحيح:
رمز SQL Update _Document140_VT1385
تعيين _keyfield \u003d Keymax + 1
هنا _lineno1386 \u003d - حالة إضافية تتيح لك تحديد واحدة من سجلتين متكررتان.

إذا كان لدى المرء (أو كليهما) من السجلات المتكررة قيمة غير صحيحة واضحة، فيجب إزالتها:
SQL حذف من رمز _Document140_VT1385
حيث _document140_idrref \u003d ID1 و _lineno1386 \u003d lineno1
إذا كانت السجلات المتكررة لها نفس القيم في جميع الأعمدة، فأنت بحاجة إلى مغادرة واحدة:
رمز SQL S_ELECT متميز *
في # TMP1.
من _document140_vt1385.
حيث _document140_idrref \u003d ID1 و _keyfield \u003d key1

حذف من _document140_vt1385.
حيث _document140_idrref \u003d ID1 و _keyfield \u003d key1

i_nsert في _document140_vt1385.
S_ELECT # TMP1.

D_ROP Table # TMP1

يجب إجراء الإجراء الموصوف لكل زوج من السجلات المتكررة.

2.2.3. المثال الثاني:
Code SQL S_ELECT COUNT (*) كما expr2، _idrref كما expr1، _descriftion
من _Reference8_
مجموعة بواسطة _idrref، _Description
وجود (العد (*)\u003e 1)

2.3.4 مثال على تحديد الإدخالات غير الفريدة باستخدام طلب 1C: Enterprise:
رمز 1C V 8.x حدد كتيب الرابط
من كتيب. كتيب كدليل
مجموعة في كتاب مرجعي
وجود كمية (*)\u003e 1

ستوفر هذه المقالة ما يجب القيام به إذا كنت، عند العمل مع 1C: Enterprise 8.1، قابلت رسالة تحتوي على خطوط:

لا يمكن إدراج صف مكرر رئيسي في الكائن

محاولة إدراج قيمة فريدة في فهرس فريد.

ما هو الفهرس؟

المؤشرات هي هيكل يسمح لك بإجراء الوصول السريع إلى صفوف الجدول بناء على قيم واحد أو أكثر من الأعمدة.
يحتوي المؤشر على مفاتيح مصنوعة من أعمدة جدول أو أكثر أو طرق عرض، والمؤشرات التي يتم تعيينها إلى موقع التخزين للبيانات المعينة.
تقلل المؤشرات من مقدار البيانات التي يجب مراعاتها لإرجاع المجموعة الناتجة.

على الرغم من أن المؤشر مرتبط بعمود معين (أو أعمدة) من الجدول، إلا أنه لا يزال كائن قاعدة بيانات مستقل.

مؤشرات الجدول في قاعدة البيانات 1C: يتم إنشاء الشركة ضمنيا عند إنشاء كائنات التكوين، وكذلك كائنات التكوين الأخرى أو غيرها.

الجوهر الفيزيائي للفهارس في MS SQL Server 2005.

البيانات المخزنة جسديا في الصفحات 8kb.وبعد مباشرة بعد الإبداع، حتى يكون لدى الجدول فهارس، يبدو الجدول كأجهزة كومة (كومة) من البيانات. السجلات لا تملك طلب تخزين معين.
عندما تريد الوصول إلى البيانات، سينتج SQL Server مسح الجدول (مسح الجدول). يقوم SQL Server بمسح الجدول بأكمله للعثور على السجلات المطلوبة.
من هنا، تصبح المهام الأساسية للفهارس مفهومة:
- زيادة سرعات الوصول إلى البيانات
- دعم تفرد البيانات.

على الرغم من المزايا، فإن المؤشرات لديها أيضا عدد من أوجه القصور. أول واحد هو الفهارس تشغل مكان إضافي على القرص وب. ذاكرة الوصول العشوائيوبعد في كل مرة تقوم فيها بإنشاء فهرس، يمكنك الاحتفاظ بالمفاتيح في ترتيب تنازلي أو تصاعدي، مما قد يكون له بنية متعددة المستويات. وأكثر / أطول المفتاح المزيد من الحجم فهرس. العيب الثاني - عمليات بطيئة إدراج وتحديثات وحذف السجلات.
في MS SQL Server 2005، يتم تطبيق عدة أنواع من الفهارس:

  • مؤشرات غير نظيفة
  • المؤشرات العنقودية (أو التجمع)؛
  • مؤشرات فريدة؛
  • مؤشرات مع الأعمدة المدرجة
  • وجهات النظر المفهرسة
  • نص كامل

مؤشر فريد من نوعه

تفرد القيم في الأعمدة المفهرسة مؤشرات فريدة من نوعها. إذا كان ذلك متاحا، فلن يسمح لك الخادم بإدراج القيمة الجديدة أو تغيير القيمة الحالية بحيث تظهر قيمتان متطابقتان في العمود نتيجة لهذه العملية.
الفهرس الفريد هو نوع من الفوئي ويمكن تنفيذه لكل من الكتلة ومفهرس غير نظيف. قد توجد جدول واحد مجموعة واحدة فريدة من نوعها والعديد من المؤشرات غير النطاق الفريدة.
يجب تعريف الفهارس الفريدة فقط عندما تكون ضرورية حقا. لضمان سلامة البيانات في عمود، يمكنك تحديد سلامة المفتاح الفريد أو الأساسي، وليس اللجوء إلى فهارس فريدة من نوعها. استخدامها فقط لضمان سلامة البيانات هي مساحة إنفاق غير مبررة في قاعدة البيانات. بالإضافة إلى ذلك، يتم إنفاق وقت المعالج على صيانتها.

1C: Enterprise 8.1 بدءا من الإصدار 8.1 يستخدم بنشاط المؤشرات الفريدة العنقودية. هذا يعني أنه عند التحول من 8.0 أو الانتقال من 8.1.7، يمكنك الحصول على خطأ في المؤشر غير المعجل.

إذا تكمن التسليم في التواريخ مع قيم صفر، فسيتم حل المشكلة عن طريق إنشاء قاعدة مع معلمة إزاحة إلى 2000.

ما يجب القيام به؟

1. إذا كانت مشكلة تحميل قاعدة البيانات، ثم:

1.1. إذا قمت بإنشاء التنزيل (استخدم ملف DT) إلى قاعدة بيانات SQL Server MS، ثم عند إنشاء قاعدة قبل التنزيل، حدد إزاحة التواريخ - 2000.

إذا تم إنشاء القاعدة بالفعل باستخدام النزوح 0، فقم بإنشاء واحدة جديدة من عام 2000.

1.2. إذا كان لديك القدرة على العمل مع قاعدة البيانات في الملف، فستتختبار وإصلاحها، بالإضافة إلى التحقق من التكوين - التحقق من تكامل التكوين المنطقي + البحث عن روابط غير صحيحة.

1.3. إذا لم يكن هناك إصدار ملف، فحاول التنزيل من DT إلى إصدار خادم العميل مع DB2 (وهو أقل مطالبة بالتفرد)، ثم إجراء الاختبار والإصلاح، بالإضافة إلى التكوين - التحقق من التكوين - التحقق من سلامة التكوين المنطقي + البحث للحصول على روابط غير صحيحة.

1.4. لتوطين المشكلة، يمكنك تحديد بيانات الكائنات، التي فشلت تحميلها. للقيام بذلك، يجب عليك تمكين التتبع في الأداة المساعدة Profiler أثناء التنزيل أو تشغيل سجل سجل الأحداث DBMSSQL و EXPP.

1.5. إذا كانت العقدة متاحة (خطط تبادل)، فقم بإجراء التبادل. يمكنك أيضا إكمال Exchange لتنفيذ الفقرة 2.3.5.

2. إذا تتجلى مشكلة غير سارة أثناء المستخدمين:

2.1. ابحث عن طريقة طلب مشكلة الفقرة 1.4.

2.1.2. في بعض الأحيان يحدث الخطأ أثناء تنفيذ الطلبات، على سبيل المثال:

ينشأ هذا الخطأ بسبب حقيقة أنه في سجل تراكم "ساعات عمل موظفي المنظمات" في إجراءات ورقة التسجيل، فإن الكلمة الرسمية "مختلفة" لا جديرة بالاهتمام.

أولئك. يجب أن يكون:

طلب \u003d طلب جديد (
"اختر مختلفا
| المعينين الرئيسيين،

في أحدث إصدار من zup و UPP، لا يحدث الخطأ بسبب هناك "مختلفة".

2.2. بعد العثور على مؤشر مشكلة من العنصر السابق، من الضروري العثور على إدخال غير فريد.

2.2.1. "الأسماك" البرنامج النصي لتحديد الإدخالات غير الفريدة باستخدام SQL:
حدد العداد (*)<перечисление всех полей соответствующего индекса> من عند.<имя таблицы>
مجموعة من.<перечисление всех полей соответствующего индекса>
وجود مكافحة\u003e 1

2.2.2 مثال. يسمى الفهرس في الخطأ "_document140_vt13855_intkeyindng".

قائمة الحقول الجدول:

document140_idrref، _ideyfield، _lineno1386، _fld1387، _fld1388، _fld1389، _fld1390، _fld1391rref، _fld1392rref، _fld1393_type، _fld1393_rtref، _fld1393_rrref، _fld1394،

FLD1395، _fld1396، _fld1398، _fld1399rref، _fld22260_type، _fld22260_rtref، _fld22260_rrref، _fld22261_type، _fld22261_rtref، _fld22261_rrref

قبل إجراء الإجراء التالي، قم بعمل نسخة احتياطية من قاعدة البيانات.
تشغيل في MS SQL Server Query analizer:

حدد عدد (*)، _document140_idrref، _keyfield
من _document140_vt1385.
المجموعة بواسطة _Document140_idrref، _keyfield
وجود عدد (*)\u003e 1

مع ذلك، تعرف على قيم _Document140_idrref، _KEYFILDEND العمود، الإدخالات المكررة (المعرف، المفتاح).

باستخدام الاستعلام:

تحديد *
من _document140_vt1385.
أو _Document140_idrref \u003d ID2 و _keyfield \u003d key2 أو ...

انظر إلى قيم أعمدة السجلات المكررة الأخرى.

إذا كانت كلا السجلات لها قيم ذات مغزى وهذه القيم مختلفة، فقم بتصحيح القيمة _KEYFILDE على واحدة فريدة من نوعها. للقيام بذلك، حدد الحد الأقصى لقيمة مشغول _KEYFILD (KEYMAX):

حدد MAX (_KEYFILD)
من _document140_vt1385.
حيث _document140_idrref \u003d ID1

استبدل القيمة _Keyfield في أحد السجلات المتكررة إلى الصحيح:

تحديث _document140_vt1385.
تعيين _keyfield \u003d Keymax + 1

هنا _lineno1386 \u003d - حالة إضافية تتيح لك تحديد واحدة من سجلتين متكررتان.

إذا كان لدى المرء (أو كليهما) من السجلات المتكررة قيمة غير صحيحة واضحة، فيجب إزالتها:


حيث _document140_idrref \u003d ID1 و _lineno1386 \u003d lineno1

إذا كانت السجلات المتكررة لها نفس القيم في جميع الأعمدة، فأنت بحاجة إلى مغادرة واحدة:

اختر مسافة *
في # TMP1.
من _document140_vt1385.
حيث _document140_idrref \u003d ID1 و _keyfield \u003d key1

حذف من _document140_vt1385.
حيث _document140_idrref \u003d ID1 و _keyfield \u003d key1

إدراج في _Document140_VT1385.
حدد # TMP1.

انخفاض الجدول # TMP1

يجب إجراء الإجراء الموصوف لكل زوج من السجلات المتكررة.

2.2.3. المثال الثاني:

حدد عدد (*) كما expr2، _idrref كما expr1، _descriftion
من _Reference8_
مجموعة بواسطة _idrref، _Description
وجود (العد (*)\u003e 1)

2.3.4 مثال على تحديد الإدخالات غير الفريدة باستخدام طلب 1C: Enterprise:

أو للمحاسبة

إختر
subquery.period،
Sacquery .Registry،
<измерения>,
المبلغ (الفرعي. جنسية السجل) ككمية
من
(إختر
hosiest.teriod كحلة،
hosiest registry كمسجل،
<измерения>,
1 ككمية
من
التسجيل. المصدر كتجارة) كعقوة

مجمعة من قبل
subquery.period،
Sacquery .Registry،
<измерения>

نأخذ
المبلغ (subqueros.

2.3.5 اجعل مؤشر DBMS ليس فريدا. Scisp الفهرس باستخدام استوديو الإدارة.

2.3.6 حالة خاصة عند تبادل RBD. ينخفض \u200b\u200bخطأ في الجداول "المساعدة" المرتبطة بحساب النتائج أو التحليلات. على سبيل المثال:

خطأ عند استدعاء طريقة السياق (الكتابة): محاولة لإدراج قيمة فريدة في فهرس فريد:
مزود Microsoft OLE DB لخادم SQL: لا يمكن إدراج صف مكرر رئيسي في الكائن 'dbo._Affntreged10319' مع فهرس فريد من نوعه "_accnt10319_byperiod_trnrn".
HRESULT \u003d 80040E2F، SQLSRVR: Error State \u003d 1، شدة \u003d E، الأصلي \u003d 2601، LINE \u003d 1

في هذه الحالة، قبل التنزيل، قم بإيقاف تشغيل استخدام النتيجة، قم بتنزيل الرسالة، قم بتمكين استخدام النتائج وإعادة حسابه.

يمكنك التقيت برسالة تحتوي على خطوط:
Microsoft OLE DB مزود SQL Server: إنشاء فهرس فريد تم إنهاءه لأنه تم العثور على مفتاح مكرر لمعرف الفهرس
أو
لا يمكن _nsert ruplicate الصف الرئيسي في الكائن
أو
محاولة إدراج قيمة فريدة في فهرس فريد.

خيارات الحل:

1. في SQL Server Management Studio، تدمير الفقر الفاشل جسديا (في حالتي، كان مؤشرا على جدول نتائج السجل المحاسبي). في 1C، سنقوم بفحص وثائق الفشل. في وضع الاختبار والتصحيح، نضع Reindexing Dunk من الجداول + إعادة حساب النتائج. 1C إعادة إنشاء الفهرس دون خطأ. لدينا وثائق مذهلة سابقا.

2. 1) استخدام Management Studio 2005 تم إنشاؤه إلى إنشاء البرنامج النصي لإنشاء فهرس كان عربات التي تجرها الدواب وحفظ الملف.
2) قتل يدويا فهرس سترة من طاولة _accumrgtn19455
3) أطلقت طلب عرض
رمز SQL S_ELECT العد (*)، الحقول_Index
الاب om accumrgtn19455.
المجموعة حسب الحقول_index.
وجود عدد (*)\u003e 1
بعد قتل المؤشر، اختفت 15 من سجلات مكررة، على الرغم من قبل تنفيذ الفقرة 2، لم أعد أي شيء.
4) ينظر إلى كل السجلات وتنظيف التكرارات يدويا. في الواقع، استخدمت أيضا معالجة "هيكل التقرير" لفهم ما أتعامل معه. اتضح أن الجدول _accumrgtn19455 يخزن سجل التراكم "الإنتاج (المحاسبة الضريبية)". ما زلت حفرت طلبات SQL، كشفت 15 مستندات محرومة وبعد نهاية جميع الأفعال التي راجعت في 1C أن هذه المستندات يتم تنفيذها بشكل طبيعي، دون أخطاء. فقط قم بتنظيف جدول Nameum، بالطبع، لا يستحق كل هذا العناء: من المهم أن نفهم أنه يتم تنظيفه وما يمكن أن يتحول إليه.
5) أطلقت طلبا لإنشاء فهرس تم حفظه في الملف.
6) ترجم قاعدة البيانات إلى وضع مستخدم واحد وإطلاق CheckDB DBCC - هذه المرة لا يتم إصدار خطأ واحد.
7) نقل قاعدة البيانات العودة إلى وضع المستخدم الفردي.
كل شيء ... المشكلة هزمت. حسنا، في 1C أطلقت "اختبار وتصحيح"، كل شيء على ما يرام هناك، كان طبيعيا، توقف عن اليمين على مؤشر غير فريد.

3. إذا تكمن عدم الإرسال في التواريخ مع قيم صفرتم حل المشكلة عن طريق إنشاء قاعدة بيانات مع معلمة إزاحة إلى 2000.

1. إذا كانت مشكلة تحميل قاعدة البيانات، ثم:
1.1. إذا قمت بإنشاء التنزيل (استخدم ملف DT) إلى قاعدة بيانات SQL Server MS، ثم عند إنشاء قاعدة قبل التنزيل، حدد إزاحة التواريخ - 2000.
إذا تم إنشاء القاعدة بالفعل باستخدام النزوح 0، فقم بإنشاء واحدة جديدة من عام 2000.

1.2. إذا كان لديك القدرة على العمل مع قاعدة البيانات في الملف، فستتختبار وإصلاحها، بالإضافة إلى التحقق من التكوين - التحقق من تكامل التكوين المنطقي + البحث عن روابط غير صحيحة.

1.3. إذا لم يكن هناك إصدار ملف، فحاول التنزيل من DT إلى إصدار خادم العميل مع DB2 (وهو أقل مطالبة بالتفرد)، ثم إجراء الاختبار والإصلاح، بالإضافة إلى التكوين - التحقق من التكوين - التحقق من سلامة التكوين المنطقي + البحث للحصول على روابط غير صحيحة.

1.4. لتوطين المشكلة، يمكنك تحديد بيانات الكائنات، التي فشلت تحميلها. للقيام بذلك، يجب عليك تمكين التتبع في الأداة المساعدة Profiler أثناء التنزيل أو تمكين السجل في سجل تقنية DBMSSQL و Excp.

2. إذا تتجلى مشكلة غير سارة أثناء المستخدمين:

2.1. ابحث عن طريقة طلب مشكلة الفقرة 1.4.

2.1.2. في بعض الأحيان يحدث الخطأ أثناء تنفيذ الطلبات، على سبيل المثال:

يحدث هذا الخطأ بسبب حقيقة أنه في وحدة تسجيل سجل التسجيل "ساعات عمل موظفي المنظمات" في إجراء "التسجيلات" في الطلب لا يكلف الكلمة الرسمية "مختلفة".
رمز 1C V 8. أ. يجب أن يكون:
طلب \u003d طلب جديد (
"اختر مختلفا
| المعينين الرئيسيين،
. . . . .
في أحدث إصدار من zup و UPP، لا يحدث الخطأ بسبب هناك "مختلفة".

2.2. بعد العثور على مؤشر مشكلة من العنصر السابق، من الضروري العثور على إدخال غير فريد.
2.2.1. "الأسماك" البرنامج النصي لتحديد الإدخالات غير الفريدة باستخدام SQL:
كود SQL S_ELETT عد (*) عداد،<перечисление всех полей соответствующего индекса> من عند.<имя таблицы>
مجموعة من.<перечисление всех полей соответствующего индекса>
وجود مكافحة\u003e 1

2.2.2 مثال. يسمى الفهرس في الخطأ "_document140_vt13855_intkeyindng".
قائمة الحقول الجدول:
_Document140_IDRRef، _KeyField، _LineNo1386، _Fld1387، _Fld1388، _Fld1389، _Fld1390، _Fld1391RRef، _Fld1392RRef، _Fld1393_TYPE، _Fld1393_RTRef، _Fld1393_RRRef، _Fld1394، _Fld1395، _Fld1396RRef، _Fld1397، _Fld1398، _Fld1399RRef، _Fld22260_TYPE، _Fld22260_RTRef، _Fld22260_RRRef، _Fld22261_TYPE، _Fld22261_RTRef، _Fld22261_RRRef
قبل إجراء الإجراء التالي، قم بعمل نسخة احتياطية من قاعدة البيانات.
تشغيل في MS SQL Server Query analizer:
SQL S_ELECT عدد (*)، _Document140_idrref، _Keyfield
الاب _document140_vt1385.
المجموعة بواسطة _Document140_idrref، _keyfield
وجود عدد (*)\u003e 1
مع ذلك، تعرف على قيم _Document140_idrref، _KEYFILDEND العمود، الإدخالات المكررة (المعرف، المفتاح).

باستخدام الاستعلام:
SQL S_ELECT * رمز *
الاب _document140_vt1385.
حيث _document140_idrref \u003d ID1 و _keyfield \u003d key1 أو _document140_idrref \u003d ID2 و _keyfield \u003d key2 أو ...
انظر إلى قيم أعمدة السجلات المكررة الأخرى.
إذا كانت كلا السجلات لها قيم ذات مغزى وهذه القيم مختلفة، فقم بتصحيح القيمة _KEYFILDE على واحدة فريدة من نوعها. للقيام بذلك، حدد الحد الأقصى لقيمة مشغول _KEYFILD (KEYMAX):
SQL S_ELECT MAX (_KEYFIELT)
الاب _document140_vt1385.
Wh ere _document140_idrref \u003d ID1
استبدل القيمة _Keyfield في أحد السجلات المتكررة إلى الصحيح:
SQL UPT أكل _Document140_VT1385
تعيين _keyfield \u003d Keymax + 1

هنا _lineno1386 \u003d - حالة إضافية تتيح لك تحديد واحدة من سجلتين متكررتان.

إذا كان لدى المرء (أو كليهما) من السجلات المتكررة قيمة غير صحيحة واضحة، فيجب إزالتها:
SQL حذف من رمز _Document140_VT1385
Whive _Document140_idrref \u003d ID1 و _lineno1386 \u003d Lineno1
إذا كانت السجلات المتكررة لها نفس القيم في جميع الأعمدة، فأنت بحاجة إلى مغادرة واحدة:
رمز SQL S_ELECT متميز *
في # TMP1.
من _document140_vt1385.

حذف من _document140_vt1385.
Wh ere _document140_idrref \u003d ID1 و _keyfield \u003d key1

i_nsert في _document140_vt1385.
S_ELECT # TMP1.

D_ROP Table # TMP1

يجب إجراء الإجراء الموصوف لكل زوج من السجلات المتكررة.

2.2.3. المثال الثاني:
Code SQL S_ELECT COUNT (*) كما expr2، _idrref كما expr1، _descriftion
من _Reference8_
مجموعة بواسطة _idrref، _Description
وجود (العد (*)\u003e 1)

2.3.4 مثال على تحديد الإدخالات غير الفريدة باستخدام طلب 1C: Enterprise:
رمز 1C V 8.x حدد كتيب الرابط
من كتيب. كتيب كدليل
مجموعة في كتاب مرجعي
وجود كمية (*)\u003e 1

المعلومات مأخوذة من الموقع