قابلیت های تعاملی یک سند صفحه گسترده. فرم‌های مدیریت‌شده: خواندن طرح‌بندی‌ها با سلول‌های ادغام شده (به ویژه از اکسل) داده‌های خروجی را در یک سند صفحه گسترده 1C 8.3

یک سند صفحه‌گسترده برای ایجاد اسناد و گزارش‌های اولیه استفاده می‌شود که شامل سلول‌هایی است که در ردیف‌ها و ستون‌ها سازماندهی شده‌اند. هر سطر و ستون شماره منحصر به فرد خود را دارد. در این حالت، با انتخاب ناحیه مورد نظر با استفاده از بخش "جدول - نام ها" می توان به سلول ها، محدوده ها و اشیاء گرافیکی منفرد یک نام اختصاص داد. سپس نام را در قسمت ورودی وارد کنید و روی "Assign" کلیک کنید.

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

نحوه ایجاد یک سند صفحه گسترده در 1C

برای ایجاد یک سند جدید، روی بخش "File" - "New" کلیک کنید، سپس خط "Table document" را انتخاب کنید و با دکمه "OK" تأیید کنید. اگر باید یک سند از قبل ایجاد شده را باز کنید، سپس در بخش "File" - "Open"، نام فایل سند مورد نیاز را از لیست انتخاب کنید. در این صورت، می توانید با کلیک بر روی فیلد «نوع فایل»، هر قالبی از سند را برای باز شدن انتخاب کنید.

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


می توانید با خیال راحت تمام مراحل را در پایگاه داده خود تکرار کنید یا به راحتی یک سند صفحه گسترده در 1C ایجاد کنید: راه حل های آماده - نسخه ابری برنامه دارای مجوز 1C. این سرویس را به مدت 14 روز به صورت رایگان در 1C Online تست کنید.

نحوه تغییر ارتفاع ردیف و عرض ستون در 1C

می توانید اندازه ردیف ها و ستون های یک سند صفحه گسترده را به صورت دستی یا خودکار تغییر دهید.

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

می توانید عرض ستون را با قرار دادن نشانگر ماوس در حاشیه سمت راست هدر تغییر دهید و منتظر بمانید تا نشانگر ماوس به یک فلش افقی دوشاخه تبدیل شود. حاشیه هدر را با ماوس حرکت دهید تا عرض مورد نیاز را تنظیم کنید.

حداقل عرض ستون مورد نیاز را می توان با دو کلیک روی حاشیه هدر تنظیم کرد. ویرایشگر به طور مستقل عرضی را که کل متن در آن قرار می گیرد تعیین می کند.

راه دیگری برای تغییر دستی آن وجود دارد. کلید "Ctrl" را فشار دهید و ماوس را روی مرز سلول مورد نظر حرکت دهید. پس از تغییر شکل مکان نما، اندازه دلخواه را تنظیم کنید.

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

هنگام ایجاد یک سند صفحه گسترده جدید، عرض همه ستون ها به طور پیش فرض تنظیم می شود. اما می توان آن را نیز تغییر داد. برای انجام این کار، در "جدول" "Cell" - "Column Width" را انتخاب کنید. در پنجره ای که ظاهر می شود، اندازه ستون را تنظیم کرده و روی "OK" کلیک کنید. اگر "Auto" را انتخاب کنید، اندازه آن روی کل سند تنظیم می شود.

اگر کادر "ارتفاع خودکار خط" را علامت بزنید، ارتفاع خط به طور خودکار تغییر می کند. اگر چک باکس علامت زده نشود، یک اندازه خط ثابت در قسمت "ارتفاع ردیف" تنظیم می شود.

به منظور تنظیم عرض ستون های مختلف برای خطوط مختلف، باید یک یا چند خط از سند را انتخاب کنید.

ماوس را به جداکننده ستون ببرید و دکمه سمت چپ ماوس را فشار دهید. بدون رها کردن دکمه، ستون را در جهت دلخواه (مثلاً سمت چپ) بکشید و دکمه را رها کنید. در پنجره ای که ظاهر می شود، روی "OK" کلیک کنید.

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


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


برخی از سلول ها فقط حاوی متن هستند، برخی دیگر حاوی نام پارامترهایی هستند که باید در ماژول برنامه از طریق "Parameters" اشیاء "Spreadsheet Document" مشخص شوند.

