دریافت اطلاعات از فایل xls 1c. کدام بهتر است - "1C" یا "Excel"؟ چند کلمه در مورد اشتباهات احتمالی

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

1. کار از طریق یک شی COM.

برای این روش، MS Excel باید نصب شود، علاوه بر این، اگر با فایلی روی سرور کار می کنید، MS Excel باید روی سرور نصب شود، اگر روی کلاینت است، پس از آن MS Excel نیز در سمت کلاینت مورد نیاز است.

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

لازم به ذکر است که تمام اشیاء، متدها و خصوصیات ارائه شده توسط شی COM "Excel.Application" اشیاء، متدها و ویژگی های VBA، زبان برنامه نویسی MS Office هستند.

توجه داشته باشید:

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

2. از طریق سند جدولی 1C کار کنید.

سند صفحه گسترده 1C از فرمت MS Excel برای نوشتن از پلتفرم 8، اما برای باز کردن فقط از پلت فرم 8.3.6 پشتیبانی می کند. علاوه بر این، پس از باز کردن، همه برگه ها در یک سند صفحه گسترده بارگذاری می شوند. از نسخه 8.3.10، هنگام بارگذاری، برگه های مختلف به عنوان مناطق مختلف بارگذاری می شوند.

مثال ضبط بسیار ساده است و نیازی به توجه زیادی ندارد:

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

این مشکل به 2 روش قابل حل است، 1 - در خود کتاب، در تنظیمات، نمایش برگه ها را فعال کنید (همه کاربران با این کار موافقت نمی کنند)، 2 - انجام آن از طریق یک شی COM (ما دوباره به MS نیاز داریم. اکسل نصب شده است).

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

خواندن MS Excel کار آسانی نیست، زیرا روش خواندن فقط روی سرور یا کلاینت ضخیم در دسترس است. برای این کار باید فایل MS Excel را به سرور انتقال دهیم.

& OnClient

رویه ایجاد سند ()

یک استثنا

پایان تلاش;

کتاب = Excel.WorkBooks.Add (); // یک کتاب کار جدید MS Excel ایجاد کنید

Sheet = Book.WorkSheets.Add (); // یک برگه اضافه کنید

Sheet.Name = "نمونه از 1C"; // نام برگه را تنظیم کنید

Sheet.Cells (1,1) .Value = "(! LANG: بیایید یک فرمول ایجاد کنیم";!}

Leaf.Cells (2,1) .Value = 1;

Leaf.Cells (2,2) .Value = 2;

Sheet.Cells (2,3) .Formula = "= A2 + B2";

Sheet.Cells (3،1) .Value = CurrentDate ();

Book.SaveAs ("C: \ 1 \ Test.xlsx");

Book.Close ();

پایان رویه

&روی سرور

تابع GetLayoutServer ()

FormInValue ("Object") را برگردانید. Layout ("TemplateOnDownload") را دریافت کنید. // به این ترتیب طرح بندی را دریافت می کنیم پردازش خارجی;

EndFunction

& OnClient

رویه کار ()

Excel = New COMObject ("Excel.Application");

یک استثنا

گزارش ("تلاش ناموفق برای اتصال جزء Excel. احتمالا برنامه اکسلنصب نشده بر روی این کامپیوتر!");

پایان تلاش;

Layout = دریافت LayoutServer ();

Layout.Write (TemporaryFileName);

آیا سوالی دارید، نیاز به کمک مشاور دارید؟

Book = Excel.WorkBooks.Open (TemporaryFileName);

TemplateSheet = Book.WorkSheets (1);

Template Sheet.Cells (6,1) .Value = "(! زبان: تاریخ:";!}

Template Sheet.Cells (6,2) .Value = CurrentDate ();

Sheet.NumberFormat الگو = "dd / mm / yy; @"; // فرمت تاریخ را بدهیم، این فرمت با ضبط یک ماکرو در MS Excel به دست آمده است

TemplateLeaf.Columns ("B: B"). EntireColumn.AutoFit. // ستون را بکشید تا تاریخ دقیقا مطابقت داشته باشد

Book.SaveAs (FileName);

Book.Close ();

پایان رویه

& OnClient

پایان رویه

& OnClient

رویه WriteSheet Document ()

TabularDocument = New TabularDocument ();

TabularDocument.Object ("R1C1"). Text = "نمونه ای از نوشتن در MS Excel از 1C";

