زنگ.

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

برای تبادل اطلاعات بین دو پایگاه اطلاعاتی بدون فضای خالی و فایل های مبادله، هیچ چیز بهتر از COM جزئی نیست. و دشوار است با این بحث دشوار است، زیرا به اندازه کافی برای استفاده از این نوع ترکیب استفاده می شود به اندازه کافی و پایدار است. اما در داخل و این مکانیسم یک مکان باریک و ناخوشایند وجود دارد. در مورد زمان تنظیم ارتباط با یک پایگاه دیگر می رود. این ممکن است در برخی موارد به اندازه کافی بزرگ، به اندازه کافی بزرگ باشد، I.E. خیلی طولانی است

مشکل چیه؟ چته؟

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

تجزیه و تحلیل عملکرد

بگذارید از خود بپرسیم و این که آیا لازم است که در همه جا ذخیره شود و میوه های خود را با کار فشرده کاربر با اتصال کام به ارمغان بیاورد. اتصال زمان اندازه گیری را به پیکربندی 20 کیلوبایت انجام دهید.

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

هنگام ذخیره سازی یک اتصال پشتیبانی شده، این اقدامات چندین مرتبه از زمان کمتری را صرف می کند.

چگونه ما اتصال COM ما را ذخیره کنیم؟

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

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

به جای خروجی

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

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

چاپ (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 امکان پذیر است. ممکن است. شاخص (امکان تعامل (اتصال .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 تماس بگیرید. اگر در زبان های پی اچ پی یا vBScript آن هیچ مشکلی را ایجاد نخواهد کرد

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

کد در پایتون به سادگی با خطای خطای نحوی سقوط می کند. چه باید بکنید؟ ویرایش پیکربندی؟ نه، کافی است از روش های 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 را انتخاب کنید. کد مانند کد، صورت صورت. تجهیزات. Naselipart نام +،"، "+ فیشال. SmartYaddress به عنوان آدرس، صورت به عنوان FIO، PSU.DIVIVISE صورت. نام همانطور که PSU، Express (به طور خاص desiccreet-lasting. رابطه به عنوان یک راهنمای. سازمان جایگزین سوپر). عملیات به عنوان TSO، فیشال. تجهیزات. نصلیپارت نام به عنوان NP، صورت صورت، صورت. راه اندازی نام به عنوان خیابان، صورت ، 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 خیلی وحشتناک نیست، به عنوان کمی او!

) خیلی خوب

در عین حال، من بیش از یک بار دیدم که من فقط از انتشارات که حتی 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 برای صحنه ها هستند.

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

یکی از گزینه های تبادل اطلاعات بین پایگاه های داده 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".

زنگ.

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