اطلاعات مختصردر مورد استفاده از OLE در 1C-Enterprise.

برای راه اندازی سیستم 1C-Enterprise به عنوان یک سرور OLE Automation از یک برنامه خارجی، دنباله ای از اقدامات زیر انجام می شود:

  1. یک شی با یک شناسه OLE ایجاد می شود (مورد کاراکتر مهم نیست):
  • V1CEnterprise.Application - نسخه کلید مستقل.
  • V77.Application - کلید وابسته به نسخه.
  • V77S.Application - کلید وابسته به نسخه، نسخه SQL.
  • V77L.Application - کلید وابسته به نسخه، نسخه محلی.
  • V77M.Application - کلید وابسته به نسخه، نسخه شبکه.
  • سیستم 1C-Enterprise با استفاده از روش Initialize() مقداردهی اولیه می شود.
  • ویژگی ها و روش های سیستم 1C-Enterprise به عنوان سرور OLE Automation نامیده می شود.
  • 1C-Enterprise به عنوان یک سرور OLE Automation دارای 4 روش است:

    • Initialize() - سیستم 1C-Enterprise را مقداردهی اولیه کنید.
    • CreateObject() - یک شی از نوع داده انبوه 1C-Enterprise ایجاد می کند و یک مرجع به آن برمی گرداند.
    • EvalExpr() - بیان سیستم 1C-Enterprise را محاسبه کنید.
    • ExecuteBatch() - دنباله ای از اپراتورهای سیستم 1C-Enterprise را اجرا کنید.

    مواد و روش ها:

    1. Initialize() - پایگاه داده را باز کنید.

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

    مقدار دهی اولیه(<Имя объекта>.RMTrade،<Командная строка>, <Пустая строка>)

    <Имя объекта>.RMTrade - نام متغیر و کلمه کلیدی RMTrade.
    <Командная строка> - خط فرمان، که در آن می توانید مسیر پایگاه داده، نام کاربری و رمز عبور را مشخص کنید.
    <Пустая строка>) - یا یک رشته خالی، یا "NO_SPLASH_SHOW" - برای اینکه صفحه نمایش در بوت نمایش داده نشود.

    برای باز کردن پایگاه داده از طریق OLE، باید یک شی با شناسه OLE ایجاد کنید، پایگاه داده را مقداردهی اولیه کنید و موفقیت اولیه را بررسی کنید. در مثال من هیچ کدام را مشخص نمی کنم گزینه های اضافی، بنابراین یک پنجره مربعی برای انتخاب پایه باز می شود، از شما خواسته می شود یک کاربر را انتخاب کنید و رمز عبور را وارد کنید.

    OtherBase=CreateObject("V77.Application"); Opened=OtherBase.Initialize(OtherBase.RMTrade,); اگر Open=0 سپس // True=-1، False=0. برای تمام دستورات OLE. نمایش ("پایگاه داده باز نشد."); برگشت؛ EndIf

    2. CreateObject() - یک شی از نوع انبوه ایجاد کنید.

    این روش یک شی از نوع داده انبوه سیستم 1C-Enterprise ایجاد می کند و یک مرجع به آن برمی گرداند.

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

    CreateObject(<ИмяАгрегатногоТипа>)

    <ИмяАгрегатногоТипа>- یک عبارت رشته ای که مقدار آن حاوی نام نوع داده انبوه مشخص شده در پیکربندی است. به عنوان مثال: "دایرکتوری. نامگذاری"، "سند. فاکتور".

    3. EvalExpr() - عبارت را ارزیابی کنید.

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

    EvalExpr(<СтрокаВыражения>)

    <СтрокаВыражения>- یک عبارت رشته ای که به زبان داخلی 1C-Enterprise نوشته شده است.

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

    4. ExecuteBatch() - دنباله ای از عبارات را اجرا کنید.

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

    ExecuteBatch(<СтрокаОператоров>)

    <СтрокаОператоров>- عبارت رشته، متن برنامه به زبان داخلی 1C-enterprise.

    یک مقدار بولی را برمی‌گرداند: اگر دنباله عبارات موفقیت‌آمیز بود، TRUE، اگر نه، FALSE. در OLE Automation، TRUE و FALSE به ترتیب دارای مقادیر -1 (منهای یک) و 0 هستند.

    مثال: ایجاد یک سند در پایگاه داده دیگری که از طریق OLE باز شده است.

    تخلیه از پردازش اتفاق می افتد. SelectDocument - سندی که توسط کاربر برای آپلود در پایگاه داده دیگری انتخاب شده است.

    OtherBase=CreateObject("v77.application"); Opened=OtherBase.Initialize(OtherBase.RMTrade,); اگر Open=0 سپس گزارش ("پایگاه داده باز نشده است."); برگشت؛ EndIf dDoc=OtherBase.CreateObject("Document.Invoice"); dItem=OtherBase.CreateObject("Catalog.Nomenclature"); dDoc.New(); dDoc.DateDoc=SelectDocument.DateDoc; dDoc.Firm=OtherBase.evalexpr("Constant.MainFirm"); dDoc.Warehouse=OtherBase.evalexpr("Constant.MainWarehouse"); dDoc.PriceCategory=OtherBase.evalexpr("Constant.IncomingPriceCategory"); dDoc.Tax Calculation Variant=OtherBase.evalexpr("Constant.Main Tax Calculation Variant"); dDoc.Currency=OtherBase.evalexpr("Constant.BaseCurrency");//rubles dDoc.Date_rate=dDoc.DateDoc; doc.AccountingType=1; dDoc.Author=OtherBase.evalexpr("gUser"); ویژگی dDoc.Invoice=OtherBase.evalexpr("Transfer.RecognitionInc.Inc.Purchase"); dDoc.Rate=1;//rubles dDoc.Comment=SelectDocument.Comment; SelectDocument.SelectRows(); در حالی که SelectDocument.GetString()=1 حلقه dDoc.NewString(); ItemCode=ShortLP(SelectDocument.Item.Code); اگر dItem.FindByCode(ItemCode)=0 سپس Report("محصول با کد"+ItemCode یافت نشد); برگشت؛ EndIf dItem.UseDate(dDoc.DateDoc); dDoc.Item=dItem.CurrentItem(); dDoc.Quantity=SelectDocument.Quantity; dDoc.Unit=dProduct.UnitDefault; dDocument.Price=SelectDocument.Price; dDoc.Coefficient=1; dDoc.Total=SelectDocument.Amount; dDoc.Amount=SelDocument.Amount-SelekDocument.NW; dDoc.VAT Rate=dProduct.VAT Rate; dDocument.VAT=SelectDocument.VAT; dDoc.NR Rate=dProduct.NR Rate; ddDocument.NrAmount=SelectDocument.Nr; چرخه پایان dDoc.SetNewNumber(OtherBase.evalexpr("Constant.Prefix of Accounting Document Numbers")); Notify(""+dDoc.DocNumber); dDoc.Write();

    این مثال 100% کار می کند. من از آن برای آپلود اسناد از یک پیکربندی به پیکربندی دیگر استفاده می کنم.

    مقایسه در پایگاه داده OLE. ثابت ها، شمارش ها، عناصر دایرکتوری.

    برای مقایسه مقادیر انواع داده های انبوه در پایگاه داده باز شده از طریق Ole، از الگوریتم استاندارد با استفاده از علائم مساوی و نابرابر استفاده کنید (=<>) کار نمی کند. خروجی ساده است. لازم است از مقایسه انواع داده های جمعی به انواع داده های ساده - تاریخ، رشته و شماره حرکت کنیم.

    از این رو نتیجه: ما خود عناصر را مقایسه نمی کنیم، بلکه ویژگی های منحصر به فرد آنها را مقایسه می کنیم. به عنوان مثال، برای عناصر دایرکتوری، این یک کد (در صورت وجود) یا یک نام است. برای شمارش، از متد ()Identifier استفاده می شود. در اینجا دو نمونه وجود دارد:

    //مقایسه ویژگی آیتم با BaseCurrency Constant If dItem.AccountingCurrency.Code<>Other.Constant.BaseCurrency.Code سپس dItem.AccountingCurrency=Other.Constant.BaseCurrency; EndIf //مقایسه ویژگی آیتم با شمارش If dItem.ItemType.Identifier()<>Other.Enumeration.ProductTypes.Single.Identifier() سپس dProduct.ProductType=Other.Enumeration.ProductTypes.Single; EndIf

    پارامترهای جلسه 1C 8.3- متغیری که مقدار پارامتر مورد نظر را برای مدت زمان جلسه کاربر ذخیره می کند. در واقع، این یک نوع متغیر جهانی است که به جلسه کاربر فعلی گره خورده است.

    استفاده از پارامترهای جلسه در 1C

    پارامترهای جلسه فقط به صورت برنامه نویسی تنظیم می شوند؛ هیچ رابط جهانی برای تنظیم پارامترهای جلسه در سیستم وجود ندارد. معمولاً آنها در هنگام راه اندازی سیستم، در "ماژول جلسه" تنظیم می شوند. اگر پارامتر تعریف نشده باشد، هنگام دسترسی به آن خطایی ایجاد می شود.

    نمونه ای از تنظیم پارامتر جلسه 1C

    بیایید به یک مورد معمول برای پارامترهای جلسه نگاه کنیم - تنظیم کاربر فعلی. من یک مثال از آمادگی برای .

    در درخت ابرداده، ایجاد کنید پارامتر جدیدجلسه - CurrentUser، یک نوع به آن اختصاص دهید - DirectoryLink.Individuals:

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

    در ماژول جلسه، بیایید رویه ای ایجاد کنیم که پارامتر جلسه فعلی را تعیین می کند:

    کد رویه:

    Procedure SettingSessionParameters (RequiredParameters) //ما بدنبال فیزیکی هستیم. چهره با نام کاربری CurrentUser = دایرکتوری ها. اشخاص حقیقی. FindByName(UserName() ); // اگر پیدا نشد، یک مورد جدید ایجاد کنیداگر CurrentUser. Empty() سپس NewUser = Directories. اشخاص حقیقی. CreateElement(); کاربر جدید. نام = نام کاربری() ; کاربر جدید. نوشتن() ؛ CurrentUser = NewUser. ارتباط دادن؛ EndIf //به پارامتر جلسه CurrentUser پیوندی به فهرست افراد اختصاص دهید SessionParameters. CurrentUser = CurrentUser; پایان رویه

    1. بیان مسئله

    در این مقاله، روند نوشتن یک مطلب ساده را مرور خواهیم کرد پردازش خارجیپر کردن قسمت جدولی در 1C 8برای تنظیمات با استفاده از یک برنامه معمولی. به عنوان مثال، بیایید کار زیر را انجام دهیم: «در پیکربندی 1C: حسابداری 2.0یک پردازش خارجی برای پر کردن بخش جدول ایجاد کنید محصولاتسند، داده هایی که باید پر شود از قسمت جدول گرفته شده است محصولاتسند دریافت کالا و خدمات". بنابراین، ما باید کالاهای فروش را بر اساس کالای دریافتی پر کنیم، چنین کاری در عمل واقعی یک برنامه نویس 1C بسیار رایج است.

    2. ایجاد پردازش خارجی

    برویم به 1C 8در حالت پیکربندی. با استفاده از منو فایل -> جدیدیا پیکتوگرام ها سند جدیدجدید ایجاد کنید پردازش خارجی.

    در زمینه نامما مشخص می کنیم: "ساده ترین پر کردن قسمت جدولی" و پردازش خارجی را در آن ذخیره می کنیم HDDبا استفاده از منو فایل -> ذخیرهیا نماد صرفه جویییا میانبر صفحه کلید ctrl+s.

    انتخاب شعبه ملزوماتدر درخت فراداده پردازش و کلیک کردن روی دکمه اضافه کردن(دکمه با علامت سبز سبز) یک ویژگی پردازش خارجی جدید ایجاد کنید - رسید اسناد، نوع آن را انتخاب کنید مرجع سند.دریافت کالا خدمات، برای انتخاب یک سند به این ویژگی نیاز داریم دریافت کالا و خدمات، که بر اساس آن اجرا پر می شود.

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

    در صفحه دوم سازنده، باید props را انتخاب کنیم رسید اسناد(برای اینکه در فرم ایجاد شده ظاهر شود) و دکمه را فشار دهید آماده.

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

    3. برنامه نویسی

    بیایید شروع به برنامه نویسی پردازش پر کردن قسمت جدول کنیم. برویم به ماژول شیپردازش خارجی (در پانل پردازش پایین، دکمه اقدامات -> ماژول شی را باز کنید).

    در آن ما باید یک رویه صادرات ایجاد کنیم مقدار دهی اولیه کنید.

    روش مقدار دهی اولیه کنید صادراتپایان رویه

    توجه داشته باشید که روش مقدار دهی اولیه کنید، و همچنین تمام پارامترهای آن، برای پردازش خارجی پر کردن در بخش جدول الزامی است، اگر آن را ایجاد نکنید یا اگر همه پارامترها را ارائه نکنید، پردازش شما به سادگی کار نخواهد کرد.

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

    TablePart = Object[TablePartName];

    هنگام اجرای رویه در پارامتر یک شیشامل شی سندی است که پر می کنیم و در پارامتر TablePartNameیک رشته با نام قسمت جدولی که پر می کنیم. بنابراین، این خط کد، قسمت جدولی سند پر شده را با نام خود دریافت می کند.

    ما به کاربر برای انتخاب سند نیاز داریم دریافت کالا و خدمات، پس بیایید کد باز کردن فرم انتخاب سند را بنویسیم. ابتدا این فرم را با استفاده از روش پردازش خارجی به یک متغیر تبدیل می کنیم GetForm(<Форма>, <Владелец>, <КлючУникальности>) . کافی است فقط پارامتر اول این متد را پر کنیم و رشته ای با نام فرم خود را به آنجا منتقل کنیم.

    IncomingSelectionForm = GetForm("Form" );

    حالا بیایید فرم به دست آمده را با استفاده از باز کردن مدال باز کنیم (در حالی که فرم باز است، همه پنجره های 1C دیگر در دسترس نیستند)، زیرا با این روش باز کردن، کد بعدی ما در روند مقدار دهی اولیه کنیدتا زمانی که کاربر فرم را نبندد اجرا نخواهد شد.

    AdmissionSelectionForm.OpenModally();

    پس از بستن فرم توسط کاربر، باید بررسی کنیم که آیا ویژگی پر شده است یا خیر رسید اسناد(در صورتی که سند فیش انتخاب نشده باشد). اگر پس از بررسی رسید اسنادخالی است، پس پردازش بیشتر معنی ندارد و باید قطع شود.

    اگر NOT ValueFilled (ReceiptDocument) سپس Report(); برگشت ؛ EndIf

    برای بررسی کامل بودن ویژگی، از تابع زمینه جهانی در اینجا استفاده می شود ValueFilled(<Значение>) ، بررسی می کند که آیا مقدار ارسال شده در پارامتر با مقدار پیش فرض همان نوع متفاوت است یا خیر. روش برای گزارش دادنمتن مشخص شده را در کادر پیام 1C 8 نمایش می دهد. کلمه کلیدی برگشتاجرای رویه را قطع می کند.

    بیایید شروع به نوشتن یک کوئری کنیم که داده های قسمت جدولی را انتخاب می کند محصولاتسند دریافت کالا و خدمات. بیایید یک درخواست جدید ایجاد کنیم:

    درخواست = درخواست جدید;

    Request.SetParameter( "سند رسید",سند رسید)؛

    بیایید متن درخواست را بنویسیم، آن را با کمک انجام می دهیم درخواست سازنده. نوشتن متن درخواست به صورت دستی توصیه نمی شود، کارآمد نیست و زمان زیادی می برد. بیایید با یک خط شروع کنیم:

    Request.Text = "" ;

    مکان نما را بین کاراکترهای نقل قول قرار دهید، دکمه سمت راست ماوس را فشار داده و مورد را انتخاب کنید درخواست سازنده.... پس از آن، از شما خواسته می شود که یک درخواست جدید ایجاد کنید، روی دکمه "OK" کلیک کنید. یک پنجره سازنده باز می شود، در قسمت سمت چپ آن همه جداول پایگاه داده موجود قرار دارند، ما به یک سند نیاز داریم خدمات کالاهای ورودی. آن را پیدا کنید و با علامت "+" باز کنید، قسمت جدول را انتخاب کنید محصولاتو آن را به قسمت دوم صفحه طراح که فراخوانی می شود بکشید جداول(همچنین می توانید جدول مورد نظر را با استفاده از دکمه ">" جابجا کنید).

    اکنون جدولی را که انتخاب کرده ایم با "+" گسترش می دهیم ( کالاهای ورودی خدمات خدمات کالا) و فیلدهای لازم برای پر کردن قسمت تب را به قسمت سوم صفحه سازنده بکشید که به نام - زمینه های. ما همه فیلدهای موجود را انتخاب نمی کنیم، خود را به مجموعه زیر محدود می کنیم: نامگذاری، مقدار، قیمت، مقدار، نرخ مالیات بر ارزش افزوده، مقدار مالیات بر ارزش افزوده.

    از آنجایی که ما به داده‌های تنها یک سند رسید (که قبل از شروع پر کردن آن را انتخاب کرده‌ایم) نیاز داریم، سپس در برگه "شرایط"، با استفاده از پارامتری که پاس داده‌ایم، شرطی را روی پیوند سند اعمال می‌کنیم.

    ایجاد متن پرس و جو در سازنده اکنون کامل شده است، روی دکمه "OK" کلیک کنید. در نتیجه، متن درخواست زیر را داریم:

    Query.Text = "انتخاب |FROM |WHERE ;

    درخواست ایجاد شده فقط باید اجرا و در یک متغیر تخلیه شود:

    نتیجه = Request.Execute().Upload();

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

    TablePart.Clear();

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

    برای هر عنصر نتیجه حلقه نتیجه پایان حلقه ;

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

    NewStringPT = TabularPart.Add();

    تب خط ایجاد شده را پر کنید. بخش هایی از داده ها از رشته نتیجه پرس و جو با استفاده از رویه زمینه جهانیFillPropertyValues(<Приемник>, <Источник>) .

    FillPropertyValues ​​(NewStringPT، ResultElement);

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

    روش InvoicesAccountingInRowTabParts را پر کنیداز ماژول شیء سند فروش کالا و خدمات. بیایید آن را با پارامتر فراخوانی کنیم یک شی(باید توجه داشت

    که ما فقط می توانیم تماس بگیریم صادراترویه ها از ماژول شی سند).

    Object.FillAccountsAccountingInTabPartRow(NewPTRow، TabularPartName، True);

    این برنامه نویسی پر کردن قسمت جدولی را تکمیل می کند 1C 8تکمیل شد. پردازش می تواند استفاده شود. متن کامل رویه مقدار دهی اولیه کنید، به نظر می رسد که:

    روش مقدار دهی اولیه کنید (شیء، TabularPartName = تعریف نشده، شیء TableField = تعریف نشده) صادرات TablePart = Object[TablePartName]; IncomingSelectionForm = GetForm("Form" ); AdmissionSelectionForm.OpenModally(); اگر ValueFilled نیست (سند ورودی) سپس گزارش دهید ( "هیچ سند رسیدی انتخاب نشده است") برگشت ؛ EndIf درخواست = درخواست جدید; Request.SetParameter( "سند رسید",سند رسید)؛ Query.Text = "انتخاب کنید | دریافت کالا، خدمات، کالا. نامگذاری، | دریافت کالا، خدمات، کالا، مقدار، | دریافت کالا، خدمات، کالا، نرخ مالیات بر ارزش افزوده، | دریافت کالا، خدمات، کالا، مبلغ، | دریافت کالا، خدمات، کالا، مقدار مالیات بر ارزش افزوده، | دریافت کالا، خدمات، کالا.قیمت| از | سند.دریافت کالاخدمات.کالا به عنوان دریافت کالاخدمات کالا| کجا | دریافت کالا خدمات کالاها. مرجع = &سند رسید"; نتیجه = Request.Execute().Upload(); TablePart.Clear(); برای هر عنصر نتیجه از حلقه نتیجه NewRowPT = TabularPart.Add(); FillPropertyValues ​​(NewStringPT، ResultElement); Object.FillAccountsAccountingInTabPartRow(NewPTRow، TabularPartName، True); چرخه پایان ; پایان رویه

    قسمت بعدی مقاله به شما می گوید که چگونه پردازش پر کردن قسمت جدولی را اشکال زدایی کنید و چگونه آن را به سند وصل کنید.

    4. اشکال زدایی

    اغلب، شما باید کدی را که می نویسید اشکال زدایی کنید. به منظور رفع اشکال پردازش پر کردن قسمت جدولی در 1C 8وسایل او را ایجاد کنید ReferenceToObjectنوع DocumentReference.Realization of Goods Services

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

    پس از ایجاد فرم به ماژول آن بروید. در آنجا ما یک رویه ایجاد شده به طور خودکار را پیدا خواهیم کرد ButtonExecute Pushing. این روش با فشار دادن دکمه اجرا می شود. اجرا کن. بیایید یک رویه از آن فراخوانی کنیم مقدار دهی اولیه کنید، که در ماژول پردازش قرار دارد، شی document را به پارامترها منتقل می کنیم فروش کالا و خدمات(که از پروپوزال ها به دست خواهیم آورد ReferenceToObject) و یک خط با نام قسمت جدولی که باید پر شود (در مورد ما محصولات).

    روش ButtonExecuteClick(Button) Initialize(ReferenceToObject.GetObject(), "Goods" ); پایان رویه

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

    اکنون می توانید نقطه شکست را در تعیین کنید جای مناسبرویه ها مقدار دهی اولیه کنیدیا رویه ها ButtonExecute Pushingاشکال زدایی را تشکیل داده و پردازش پر کردن بخش جدولی را در حالت اشکال زدایی شروع کنید 1C: سازمانی.

    5. اتصال به یک سند

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

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

    و نشان می دهیم که پر کردن برای قسمت جدولی در نظر گرفته شده است محصولات.

    دکمه را فشار می دهیم خوبو تمام، پردازش پر کردن در منو در دسترس خواهد بود پر کنیدقسمت جدولی محصولاتسند فروش کالا و خدمات. می توانید پردازش مورد استفاده برای این مثال را توسط دانلود کنید.

    بنابراین در 1C دایرکتوری ها وجود دارد. به عنوان مثال، کتاب مرجع کالا (نامگذاری). در آنجا لیست کالاهایی را که سازمان ما می فروشد نشان خواهیم داد.

    با کمک چنین دایرکتوری می توانیم لیست قیمت برای مشتریان و همچنین گزارش فروش برای مدیریت سازماندهی کنیم.

    کالاها متفاوت است. به عنوان مثال، محصولات و شیمی. اگر مدیر بخواهد گزارشی تهیه کند چه باید کرد - چقدر از محصولات و چقدر در شیمی درآمد کسب کردیم؟

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

    با این حال، دختران از این نوآوری راضی نیستند - زیرا اکنون آنها باید یک زمینه اضافی کامل را پر کنند و آنها قبلاً کار زیادی دارند و زمان انجام کاری را ندارند. و به طور کلی! - می گویند - ما 900 مورد محصول داریم و فقط 50 مورد شیمی! حتی یک احمق هم واضح است که باید نوع محصول پیش فرض را روی محصولات تنظیم کنید.

    عالی! - ما یادآور میشویم. و... چه باید کرد؟

    ثابت 1C

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

    دو راه برای اضافه کردن یک فرم ثابت وجود دارد:

    • بر روی شاخه 1C Constants کلیک راست کرده و آیتم منوی فرم ایجاد ثابت ها را انتخاب کنید
    • یک فرم را به شاخه فرم های عمومی/عمومی اضافه کنید و نوع فرم را در جادوگر - Constant Form انتخاب کنید.

    می توانید شکل ثابت ها را به صورت زیر مشاهده کنید (و انتخاب کنید):

    • ویژگی های پیکربندی را وارد کنید (روی شاخه ریشه بالای پیکربندی که برنامه نویسان معمولاً آن را "Head" می نامند کلیک راست کنید) و از ویژگی Constants Basic Form استفاده کنید.

    شکل ثابت ها از این جهت متفاوت است که ویژگی اصلی فرم دارای نوع "ConstantsSet" است. این به شما امکان می دهد ثابت های 1C را نه به صورت جداگانه، بلکه بلافاصله به عنوان یک مجموعه بنویسید.

    به هر حال، مشخصه form در صورتی که در ویژگی Data در ویژگی های فرم مشخص شده باشد، "main" می شود.

    در یک برنامه 1C، به راحتی و به سادگی می توان به هر ثابت دسترسی داشت:

    Value = Constants.DesiredConstant.Get(); //خواندن
    Constants.DesiredConstant.Set(Vn); //نوشتن

    پارامترهای جلسه 1C

    بنابراین مشکل به سادگی و با ظرافت حل می شود - ما یک ثابت ایجاد می کنیم که در آن نوع پیش فرض محصول را ذخیره می کنیم.

    هنگام ایجاد یک محصول جدید، برنامه به زبان 1C مقدار فیلد Product Type را در OnOpeningForm() به مقداری که در ثابت اختصاص داده شده است، تنظیم می کند. وویلا!

    در حال حاضر برنامه در حال کار است، اما ما در اینجا متوقف نخواهیم شد! با این حال - ما برنامه نویسان جالبی هستیم، می خواهیم برنامه نه تنها کار کند، بلکه به سرعت نیز کار کند!

    ثابت های 1C کجا ذخیره می شوند؟ در پایگاه داده، در یک جدول خاص. هر بار که اپراتور محصول جدیدی ایجاد می کند، به سرور نفوذ می کند و مقدار ثابت 1C را می خواند. اگر 200 اپراتور وجود داشته باشد چه؟ بهینه است؟

    پس چه باید کرد؟

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

    علاوه بر این، اگر بتوانیم لیست را در یک ثابت فقط در مقدار ذخیره ذخیره کنیم، می‌توانیم آن را در پارامتر جلسه 1C باز کنیم، اگرچه پویا نخواهد بود - با نوع FixedArray.

    پارامترهای جلسه 1C نیز در پنجره پیکربندی واقع در شاخه پارامترهای جلسه عمومی / 1C هستند.

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

    پر کردن (تنظیم) پارامترهای جلسه 1C باید در شروع 1C در حالت Enterprise انجام شود. روی شاخه بالای پیکربندی کلیک راست کنید (برنامه نویسان آن را "Head" می نامند) و مورد منو Open session module را انتخاب کنید.

    ممکن است ماژول قبلاً یک تابع SetSessionParameters () داشته باشد. اگر هنوز هیچ موردی وجود ندارد، این رویداد را در لیست کشویی مربوطه انتخاب کنید. در اینجا مثالی از تنظیم مقدار پارامتر جلسه 1C آورده شده است:

    SessionParameters.RequiredParameter = Value; //رکورد، یک بار در همان ابتدا
    مقدار = SessionParameters.RequiredParameter; //خواندن، به شدت بعد از نوشتن.