گروه بندی ردیف ها در یک سند صفحه گسترده

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

همچنین می توانید سطوح گروه بندی را نمایش دهید. وقتی روی اعداد در هدر کلیک می کنید، همه گروه ها به یکباره گسترش می یابند. هنگام اعمال گروه بندی، تورفتگی سطح به طور خودکار تشکیل می شود:


رمزگشایی سند صفحه گسترده 1C

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

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

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

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

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

نحوه ذخیره یک سند صفحه گسترده در 1C

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

به عنوان یک قاعده، سند در قالب استفاده شده توسط سیستم 1C: Enterprise (*.mxl) ذخیره می شود. با این حال، سند صفحه‌گسترده را می‌توان به سایر قالب‌های ذخیره‌سازی داده صادر کرد، از جمله یک قالب صفحه‌گسترده ODF (*.ods)، یک سند Word (*.docx)، یک سند HTML (*.htm) یا یک فایل متنی UNICODE (*. txt). علاوه بر این، امکان ذخیره یک سند صفحه گسترده در 1C در اکسل یا pdf وجود دارد.

چاپ یک سند صفحه گسترده در 1C

برای مشاهده سند قبل از چاپ، بخش "فایل - پیش نمایش" را انتخاب کنید. برای خروج از پیش نمایش، روی دکمه «بستن» کلیک کنید.

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

ما سند را با کلیک بر روی بخش "File" - "Print" به چاپگر خروجی می دهیم. پنجره ای با تنظیمات در صفحه ظاهر می شود که در آن باید پارامترهای چاپ را تنظیم کنید - چاپگر، محدوده صفحه و تعداد کپی ها را انتخاب کنید - و روی "OK" کلیک کنید.

آیا هیچ سوالی دارید؟ از آنها در نظرات بپرسید و ما این کار را خواهیم کرد
ما قطعا به آنها پاسخ خواهیم داد.

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

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

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

به جداول 1C "قسمت های جدولی" نیز می گویند. فهرست راهنماها، اسناد و سایر موارد آنها را دارند.

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

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

//گزینه 1 - دسترسی متوالی به نتایج پرس و جو

// جدول را دریافت کنید
Select = Query.Run().Select();
// تمام خطوط نتیجه پرس و جو را به ترتیب مرور می کنیم
در حالی که حلقه () Select.Next
گزارش (Selection.Name);
چرخه پایان

//گزینه 2 - آپلود در جدول مقادیر
Request = New Request("SELECT Name FROM Directory.Nomenclature");
// جدول را دریافت کنید
جدول = Query.Run().Unload().
//بیشتر ما همچنین می توانیم در تمام خطوط تکرار کنیم
برای هر ردیف از چرخه جدول
گزارش (String.Name);
چرخه پایان
//یا به صورت دلخواه به رشته ها دسترسی پیدا کنید
ردیف = Table.Find("Shovel", "Name");

یک ویژگی مهم این است که در جدولی که از نتیجه پرس و جو به دست می آید، تمام ستون ها به طور دقیق تایپ می شوند. به این معنی که با درخواست فیلد Name از دایرکتوری Nomenclature، ستونی از نوع String با طول مجاز بیش از N کاراکتر دریافت خواهید کرد.

جدول روی فرم (کلینت ضخیم)

کاربر وقتی جدول روی فرم قرار می گیرد با آن کار می کند.

در درس روی و در درس روی اصول اولیه کار با فرم ها بحث کردیم

بنابراین، بیایید جدول را روی فرم قرار دهیم. برای این کار می توانید جدول را از پنل Controls بکشید. به طور مشابه، می توانید Form/Insert Control را از منو انتخاب کنید.

داده ها را می توان در پیکربندی ذخیره کرد - سپس باید قسمت جدولی موجود (که قبلاً اضافه شده است) شی پیکربندی را که فرم آن را ویرایش می کنید انتخاب کنید.

روی دکمه "..." در ویژگی Data کلیک کنید. برای دیدن لیست قطعات جدولی، باید شاخه Object را گسترش دهید.

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

در همان ویژگی Data می توانید یک نام دلخواه وارد کنید و نوع Value Table را انتخاب کنید.

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

