دسترسی در 1 بار بارگیری نمی کند. کد منبع تابع ایجاد پرونده پایگاه داده

امکانات:

  1. یک فایل پایگاه داده می تواند به طور جداگانه از داده ها ایجاد شود.
  2. یک جدول در پرونده پایگاه داده می تواند جدا از داده ها ایجاد شود.
  3. انواع داده ها با دسترسی سازگار می شوند.
  4. مقادیر برابر با تاریخ خالی ، رشته به تهی تبدیل می شود.
  5. انواع داده غیر بدوی و غیر رشته ای (ارجاع شده) به طول 255 نویسه کوتاه می شوند.
  6. انواع داده های رشته ای در طول رشته برای صرفه جویی در فضای سازگار هستند.
  7. کاراکتر نقل قول منفرد using با استفاده از عملکرد query () query به پایگاه داده نوشته می شود.
  8. اضافه کردن خودکار شاخص اصلی (پیشخوان ردیف).

محدودیت ها:

  1. فقط با یک جدول از مقادیر به عنوان منبع داده کار می کند.
  2. این مکانیزم فقط در حالت مشتری ضخیم کار می کند. این به دلیل استفاده از کتابخانه ADO و جدول ارزش در همان زمان است.
  3. کار فقط در سیستم های ویندوز امکان پذیر است.

این سازوکار از سه بلوک تشکیل شده است:

  1. عملکرد برای ایجاد یک فایل پایگاه داده.
  2. عملکرد برای ایجاد جدول بانک اطلاعاتی.
  3. عملکرد نوشتن داده ها به جدول پایگاه داده.

از نظر شماتیک ، ساز و کار به این صورت است:

کد منبع عملکرد فایل ایجاد پایگاه داده:

// عملکرد ایجاد می کند پرونده جدید DB با قابلیت بازنویسی قدیمی // پارامتر // پارامتر 2: boolean - اگر پرونده پایگاه داده از قبل موجود است ، پرچم را بازنویسی کنید // در صورت موفقیت آمیز بودن عملکرد 0 و 0 نیست تابع CreatFileAxes (نام پرونده ارزشمند ، Value OverwriteFile \u003d True) // اعتبار اعتبار پرونده را بررسی کنید اگر EmptyString (FileName) سپس بازگشت - 2؛ در غیر این صورت // تجزیه و تحلیل مکان پرونده در دیسک اگر Overwrite File سپس File \u003d File جدید (FileName)؛ اگر پرونده. () سپس File \u003d تعریف نشده وجود دارد. DeleteFiles (FileName)؛ پایان اگر پایان اگر پایان اگر وضعیت(" پرونده دسترسی ایجاد شده است:"+ نام پرونده)؛ // ایجاد پوسته بانک اطلاعاتی تلاش ADOX \u003d شیء COM جدید ("ADOX . کاتالوگ")؛ گزارش استثنا (" "+ نمادها. PS + خطاهای توضیحات ())؛ تلاشهای پایان؛ // اتصال به پایگاه داده جدید ایجاد شده اتصال رشته \u003d "ارائه دهنده" "" + نام پرونده + "" ""؛ // اتصال Attempt ADOX. ایجاد (رشته اتصال)؛ گزارش استثنا (" پرونده داده ایجاد نشد. هنگام ایجاد یک شی ADOX. خطایی در کاتالوگ رخ داده است!"+ نمادها. PS + خطاهای توضیحات ()) ؛ بازگشت - 1 ؛ تلاش نهایی ؛ ADOX. ActiveConnection. بستن () ؛ ADOX \u003d نامشخص ؛ بازگشت 0 ؛ EndFunction

این تابع 2 پارامتر را دریافت می کند:

  1. نام پرونده بانک اطلاعاتی آینده یک رشته است. این مسیر کامل پرونده است ، اگر تصویب نشود ، مراحل پایان می یابد.
  2. نوشتن پرونده بولی است. این یک پرچم بولی است که از یک مکانیسم بازنویسی پرونده استفاده می کند.

ابتدا نام کامل پرونده بررسی می شود. سپس مکانیسم بازنویسی پرونده را تهیه می کند. در صورت لزوم ، پرونده موجود حذف می شود. پس از آن روش ایجاد می شود پرونده خالی DB این کار با استفاده از شیء ADOX.Catalog انجام می شود. برای تجزیه و تحلیل پیچیدگی های کار ADOX.Catalog ، توصیه می کنم در وب سایت Microsoft به دنبال اطلاعات مرتبط باشید.

دومین دنده مکانیزم بارگیری در دسترسی ، ایجاد جدول در پرونده پایگاه داده را پیاده سازی می کند. برای ایجاد جداول ، از همان ADOX.Catalog استفاده می شود.

کد منبع روش ایجاد جدول جدید در پایگاه داده:

//پارامتر 1: خط - نام و نام خانوادگی پرونده پایگاه داده //پارامتر 2: جدول مقادیر - جدول داده ها برای بارگذاری //پارامتر 3: ساختار - توضیحات جدول ایجاد شده (می توانید آن را با استفاده از عملکرد ایجاد کنید: تالیف ساختار ساختار توضیحات فیلدها) // اگر عملکرد با موفقیت انجام شود 0 و در صورت عدم موفقیت عملکرد 0 نیست جدول عملکرد ورودی داده ها (نام پرونده ارزش ، جدول داده ارزش ، جدول توضیحات ارزش) اتصال رشته \u003d "ارائه دهنده \u003d مایکروسافت. جت OLEDB 4 0؛ منبع داده \u003d"" "+ نام پرونده +" "" ؛ جت OLEDB: نوع موتور \u003d 5؛"اتصال دهنده \u003d هدف جدید COM (" ADODB . ارتباط") ؛ اتصال. ConnectionString \u003d رشته اتصال ؛ // اتصال اتصال به تلاش. باز کردن () ؛ گزارش استثنا (" پرونده بانک اطلاعاتی باز نشد") ؛ گزارش (خطاهای توضیحات ()) ؛ بازگشت - 1 ؛ تلاش نهایی ؛ وضعیت (" جدول را با داده ها پر می کنم:"+ توضیحات جدول ها. NameTables)؛ // شی دستور DB Com \u003d شیء COM جدید ("ADODB . فرمان")؛ Comm ActiveConnection \u003d اتصال؛ // ثابت 1 به معنای "درخواست" است ، اما همچنان نماها و رویه های ذخیره شده وجود دارد کام CommandType \u003d 1؛ CounterStroke \u003d 1؛ برای هر سطر TK از جدول داده ها قطع کاربر پردازش چرخه ()؛ // به اطراف ستون های داده بروید لیست فیلدها \u003d قالب (شمارنده خط ، "HG = " ) + " , "+ Symbols. Substation؛ CounterStroke \u003d CounterStroke + 1؛ Counter Column \u003d 0؛ برای هر ستون TK از جدول داده ها. Columns Loop TekValue \u003d String TK [Column TZ. Name]؛ Field توضیحات \u003d جداول توضیحات. زمینه های توضیحات دریافت (ستون شمارنده)؛ // تجزیه و تحلیل نوع داده اگر زمینه توضیحات. نوع \u003d " 3 "سپس // عدد صحیح صحیح TechValue \u003d؟ (TechValue \u003d null ، 0 ، TechValue)؛ ListFields \u003d ListFields + Format (CurrentValue") \u003d تهی؛ CH \u003d" ) + " , 5 "سپس // عدد کسری // null را به 0 تبدیل کنید زیرا عملکرد بیشتر Format () آن را به درستی تبدیل نمی کند TechValue \u003d؟ (TechValue \u003d null، 0، TechValue)؛ لیست فیلدها \u003d لیست فیلدها + قالب (ارزش ارزش ، "HRD \u003d ؛ Bn \u003d تهی؛ CH \u003d" ) + " , "+ نمادها. PS؛ در غیر اینصورت ، اگر قسمت توضیحات. نوع \u003d" 7 "سپس // تاریخ TechValue \u003d؟ (TechValue \u003d null ،" 00010101 " ، TechValue)؛ اگر TechValue \u003d " 00010101 " سپس ModValue \u003d " خالی"؛ در غیر این صورت ، ModValue \u003d" "" + قالب (CurrentValue ، "DLF \u003d DT") +" ""؛ پایان اگر لیست زمینه ها \u003d لیست فیلدها + ModValue + " , "+ نمادها. PS؛ در غیر اینصورت ، اگر قسمت توضیحات. نوع \u003d" 11 "سپس // Boolean TechValue \u003d؟ (TechValue \u003d null ، False، TechValue)؛ ListFields \u003d ListFields + Format (CurrentValue،" BL \u003d نادرست؛ BI \u003d درست است" ) + " , "+ نمادها. PS؛ در غیر اینصورت ، اگر قسمت توضیحات. نوع \u003d" 202 "سپس // string TechValue \u003d؟ (TechValue \u003d null" "" ، TechValue)؛ ValueString \u003d Lion (TechValue، 255)؛ اگر EmptyString (ValueString) سپس ListFields \u003d ListFields + " خالی"+ نمادها. PS؛ در غیر اینصورت ، ModValue \u003d PageReplace (ValueString" "" "" "" + CHR () + " ") ؛ لیست فیلدها \u003d لیست فیلدها +" "" + SocrLP (لئو (ModValue ، 255)) + "" , "+ نمادها. PS پایان اگر ؛ در غیر این صورت اگر قسمت توضیحات. نوع \u003d" 203 "سپس // رشته اگر EmptyString (ValueString) سپس ListFields \u003d ListFields +" خالی"+ نمادها. PS؛ در غیر اینصورت ModValue \u003d PageReplace (TechValue" "" "" "" + CHR ("+ کد نماد (" "") + " ) + " ")؛ لیست فیلدها \u003d لیست فیلدها +" "" + ModValue + "" , "+ نمادها. PS EndIs؛ EndIsI؛ شمارنده ستون \u003d شمارنده ستون + 1؛ چرخه پایان؛ // آخرین کاما را برش دهید لیست زمینه ها \u003d شیر (لیست زمینه ها ، طول صفحه (لیست زمینه ها) - 2)؛ RequestText \u003d "INSERT INTO" + توضیحات جدول ها. TableName + "VALUES ( "+ ListFields +" ) "؛ Comm. CommandText \u003d RequestText؛ Test .Comute Execute ()؛ Report Exception (" خطا در نوشتن داده!"+ Symbols. پست فرعی +" متن درخواست: "+ RequestText + Symbols. پست فرعی + خطاهای توضیحات ()" ؛ بازگشت - 2 ؛ پایان تلاش ؛ پایان چرخه. // بستن اتصال کام اتصال فعال نزدیک ()؛ کام \u003d نامشخص؛ اتصال \u003d نامشخص؛ بازگشت 0؛ توابع پایان

این تابع 3 پارامتر را دریافت می کند:

  1. StructureDescriptionsTables - سازه ای که شامل توضیحی از جدول و زمینه های آن است. این توسط یک عملکرد کمکی شکل گرفته است ، که در زیر به آن خواهم پرداخت.
  2. FileName - نام پرونده DB رشته.
  3. DeleteExistingTable - پرچمی که رفتار عملکرد را با توجه به جداول موجود با همین نام تعریف می کند.

پس از دریافت کنترل ، عملکرد فایل پایگاه داده را باز می کند. با یک ارتباط موفق ، یک شیء "ADOX.Catalog" (فهرست جدول) ایجاد می شود که اول از همه وجود جدول را مطابق با پارامتر عملکرد شماره 3 بررسی می کند. اقدام بعدی ایجاد می کند جدول جدید. یک فیلد کلیدی (فهرست) به جدول اضافه می شود. علاوه بر این ، بر اساس پارامتر عملکرد شماره 2 ، فیلدهای جدول انواع متناظر ایجاد می شوند. پس از اتمام ، جدول تازه ایجاد شده به دایرکتوری اضافه می شود و اتصال بسته می شود.

البته ، جمع آوری دستی پارامتر عملکرد شماره 2 بسیار زمان بر است ، برای تسهیل ، من تابعی را نوشتم که یک ساختار توصیف جدول را بر اساس جدول مقادیر با داده ها تشکیل می دهد.

کد منبع تابع ساختار توضیحات فیلد است:

// عملکرد کمکی برای انتقال ساختار توضیحات زمینه //پارامتر 1: جدول ارزشها - جدول با داده ها برای بارگیری //پارامتر 2: رشته - نام کامل جدول (نباید حاوی شخصیت های معتبر باشد: "،.) // ساختار توضیحات جدول را برمی گرداند گردآوری عملکرد ساختار ساختار توصیف زمینه ها (جدول ارزش داده ها ، جدول ارزش مقدار) ساختار ساختارها \u003d ساختار جدید ("TableName زمینه های توضیحات")؛ StructureDescriptions. TableName \u003d TableName؛ StructureDescriptions. توضیحات Fields \u003d Array جدید؛ // به دور ستونهای جدول مقدار بروید برای هر ستون TK از جدول داده ها. Strumure Loop StructureFeatureFields \u003d ساختار جدید ("نام ، نوع ، طول ، مترادف")؛ ColumnValueType \u003d ColumnTK. ValueType؛ طول رشته \u003d نوع ستونValue. صلاحیت های ستون. رشته؛ طول؛ // انواع موجود در ستون را بررسی کنید // هر نوع کامپوزیت یک رشته خواهد بود اگر Value Type ستون است. انواع () مقدار ()\u003e 2 سپس StructureSvoystFields. نام \u003d ستون TK. نام؛ StructureSwistFields. نوع \u003d " 202 "؛ // adVarWChar، نوع StructureFieldFields. طول \u003d 255؛ StructureFieldFields. مترادف \u003d ستون TK. عنوان؛ در غیر این صورت ، اگر نوع ColumnValue باشد. نوع (نوع (" خط")) سپس StructureSvastFields. name \u003d ColumnTK. نام ؛ اگر طول رشته \u003d 0 باشد ، پس از آن StructureSvastFields. Type \u003d" 203 " ; // adLongVarWChar ("یادداشت") ، نوع 203 [جریان متن یونیکد (DT_NTEXT)]202 "؛ // adVarWChar ، نوع 202 [255 رشته یونیکد کاراکتر (DT_WSTR)] //StructureSvoystPoly.L طول \u003d؟ (طول خط 0 سپس) // خطای ویرایشگر مقاله هنگام وارد کردن کد ، نمی تواند آن را برطرف کند ، به پردازش مراجعه کنید StructureSwistFields. نوع \u003d " 5 "؛ // adDouble ، نوع 5 در غیر این صورت ، StructureSvastFields. نوع \u003d " 3 "؛ // adInteger ، نوع 3 پایان اگر در غیر این صورت ، اگر نوع مقدار Column باشد. شامل ContypeType (نوع ("بولی") سپس StructureSvoystPoly. نام \u003d ستون TK. نام؛ StructureSwistFields. نوع \u003d " 11 "؛ // adBoolean ، نوع 11 StructureSwistFields. طول \u003d نامشخص؛ StructureSwistFields. مترادف \u003d ستون TK. عنوان در غیر این صورت ، اگر نوع مقدار Column باشد. ContainsType (نوع ("تاریخ")) سپس StructureSvastPolya. نام \u003d ستون TK. نام؛ StructureSwistFields. نوع \u003d " 7 "؛ // adDate ، نوع 7 StructureSwistFields. طول \u003d نامشخص؛ StructureSwistFields. مترادف \u003d ستون TK. عنوان در غیر این صورت ، StructureSvastFields. نام \u003d ستون TK. نام؛ StructureSwistFields. نوع \u003d " 202 "؛ // adVarWChar ، نوع 202 [255 رشته یونیکد کاراکتر (DT_WSTR)] StructureSwistFields. طول \u003d 255؛ StructureSwistFields. مترادف \u003d ستون TK. عنوان پایان اگر توضیحات ساختار. توضیحات زمینه ها اضافه کردن (StructureSpeedFields)؛ پایان چرخه توضیحات ساختار بازگشت؛ توابع پایان

این تابع 2 پارامتر را دریافت می کند:

  1. جدول داده ها - جدول مقادیر با داده ها. از این پارامتر ، تابع توضیحی درمورد انواع داده های زمینه های آینده ایجاد می کند. من توصیه می کنم این جدول از مقادیر را از طریق پرس و جو ایجاد کنید ، زیرا در این حالت تمام قسمت های مشخصات تایپ می شوند.
  2. TableName - نام رشته جدول آینده دسترسی

در ابتدا ، ساختاری با توضیحات مربوط به خود پایگاه داده ایجاد می شود ، پس از آن آرایه ای اضافه می شود که شامل ساختارهای دیگری با توضیحات زمینه ها خواهد بود. در طول چرخه ، مجموعه ای از توضیحات درست با توجه به ستون های جدول ارزش ها پر می شوند. ساختار توضیحات زمینه شامل 4 ویژگی اصلی است:

  1. نام - رشته ای از نام قسمت آینده. نباید حاوی فضاها یا شخصیتهای ناسازگار باشد. اگر یک جدول ارزشها را با یک درخواست ایجاد کنید ، دیگر مشکلی ایجاد نمی شود ، اما اگر جدول ارزش ها را خودتان پر کنید ، مسئولیت کاملاً بر عهده شماست.
  2. Type یک رشته است ، این ثابت مایکروسافت است. در مورد ما ، فقط: عدد صحیح ، کسری ، رشته (با طول های مختلف) ، بول و تاریخ استفاده می شود.
  3. طول برای تعداد رشته ها عدد است.
  4. مترادف یک رشته ، توضیحات متنی از زمینه است.

پس از تشکیل سازه ، برمی گردد.

سرانجام ، می توانید به عملکرد نوشتن داده ها به جدول پایگاه داده بروید. در این عملکرد می توان گفت هسته اصلی کارکرد کل مکانیسم متمرکز است. به این ترتیب ، این عملکرد دشوارترین است ، اما نباید شما را بترساند. یک برنامه نویس یک برنامه نویس است زیرا او یک ذهنیت تحلیلی ایجاد می کند.

کد منبع تابع وارد کردن داده ها به جدول است:

// تابع داده ها را وارد جدول می کند //پارامتر 1 : string - نام پرونده پایگاه داده کاملاً واجد شرایط //پارامتر 2 : جدول مقادیر - جدول با داده برای بارگیری //پارامتر 3 : ساختار - شرح جدول ساخته شده (می توانید با استفاده از عملکرد آن را ایجاد کنید: تالیف سازه ، توضیحات زمینه ها) // برمی گردد 0 در صورت اتمام موفقیت آمیز کار و نه 0 اگر عملکرد انجام نشد تابع جدول ورود داده ها (معنی نام فایل , معنی جدول داده ها , معنی جدول ها ) اتصالات رشته = " ارائه دهنده = مایکروسافت . جت . OLEDB . 4 . 0 ; منبع اطلاعات = " " " + نام فایل + " " " ; جت OLEDB: نوع موتور = 5 ; " ; // شیء مسئول ارتباط با بانک اطلاعاتی اتصال دهنده = جدید شیء COM (" ادودب . ارتباط" ) ; اتصال دهنده . ConnectionString = اتصالات رشته ; // ارتباط تلاش اتصال دهنده . باز کن () ; یک استثنا برای گزارش دادن (" نه موفق شد پرونده db را باز کند!" ) ; برای گزارش دادن (خطاها در توضیحات () ) ; برگشت - 1 ; پایان تلاشها; وضعیت (" جدول را با داده ها پر می کنم:" + جدول ها . جداول Name ) ; // شی دستور DB کام = جدید شیء COM (" ادودب . فرمان" ) ; کام . اتصال فعال = اتصال دهنده ; //ثابت 1 به معنای "درخواست" است ، اما همچنان نماها و رویه های ذخیره شده وجود دارد کام . فرمان = 1 ; CounterString = 1 ; برای هر رشته از جدول داده ها چرخه پردازش قطع کاربر () ; // به اطراف ستون های داده بروید لیست زمینه ها = قالب (CounterString , " CH = " ) + " , " + شخصیت ها . PS ; CounterString = CounterString + 1 ; ستون پیشخوان = 0 ; // حلقه برای ایجاد لیستی از فیلدها برای هر ستون از جدول داده ها . بلندگوها چرخه ارزش فنی = رشته TK [ ستون TK . نام ] ; توضیحات زمینه ها = جدول ها . توضیحات زمینه ها . دريافت كردن (ستون پیشخوان ) ; // تجزیه و تحلیل نوع داده اگر توضیحات زمینه ها . یک نوع = " 3 " سپس // عدد صحیح لیست زمینه ها = لیست زمینه ها + قالب (ارزش فنی , " CHN = خالی; CH = " ) + " , " + شخصیت ها . PS ; در غیر این صورت ، اگر توضیحات زمینه ها . یک نوع = " 5 " سپس // عدد کسری لیست زمینه ها = لیست زمینه ها + قالب (ارزش فنی , " CHRD = . ; CHN = خالی; CH = " ) + " , " + شخصیت ها . PS ; در غیر این صورت ، اگر توضیحات زمینه ها . یک نوع = " 7 " سپس // تاریخ اگر ارزش فنی = "00010101 " سپس مقدار ارزش = " خالی" ; در غیر این صورت مقدار ارزش = " " " + قالب (ارزش فنی , " DLF = Dt" ) + " " " ; پایان اگر; لیست زمینه ها = لیست زمینه ها + مقدار ارزش + " , " + شخصیت ها . PS ; در غیر این صورت ، اگر توضیحات زمینه ها . یک نوع = " 11 " سپس // بولی لیست زمینه ها = لیست زمینه ها + قالب (ارزش فنی , " BL = نادرست; BI = درست است، واقعی" ) + " , " + شخصیت ها . PS ; در غیر این صورت ، اگر توضیحات زمینه ها . یک نوع = " 202 " سپس // خط رشته ارزش = یک شیر (ارزش فنی , 255 ) ; اگر خط خالی (رشته ارزش ) سپس لیست زمینه ها = لیست زمینه ها + " خالی, " + شخصیت ها . PS ; در غیر این صورت // یک نقل قول یک شخصیت خاص در sql است // تبدیل این شخصیت از طریق کد مقدار ارزش = صفحه را جایگزین کنید (رشته ارزش , " " " , " " + CHR (" + کد نماد (" " " ) + " ) + " " ) ; لیست زمینه ها = لیست زمینه ها + " " " + SocrLP (یک شیر (مقدار ارزش , 255 ) ) + " ", " + شخصیت ها . PS پایان اگر; در غیر این صورت ، اگر توضیحات زمینه ها . یک نوع = " 203 " سپس // خط اگر خط خالی (رشته ارزش ) سپس لیست زمینه ها = لیست زمینه ها + " خالی, " + شخصیت ها . PS ; در غیر این صورت مقدار ارزش = صفحه را جایگزین کنید (ارزش فنی , " " " , " " + CHR (" + کد نماد (" " " ) + " ) + " " ) ; لیست زمینه ها = لیست زمینه ها + " " " + مقدار ارزش + " ", " + شخصیت ها . PS پایان اگر; پایان اگر; ستون پیشخوان = ستون پیشخوان + 1 ; چرخه پایان; // برای هر ستون TK از جدول داده ها. چرخه ستون ها // آخرین کاما را برش دهید لیست زمینه ها = یک شیر (لیست زمینه ها , طول StrL طول (لیست زمینه ها ) - 2 ) ; // تولید تست درخواست نهایی درخواست متن = " وارد شوید" + جدول ها . جداول Name + " ارزش های (" + لیست زمینه ها + " ) " ; کام . CommandText = درخواست متن ; // نوشتن داده به پایگاه داده (اجرای پرس و جو) تلاش کام . اجرا کردن() ; یک استثنا برای گزارش دادن (" خطا در نوشتن داده!" + شخصیت ها . PS + " درخواست متن:" + درخواست متن + شخصیت ها . PS + خطاها در توضیحات () ) ; برگشت - 2 ; پایان تلاشها; چرخه پایان; // برای هر رشته از چرخه داده // بستن اتصال کام . اتصال فعال . نزدیک () ; کام = تعریف نشده; اتصال دهنده = تعریف نشده; برگشت 0 ; توابع پایان

این تابع 3 پارامتر را دریافت می کند:

  1. FileName - string نام پرونده بانک اطلاعاتی است.
  2. جدول داده ها - جدول ارزشمندی شامل داده ها.
  3. توضیحات جدول ها - ساختاری که زمینه های جدول و نام را توصیف می کند.

برای کار با بانک اطلاعاتی ، یک اتصال در حال حاضر آشنا ایجاد می شود. با اتصال ، ما یک شیء را برای اجرای دستورالعمل sql ایجاد می کنیم. بعد ، ما یک چرخه را در امتداد ردیف های جدول مقدار (پارامتر عملکرد شماره 2) و یک چرخه تو در تو در داخل ستون های جدول ترتیب می دهیم. پیشخوان ردیف برای نمایه کردن ردیف ها استفاده می شود. پیشخوان ستون برای جستجوی توضیحات قسمت در ساختار توضیحات جدول (پارامتر شماره 3) استفاده خواهد شد. با طی کردن ستون های ردیف بعدی ، انواع آنها (با توجه به توضیحات جدول) را تجزیه و تحلیل می کنیم و تحولات مربوطه را انجام می دهیم. در نتیجه ، ما یک دستور sql آماده برای نوشتن سطر به دیتابیس داریم. دستورالعمل دریافت شده sql ، شیء ADODB.Command را اعمال می کنیم. در پایان روند ، اتصالات را ببندید و حافظه را پاک کنید.