TabularDocument.Write ("C: \ 1 \ Test2.xls", TabularDocumentFileType.XLSX);

Excel = New COMObject ("Excel.Application");

Excel.WorkBooks.Open ("C: \ 1 \ Test2.xls");

Excel.Visible = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0.6;

Excel.ActiveWorkbook.Save ();

Excel.Application.Quit ()

پایان رویه

BinaryData = New BinaryData ("C: \ 1 \ test2.xlsx");

آدرس = PlaceTemporaryStorage (BinaryData، EtaForm.UniqueIdentifier)؛

TabularDocument = LoadOnServer (آدرس)؛

TabularDocument.Show ();

پایان رویه

&روی سرور

عملکرد LoadOnServer (آدرس)

TempFileName = GetTempFileName ("xlsx");

FileData = GetFrom TemporaryStorage (آدرس)؛

FileData.Write (TemporaryFileName)؛

TabularDocument = New TabularDocument ();

بازگشت TabularDocument;

این روش ساده است. ماهیت آن در این است که شیء سند جدولیروش هایی دارد:

  • بنویس (< ИмяФайла>, < ТипФайлаТаблицы >) برای آپلود داده ها در یک فایل؛
  • خواندن (< ИмяФайла>, < СпособЧтенияЗначений >) برای بارگیری داده ها از یک فایل.

توجه!

متد Write () هم در کلاینت و هم در سرور در دسترس است. روش Read () فقط در سمت سرور موجود است. این را به خاطر داشته باش
هنگام برنامه ریزی تعامل مشتری و سرور

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

TabDoc ... بنویسید (FilePath، TabularDocumentFileType. XLSX);

اینجا TabDoc- سند صفحه گسترده تولید شده، مسیر فایل- نام فایل برای آپلود، نوع فایل سند جدولی.XLSX- فرمت فایل تولید شده... پشتیبانی فرمت های زیربرتری داشتن:

  • فرمت XLS95 - Excel 95.
  • فرمت XLS97 - Excel 97.
  • فرمت XLSX - Excel 2007.

TabDoc = New TabularDocument;
TabDoc ... خواندن (مسیر به فایل، نحوه خواندن مقادیر سند جدولی.);

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

  • معنی؛
  • متن

مبادله از طریق OLE

تبادل از طریق فناوری اتوماسیون OLE شاید رایج ترین گزینه باشد کار برنامه ایبا فایل های اکسل این به شما امکان می دهد از تمام عملکردهای ارائه شده توسط اکسل استفاده کنید، اما نسبت به روش های دیگر کندتر است. برای تبادل از طریق OLE، باید MS Excel را نصب کنید:

  • در رایانه کاربر نهایی، اگر تبادل در سمت مشتری انجام شود.
  • در 1C: رایانه سرور سازمانی، اگر تبادل در سمت سرور انجام شود.

مثال تخلیه:

// یک شی COM ایجاد کنید
Excel = New COMObject ("Excel.Application");
// نمایش هشدارها و سوالات را غیرفعال کنید
برتری داشتن ... DisplayAlerts = نادرست.
// یک کتاب جدید ایجاد کنید
کتاب = اکسل کتاب های کار اضافه کردن ()؛
// تعیین موقعیت در صفحه اول
ورق = کتاب کاربرگ (1);

// مقدار را در سلول بنویسید
ورق ... سلول ها (LineNumber، ColumnNumber). مقدار = مقدار سلول.

// فایل را ذخیره کنید
کتاب ... SaveAs (نام فایل)؛


برتری داشتن ... خروج ()
اکسل = 0;

نمونه هایی از خواندن:

// -- انتخاب 1 --

// یک شی COM ایجاد کنید
Excel = New COMObject ("Excel.Application");
// کتاب را باز کن
کتاب = اکسل کتاب های کار باز کن ( مسیر فایل )

ورق = کتاب کاربرگ (1);

// کتاب را ببند
کتاب ... بستن (0)؛

// Excel را ببندید و حافظه آزاد کنید
برتری داشتن ... خروج ()
اکسل = 0;

// -- گزینه 2 --

// کتاب را باز کن
کتاب = GetCOMObject ( مسیر فایل )
// تعیین موقعیت بر روی برگه مورد نظر
ورق = کتاب کاربرگ (1);

// مقدار سلول را بخوانید، معمولاً این حلقه برای عبور از سلول ها است
مقدار سلول = برگه. سلول ها (LineNumber، ColumnNumber). مقدار؛

