اینترنت پنجره ها اندروید

COM اتصال 1c 8.3 درخواست مثال. سه نهنگ کار با اشیاء کام

) خیلی خوب

در عین حال، من بیش از یک بار دیدم که من فقط از انتشارات که حتی 10 امتیاز را ندیدم را از دست دادم.
چرا این اتفاق افتاد؟ ظاهرا به این دلیل که کسی آنها به وضوح سقوط کردند.


من در مورد آن صحبت می کنم و می توانم بگویم که بدون خواندن مقاله در رتبه بندی، خوب است تا بدانید که چقدر به آن نیاز دارید یا ارزیابی آن خیلی اولیه نیست +/-. همانطور که برای روح، من این را تنظیم می کنم: او به دلیل این واقعیت است که ستارگان توسعه یافته اند و بسیاری از مردم در این سایت جمع شده اند و بسیاری را دوست داشتند، این مورد را درک می کنید، زیرا این مورد را درک می کنید به محض این که مقاله باقی می ماند صفحه اصلی این می تواند تنها در صورت درخواست پیدا شود، و به همین ترتیب همه چیز را رأی گیری می کند. و حفظ اصلی ترین چیز تا آنجا که من درک می کنم، اجازه دائمی نظرات دائمی \u003d ارتقاء مقاله.
این برای این است که مغازه ها در خیابان های عبور وجود دارد - پس از همه، اغلب مهم نیست که کیفیت و ارتباط کالاها، بلکه تصدیق محل، مردم راه رفتن اغلب خرید آنچه که آنها روز بعد پرتاب می کنند، فقط به خاطر فرآیند. این مدت طولانی بیماری شناخته شده است - پشت سر هم. یا به سادگی افزایش جریان را افزایش می دهد احتمال خریدار مورد نظر را افزایش می دهد.

و مزایا و معایب ... فقط نوعی از "تشکر از شما" برای زمان صرف شده و کار است


کسانی که. منهای همچنین برای "تشکر" مورد توجه قرار گرفته است؟ من می خواستم نگرش شما را بدانم تا این که آیا لازم است آن را در چنین مواردی قرار دهیم، و دیگران جالب است؟ آیا این زمانی قرار می گیرد که مقاله مضر / بد باشد یا زمانی که آن را به شما / خالی بی فایده است.
به نظر من مقاله به نظر می رسد به سادگی بالا بردن امتیاز، چرا که:
1. مشکل با انواع با انواع به طور کلی توسط نویسنده نادیده گرفته می شود، اگر چه او تنبل نیست که یک دسته از نظرات را بنویسید.
2. در مقاله، اشتباه نادرست: گفته شده است که شما فقط می توانید

v82 \u003d دختر جدید ("v82.comConnector")؛ code \u003d counterparty.code؛


اما من با آرامش با کمک پردازش مانند این کار می کنم:

گزارش (base.pravnikhniki.tragents.nightyponmentment ("llc"). کد)؛


و همه چیز خوب است! و من اتصال v82.comConnector را انتخاب می کنم
به نحوی عجیب است که نویسنده به طور مطلق به این واقعیت تفکیک می کند که مقاله او شامل چنین مشکلاتی است که آنها نشان دادند، و به هیچ وجه واکنش نشان نمی دهد.
3. اما هنوز یک مشکل وجود دارد زمانی که یک خطا ظاهر می شود "کلاس وجود ندارد"
4. و هنگامی که آن را نصب شده 8.2، یک مشکل وجود دارد، و سپس نصب 8.1 - سعی کنید آن را به مبادله با توجه به OLE / COM تبادل استاندارد استفاده کنید!
5. آیا می توانید پردازش اصلی را در سایت مشخص کنید که به شما اجازه می دهد تا از طریق OLE / COM به طور کلی از طریق OLE / COM متصل شوید، برای آنها شروع کنید، برای آنها بنویسید! به هر حال، به هر حال، به دلایلی، آن را با شما برهم زدن، چرا؟ و در نتیجه، 2 کلمه اساسا 6 برای صحنه ها هستند.

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

چاپ (Ctrl + P)

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

اتصال کام

شما می توانید دو نوع از اشیاء COM را برای برنامه 1C ایجاد کنید. این اتصالات OLE است v83.Application و اتصالات COM v83.comConnector . در صورت v83.Application نمونه تقریبا کامل برنامه 1C آغاز شده است. در صورت استفاده v83.comConnector بخش سرور کوچک راه اندازی شده است. سرعت کار در این مورد بالاتر است، اما برخی از توابع ممکن است در دسترس نباشد. به طور خاص، کار با فرم ها و ماژول های مشترک که اموال با ترکیبات خارجی ایجاد نمی شود. به طور کامل باید استفاده شود v83.comConnector و تنها در صورت کمبود عملکرد v83.Application. به ویژه به شدت تفاوت در سرعت را می توان در پایه های حجم بزرگ قابل توجه است. برای پلت فرم 8.2 استفاده می شود v82.application یا v82.comConnector