با کلیک راست روی جدول می توانید یک ستون اضافه کنید. در ویژگی های یک ستون، می توانید نام آن را (برای مرجع در کد 1C)، عنوان ستون در فرم، ارتباط با ویژگی بخش جدولی را مشخص کنید (اگر یک جدول دلخواه انتخاب نشده باشد، اما یک بخش جدولی).

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

برای مدیریت جدول باید یک پنل فرمان روی فرم نمایش داده شود. مورد منو Form/Insert Control/Command Bar را انتخاب کنید.

در ویژگی های نوار فرمان، کادر تکمیل خودکار را انتخاب کنید تا دکمه های روی پانل به طور خودکار ظاهر شوند.

جدول روی فرم (مشتری نازک/مدیریت شده)

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

اگر نیاز به قرار دادن جدول مقادیر دارید، یک ویژگی فرم جدید اضافه کنید و در ویژگی های آن نوع – جدول مقادیر را مشخص کنید.

برای افزودن ستون‌ها، از منوی راست کلیک بر روی این ویژگی فرم استفاده کنید، ستون افزودن ویژگی را انتخاب کنید.

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

برای اینکه یک جدول دارای نوار فرمان باشد، در قسمت خصوصیات جدول، مقادیر موجود در قسمت Usage – Command bar position را انتخاب کنید.

آپلود جدول در اکسل

هر جدول 1C موجود در فرم را می توان چاپ یا در اکسل آپلود کرد.

برای این کار روی یک فضای خالی در جدول کلیک راست کرده و لیست را انتخاب کنید.

در یک کلاینت مدیریت شده (نازک)، اقدامات مشابه را می توان با استفاده از آیتم منو All actions/Display list انجام داد.

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

تقریباً تمام پارامترهای موجود در گفتگوهای تنظیمات چاپ (تنظیمات چاپگر، ویژگی های صفحه) را می توان مستقیماً هنگام ایجاد یک سند صفحه گسترده مشخص کرد.

بیایید به ویژگی‌ها و روش‌های یک سند صفحه‌گسترده مربوط به تنظیمات چاپ نگاه کنیم (در مثال‌های داده شده، "TabDoc" یک شی از نوع "Spreadsheet Document" است).

ویژگی "PrinterName"به شما امکان می دهد چاپگری غیر از پیش فرض را برای چاپ مشخص کنید. نام باید با نام چاپگر پیکربندی شده در سیستم مطابقت داشته باشد:

TabDoc. نام چاپگر = "HP LaserJet 3050 Series PCL 6";

هنگام چاپ دسته ای از اسناد، می توانید با تنظیم گزینه collation در زمان خود صرفه جویی کنید:

TabDoc. ParseByCopies = true;

تعداد کپی ها را می توان به صورت زیر مشخص کرد:

TabDoc. تعداد موارد= 5 ;

البته می توانید فیلدها را تنظیم کنید:

TabDoc. FieldLeft = 20 ; //حاشیه چپ 20 میلی متر است، سایر حاشیه ها 10 میلی متر هستند (پیش فرض)

چند ویژگی دیگر صفحه:

TabDoc. OrientationPage= OrientationPage. چشم انداز؛
TabDoc. InstancesOnPage= 2 ; //2 صفحه در برگه وجود خواهد داشت
TabDoc. مقیاس خودکار = درست; //شبیه به تنظیمات مقیاس "صفحه عرض".

در صورت لزوم، می توانید یک مقدار مقیاس بندی خاص را بر حسب درصد (خاصیت "مقیاس چاپ").

ویژگی "اندازه صفحه"به شما امکان می دهد قالب های استاندارد صفحه را تنظیم کنید - " A 3، A4، A 5 اینچ (لیست کاملی از گزینه ها در راهنمای 1C موجود است).

TabDoc. PageSize = "A3" ; // حرف A باید انگلیسی باشد

برای اندازه کاغذ غیر استاندارد (سفارشی)، می توانید ارتفاع و عرض صفحه (بر حسب میلی متر) را مشخص کنید:

TabDoc. PageSize = "سفارشی" ; //اندازه غیر استاندارد
TabDoc. ارتفاع صفحه = 350 ;
TabDoc. عرض صفحه = 350 ;

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