// کتاب را ببند
کتاب ... کاربرد. Qui t ();

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

// -- انتخاب 1 --
تعداد خطوط = ورق. سلول ها (1، 1). سلول های ویژه (11). ردیف؛
برای شماره خط = 1 حلقه تعداد خطوط
مقدار سلول = برگه. سلول ها (LineNumber، ColumnNumber). مقدار;
پایان چرخه؛

// -- گزینه 2 --
Line Number = 0;
در حالی که چرخه حقیقت
LineNumber = LineNumber + 1;
مقدار سلول = برگه. سلول ها (LineNumber، ColumnNumber). مقدار؛
اگر ValueFilled نباشد (CellValue) سپس
سقط
EndIf
پایان چرخه؛

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

کل ستون ها = ورق. سلول ها (1، 1). سلول های ویژه (11). ستون؛
مجموع ردیف ها = ورق سلول ها (1، 1). سلول های ویژه (11). ردیف؛

منطقه = ورق محدوده (Sheet. Cells (1, 1)، Sheet. Cells (TotalLines، TotalColumns));
داده ها = منطقه مقدار. تخلیه کنید();

جدول زیر محبوب ترین ویژگی ها و روش های کار با اکسل از طریق OLE را نشان می دهد:

عمل کد یک نظر
کار با اپلیکیشن
تنظیم نمایان بودن پنجره برنامه برتری داشتن ... قابل رویت= نادرست
تنظیم حالت نمایش هشدارها (نمایش / عدم نمایش) برتری داشتن ... DisplayAlerts= نادرست
بستن برنامه برتری داشتن ... خروج ()
کار با کتاب
ایجاد یک کتاب جدید کتاب = اکسل کتاب های کار اضافه کردن();
باز کردن یک کتاب موجود کتاب = اکسل کتاب های کار باز کردن (FileName);
ذخیره یک کتاب کتاب ... SaveAs (نام فایل);
بستن کتاب کتاب ... بستن (0)؛
کار با ورق
تنظیم برگه فعلی ورق = کتاب برگه های کاری (شماره برگه);
تنظیم نام ورق ... نام = نام;
تنظیم حفاظت ورق ... محافظت();
حذف حفاظت ورق ... UnProtect();
تنظیم جهت صفحه ورق ... تنظیمات صفحه. جهت گیری = 2; 1 - پرتره، 2 - منظره
تنظیم حاشیه سمت چپ ورق ... تنظیمات صفحه. حاشیه چپ = اکسل. CentimetersToPoints (سانتی متر);
تنظیم کران بالا ورق ... تنظیمات صفحه. TopMargin = Excel. CentimetersToPoints (سانتی متر);
تنظیم حاشیه مناسب ورق ... تنظیمات صفحه. RightMargin = Excel. CentimetersToPoints (سانتی متر);
تنظیم حاشیه پایین ورق ... تنظیمات صفحه. BottomMargin = Excel. CentimetersToPoints (سانتی متر);
کار با ردیف ها، ستون ها، سلول ها
تنظیم عرض ستون ورق ... ستون ها. ColumnWidth = عرض;
حذف یک خط ورق ... ردیف ها حذف();
حذف ستون ورق ... ستون ها. حذف ()؛
حذف یک سلول ورق ... سلول ها (LineNumber، ColumnNumber). حذف();
تنظیم مقدار ورق ... سلول ها (LineNumber، ColumnNumber). ارزش = ارزش;
ادغام سلول ها ورق ... محدوده (Sheet. Cells (RowNumber، ColumnNumber)، Sheet.Cells (RowNumber1 ,ColumnNumber1)). ادغام();
در حال نصب فونت ورق ... سلول ها (LineNumber، ColumnNumber). فونت نام = نام قلم;
تنظیم اندازه فونت ورق ... سلول ها (LineNumber، ColumnNumber). فونت اندازه = اندازه قلم;
تنظیم فونت پررنگ ورق ... سلول ها (LineNumber، ColumnNumber). فونت پررنگ = 1 ; 1 - پررنگ، 0 - عادی
تنظیم مورب ورق ... سلول ها (LineNumber، ColumnNumber). فونت کج = 1 ; 1 - مورب، 0 - عادی
تنظیم فونت خط دار ورق ... سلول ها (LineNumber، ColumnNumber). فونت زیر خط بکشید = 2 ; 2 - خط دار، 1 - نه