متأسفانه ، در این سایت نتوانستم پردازش را برای مشتری چربی وصل کنم که بتواند هر دایرکتوری را به پایگاه داده دسترسی بارگذاری کند. اما در دیسک Yandex می توانید آن را بارگیری کنید: http://yadi.sk/d/UzK_PAsJ3vjTS . در این پردازش تمام جزئیات مکانیسم تخلیه جهانی درگیر شده است. البته با این روش درمانی این مکانیسم محدود نیست. با خیال راحت می توان هم در یک ماژول جداگانه و هم در پردازش خود کپی کرد. من موقعیت های نادرست را که می تواند منجر به فروپاشی بارگیری شود ، حذف نمی کنم ، اما این یک پروژه تجاری نیست. آیا شما آزاد هستید که اصلاح کنید این مکانیسم متناسب با نیازهای شما در زیر 2 برنامه برای توصیف ثابت های adox وجود دارد. امیدوارم این مکانیسم برای شما مفید واقع شود. برای شما در زمینه حرفه ای آرزوی موفقیت می کنم!

ضمیمه 1 لیست از خواص اضافی زمینه دسترسی به جدول:

افزایش خودکار

نوع فیلد "شمارنده" را با افزایش خودکار مقدار در هنگام افزودن یک ورودی مشخص می کند.

پیش فرض

مقدار پیش فرض زمینه

شرح

توضیحات زمینه

طول ثابت

تعیین می کند که آیا فیلد دارای یک طول ثابت یا متغیر خواهد بود.

افزایش

مقداری که با آن قسمت نوع پیشخوان افزایش می یابد.

قابل فهم

تعیین می کند که آیا این فیلد ممکن است هیچ ارزشی نداشته باشد یا به عبارت دیگر ، آیا این زمینه مورد نیاز است یا خیر.

بذر

مقداری که از آن شمارش معکوس در رکورد اول برای قسمت نوع "پیشخوان" شروع می شود.

جت OLEDB: مجاز بودن طول صفر

تعیین می کند که آیا زمینه های متن می توانند شامل رشته هایی با طول صفر باشند یا خیر. نادیده گرفته شده برای زمینه های غیر شخصیت

جت OLEDB: AutoGenerate

تعیین می کند که آیا یک مقدار GUID جدید به طور خودکار برای زمینه هایی از نوع adGUID تولید می شود.

Jet OLEDB: قاعده اعتبار سنجی ستون

عبارتی که صحت مقدار نوشته شده در این زمینه را مشخص می کند باید با فرمت SQL WHERE اما بدون آن نوشته شود کلمه کلیدی جایی که.

جت OLEDB: متن اعتبار سنجی ستون

در صورتی که مقدار وارد شده در این فیلد نمایش داده شود مطابق با قاعده تعریف شده برای این قسمت نیست (Rule).

جت OLEDB: رشته های UNICODE فشرده شده

تعیین می کند آیا مایکروسافت جت رشته های UNICODE را هنگام نوشتن روی دیسک فشرده می کند یا خیر. نادیده گرفته می شود اگر بانک اطلاعاتی موجود نباشد فرمت مایکروسافت جت نسخه 4.0.

جت OLEDB: لینک

مشخص می کند که داده های موجود در زمینه یک لینک (لینک) هستند. برای زمینه هایی با نوع دیگری غیر از adLongVarWChar نادیده گرفته شد.

جت OLEDB: IISAM آخرین ستون نیست

برای نصب های ISAM ، این ویژگی به I-ISAM اطلاع می دهد که ستون های بیشتری وجود دارد که قرار است بعد از این یکی به جدول اضافه شوند. اگر از ITableDefinition :: AddColumn یا ITableDefintion :: CreatTable استفاده می کنید ، لازم است که این ویژگی را برای همه تنظیم کنید.

جت OLEDB: یک BLOB در هر صفحه

تعیین می کند که داده ها باید در صفحات جداگانه (صحیح) ذخیره شوند یا می توانند از صفحات پایگاه داده مشترک برای ذخیره فضای دیسک استفاده کنند. فقط با زمینه هایی مانند adLongVarBinary کار می کند.

ضمیمه 2 لیست انواع ارزشهای مورد استفاده در ADOX

adDouble ، نوع 5 - عدد کسری

adDate ، نوع 7 - تاریخ / زمان

adCurrency ، نوع 6 عدد صحیحی است

adInteger ، نوع 3 - عدد صحیح بدون علامت

adBoolean ، نوع 11 - بولی

adVarWChar ، نوع 202 - 255 رشته یونیکد کاراکتر

adLongVarWChar ("یادداشت") ، نوع 203 - رشته نامحدود رشته