نصب اتصال OLE

اتصال \u003d ترکیب جدید ("V83.Application")؛

تنظیم اتصال کام

اتصال \u003d جدید COM Object ("v83.comConnector")؛

رشته اتصال

// برای سرور مشتری گزینه
نظارت بر رشته \u003d "srvr \u003d" "" ناتوانی ""؛ ref \u003d "" نام "؛
// برای گزینه حالت فایل:
نظارت بر رشته \u003d "file \u003d" "pupbase" "؛ USR \u003d نام کاربری؛ pwd \u003d رمز عبور ";
تلاش کردن
اتصال \u003d اتصال . اتصال(نظارت رشته)؛
یک استثنا
پیام \u003d پیام جدید کاربر؛
پیغام . متن = "اتصال به پایگاه داده موفق نشد" + شرح ()؛ پیغام . گزارش ();
جشن ها؛

اتصال به

ترکیب \u003d undefined؛
برای شیء v83.Application لازم است که اتصال به اتصال را انجام دهیم، در غیر این صورت جلسه ناقص قطع خواهد شد، که پس از آن باید به صورت دستی حذف شود. در صورت v83.comConnector اتصال به طور خودکار پاره پاره می شود زمانی که روش تکمیل شده است که در آن ارتباط انجام می شود. و یک لحظه کوچک دیگر وجود دارد. برای کاربر زیر که اتصال انجام می شود، گزینه "درخواست بسته شدن درخواست" باید در تنظیمات خود خاموش شود.

روش newObject ()

برای ایجاد یک شی جدید، می توانید از روش newObject () استفاده کنید، به عنوان مثال:

برای v83.comConnector

جاسوسی کردن \u003d اتصال newObject ( "پرس و جو") ;
سفره \u003d اتصال newObject ( "Tablement") ;
Masscoma \u003d اتصال NewObject ("آرایه")؛

uidcom \u003d اتصال .NewObject

برای v83.Application

درخواست \u003d ترکیب NewObject (" پرس و جو ") ;
tableole \u003d اتصال newObject("Tablement") ;
massive \u003d connection.NewObject("آرایه")؛
uidcom \u003d connection.NewObject("منحصر به فرد خودخواه"، قایقرانی)؛

جاسوسی کردن . متن \u003d"انتخاب کنید
| postganizations کد،
| سازمانهای پیشنهادی. نام
| است | دایرکتوری. valitudorganizations
به عنوان دفتر ";

نتیجه \u003d درخواست انجام دادن ()؛
نمونه \u003d نتیجه انتخاب کنید () ؛
در حالی که نمونه. ذیل()چرخه
Endcycle؛
شما همچنین می توانید از مدیران شیء پیکربندی استفاده کنید:
ReferencEcom \u003d اتصال دایرکتوری ها namemanship؛
documentCom \u003d اتصال مستندات. فوری؛
ثبت نام \u003d اتصال ثبت نام. nameregister؛

دریافت و مقایسه انتقال از طریق اتصال کام

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

معاملات عنصر \u003d اتصال اجرا می شود pravoyer1.nextile (1). requisite1؛

ممکن است \u003d معاملات عنصر ریخته گری (). ارزش ها؛