برای اینکه بفهمید کدام ویژگی باید تغییر کند یا کدام روش را فراخوانی کنید، می توانید استفاده کنید ماکروهابرتری داشتن. اگر یک ماکرو را با اقدامات لازم ضبط کنید، سپس می توانید به کد برنامه VBA ماکرو ضبط شده نگاه کنید.

با استفاده از COMSafeArray

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

// COMSafeArray را ایجاد کنید
ArrayCom = COMSafeArray جدید ("VT_Variant"، TotalColumns، TotalStrings);
// COMSafeArray را پر کنید
برای خطوط = 0 با مجموع خطوط - 1 چرخه
برای تعداد = 0 ستون کل - 1 چرخه
ArrayCom ... SetValue (تعداد، صفحه، مقدار);
پایان چرخه؛
پایان چرخه؛
// مقادیر را از COMSafeArray به ناحیه کاربرگ Excel اختصاص دهید
ورق ... محدوده (ورق. سلول ها (1، 1)، ورق. سلول ها (TotalRows، TotalColumns)). مقدار = ArrayCom;

تبادل از طریق ADO

یک فایل اکسل که از طریق ADO رد و بدل می شود یک پایگاه داده است که با استفاده از پرس و جوهای SQL قابل دسترسی است. نیازی به نصب MS Excel نیست، اما باید یک درایور ODBC وجود داشته باشد که برای دسترسی استفاده می شود. درایور ODBC مورد استفاده با تعیین رشته اتصال به فایل تعیین می شود. معمولاً درایور مورد نیاز از قبل بر روی رایانه نصب شده است.

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

مثال تخلیه:


اتصال = COMObject جدید ("ADODB.Connection");


ترکیب ... ConnectionString = "

| منبع داده = " + نام فایل + “;
;
ترکیب ... باز کن ()؛ // اتصال را باز کنید

// یک شی COM برای دستور ایجاد کنید
Command = New COMObject ("ADODB.Command");
تیم

// متن دستور را برای ایجاد جدول اختصاص دهید
تیم ... CommandText = "ایجاد جدول [Sheet1] (شاخه ستون 1 (255)، تاریخ ستون 2، بین ستون 3، شناور ستون 4)";
تیم ... اجرا کردن ()؛ // دستور را اجرا کنید

// متن فرمان را برای افزودن ردیف جدول اختصاص دهید
تیم ... CommandText = "InSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) مقادیر (‘‘‘‘‘‘,‘ 8/11/2017 ‘, ‘12345’, ‘12345.6789’);
Command.Execute (); // دستور را اجرا کنید

// دستور را حذف کنید و اتصال را ببندید
فرمان = تعریف نشده.
ترکیب ... نزدیک();
اتصال = تعریف نشده;

برای ایجاد یک صفحه جدید و شکل دادن به ساختار آن، می توانید از اشیاء استفاده کنید ADOX.کاتالوگو ADOX.Table... در این صورت کد به شکل زیر در می آید:

// یک شی COM برای کار با کتاب ایجاد کنید
کتاب = COMObject جدید ("ADOX.Catalog")؛
کتاب ... ActiveConnection = اتصال;

// یک شی COM برای کار با ساختار داده روی برگه ایجاد کنید
Table = New COMObject ("ADOX.Table");
جدول ... نام = "Sheet1";
جدول ... ستون ها. ضمیمه ("ستون 1"، 202);
جدول ... ستون ها. ضمیمه ("ستون 2"، 7)؛
جدول ... ستون ها. ضمیمه ("ستون 3"، 5)؛
جدول ... ستون ها. ضمیمه ("ستون 4"، 5)؛

// یک برگه با ساختار توصیف شده در کتاب ایجاد کنید
کتاب ... جداول. پیوست (جدول)؛
جدول = تعریف نشده.
کتاب = تعریف نشده;

در مثال بالا، در روش

جدول ... ستون ها. ضمیمه(«ستون 1»، 202);

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

  • 5 - adDouble;
  • 6 - ارز تبلیغاتی;
  • 7 - adDate;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

مثال خواندن:

// یک شی COM برای اتصال ایجاد کنید
اتصال = COMObject جدید ("ADODB.Connection");

// رشته اتصال را تنظیم کنید
ترکیب ... ConnectionString = "
ارائه دهنده = Microsoft.ACE.OLEDB.12.0;
| منبع داده = " + نام فایل + “;
| ویژگی های توسعه یافته = "" Excel 12.0 XML؛ HDR = بله ""؛ ";
ترکیب ... باز کن ()؛ // اتصال را باز کنید