به تازگی ، من نیاز به تخلیه کلیه داده ها از یک پایگاه داده دستیابی ساده را در پیکربندی خود نوشتاری (1C: Enterprise داشتم. اطلاعات زیادی برای انتقال وجود نداشت و در اصل ، این فرایند جذاب می تواند برای کاربر بارگیری شود ، اما من تصمیم گرفتم که به کارمندان مشغول در حال حاضر کمک کنم.

کمک به خودکارسازی این فرآیند بود. مجبور شدم یک روش درمانی ساده بنویسم که همه کارها را در چند ثانیه انجام داد. قبل از این کار ، من مجبور نبودم با یک دسته از 1C + Access کار کنم ، بنابراین قبل از گرفتن صفحه کلید و شروع به لکه دار کردن کد ، تصمیم به خواندن منو گرفتم.

از همان ابتدا می دانستم که تمام تعامل استفاده از ارائه دهندگان مناسب خواهد بود ، اما هنوز هم تصمیم گرفتم که نمونه ها را بررسی کنم.

من مدت طولانی فکر کردم که چگونه می توانم این یادداشت را بنویسم. در نتیجه ، من بر ساده ترین گزینه حل و فصل کردم - کد را برای راه حل خود تهیه کنم. بگذارید خیلی بهینه نباشد ، اما برای بیشتر کارها بیش از حد کافی است.

بنابراین ، ما شروع خواهیم کرد که همه چیز را به ترتیب در نظر بگیریم. ما یک پردازش جدید ایجاد می کنیم و تنها مؤلفه آن - "زمینه جدول" را روی آن پرتاب می کنیم. من این مؤلفه را در تمام فرم کشیده ام. در نتیجه ، شکل من مانند شکل 1 شکل گرفت.


شکل 1. شکل پردازش

در این مورد می توانیم فرض کنیم که طراحی فرم آماده است. ما ستون ها را به صورت دستی ایجاد نخواهیم کرد ، اما این روش را بصورت دینامیکی انجام می دهیم. خوشبختانه ، این کار دشواری نیست. برای دکمه "Run" یک کنترل کننده رویداد "Click" ایجاد کنید و کد زیر را در آن بنویسید:

// پاک کردن قسمت جداول TablichnoePole1.Clear ()؛ زمینه جدول 1. ستون ها تمیز ()؛ // تهیه رشته اتصال با MS Access // مسیر رسیدن به پایگاه داده در انتهای رشته اتصال \u003d "ارائه دهنده \u003d Microsoft.Jet.OLEDB.4.0؛ منبع داده \u003d" + "C: \\ mydb.mdb" نشان داده شده است. ConnectionBase \u003d COMObject جدید ("ADODB.Connection")؛ // اتصال ConnectionBase.Open (رشته اتصال)؛ // مجموعه ای از پرونده ها را از جدول دریافت کنید demo_table CollectionRecords \u003d COMObject جدید ("ADODB.Recordset")؛ مجموعه Records.Open ("انتخاب کنید از demo_table" ، ConnectionBase ، 1)؛ // ساختار فیلدهای جدول را بخوانید // در جدول ارزش ، تمام ستونهایی را که در جدول Access قرار دارند ایجاد کنید برای تعداد \u003d 0 توسط CollectionRecords.Fields.Count - 1 Cycle TableField1.Columns.Add ("ستون" + cf ، Row (مجموعه رکوردها . Fields.Item (middle) .Name)) End Cycle؛ // نشانگر را به اولین مجموعه ضبط Records.MoveFirst () منتقل کنید. // داده ها را از جدول بخوانید // و آنها را به TOR while NOT Collection Records.EOF Cycle NewString \u003d TableField1 اضافه کنید. اضافه کردن () ؛ برای تعداد \u003d 0 توسط Records Collection.Fields.Count - 1 چرخه NewString ["ستون" + sc] \u003d مجموعه سوابق سوابق (TabularField1.Columns [count]. عنوان) .Value؛ پایان چرخه ؛ مجموعه سوابق.MoveNext ()؛ انتهای چرخه ؛ // نمایش داده ها از ToR در عناصر TableField از فرم .فایل جدول 1. مقدار \u003d فیلد جدول 1؛ عناصر فرم. زمینه جدول: 1. ایجاد ستون ().

کد خیلی بزرگ نبود ، اما کاملاً مفید بود. من به ساختار خاصی پیوند نخورده ام. کد در انواع مختلفی از جدول ها بسیار عالی عمل می کند. من چیز دیگری برای اضافه کردن ندارم ، بنابراین می گویم خداحافظ

به طور خلاصه - به هیچ وجه. در هر چیزی که مربوط به تعامل با نهادهای دولتی باشد (مالیات ، حسابداری ، انواع مالیات های غیر مستقیم و غیره) ، 1C را نمی توان با چیزی جایگزین کرد و تلاش برای انجام این کار ، دست کم ، سازنده نیست.

اما شما خواندن این مقاله را متوقف نمی کنید ، این ایده اصلی نیست. نکته اصلی این است که در دام منطقی قرار نگیرید و در نظر گرفتن 1C در هر بخشی از اتوماسیون کلیه فرآیندهای موجود در شرکت کاملاً ضروری نباشد. چیزی وجود دارد که با آن بحث کنید و چه چیزی را ارائه دهید. من می خواهم در مورد یک تجربه موفق در اتوماسیون متنوع ترین جنبه های فعالیت های تجاری یک شرکت رایانه و البته در مورد اتصال این راه حل با 1C صحبت کنم. کار به دلیل نیاز به جفت کردن یک سیستم خود توسعه یافته با یک برنامه 1C افزایش یافته است ، اما این رویکرد (تقسیم به 2 بلوک برنامه) می تواند به یک فلسفه تمام عیار برای ساختن یک سیستم اطلاعاتی به طور کلی توسعه یابد.

در ابتدا کار به شرح زیر بود. یک سیستم اتوماسیون شرکتی وجود دارد که در آن نوشته شده است دسترسی مایکروسافت. طی سالهای طولانی توسعه ، تقریباً همه کارهای روزمره را جذب کرده است - نگهداری بانک ، صدور فاکتور ، تهیه اسناد حسابداری برای حمل و نقل ، نگهداری یک انبار ، حسابداری از مؤلفه های شماره سریالتلفیقی کارتهای فناوری به تولید و غیره اخیراً قابلیت های سیستم اضافه شده است: ایجاد پرداخت های بانکی به طور مستقیم بر اساس حساب های دریافتی ، تولید خودکار لیست قیمت ها در قالب های مختلف برای انتشار در منابع وب ، به روز کردن وب سایت شرکت و تهیه توافق نامه ها بر اساس قالب های موجود (به اصطلاح اتوماسیون اداری) . به علاوه ، حضور تعداد زیادی از تحلیلگرها و نگهداری کلیه حسابداری مدیریت. همه اینها سیستم را کاملاً ضروری می کند - انتقال تمام این قابلیت ها به 1C به زمان و هزینه زیادی نیاز دارد.

از طرف دیگر ، برنامه 1C-Enterprise برای حفظ اطلاعات و گزارش های حسابداری و حسابداری ، تنها نیازهای حسابداری را فراهم می کند. بنابراین ، 1C از عملکرد روزانه شرکت "حل نشده" بود ، و اسناد انجام شده به پایگاه داده خلفی وارد شدند.

چنین طرحی برای چیست؟ چندین مزیت وجود دارد:
- عدم پذیرش مدیران و سایر افراد (بدون) مسئول در "مقدس مقدسات" - پایگاه حسابداری ، که فقط باید توسط کارمندان که ایده ای در مورد موضوع دارند تشکیل شود. کتابهای مرجع دقیق
- حذف از 1C همه مواردی که مربوط به آن نیستند: از وظایف مدیریتی که نیازی به تأمل در حسابداری نداشته باشند ، تا سایر نکات خاص مربوط به شرکت و دسترسی به خارج از کشور به آنها ،
   - پس انداز مجوزها: مشاغل 1C هزینه قابل توجهی دارند ،
- نکته مهم: هنگام اجرای کلیه قابلیت های اضافی که به طور مستقیم "1" در بالا توضیح داده شده است ، هنگام انتشار به روزرسانی محصول ، نیاز به پالایش کامل آن وجود دارد. مطمئناً این امر اشتغال تقریباً مداوم برنامه نویسان 1C را تضمین می کند ، اما این جایی است که می توانید مقدار زیادی صرفه جویی کنید.

خوب ، البته ، منهای چربی نیاز به دوبار بررسی همه اسناد و پر کردن فهرست ها دارد.

در واقع ، این کار اصلی بود - دور شدن از کار مضاعف.

ابتدا باید با انواع دایرکتوری ها سر و کار داشته باشید - اول از همه ، این یک فهرست از پیمانکاران و نامگذاری است. مشکل هماهنگ سازی دایرکتوری ها ، که اغلب در برنامه هایی از این نوع بوجود می آید ، در اجرا کاملاً توسعه یافته و قابل درک است. با این حال ، در این حالت ، یک تصمیم با اراده قوی اتخاذ شده است که از 2 دایرکتوری با هماهنگ سازی متقابل استفاده نشود ، بلکه یک گزینه منبع وجود داشته باشد - یکی از گزینه هایی که در MS Access نصب شده است ، و به سادگی آن را در 1C تکثیر کنید (بازخورد فقط یک علامت در MS است که این دسترسی دارد) موقعیت قبلاً بارگیری نشده است)
  این رویکرد کار را بسیار ساده می کند. برای نیازهای صرفاً حسابداری ، به موقعیتهای بسیار کمی در چنین دایرکتوری ها نیاز دارید - و آنها همچنین در یک برنامه خارجی شروع می شوند تا مبنای فرموله شده را نقض نکنید. بنابراین ، می توانید دیگری را حذف کنید مشکل رایج  - تورم عظیم فهرست نامی که از فهرست استفاده می شود. در زیر گروه محصولات "مانیتور" آمده است