رویه های عنصری \u003d ممکن است. ممکن است. شاخص (امکان تعامل (connection.xmlstring (تراکنش های عنصر))؛

اگر عنصر عملیات \u003d 0 باشد، سپس گزارش دهید ( "ارزش ها 1");

Elementarization \u003d 1 سپس گزارش ("مقادیر 2")؛

به پایان رسید؛

گرفتن یک شی از طریق شناسه توسط شناسه

از طریق مدیران شیء پیکربندی، ما یک شی COM دریافت می کنیم، به عنوان مثال:
documentCom \u003d ترکیب مستندات. فوری؛

سپس یک رشته از یک شناسه منحصر به فرد دریافت می کنیم:

rowing \u003d connection.String ( documentCom.unikovytentifier())

شناسه \u003d جدید y طبیعی بودن (قایقرانی);
از جانب syclipoider \u003d اسناد [Imidcement]. ریختن به شناسه (شناسه)؛

اگر شما نیاز به پیدا کردن یک جسم COM با توجه به سند شناسه، پس شما نیاز به نوشتن مانند این:

uidcom \u003d. connection.NewObject("منحصر به فرد خودخواه"، قایقرانی)؛
شناسه REPLD \u003d اتصال اسناد [imytrocement]. عیب یابی (UIDCOM)؛

سلام habravavelov!

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

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


به عنوان یک زبان که با 1C یکپارچه خواهد شد، من پایتون را انتخاب کردم. این بسیار مناسب برای اتوماسیون فرایندها است. این به نحو مینیمالیستی کمک می کند (کد بسیار سریع استخدام می شود)، یک کتابخانه استاندارد غنی (نیاز کمتر برای ماژول های شخص ثالث)، Cross-platform - با احتمال بالا، کد نوشته شده در سیستم عامل Linix با موفقیت در ویندوز کسب خواهد شد .

برای شروع، خطوطی که ما با آن کار خواهیم کرد. سازمان - شرکت تامین انرژی در منطقه شرق دور - تقریبا 400 هزار مشترک، پایه 1C را بر روی پیکربندی خود نوشته است. برای هر مشترک، پرداخت های آن، تعهدات، خدمات مصرف شده و محاسبه، دستگاه های حسابداری، خواندن و بسیاری از داده های دیگر ذخیره می شود.

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

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

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

پلت فرم 1C توانایی اتصال به آن را از طریق اتصال کام فراهم می کند. مانند بسیاری از برنامه های ویندوز، در طول نصب 1C، دو اشیاء کام در سیستم ثبت می شوند - سرور اتوماسیون و COM Connector. شما می توانید با هر دو اشیا با استفاده از زبان که در آن تکنولوژی COM ارائه شده کار کنید.

Object Server Automation یک برنامه کاربردی 1C است، تقریبا هیچ کدام از برنامه های معمول مشتری متفاوت نیست. تفاوت این است که علاوه بر این، توانایی برنامه برنامه کاربردی برنامه به نظر می رسد. هنگام کار با شی COM Connector، یک نسخه سبک وزن از برنامه 1C راه اندازی شده است، که در آن فرم ها در دسترس نیست، و همچنین توابع و روش های مربوط به رابط و جلوههای بصری. برنامه خود را در حالت "اتحادیه خارجی" آغاز می کند. مقداردهی اولیه متغیرهای جهانی (به عنوان مثال، تعریف کاربر فعلی و تنظیمات آن) باید در ماژول انجام شود ترکیب خارجی 1c اگر در حالت اتصال خارجی در کد یک تابع است که در این حالت در دسترس نیست، استثنائی ایجاد می شود (که به اسکریپت پایتون ما منتقل می شود). فراخوانی توابع ناامن باید توسط طرح های فرم طراحی شود

# اگر اتصال خارجی نیست، هشدار ("سلام!")؛ # Endox

از آنجا که کار با COM اشیاء - تکنولوژی به طور انحصاری ویندوز تنها، تعجب آور نیست که در عرضه استاندارد پایتون آن را از دست رفته است. شما باید فرمت را تنظیم کنید - مجموعه ای از ماژول هایی که تمام قابلیت های لازم را برای برنامه نویسی تحت ویندوز در پایتون ارائه می دهند. این را می توان به عنوان یک نصب کننده EXE در حال حاضر جمع آوری شده است. فرمت خود را فراهم می کند دسترسی به رجیستری، خدمات، ODBC، اشیاء com، و غیره به طور خلاصه، شما می توانید بلافاصله توزیع Activestate Python را نصب کنید، که در آن پسوند Win32 از جعبه می آید.

برای برخی از زمان من با یک اتصال COM در توسعه برنامه های کاربردی وب، به ویژه یک حساب شخصی، آزمایش کردم. معایب زیر نشان داده شد:

اتصال COM آهسته است. بهره وری کم - معروف Minus Com Technology.
- فرآیند نصب اتصال با 1C، بسته به پیکربندی، می تواند از 1 تا 8 ثانیه (در مورد من - 6 ثانیه). لازم به ذکر است که اتصال اتصال به هر درخواست منجر به آن خواهد شد، هر صفحه برای 8 ثانیه بارگذاری می شود.
- از آنجا که برنامه های کاربردی وب در پایتون به عنوان یک سرور مستقل کار می کنند، آیتم قبلی را می توان با ذخیره اتصال در برخی از متغیرهای جهانی جبران کرد و در صورت خطا برای بازگرداندن آن، جبران شود. چگونه برای حفظ اتصال به پی اچ پی، من، صادقانه، هنوز فکر نمی کنم.
پلت فرم نرم افزار وب از دست رفته است.

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

استراتژی عمل به شرح زیر است: اسکریپت پایتون از 1C متصل است، نمایش های مورد نظر را انجام می دهد و داده ها را در پایه SQLite بارگیری می کند. این پایگاه داده را می توان از پایتون، پی اچ پی، جاوا متصل کرد. اکثر پروژه های ما بر روی پایتون کار می کنند و از آنجایی که من از نوشتن پرس و جو SQL SQL با دستان خود خارج نخواهم شد، تمام کار با پایه SQLite از طریق ORM Sqlalchemy انجام می شود. فقط لازم بود که ساختار داده ای از سبک اعلامیه پایگاه داده را توصیف کنیم:

از sqlalchemy.ext.declarative import importative_base از ستون واردات Sqlalchemy، عدد صحیح، عددی، DateTime، Unicode، Boolean، BallBinary، BaseKey Base \u003d transative_base () کلاس Abonent (Base): __TableName__ \u003d "Abonents" ID \u003d ستون (INTEGER، primary_Key \u003d درست) حساب \u003d ستون (یونیکد (32)، index \u003d true) کد \u003d ستون (یونیکد (32)) آدرس \u003d ستون (یونیکد (512)) FiO \u003d colume (یونیکد (256)) منبع \u003d ستون (یونیکد (16) ) PSU \u003d ستون (UNICODE (256)) TSO \u003d ستون (UNICODE (256)) NP \u003d ستون (UNICODE (256)) Street \u003d Street \u003d Colume (UNICODE (256)) HOUSE \u003d ستون (عدد صحیح) مسطح \u003d ستون \u003d ستون (Unicode (256)) پرداخت کلاس: __Tablename__ \u003d "پرداخت" # و غیره ...

در حال حاضر به اندازه کافی برای وارد کردن این ماژول به هر پروژه پایتون است و شما می توانید با داده ها کار کنید.

من سوال شما را پیش بینی می کنم - "چرا sqlite"؟ دلیل اصلی - پایه فقط برای خواندن مورد نیاز است، بنابراین هیچ مشکلی با نوشتن در SQLite وجود ندارد. ثانیا، فرمت این DBMS راحت است - راحت تر برای مشاهده آن است (ما بسیاری از خدمات رایگان، از جمله فوق العاده پسوند برای فایرفاکس وجود دارد). سوم، در بعضی موارد، برای دسترسی به مشترکین از این دستگاههایی که هیچ ارتباطی با سرور MySQL وجود ندارد، لازم بود. در این مورد، کافی است که فایل پایگاه داده SQLite را کپی کنید، و این دستگاه به تمام اطلاعات دسترسی پیدا خواهد کرد.

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

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

واردات Pythoncom واردات win32com.client v82_conn_string \u003d "srvr \u003d v8_server؛ ref \u003d v8_db؛ usr \u003d نام کاربری؛ pwd \u003d megapass؛" pythoncom.coinitialize () v82 \u003d win32com.client.dispatch ("v82.comConnector"). اتصال (v82_conn_string)

همانطور که می توان از کد دیده می شود، مشتری برای کار با 1C آغاز می شود. تعریف شی COM به نام "v82.comConnector" رخ می دهد. لطفا توجه داشته باشید که این نام برای پلت فرم v8.2 درست است، اگر شما نسخه 8.1 دارید، سپس نام "v81.comConnector" خواهد بود.

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

داشتن یک شی، شما می توانید به هر زمینه و روش های CONTEXT GLOBAL 1C مراجعه کنید، با حجم جهانی نوع سند متن، جدول و TD کار کنید. مهم است که در نظر بگیرید که هنگام کار از طریق اتصال COM 1C در حالت "اتحادیه خارجی" عمل می کند. این هیچ توابع برای کار تعاملی، مانند گفتگوهای پاپ آپ، اطلاعیه ها و مهمتر از همه، در دسترس نیست. من مطمئن هستم که شما در حال تغییر توسعه دهندگان پیکربندی هستید، که مهمترین قابلیت را در روش 1 دکمه () در ماژول فرم سند ایجاد می کنند.

بیایید در مورد چنین غرور به عنوان ویژگی های Kiriilic صحبت کنیم. با وجود این واقعیت که 1C یک محیط دو زبانه است و برای هر روش روسی یک آنالوگ انگلیسی زبان وجود دارد، دیر یا زود، لازم است که با ویژگی Kiriilic تماس بگیرید. اگر در PHP یا VBScript زبان آن هیچ مشکلی را ایجاد نمی کند

مجموعه con \u003d createObject ("v81.comConnectorce) مجموعه v8 \u003d con.connect (" StringClining ") تنظیم حسابداری را تنظیم کنید \u003d v8.documents. برنامه .... تنظیم حساب کاربری \u003d باتری. .... Accountscape ()

کد در پایتون به سادگی با خطای خطای نحوی سقوط می کند. چه باید بکنید؟ ویرایش پیکربندی؟ نه، کافی است از روش های GetatTR و Setattr استفاده کنید. انتقال شی COM و نام سیریلیک ویژگی به این توابع، می تواند به ترتیب به دست آمده و مقادیر را تنظیم کنید:

# coding \u003d cp1251 catalog \u003d getattr (v82.catalogs، "صورت")

موارد زیر مهم است: نام جزئیات، و همچنین پارامترهای توابع و روش ها باید در کدگذاری CP1251 منتقل شود. بنابراین، به منظور جلوگیری از Putnice با رمزگذاری ها پیش از این، منطقی است که آن را در ابتدای پرونده اعلام کنید: # Coding \u003d CP1251. پس از آن، شما می توانید خطوط را بدون نگرانی در مورد رمزگذاری خود انتقال دهید. ولی! تمام رشته ها از 1C به دست آمده (نتایج عملکرد توابع، درخواست ها) در کدگذاری UTF-8 خواهد بود.

یک مثال از یک کد که در پرس و جو 1C انجام می شود، نتیجه را به دست می آورد و پایه را در SQLite ذخیره می کند:

# coding \u003d cp1251 q \u003d "" "یک fairytte را انتخاب کنید. کد مانند کد، صورت بیان (مشخصه Desiccreet-lasting. رابطه به عنوان یک راهنمای. سازمان جایگزین سوپر). نام به عنوان TSO، صورت، litsevyescheta.divizion.Roditel.Naimenovanie MRO AS به عنوان Spravochnik.LitsevyeScheta LitsevyeScheta چپ بپیوندید RegistrSvedeniy.HarakteristikiLitsevyeScheta.SrezPoslednih (، VidHarakteristiki \u003d VALUE (Spravochnik.VidyHarakteristik.TerritorialnoSetevayaOrganizatsiya)) چگونه به HarakteristikiLitsevyeSchetaSrezPoslednih LitsevyeScheta.Ssylka HarakteristikiLitsevyeSchetaSrezPoslednih.Obekt \u003d "" "پرس و جو \u003d V82.newobject ( "query"، q) selection \u003d query.execute (). conn \u003d db.connect () conn.Query (models.abonent) را انتخاب کنید () conn.query (models.abonent) .delete () در حالی که selection.next (): abonent \u003d models.abonent () abonent.account \u003d selecection.code.strip () abonent.code \u003d selection.code abonent.fio \u003d selection.fio abonent.address \u003d selection.ddress abonent.psu \u003d selection.psu abonent.tso \u003d selection.tso abonent.source \u003d U "asrn" abonent.np \u003d selecection.np abonent.street \u003d selecection.street abonent.house \u003d selection.house abonent.flat \u003d selection.flat.mro \u003d selection.mro conn.add (abonent) conn.comMit ()

در اینجا Conn یک جلسه اتصال پایه SQLite است. یک شی درخواست پرس و جو ایجاد شده است، متن آن پر شده است. همانطور که در بالا ذکر شد، متن پرس و جو باید در CP1251 باشد، که برای اولین بار آن رمزگذاری اعلام شده است. پس از اجرای درخواست، تمام مشترکین در پایگاه داده حذف می شوند، به طوری که برای اضافه کردن یک ducky، و سپس در چرخه اضافه شده و به دنبال commote نهایی است.

هنگام کار با درخواست ها، قوانین زیر را نشان دادم.

انتخاب زمینه ها، آنها را اسامی لاتین اختصاص دهید، آن را بسیار راحت تر برای دسترسی به آنها از طریق انتخاب (نقطه)، به جای GetatR ().
- تنها انواع اولیه داده ها را انتخاب کنید: ردیف ها، اعداد، تاریخ و بولین. هرگز لینک ها را به یک شی (سند، دایرکتوری) انتخاب نکنید! در این زمینه، منابع به طور کامل مورد نیاز نیستند و حتی برای شما مضر نیستند، زیرا هر گونه اشاره به جزئیات یا روش پیوند به درخواست از طریق اتصال COM منجر خواهد شد. اگر با ویژگی های پیوند در چرخه تماس بگیرید، بسیار آهسته خواهد بود.
- اگر یک فیلد فیلد را انتخاب کنید، آن را به عنوان یک Pytime شیء بازگردانده می شود. این یک نوع داده خاص برای انتقال تاریخ زمان در اتصال COM است. این کار بسیار راحت نیست، همانطور که با DateTime معمولی کار می کند. اگر شما این شی را به Int ()، Timestamp بازپرداخت، که پس از آن شما می توانید یک روش datetime از Timestamp () دریافت کنید.

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

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

link \u003d getattr (v82.catalogs، گزارش ها "). findbydescription (" Records ACT ELEAN ") NAV_URL \u003d v82.geturl (لینک، گزارش") نام \u003d v82.externalreports.connect (nav_url) ExternalReport \u003d v82.externalreports.create (نام) SetatTR (ExternalReport، "صورت"، مرجع) table_doc \u003d ExternalRetence.GetDoc () مسیر \u003d v82.gettempfilename ("XLS") table_doc.write (مسیر، v82 .spreadsheetdocumentfiletype.xls) گزارش \u003d models.report () گزارش .account \u003d ruff.Code.Strip () Report.Type \u003d U "ACT" Report.Document \u003d Open (مسیر، "RB"). خواندن () Conn.Add (گزارش)

قطعه زیر دنبال می شود. پردازش پردازش یک سند را متصل می کند. پردازش را می توان در پیکربندی، ذخیره شده بر روی یک دیسک یا در پایگاه داده 1C (در برخی از راهنماها) ساخته شده است. از آنجا که پردازش اغلب تغییر می کند، به طوری که هر بار که شما نمی توانید پیکربندی را به روز کنید، پردازش اغلب در حال تغییر در راهنمای گزارش ذخیره می شود، در جزئیات نوع "ذخیره سازی ارزش" نام گزارش شده است. پردازش را می توان با تخلیه آن از پایگاه داده به دیسک و بارگیری، و یا توسط روش geturl ()، که اشاره به مورد مرجع و نام پروکسی ها را تخلیه می کند. ما ارزش پروکسی های به دست آمده توسط شیء پردازش را اختصاص می دهیم، با عملکرد GetDoc () تماس می گیریم، ما یک سند جدول را دریافت می کنیم که در یک فایل موقت اکسل ذخیره می شود. محتویات این فایل در پایگاه داده SQLite ثبت می شود.

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

# coding \u003d cp1251 acts \u003d getattr (v82.documents، "aktsnotchy") act \u003d acts.createdocument () setattr (act، indication "، 1024.23) Setattr (ACT،" مشترک "،" Ivanov ") # پر کردن جزئیات دیگر. .. act.write ()
در حال حاضر محفظه داده اتوماتیک.

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

علیرغم معایب روش (سرعت آهسته ترکیب کام)، به طور کلی، آن را پایدار می کند. ما داده ها را در یک فرم مبتنی بر پلتفرم (SQLite) داریم که می توانید از هر زبان کار کنید. و بخش اصلی کد در پایتون نوشته شده است، و بنابراین، بسیاری از ابزارها و تکنیک ها در دسترس هستند، که حتی نمی تواند رویای 1C باشد.

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

من آرزو می کنم همه موفق باشید، و به یاد داشته باشید که برای 1C خیلی وحشتناک نیست، به عنوان کمی او!

یکی از گزینه های تبادل اطلاعات بین پایگاه های داده 1C مبادله ای از طریق اتصال کام است.

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

شما می توانید دو نوع از اشیاء COM را برای برنامه 1C ایجاد کنید. آی تی v82.Application و v82.comConnector. در صورت v82.Application نمونه تقریبا کامل برنامه 1C آغاز شده است. در صورت استفاده v82.comConnector بخش سرور کوچک راه اندازی شده است.
سرعت کار در این مورد بالاتر است، اما برخی از توابع ممکن است در دسترس نباشد. به طور خاص، کار با فرم ها و ماژول های مشترک که اموال با ترکیبات خارجی ایجاد نمی شود. به طور کامل باید استفاده شود v82.comConnector و تنها در صورت کمبود عملکرد v82.Application. به ویژه به شدت تفاوت در سرعت را می توان در پایه های حجم بزرگ قابل توجه است.

بنابراین، ادامه دهید

  1. یک شی COM ایجاد کنید
    • برای v82.Application اتصال \u003d جدید COM Object ("v82.application")؛
    • برای v82.comConnector اتصال \u003d جدید COM Object ("v82.comConnector")؛
  2. ما یک اتصال چندگانه را تشکیل می دهیم
    • برای سرور سرور از اتصال رشته \u003d "srvr \u003d" "imasorver" "؛ ref \u003d" "نام"؛
    • برای نسخه فایل از اتصال رشته \u003d "file \u003d" "pullbazbaz" "؛ USR \u003d نام کاربری؛ pwd \u003d رمز عبور";
  3. یک اتصال به پایگاه داده انجام دهید تلاش برای اتصال \u003d اتصال اتصال (ترکیب رشته)؛ پیام Exception \u003d پیام کاربر جدید؛ پیام متن \u003d + توضیحات ()؛ پیام گزارش ()؛ جشن ها؛
  4. اتصال را با پایه شکستن ترکیب \u003d undefined؛

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

    برای کاربر زیر که اتصال انجام می شود، گزینه "درخواست بسته شدن درخواست" باید در تنظیمات خود خاموش شود.

حالا ما تمام کد را در یک دسته جمع آوری خواهیم کرد

اتصال \u003d جدید COM Object ("v82.application")؛ // connection \u003d new object جدید ("v82.comConnector")؛ rowing index \u003d "srvr \u003d" "server1c" "؛ ref \u003d" mybase ""؛ usr \u003d پتیا؛ pwd \u003d 123 "؛ // Ritching Indion \u003d "file \u003d" "C: \\ MyBase"؛ USR \u003d پیتر؛ PWD \u003d 123 "؛ تلاش برای اتصال \u003d اتصال اتصال (ترکیب رشته)؛ پیام Exception \u003d پیام کاربر جدید؛ پیام متن \u003d "اتصال به پایگاه داده موفق نشد" + توضیحات ()؛ پیام گزارش ()؛ جشن ها؛ ترکیب \u003d undefined؛

برای نوع اتصال v82.Application این روش به شی COM اعمال می شود که در ابتدا ایجاد شد و برای v82.comConnector این روش برای اتصال اعمال می شود. بعد، کار با درخواست می رود معنی استاندارد 1c در کد به نظر می رسد این است:

درخواست \u003d اتصال NewObject ("پرس و جو")؛ // برای v82.comConnector پرس و جو \u003d اتصال NewObject ("پرس و جو")؛ // برای v82.Application پرس و جو. text \u003d "انتخاب کنید | postganizations کد، | سازمانهای پیشنهادی. نام | است | دایرکتوری Allorganizations به عنوان دفتر "؛ نتیجه \u003d درخواست انجام دادن ()؛ selection \u003d نتیجه انتخاب کنید() ؛ در حالی که نمونه. چرخه بعدی () endackel؛

برای نسخه 1C: Enterprise 8.3 همه چیز بدون تغییر باقی می ماند، به جز اینکه هنگام ایجاد یک comobecs باید استفاده شود "v83.comConnector" یا "v83.application".

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

اتصال از طریق com به پایگاه داده 1C

برای پیاده سازی اتصال COM در 1C، یک مکانیسم خاص به نام Comconnector استفاده می شود. این شیء همراه با پلت فرم نصب شده است و برای برقراری ارتباط استفاده می شود. پایگاه اطلاعات. لازم به ذکر است که برای نسخه های 8.2 و 8.3، اشیاء مختلف استفاده می شود - "V82.Connector" و "v83.comConnector" به ترتیب.

به یاد داشته باشید که در اتصال COM به پایگاه داده برای صرف مجوز - لازم نیست که در اجرای همزمان چندین اتصال شرکت کنید. این به ویژه برای سازمان هایی که تعداد مجوز ها محدود است مهم است. این مسئله ممکن است با کمک وظایف نظارتی در طول عدم وجود ارتباطات کاربر فعال به پایگاه داده اطلاعات تصمیم گیری شود.

برای اینکه بتوانید به یک پایگاه داده دیگر متصل شوید و اطلاعات لازم را که باید اطلاعات زیر را بدانید، درخواست کنید:

  1. چه نوع نوع - فایل یا سرور مشتری؛
  2. جایی که آن واقع شده است؛
  3. تحت کدام نام و رمز عبور می تواند به آن برود؛
  4. شما به چه داده هایی علاقه مند هستید.

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

پارامترهای کنفرانس filebeib \u003d "file \u003d" "path_base" ""؛ usr \u003d "" نام کاربری "" "؛ pwd \u003d" "رمز عبور" ""؛ پارامترهای نتیجه گیری clinserverveb \u003d "srvr \u003d" server_name ""؛ ref \u003d "" نام پایه "؛ usr \u003d" "نام کاربری" "؛ pwd \u003d" "رمز عبور" ""؛

ویژگی اتصال ساده است و اگر تمام پارامترها درست باشد، نباید سوالات را ایجاد کند. برای سرعت بخشیدن به اشکال زدایی و تجزیه و تحلیل خطاهای احتمالی بهتر است به نتیجه گیری در طراحی "تلاش". بازگشت تابع، ارزش نوع "COM Object" است که شما باید کار کنید، داده های لازم را دریافت کنید.

& nasserver اتصال تابع () پارامترهای صادرات ContractsIB \u003d "file \u003d" "E: \\ base 1c \\ erp" "؛ usr \u003d" مدیر ""؛ pwd \u003d "" 1 "" "؛ v83Comcon \u003d جدید مشترک ("v83.comConnector")؛ تلاش برای بازگشت v83Comcon.Connect (پارامترهای قدرت امتیاز)؛ استثنا به اطلاع (شرح ())؛ بازگشت نامشخص است جشن ها؛ عملکرد

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

ما داده ها را از پایه 1C دریافت می کنیم

پس از دریافت شی مورد نظر، شما باید داده ها را از یک پایگاه دیگر بخوانید. برای انجام این کار، ما یک درخواست را از طریق اتصال COM به 1C 8.3 با استفاده از نوع "COM Object" از تابع اعمال می کنیم. مهم است که ابتدا به پایگاه داده متصل شوید و سپس یک درخواست انجام دهید. اعدام از طریق روش NewObject با نشانه ای به عنوان یک پارامتر نوع شی در فرم رشته ای رخ می دهد - "درخواست".

& nasserver تست روش مکانیکی () اتصال \u003d اتصال ()؛ اگر typcouch (اتصال) نوع ("undefined") سپس درخواست \u003d connection.NewObject ("پرس و جو")؛ درخواست. text \u003d "اولین 15 | دایرکتوری را انتخاب کنید. نام به عنوان نام | از | دایرکتوری کاربران به عنوان یک دایرکتوری"؛ نمونه برداری \u003d درخواست پر کردن () را انتخاب کنید ()؛ در حالی که نمونه. دوره بعدی () گزارش شده است (نمونه گیری. Endcycle؛ به پایان رسید؛ روش فوق العاده\u003e

به عنوان مثال، برای به دست آوردن اطلاعات در مورد کاربران یک واحد خاص، شرایط را به درخواست از طریق پارامترها تنظیم کنید. یک پارامتر یک نوع ساده است - یک رشته، و واحد توسط کتاب مرجع "ساختار سازمانی" اشاره شده است. نتیجه پرس و جو یک جدول با زمینه های ذکر شده از نوع است که آنها در پایگاه داده ای که اتصال COM رخ داده است وجود دارد. اگر شما نیاز به تبدیل آنها به انواع دیگر - استفاده از توابع پلت فرم استاندارد:

  • خط ()؛
  • عدد()؛
  • تاریخ().
درخواست \u003d connection.NewObject ("پرس و جو")؛ requescribe. text \u003d "انتخاب اولین 15 | disfietdenzadenz. نام به عنوان نام | از | دایرکتوری. کاربران به عنوان دایرکتوری کتابچه راهنمای من کجا | دایرکتوری مدیریت \u003d و لوازم | نامگذاری مانند"٪ "" + ""٪ " ؛ درخواست. پارامتر نصب ("رومیزی"، ترکیب. اجرا می شود scretorpredit درخواست. پارامتر نصب ("مورد نظر"، "کاترین")؛ نمونه برداری \u003d درخواست پر کردن () را انتخاب کنید ()؛ در حالی که نمونه. دوره بعدی () گزارش شده است (نمونه برداری. نام)؛ Endcycle؛

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

درخواست \u003d connection.NewObject. ("پرس و جو")؛ درخواست. ""؛ massputs \u003d connection.NewObject ("آرایه")؛ نیروهای Massput Advly (ترکیب Pravnochniki. سازمانی ساختاری. Entripypypeotype (00-000023 "))؛ نیروهای Massputs. افزودنی (ترکیب. اجرا می شود شرکت ساختاری. EntryPocus ("00-000038"))؛ نیروهای Massput Advly (ترکیب. فریم ها. سازمانی ساختاری. Entripypypeotypeotype (00-000046 "))؛ درخواست. پارامتر نصب ("مورد نظر برای تقسیم"، آرایه)؛ درخواست. پارامتر نصب ("مورد نظر"، "کاترین")؛ نمونه برداری \u003d درخواست پر کردن () را انتخاب کنید ()؛ در حالی که نمونه. دوره بعدی () گزارش شده است (نمونه برداری. نام)؛ Endcycle؛

هنگام انتقال اسناد و یا عناصر مرجع، مسئله کنترل انتقال یک جسم خاص همیشه بوجود می آید. با استفاده از اتصالات COM، چنین مشکلات را می توان از طریق یک شناسه منحصر به فرد حل کرد. شما باید یک شی را در پایگاه داده متصل شده بر روی شناسه از IB فعلی با استفاده از تابع "لباس DressLine" با استفاده از شناسه در قالب یک رشته پیدا کنید. اگر این یافت نشد، شما می توانید آن را با اتصال کام ایجاد کنید.

Strider \u003d ردیف (دایرکتوری ها. کاربران. LightPocode ("00-0000313"). Selfentifier منحصر به فرد ())؛ اگر آن را تعریف نمی شود (اتصال. اجرا می شود کاربران Pereskliklka (Connection .NewObject ("منحصر به فرد Selfentifier"، Streed))) سپس یک کاربر جدید \u003d ترکیب می شود. کاربران. ایجاد عنصر ()؛ user.name جدید \u003d منابع. کاربران. Entipocose ("00-0000313"). نام؛ user.physity \u003d منابع جدید. کاربران. Entipotype ("00-0000313"). فیزیکی کاربر جدید استخدام ()؛ به پایان رسید؛

همچنین اتصال COM حق استفاده از روش ها و توابع را دارد ماژول های مشترک 1C با ویژگی اتصال خارجی شامل. علاوه بر این، وضعیت به نام تابع یا روش باید صادرات باشد و شامل اقدامات تعاملی انجام شده بر روی سرور باشد. در مورد مخالف، شما یک اشتباه در مورد عدم پذیرش عملیات را خواهید دید.

ترکیب..؛ ماشینکاری \u003d اتصال ..؛ تماس بگیرید\u003e نام اثاثه یا لوازم داخلی\u003e نامزدها\u003e نامتقارنت\u003e

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