// یک شی COM برای دریافت انتخاب ایجاد کنید
Selection = New COMObject ("ADODB.Recordset");
متن درخواست = "انتخاب * از [Sheet1 $]";

// درخواست را اجرا کنید
نمونه ... باز کردن (QueryText، Connection)؛

// دور زدن نتیجه انتخاب
هنوز نمونه گیری نشده است. EOF () حلقه
مقدار ستون 1 = نمونه. زمینه های. مورد ("ستون 1"). مقدار ; // ارجاع با نام ستون
Column2-Value = Sample. زمینه های. مورد (0). مقدار؛ // اشاره به نمایه ستون
نمونه ... MoveNext ();
پایان چرخه؛

نمونه ... نزدیک ()؛
نمونه = تعریف نشده;
ترکیب ... نزدیک ()؛
اتصال = تعریف نشده.

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

  • بله - خط اول به عنوان نام ستون تفسیر می شود. مقادیر را می توان با نام و نمایه ستون دسترسی داشت.
  • خیر - خط اول به عنوان داده در نظر گرفته می شود. مقادیر فقط با نمایه ستون قابل دسترسی هستند.

در مثال های ارائه شده، تنها چند شیء ADO مورد بحث قرار گرفته است. مدل شی ADO از موجودیت های زیر تشکیل شده است:

  • ارتباط؛
  • فرمان؛
  • مجموعه رکوردها
  • رکورد؛
  • زمینه های؛
  • جریان؛
  • خطاها؛
  • مولفه های؛
  • خواص.

بدون برنامه نویسی آپلود کنید

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

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

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

برای ذخیره داده ها از لیست های پویا (مثلاً یک لیست آیتم)، باید:

  1. با استفاده از دستور، داده ها را به یک سند صفحه گسترده خروجی دهید بیشتر ⇒ نمایش لیست ...;
  2. سند صفحه گسترده را در قالب مورد نیاز ذخیره کنید.

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

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

مکانیزم جهانی

در دیسک های ITS، و همچنین در پورتال 1C، با رفتن به منوی "پشتیبانی فناوری" -> "گزارش های جهانی و پردازش"، در پوشه "بارگیری داده ها از یک سند صفحه گسترده" پردازش مربوطه وجود دارد.

هنگامی که شروع می شود، یک فرم باز می شود (شکل 1):

همانطور که از فرم مشاهده می کنید، به شما امکان می دهد اطلاعات را به اشیاء پیکربندی زیر منتقل کنید:

  1. فهرست راهنما؛
  2. قسمت جدولیسند یا کتاب مرجع؛
  3. ثبت اطلاعات

فیلد انتخاب شی بسته به موقعیت سوئیچ تغییر می کند.

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

پردازش معمولی از تخلیه از:

  • طراحی شده توسط متخصصان 1C، فرمت فایلmxl;
  • لیستxls در قالب ذخیره شده استExcel 97-2003;
  • فایل متنیtxt;
  • جداولdbf

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

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

حالا بیایید به تب "تنظیمات" برویم (شکل 2):

شکل 2

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

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

ستون "تنظیمات"

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

نمایش ویژگی - مترادف (نام) ویژگی فراداده، همانطور که در پیکربندی مشخص شده است، در اینجا نوشته شده است.

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

شرح انواع - نوع داده ای را که یک ویژگی فراداده خاص دارد نمایش می دهد.

حالت دانلود - سه گزینه را برای انتخاب ارائه می دهد (شکل 3):

شکل 3

  • جستجو - جستجوی عنصر مربوطه انجام می شود؛ در صورت عدم وجود آن، می توان عنصر جدیدی ایجاد کرد.
  • مجموعه - یک مقدار مشخص به روشی فرعی تنظیم می شود.
  • محاسبه - در این حالت، نتیجه محاسبه عبارت مشخص شده در ستون "شرط پیوند / بیان برای مقدار" در فیلد عنصر در حال ایجاد تنظیم می شود.

در حالت دوم، فعال سازی فیلد Expression فرم را باز می کند (شکل 4).

شکل 4

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

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

شرط پیوند / بیان برای مقدار - ما قبلاً زمانی که فیلدهای محاسبه شده را در نظر گرفتیم تا حدی روی این فیلد لمس کرده ایم؛ علاوه بر این، می توانید شرایطی را در آن تعیین کنید که براساس آن داده های منبع همگام شوند.

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

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

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