بارگیری چنین وحشت در فهرست 1C (و مدل های مانیتور جدید تقریباً هر هفته ظاهر می شوند) به گونه ای قابل تنظیم است که همه آنها در یک موقعیت قرار بگیرند ، زیرا تفاوت های ظریف رنگ قاب در اطراف صفحه و تعداد پیکسل ها برای حسابداری کاملاً بی ربط است! صادقانه - و اندازه مورب - حتی بیشتر از این اگر نیم اینچ متفاوت باشد.

علاوه بر این ، در یک برنامه خارجی ، با ضرر بسیار کمتری ، می توان ترکیب موقعیت های تکراری را در دایرکتوری ها ، به خصوص در دایرکتوری طرف مقابل ، انجام داد ، زیرا در 1C این کار تلاش زیادی می کند.

بنابراین ، در "1C" فقط "تصفیه شده" ، تمیز و داده شده در فرم مناسب بارگذاری می شود. بارگیری می تواند با برخی تناوب انجام شود - بخش بندی به شما امکان می دهد تا کار حسابداری را اشکال بزنید و از کار غیر ضروری اجتناب کنید ، اگر در طول روز (یا مدت طولانی تر) چیزی لغو شود ، تغییر یابد ، دوباره انجام شود - همه این موارد در پایگاه کاری MS Access رخ می دهد ، و فقط "حل می شود "وضعیت امور در 1C می آید. به علاوه ، این نوع تخلیه را می توان با عملیات پشتیبان همگام سازی کرد و همیشه می توانید مطمئن باشید که وضعیت فعلی بانک اطلاعاتی 1C صحیح است.

البته ، اسناد بدون ارسال خودکار صورت می گیرد (اگرچه این امر می تواند سفارشی سازی شود). به هر حال ، خود بانک اطلاعاتی MS Access در دسترس بودن کالاهای لازم در انبار را بررسی می کند - برای بدهی به حمل و نقل (معضل این است که اطمینان حاصل کنید که فاکتور می تواند تا تاریخ فعلی صادر شود ، که تمام موارد لازم برای بدهی در انبار - یعنی خریداری یا تولید شده است ...) یک سند را در 1C ارسال کنید ظاهراً مدیران نباید به این مدیران اعتماد کنند - یا یک مسئول حسابداری همیشه باید پشت سر مدیر باشد)

اکنون در مورد اجرای. برنامه های 1C از رابط تبادل داده از طریق مکانیسم ADO پشتیبانی می کنند. از طرف 1C ، یک رابط برنامه استاندارد برای ایجاد عناصر دایرکتوری ها و اسناد استفاده می شود ، بنابراین عملکرد این مکانیزم به جزئیات داخلی اجرای 1C بستگی ندارد ، که می تواند از نسخه به نسخه دیگر و از بروزرسانی تا بروزرسانی متفاوت باشد. از سوی دیگر ، شعار اصلی توسعه "حداکثر استفاده از 1C ، در صورت امکان" بود. بنابراین ، در اجرای نهایی بسته نرم افزاری از MS Access ، فقط نام و TIN طرف مقابل بارگذاری شده است - داده ها از ثبت نام یکپارچه اشخاص حقوقی و کارآفرینان فردی با استفاده از مکانیسم داخلی 1C تهیه شده است (همین امر در مورد اطلاعات دقیق بانکی  - آنها توسط BIC به روز می شوند).

پرس و جو در پایگاه داده MS Access خارجی ایجاد شد ، که تمام داده های لازم را برای بارگیری در 1C تهیه می کند - آن را بگیرید و مرتب سازی بر اساس اسناد و فیلدها.

طرح تخلیه شامل دو مرحله است. اول ، مواضع جدید همکارها و فهرستهای نامگذاری بارگذاری می شود. راهنماهای اختصاص داده شده 1C به MS Access بازگردانده می شوند ، به گونه ای که هنگام بارگیری کلیه اسناد در مرحله دوم ، صحت و سقم مناسب را برای دایرکتوری ها تنظیم کنید. به نظر می رسد این است

ما معتقدیم که یک ایدئولوژی مشابه ساخت و ساز سیستم های اطلاعاتی  می تواند به عنوان پایه نه تنها در شرکتهایی که سیستم های غیر 1C به ارث برده شده وجود دارند ، بلکه هنگام سازماندهی کار جدید اشخاص حقوقی، از آنجا که در MS Access ما دستاوردهای بسیار خوبی داریم. مزایای این روش در بالا توضیح داده شده است.