TabDoc. هدر صفحه. خروجی = واقعی //هدر چاپ خواهد شد
TabDoc. HeaderSizeTop= 7 ; //اندازه پاورقی 7 میلی متر (پیش فرض 10 میلی متر)
TabDoc. هدر صفحه. موقعیت عمودی= موقعیت عمودی. بالا ؛
TabDoc. هدر صفحه. صفحه نخست= 2 ; // پاورقی از صفحه دوم نمایش داده می شود
فونت فوتر= فونت جدید ("Courier New", 8, True);
TabDoc. هدر صفحه. فونت = فونت فوتر; // فونت مورب
TabDoc. هدر صفحه. TextInCenter = "سرصفحه صفحه";
TabDoc. هدر صفحه. TextRight = "Page[&PageNumber] of [&PagesTotal]"; //صفحه بندی
TabDoc. هدر صفحه. TextLeft = "[&Date]" ; //تاریخ فعلی

سند تولید شده با استفاده از روش برای چاپ ارسال می شود "Type()".دو گزینه تماس ممکن وجود دارد.

1) مستقیماً به چاپگر:

TabDoc. Print(.NotUse);
TabDoc. چاپ (درست)؛

2) قبل از چاپ، یک گفتگوی چاپ نمایش داده می شود:

TabDoc. چاپ ( DialogUsageModePrint. استفاده کنید )؛
TabDoc. چاپ (نادرست)؛

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

TabDoc. تعدادی از صفحات();

استفاده از روش ها "CheckOutput()"و "CheckAttach()"در تنظیمات فعلی چاپگر می‌توانید تعیین کنید که آیا یک سند صفحه‌گسترده یا آرایه‌ای از مناطق سند صفحه‌گسترده از نظر ارتفاع و عرض در صفحه قرار می‌گیرد.

باید در نظر داشت که عملکرد سه روش آخر به چاپگر نصب شده بستگی دارد. اگر متد نتواند آن را پیدا کند، یک استثنا پرتاب می شود.

روش‌ها به شما امکان می‌دهند تا به اجبار شکستگی‌های صفحه را درج کنید"OutputVerticalPageSeparator()"و "OutputHorizontalPageSeparator()".

بنابراین، می توانید چاپ صفحه به صفحه را کنترل کنید و پر شدن صفحه را کنترل کنید:

اگر TabDoc نیست. خروجی ( آرایه از Output Areas) سپس
TabDoc. OutputHorizontalPage Separator();
endIf;

یکی از ویژگی های مهم پلت فرم 1C:Enterprise 8.2 جداسازی دقیق ویژگی ها و روش ها بر اساس زمینه اجرا است. در حالی که همه ویژگی های فوق در هر زمینه ای در دسترس هستند، روش های ذکر شده در تین کلاینت در دسترس نیستند. استثنا روش "Print()" است که در دسترس بودن آن به دلایل واضح به بخش مشتری محدود است. این به این معنی است که تشکیل یک سند صفحه گسترده باید روی سرور اتفاق بیفتد و باید برای چاپ در رویه مشتری ارسال شود.

به همه خوش بگذره

ماهیت کاری که ما تجزیه و تحلیل خواهیم کرد این است که چگونه داده ها را از سلول های ادغام شده یک سند صفحه گسترده با استفاده از شی "TabularDocument" بخوانیم. همچنین نحوه عبور از داده های انتخاب شده را لمس خواهیم کرد. پس بیایید شروع کنیم.

خواندن یک سند جدول

برای خواندن یک سند صفحه گسترده در 1C، می توانید از شیء "TabularDocument" استفاده کنید. از نسخه 8.3.7 (در صورت استفاده از حافظه)، این شی می تواند نه تنها فایل های MXL، بلکه XLS/XLSX/ODT و برخی گزینه های جدول دیگر را نیز بخواند (و همچنین، به هر حال، نوشتن).

اما مثل همیشه، یک مشکل کوچک وجود دارد - شی فقط در سرور ایجاد می شود. اما 1C سعی کرد این مشکل را با ایجاد استریم هایی در حافظه برطرف کند و به برنامه نویس این فرصت را بدهد که به جای مسیر فایل در سازنده شی، از آنها استفاده کند، اما باید نوع فایل خوانده شده را مشخص کرد. درست است، در پلتفرم Windows 7 pro x64 با 1C 8.3.10.2466، من نتوانستم اکسل را به این شکل بخوانم، اما MXL آن را به خوبی می خواند، بنابراین من هنوز باید یک فایل موقت برای فایل های اکسل ایجاد کنم.

بنابراین، کد خواندن فایل:

رویه &OnServer LoadFileOnServer(DD، Extension) اگر پسوند = "xml" سپس BH = New DataRead(DD); Tab.Read(BH، TabularDocumentValueReadingMethod.Value، TabularDocumentFileType.MXL); در غیر این صورت FileName = GetTemporaryFileName(Extension); DD.Write(FileName); Tab.Read (نام فایل)؛ حذف فایل ها (نام فایل)؛ endIf; پایان رویه &روی رویه کلاینت LoadFile(Command) Dlg = New FileSelectionDialog(FileSelectionDialogMode.Open); Long.Filter = "MXL-files (*.mxl)|*.mxl|XLS-files (*.xls)|*.xls|XLSX-files (*.xlsx)|*.xlsx|ODS-files (*. ods)|*.ods"; Duration.Show(New AlertDescription("WhenSelectingFile"، ThisForm)); EndProcedure &OnClient Procedure WhenSelectingFile(Res, Add) Export If Res = Undefined سپس EndIf را برگردانید. fl = فایل جدید (Res); LoadFileOnServer(New BinaryData(Res)، HPreg(fl.Extension)); پایان رویه

بیایید یک فرم با یک سند صفحه گسترده و یک دکمه "آپلود فایل" ایجاد کنیم و یک فرم عکس دریافت کنیم که بتواند فایل های MXL، XLS، XLSX و ODS را در یک سند صفحه گسترده بخواند.

سلول های انتخاب شده

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

&در رویه مشتری ReportSelected(Command) برای هر ناحیه FROM Elements.Tab.GetSelectedAreas() حلقه برای X = Area. Left By Area.Right Loop برای Y = Area.Top By Area.Bottom Cycle Report(Tab.Area(Y, X) .Text); چرخه پایان چرخه پایان چرخه پایان پایان رویه

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

آن ها در اینجا ما A، B و C را چاپ می کنیم. اگر خط دوم را انتخاب کنیم، یک تصویر متفاوت دریافت می کنیم:

همانطور که می بینید وجود یک اتحادیه به هیچ وجه ما را از دریافت اطلاعات از ردیفی که با ردیف ادغام کرده ایم باز نمی دارد، علاوه بر این، هر دوی این ردیف ها حاوی مقدار "A" خواهند بود. اگر خط سوم را انتخاب کنیم، خروجی "A A A" را دریافت می کنیم (خب، شما قبلاً متوجه شده اید که چرا، درست است؟)

سلول های ترکیبی

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

برای هر ناحیه FROM Elements.Tab.GetSelectedAreas() Loop For X = Area.Left By Area.Right Loop for Y = Area.Top By Area.Bottom Loop Report(Tab.Area(Y,X).Text); X = X + Tab.Area(Y,X).Right - Tab.Area(Y,X).Left; چرخه پایان چرخه پایان چرخه پایان

ما به سادگی "راست" را به "X" اضافه می کنیم و "چپ" را کم می کنیم.

و برای محور "Y"، من به شما پیشنهاد می کنم آن را خودتان (به عنوان تکلیف) کشف کنید.

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

تقریباً تمام پارامترهای موجود در گفتگوهای تنظیمات چاپ (تنظیمات چاپگر، ویژگی های صفحه) را می توان مستقیماً هنگام ایجاد یک سند صفحه گسترده مشخص کرد.

بیایید به ویژگی‌ها و روش‌های یک سند صفحه‌گسترده مربوط به تنظیمات چاپ نگاه کنیم (در مثال‌های داده شده، "TabDoc" یک شی از نوع "Spreadsheet Document" است).

ویژگی "PrinterName"به شما امکان می دهد چاپگری غیر از پیش فرض را برای چاپ مشخص کنید. نام باید با نام چاپگر پیکربندی شده در سیستم مطابقت داشته باشد:

TabDoc. نام چاپگر = "HP LaserJet 3050 Series PCL 6";

هنگام چاپ دسته ای از اسناد، می توانید با تنظیم گزینه collation در زمان خود صرفه جویی کنید:

TabDoc. ParseByCopies = true;

تعداد کپی ها را می توان به صورت زیر مشخص کرد:

TabDoc. تعداد موارد= 5 ;

البته می توانید فیلدها را تنظیم کنید:

TabDoc. FieldLeft = 20 ; //حاشیه چپ 20 میلی متر است، سایر حاشیه ها 10 میلی متر هستند (پیش فرض)

چند ویژگی دیگر صفحه:

TabDoc. OrientationPage= OrientationPage. چشم انداز؛
TabDoc. InstancesOnPage= 2 ; //2 صفحه در برگه وجود خواهد داشت
TabDoc. مقیاس خودکار = درست; //شبیه به تنظیمات مقیاس "صفحه عرض".

در صورت لزوم، می توانید یک مقدار مقیاس بندی خاص را بر حسب درصد (خاصیت "مقیاس چاپ").

ویژگی "اندازه صفحه"به شما امکان می دهد قالب های استاندارد صفحه را تنظیم کنید - " A 3، A4، A 5 اینچ (لیست کاملی از گزینه ها در راهنمای 1C موجود است).

TabDoc. PageSize = "A3" ; // حرف A باید انگلیسی باشد

برای اندازه کاغذ غیر استاندارد (سفارشی)، می توانید ارتفاع و عرض صفحه (بر حسب میلی متر) را مشخص کنید:

TabDoc. PageSize = "سفارشی" ; //اندازه غیر استاندارد
TabDoc. ارتفاع صفحه = 350 ;
TabDoc. عرض صفحه = 350 ;

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

TabDoc. هدر صفحه. خروجی = واقعی //هدر چاپ خواهد شد
TabDoc. HeaderSizeTop= 7 ; //اندازه پاورقی 7 میلی متر (پیش فرض 10 میلی متر)
TabDoc. هدر صفحه. موقعیت عمودی= موقعیت عمودی. بالا ؛
TabDoc. هدر صفحه. صفحه نخست= 2 ; // پاورقی از صفحه دوم نمایش داده می شود
فونت فوتر= فونت جدید ("Courier New", 8, True);
TabDoc. هدر صفحه. فونت = فونت فوتر; // فونت مورب
TabDoc. هدر صفحه. TextInCenter = "سرصفحه صفحه";
TabDoc. هدر صفحه. TextRight = "Page[&PageNumber] of [&PagesTotal]"; //صفحه بندی
TabDoc. هدر صفحه. TextLeft = "[&Date]" ; //تاریخ فعلی

سند تولید شده با استفاده از روش برای چاپ ارسال می شود "Type()".دو گزینه تماس ممکن وجود دارد.

1) مستقیماً به چاپگر:

TabDoc. Print(.NotUse);
TabDoc. چاپ (درست)؛

2) قبل از چاپ، یک گفتگوی چاپ نمایش داده می شود:

TabDoc. چاپ ( DialogUsageModePrint. استفاده کنید )؛
TabDoc. چاپ (نادرست)؛

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

TabDoc. تعدادی از صفحات();

استفاده از روش ها "CheckOutput()"و "CheckAttach()"در تنظیمات فعلی چاپگر می‌توانید تعیین کنید که آیا یک سند صفحه‌گسترده یا آرایه‌ای از مناطق سند صفحه‌گسترده از نظر ارتفاع و عرض در صفحه قرار می‌گیرد.

باید در نظر داشت که عملکرد سه روش آخر به چاپگر نصب شده بستگی دارد. اگر متد نتواند آن را پیدا کند، یک استثنا پرتاب می شود.

روش‌ها به شما امکان می‌دهند تا به اجبار شکستگی‌های صفحه را درج کنید"OutputVerticalPageSeparator()"و "OutputHorizontalPageSeparator()".

بنابراین، می توانید چاپ صفحه به صفحه را کنترل کنید و پر شدن صفحه را کنترل کنید:

اگر TabDoc نیست. خروجی ( آرایه از Output Areas) سپس
TabDoc. OutputHorizontalPage Separator();
endIf;

یکی از ویژگی های مهم پلت فرم 1C:Enterprise 8.2 جداسازی دقیق ویژگی ها و روش ها بر اساس زمینه اجرا است. در حالی که همه ویژگی های فوق در هر زمینه ای در دسترس هستند، روش های ذکر شده در تین کلاینت در دسترس نیستند. استثنا روش "Print()" است که در دسترس بودن آن به دلایل واضح به بخش مشتری محدود است. این به این معنی است که تشکیل یک سند صفحه گسترده باید روی سرور اتفاق بیفتد و باید برای چاپ در رویه مشتری ارسال شود.