یک مکانیسم دیگر برای بارگیری داده ها از اکسل در پایگاه های اطلاعاتی "Management and Trade" وجود دارد. نسبت به روش فوق تطبیق پذیری کمتری دارد، با این حال، به اشتراک ITS نیاز ندارد و در تحویل استاندارد گنجانده شده است.

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

شکل 5

فرم پردازش شامل:

  1. فیلد انتخاب تاریخ، که نشان می دهد این قیمت برای چه زمانی مربوط است.
  2. فیلد انتخاب پیمانکاری که لیست قیمت خود را ارسال کرده است.
  3. دکمه ای که به شما امکان می دهد نوع قیمت های تعیین شده را انتخاب کنید.
  4. یک بخش جدولی که می تواند با داده های بارگذاری شده پر شود.

این شکل را می توان در شکل 6 مشاهده کرد

شکل 6

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

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

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

شکل 7

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

شکل 8

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

  • ثبت همه چیز؛
  • فقط مواردی را که در مقایسه با موارد موجود در پایگاه داده تغییر کرده اند ثبت کنید.

در قسمت متن، می توانید یک نظر اضافه کنید که در سند نوشته می شود (شکل 9):

شکل 9

پس از پردازش:

  • یک مورد مربوطه در کتاب مرجع "نامگذاری تامین کننده" ایجاد می شود (اگر وجود نداشته باشد).
  • مورد کاتالوگ "Nomenclature" با آن مطابقت داده می شود.
  • سند "تنظیم قیمت اقلام" ایجاد و ارسال می شود که نشان می دهد: تامین کننده، نوع قیمت و تاریخ تثبیت داده ها.

پردازش "بارگیری کالا از فایل های خارجی" به همین ترتیب کار می کند.

گزینه های انتقال DIY

مشکل اصلی در بیرون کشیدن داده ها از یک فایل اکسل این است که 1C مکانیسم مشخصی برای باز کردن آن ندارد. چندین گزینه برای اتصال اکسل به 1C وجود دارد:

  • از طریق Microsoft ADODB - کافی است راه سریع، که به عنوان یک قاعده، برای هر دو نسخه فایل و سرور-سرور ذخیره سازی پایگاه داده قابل استفاده است.
  • از طریق استفاده مایکروسافت آفیس- روشی که گاهی اوقات هنگام کار با پایگاه های داده SQL با شکست مواجه می شود، به عنوان یک قاعده، تا حدودی کندتر از روش اول کار می کند، علاوه بر این، به آن نیاز دارد آفیس را نصب کرد;
  • از طریق Libre Office - بر خلاف روش قبلی، رایگان است، علاوه بر فرمت های xls و xlsx، از جداول خود نیز پشتیبانی می کند، اما به بسته نصب شده LibreOffice و مقداری آماده سازی فایل دانلود شده نیاز دارد ( ردیف اول جدول باید حاوی نام ستون ها).

بیایید با جزئیات بیشتری در نظر بگیریم روش های مختلفو گزینه ها

از طریق ADODB.Connection

به طور کلی ADO مخفف ActiveX Data Object است و به آن خدمات می دهد دسترسی برنامه ایبه پایگاه داده های مختلف بزرگترین چالش هنگام ایجاد هر گونه ارتباط با فایل شخص ثالث(از جمله اکسل) - یک رشته اتصال را به درستی بنویسید.

برای فایل های اکسلسه گزینه در اینجا امکان پذیر است:

پارامترهای رشته اتصال:

  • ارائه دهنده - درایور استفاده شده در اینجا تعریف شده است.
  • منبع داده - نام فایلی را که باز خواهیم کرد را مشخص می کند.
  • Extended Properties - در اینجا می توانید مشخص کنید: آیا به یک ردیف هدر برای جدول نیاز دارید (HDR = YES نشان می دهد که داده ها از خط اول خوانده می شوند، HDR = NO - از خط دوم)، آیا فایل فقط برای خواندن باز می شود. (ReadOnly) و برخی پارامترهای اختیاری دیگر.

پس از ایجاد رشته اتصال، می توانیم به فایل دانلود شده متصل شویم (شکل 13)

شکل 13

حالا میتونیم استفاده کنیم درخواست ساده(شکل 14) شروع به واکشی اطلاعات از فایل دانلود شده کنید.