در این مقاله به تنظیم حقوق دسترسی کاربر به اشیاء سیستم 1C خواهیم پرداخت.

در 1C 8 ، یک شیء فوق داده جداگانه نامیده می شود نقش ها

توجه داشته باشید! این مقاله برای کمک به برنامه نویسان نوشته شده است. تنظیم حقوق در حالت کاربر به عنوان مثال 1C Accounting در نظر گرفته شده در.

یک نقش مجموعه حقوق کاربر را که دارد تعریف می کند. مکانیسم نقش بسیار شبیه به مکانیسم های حقوق ویندوز است دایرکتوری فعال. برای هر یک از اشیاء (کتاب های مرجع ، اسناد) ، توسعه دهنده مجموعه حقوق خود را تنظیم می کند - بخوانید / بنویسید / اضافه کنید / تغییر دهید ...

مجموعه حقوق موجود - مجموعه ای از همه مجوزها در نقش کاربر.

اگر شیء فوق داده Role را باز کنیم ، می توانید تصویر زیر را ببینید:

یک شی دارای دو زبانه است - الگوهای حقوق و محدودیت. حقوق - تب اصلی ، قالب ها - زبانه ای برای تنظیم حقوق در سطح ضبط در 1C ( RLS) این یک موضوع بسیار مهم است ، سعی می کنم آن را در مقالات بعدی شرح دهم.

ما فقط برگه را در نظر خواهیم گرفت حقوق.

  • اشیاء  - لیستی که حق آن تعیین می شود.
  • حقوق  - لیستی از تنظیمات حقوق که می تواند تنظیم شود.
  • محدودیت دسترسی به داده  - زمینه های پیکربندی

شما باید به علامت های بازرسی در پایین توجه کنید:

  • مجوزها را برای اشیاء جدید تنظیم کنید  - اگر پرچم برای نقش تعیین شود ، مجوزها بطور خودکار برای اشیاء ابرداده جدید تنظیم می شوند. توصیه می کنم اگر غالباً فراموش می کنید حقوق اشیاء جدید را ایجاد کنید ، نصب کنید.
  • مجوزهای مربوط به جزئیات و قطعات جدول را بطور پیش فرض تنظیم کنید- پرچم ، در هنگام تنظیم ، جزئیات و قطعات جداول از حقوق صاحب میراث برخوردار خواهد شد (کتاب مرجع ، سند و غیره)
  • حقوق مستقل اشیاء فرعی  - اگر پرچم تنظیم شود ، سیستم هنگام تعیین حقوق شیء پیکربندی ، حقوق شیء والدین را در نظر می گیرد

تنظیمات حقوق برای کل پیکربندی

اگر Role را باز کنیم و روی ریشه پیکربندی کلیک کنیم ، تنظیمات زیر را مشاهده خواهیم کرد:

اطلاعات بیشتر در مورد هر یک حقوق مربوط به کل پیکربندی:

267 درس ویدیویی 1C را به صورت رایگان دریافت کنید:

  • مدیریت  - مدیریت پایگاه اطلاعات  (به مجوز "مدیریت داده" نیاز دارد)
  • مدیریت داده ها  - حق اقدامات اداری در مورد داده ها
  • بروزرسانی پیکربندی پایگاه داده  - حق به
  • حالت اختصاصی  - استفاده از حالت اختصاصی
  • کاربران فعال  - لیستی از کاربران فعال را مشاهده کنید
  • - دفترچه
  •   - راه اندازی درست است مشتری نازک
  •   - حق اجرای سرویس دهنده وب
  • مشتری چربی  - نقش مناسب برای اجرای مشتری چربی
  • اتصال خارجی  - حق شروع یک اتصال خارجی
  • اتوماسیون  - حق استفاده از اتوماسیون
  • حالت "همه توابع"  - در حالت برنامه مدیریت شده
  • ذخیره داده های کاربر  - اجازه یا ممنوعیت ذخیره اطلاعات کاربر (تنظیمات ، موارد دلخواه ، تاریخ). به خصوص برای فرم های مدیریت 1C مرتبط است.
  • کشف تعاملی درمانهای خارجی   - باز کردن درمان های خارجی
  • باز کردن تعاملی گزارش های خارجی  - گشودن گزارش های خارجی
  • نتیجه  - چاپ ، ضبط و کپی برداری در کلیپ بورد

تنظیم حقوق 1C 8.2 در مورد سایر اشیاء ابرداده

برای سایر اشیاء اصلی (دایرکتوری ها ، ثابت ها ، اسناد ، ثبات ها ...) مجموعه حقوق مربوط به نقش نسبتاً استاندارد است:

  • خواندن  - خواندن (نرم افزار)
  • اضافه كردن  - اضافه کردن (نرم افزار)
  • تغییر دادن  - تغییر (نرم افزار)
  • حذف  - حذف (نرم افزار)
  • چشم انداز  - چشم انداز
  • تعاملی اضافه کنید  - افزودنی تعاملی
  • ویرایش  - ویرایش
  • برچسب حذف تعاملی  - برچسب حذف تعاملی
  • حذف علامت تعاملی  - علامت گذاری برای حذف
  • حذف تعاملی ستاره دار- اشیاء مشخص شده را حذف کنید
  • ورودی خط  - استفاده از حالت ورودی خط
  • حذف تعاملی  - حذف مستقیم (تغییر + دل)

فقط حقوق اسناد:

  • رفتار تعاملی  - انجام دادن
  • لغو  - ابطال اسناد
  • تعاملی غیر عملیاتی  - برگزاری (دستورات فرم استاندارد) سند در حالت غیر عملیاتی
  • لغو تعاملی  - لغو تعاملی
  • تغییر تعاملی برگزار شد  - ویرایش سند ارسال شده. اگر این نقش حق نداشته باشد ، کاربر نمی تواند سند ارسال شده را حذف کند ، علامت حذف ، تنظیم مجدد را تنظیم یا آن را بی اهمیت جلوه دهد. شکل چنین سندی در حالت مشاهده باز می شود.

P.S.  اگر هنوز نمی توانید نقش کاربران را بفهمید ، می توانید سفارش دهید.
  ویدئویی با نمونه ای از تنظیم حقوق در حساب 1C 3.0:

این را به اشتراک بگذارید