در این حالت، پارامتر "Sheet" مشخص می کند که با کدام برگه از کتاب اکسل باید کار کنیم.

مجموعه رکوردهای ذخیره شده در یک برگه را می توان با استفاده از یک شی Recordset خواند. در این حالت، اولین رکورد برگه را می توان با پارامتر BOF (ابتدای فایل)، و آخرین EOF (پایان فایل) به دست آورد.

از طریق اپلیکیشن اکسل

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

این شی COMچندین پارامتر فرزند وجود دارد، اما اصلی ترین پارامتر برای ما، در شرایط فعلی، پارامتر WorkBooks است (شکل 17).

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

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

چند کلمه در مورد اشتباهات احتمالی

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

در مورد کار از طریق ADO (شکل 19).

شکل 19

  • در مورد کار با برنامه (شکل 20).

برنج. بیست.

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

معرفی.

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

جداول 1C و Excel.

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

در وب سایت 1C (http://www.1c.ru/) برنامه مفیدی وجود دارد که امکان باز کردن جداول 1C را در اکسل و ذخیره یک برگه اکسل به عنوان جدول 1C فراهم می کند. اگر جدول 1C در قالب اکسل ذخیره نشده باشد و 1C در رایانه ای که باید این جدول را باز کنید، نصب نشده باشد، مفید است. و نیازی به یادآوری دائمی این موضوع نیست که باید جدول 1C را در قالب اکسل ذخیره کنید.

اطلاعات کامل در مورد این برنامه را می توانید در اینجا بیابید.
می توانید برنامه را از اینجا دانلود کنید ( بایگانی فشرده 682739 بایت).

اظهار نظر:در اکسل، جداکننده اعشار "،" است. بنابراین، قبل از ذخیره جدول 1C در قالب اکسل، جداکننده دیگری را در آن (به عنوان مثال ".") با "،" جایگزین کنید. در غیر این صورت اکسل قادر به انجام محاسبات با این اعداد نخواهد بود و یا اصلا به صورت عددی نمایش داده نمی شوند. به عنوان مثال، در جدول 1C "15.2" در اکسل به عنوان "15 فوریه" نمایش داده می شود.

دریافت داده از اکسل

دسترسی از 1C به Excel از طریق OLE انجام می شود. به عنوان مثال کد
تلاش
یک استثنا
گزارش (DescriptionErrors () +
);
برگشت؛
پایان تلاش;
به ما این امکان را می دهد که از طریق متغیر "Excel" به در حال اجرا دسترسی داشته باشیم برنامه اکسل... و سپس می توانید از قبل به کتاب (فایل)، برگه و سلول دارای داده دسترسی داشته باشید. در زیر چند نمونه کد آورده شده است.

باز کردن کتاب (فایل):
کتاب = اکسل. کتاب های کار باز کردن (مسیر به فایل)؛
FilePath مسیر کامل فایل در کتاب کار اکسل است.

انتخاب برگه ای از کتاب برای کار:
یا
ورق = کتاب. برگه های کاری (SheetName)؛
SheetNumber شماره برگه کتاب است، SheetName نام برگه کتاب است.

بدست آوردن مقدار یک سلول صفحه:
ارزش = ورق. سلول ها (LineNumber، ColumnNumber). مقدار؛

مهم:فراموش نکنید که کد اکسل را در زمینه انجام اقدامات لازم اضافه کنید. خروج () ، در غیر این صورت فرآیند اجرا ناقص می ماند و حافظه و پردازنده کامپیوتر را اشغال می کند.

خروجی داده به اکسل

برای خروجی (آپلود) داده ها در اکسل، یا باید یک کتاب کار موجود را باز کنید یا یک کتاب جدید ایجاد کنید و یک کاربرگ برای خروجی داده انتخاب کنید. باز کردن یک کتاب موجود در بالا توضیح داده شده است، اما برای ایجاد یک کتاب جدید، باید از کد زیر استفاده کنید:
تلاش
Excel = CreateObject ("Excel.Application");
یک استثنا
گزارش (DescriptionErrors () +
"اکسل روی این کامپیوتر نصب نیست!");
برگشت؛
پایان تلاش;
کتاب = اکسل. کتاب های کار اضافه کردن ()؛

از آنجایی که وقتی یک کتاب کار در اکسل ایجاد می‌کنید، برگه‌ها به‌طور خودکار ایجاد می‌شوند (ابزار-> گزینه‌ها-> عمومی-> برگه‌ها در یک کتاب کار جدید)، فقط باید برگه‌ای را برای کار با آن انتخاب کنید:
ورق = کتاب. برگه های کاری (شماره برگه)؛
یا در صورت لزوم یک برگه جدید به کتاب اضافه کنید:
ورق = کتاب. ورق. اضافه کردن ()؛
گام بعدیمقدار سلول را تنظیم می کند:
ورق سلول ها (LineNumber، ColumnNumber). ارزش = ارزش;
RowNumber، ColumnNumber - شماره ردیف و شماره ستونی که در تقاطع آنها سلول قرار دارد.
و در پایان باید کتاب ایجاد شده را ضبط کنید:
تلاش
کتاب . SaveAs (مسیر به فایل)؛
یک استثنا
گزارش (Errors Description ()
+ "فایل ذخیره نشد!");
برگشت؛
پایان تلاش;
FilePath مسیر کامل فایل کتاب کار اکسل (شامل نام) است.
مهم:فراموش نکنید که نام فایل ها نباید حاوی \ /: * باشد؟ ">< |.

روش های متداول برای خواندن / تنظیم مقادیر در اکسل.

Excel = CreateObject ("Excel.Application"); دسترسی به برنامه اکسل
برتری داشتن. قابل مشاهده = قابل مشاهده; 0 - Excel قابل مشاهده نیست، 1 - قابل مشاهده است.
کتاب = اکسل. کتاب های کار اضافه کردن ()؛ یک کتاب کار (فایل) اکسل جدید ایجاد کنید.
کتاب . SaveAs (نام فایل)؛ کتاب کار اکسل را ذخیره کنید.
ورق = کتاب. برگه های کاری اضافه کردن ()؛ افزودن یک برگه جدید به کتاب
کتاب = اکسل. کتاب های کار باز کردن (نام فایل)؛ باز کردن یک کتاب کار (فایل) موجود اکسل.
ورق = کتاب. برگه های کاری (شماره برگه)؛ تنظیم یک برگه به ​​عنوان کارگر با شماره Sheet Number.
ورق نام = نام برگه; به یک کاربرگ نام SheetName بدهید
ورق تنظیمات صفحه. بزرگنمایی = مقیاس. پارامتر صفحه "مقیاس" را تنظیم می کند (از 10 تا 400).
ورق تنظیمات صفحه. جهت گیری = جهت گیری; جهت: 1 - پرتره، 2 - منظره.
ورق تنظیمات صفحه. حاشیه چپ = اکسل. CentimetersToPoints (سانتی متر); تنظیم حاشیه سمت چپ (به سانتی متر).
ورق تنظیمات صفحه. TopMargin = Excel. CentimetersToPoints (سانتی متر); تنظیم حد بالایی (به سانتی متر).
ورق تنظیمات صفحه. RightMargin = Excel. CentimetersToPoints (سانتی متر); تنظیم حاشیه سمت راست (به سانتی متر).
ورق تنظیمات صفحه. BottomMargin = Excel. CentimetersToPoints (سانتی متر); تنظیم کران پایین (به سانتی متر).
ورق ستون ها. ColumnWidth = عرض; عرض ستون را تنظیم می کند.
ورق سلول ها (LineNumber، ColumnNumber). ارزش = ارزش; وارد کردن داده ها در یک سلول
ورق سلول ها (LineNumber، ColumnNumber). فونت نام = نام قلم. تنظیم فونت در سلول
ورق سلول ها (LineNumber، ColumnNumber). فونت اندازه = اندازه قلم. اندازه فونت را در سلول تنظیم می کند.
ورق سلول ها (LineNumber، ColumnNumber). فونت پررنگ = پررنگ; 1 پررنگ است، 0 طبیعی است.
ورق سلول ها (LineNumber، ColumnNumber). فونت کج = کج; 1 فونت ایتالیک است، 0 طبیعی است.
ورق سلول ها (LineNumber، ColumnNumber). فونت زیر خط = زیر خط بکش; 2 زیر خط کشیده شده است، 1 نه.
ورق سلول ها (LineNumber، ColumnNumber). NumberFormat = قالب; قالب داده سلولی را تنظیم می کند.
ورق سلول ها (LineNumber، ColumnNumber). مرز ها. Linestyle = نوع خط; تنظیم مرزهای سلولی 1 - جامد نازک.