نحوه ایجاد فرم های چاپی خارجی 1s 8.3.

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

  • ایجاد فایل فرم چاپ خارجی؛
  • ایجاد یک طرح بندی فرم چاپی؛
  • نوشتن کد برنامه برای نمایش داده های فرم چاپ شده روی صفحه؛
  • ایجاد پارامترهایی برای ثبت خودکار فرم چاپی؛
  • اتصال فرم چاپ خارجی به پایه 1C Enterprises.

ایجاد فرم چاپی 1C. فرمول بندی مسئله

ما در پیکربندی مورد نیاز هستیم حسابداری 2.0یک فرم چاپی برای یک سند ایجاد کنید دریافت کالا و خدمات. در هدر فرم چاپی داده های زیر را نمایش دهید:

  • سازمان؛
  • طرف مقابل؛
  • قرارداد طرف مقابل؛
  • تاریخ رسید.

داده ها را در قسمت جدول به صورت جدول نمایش دهید کالاهاسند جدول باید شامل ستون های زیر باشد:

  • نامگذاری؛
  • تعداد؛
  • قیمت؛
  • مجموع
  • و همچنین قیمت کالا در تاریخ جاری (بر اساس نوع قیمت از سند).

فایل پردازش خارجی

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

در پنجره باز شده مورد مورد نظر را انتخاب کنید پردازش خارجی.

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

بیایید ویژگی های پردازش خارجی را اضافه کنیم LinkToObject و انتخاب کنیدبرای او تایپ کنید DocumentLink دریافت کالا و خدمات. برای انجام این کار، در درخت فراداده پردازش خارجی 1C، مورد را انتخاب کنید ملزوماتو دکمه را فشار دهید اضافه کردن(دکمه با سبز سبز). پنجره ویژگی های ویژگی در سمت راست صفحه، در فیلد باز می شود نامبیا بنویسیم - ReferenceToObject. که دررشته تایپ کنیددکمه را با سه نقطه فشار دهید.

اجازه دهید شاخه را در درخت نوع گسترش دهیم DocumentLinkو عنصر Receipt of Goods and Services را در آنجا پیدا کنید، کادر کنار آن را علامت بزنید و کلیک کنید خوب.

اجازه دهید فایل پردازش خارجی را در هارد دیسک ذخیره کنیم تا این کار را انجام دهیم فایل -> ذخیره، پیکتوگرام صرفه جویی(دیسک فلاپی آبی)، یا میانبر صفحه کلید Ctrl+S. اجازه دهید نام فایل ذخیره شده را "PrintForm" بگذاریم.

ایجاد طرح بندی فرم چاپی

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

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

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

اضافه کردن هدر Layout

اول از همه، بیایید یک منطقه ایجاد کنیم یک کلاه، داده های هدر فرم چاپ را نمایش می دهد. برای این منطقه به هفت خط چیدمان نیاز داریم. بیایید آنها را انتخاب کنیم و همانطور که در بالا نوشتم، کلید ترکیبی را فشار دهیم Ctrl + Shift + N، در میدان نام"کلاه" را بنویسید و دکمه را فشار دهید خوب.

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

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

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

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

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

اضافه کردن هدر جدول طرح بندی

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

اضافه کردن یک جدول به یک چیدمان

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

افزودن پاورقی به طرح بندی

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

نتیجه نهایی باید طرحی به شکل زیر باشد:

ایجاد فرم چاپی 1C. برنامه نويسي

بیایید برنامه نویسی را شروع کنیم - این مهمترین مرحله در ایجاد یک فرم چاپی است. اول از همه، اجازه دهید به ماژول شیء فرم چاپ خارجی برویم، اینجا جایی است که برنامه ریزی می کنیم. برای انجام این کار، در پنجره اصلی پردازش خارجی، کلیک کنید اقدامات -> ماژول شی را باز کنید.

شما باید یک تابع صادرات در ماژول شیء فرم چاپ خارجی ایجاد کنید مهر().

تابع Print() صادرات EndFunction

لطفاً توجه داشته باشید که این ویژگی برای فرم‌های چاپ خارجی در تنظیمات با استفاده از برنامه معمولی مورد نیاز است. تمام کدهای برنامه بعدی لازم برای نمایش فرم چاپ شده در داخل این تابع نوشته می شود.

مقداردهی اولیه متغیرهای اساسی

بیایید یک متغیر ایجاد کنیم TabDoc، که حاوی یک سند صفحه گسترده خواهد بود - این دقیقاً فرم چاپی است که قسمت های پر شده طرح را در آن نمایش می دهیم.

TabDoc = TabularDocument جدید;

به یک متغیر چیدمانما طرح بندی فرم چاپی را که ایجاد کرده ایم دریافت می کنیم. برای این کار از تابع داخلی استفاده می کنیم GetLayout(<ИмяМакета>).

Layout = GetLayout("Layout");

ما تمام قسمت های طرح را به متغیر تبدیل می کنیم. برای این کار از روش layout استفاده می کنیم GetArea(<ИмяОбласти>) .

HeaderArea = Layout.GetArea("Header"); AreaData = Layout.GetArea("داده"); AreaFooter = Layout.GetArea("Footer");

خروجی هدر یک فرم چاپ شده در یک سند صفحه گسترده

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

Header Area.Parameters.TitleText = "پرینت فرم"+LinkToObject.Number;

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

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.Date; Header Area.Parameters.Counterparty Agreement = LinkToObject.Counterparty Agreement;

تمام پارامترهای هدر پر شده است، ما آن را در سند صفحه گسترده ای که ایجاد کردیم نمایش خواهیم داد، برای این کار از روش استفاده می کنیم خروجی(<Область>) .

TabDoc.Output(HeaderArea);

نوشتن درخواست برای نقص چاپی

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

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

بیایید یک متغیر ایجاد کنیم که شامل درخواست باشد.

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

ما متن پرس و جو را با استفاده از سازنده پرس و جو می نویسیم. برای شروع، بیایید بنویسیم:

Request.Text = "";

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

برای درخواست ما به دو جدول نیاز داریم: قسمت جدول کالاهاسند دریافت کالا و خدماتو یک عکس فوری از آخرین اطلاعات در تاریخ فعلی ثبت نام قیمت اقلام.

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

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

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

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

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

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

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

PriceType = &PriceType

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

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

همچنین لازم به ذکر است که در انتخاب query باید تمام سطرها را از قسمت تب دریافت کنیم کالاهاو قیمت ها فقط در صورتی که در تاریخ جاری برای نوع قیمت سند موجود باشند. بنابراین، داده های جدولی کالاهااجباری هستند، اما اطلاعات تفکیک قیمت در دسترس نیست. بنابراین در روابط بین این جداول باید از LEFT JOIN استفاده کرد و جدول سمت چپ (یا مورد نیاز) خواهد بود. رسید کالا خدمات خدمات کالا، و راست (یا اختیاری) PriceNomenclatureSliceLast. برای اینکه اتصال سمت چپ جداول پرس و جو همانطور که در بالا توضیح دادم کار کند، باید کادر را علامت بزنید همهبعد از میدان میز 1.


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

کار در Query Designer اکنون کامل شده است، روی OK کلیک کنید. پس از بسته شدن پنجره طراح، خواهید دید که خط متن درخواست پر شده است و به شکل زیر است:

Request.Text = "انتخاب | دریافت کالاخدماتمحصولات.نام، | دریافت کالاخدماتمحصولات.مقدار، | دریافت کالاخدماتمحصولات.قیمت، | دریافت کالاخدماتمحصولات.تعداد، | دریافت از کالاهای خدمات. کالاها به عنوان رسید محصولات خدمات محصولات |

در حال اجرای درخواست

بیایید پارامترهای لازم را به درخواست ارسال کنیم برای این کار از روش درخواست استفاده می کنیم SetParameter(<ИмяПараметра>,<Значение>). برای دریافت تاریخ جاری، از تابع داخلی استفاده کنید تاریخ فعلی ()، تاریخ و زمان کامپیوتر را برمی گرداند.

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

Select = Query.Run().Select();

پر کردن جدول فرم چاپ شده

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

در حالی که Select.Next() حلقه EndLoop;

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

مجموع مجموع = 0; مقدار کل = 0;

در داخل حلقه، منطقه را پر خواهیم کرد داده هاداده ها از عنصر انتخاب فعلی به متغیرها TotalAmountو مقدار کلمقادیر مجموع و کمیت را اضافه کنید، و در نهایت، با استفاده از روشی که قبلاً برای ما آشناست، منطقه را در یک سند صفحه گسترده نمایش دهید. خروجی (). از آنجایی که نام فیلدهای درخواست ما کاملاً با نام پارامترهای ناحیه مطابقت دارد داده ها، سپس برای پر کردن از رویه داخلی FillPropertyValues(<Приемник>, <Источник>) که مقادیر ویژگی را کپی می کند<Источника>به خواص<Приемника>.

در حالی که Selection.Next() حلقه FillPropertyValues(AreaData.Parameters,Selection); TotalSum = مجموع مجموع + Sample.Sum; مقدار کل = مقدار کل + نمونه. TabDoc.Output(AreaData); چرخه پایان

خروجی پاورقی یک فرم چاپ شده در یک سند صفحه گسترده

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

AreaFooter.Parameters.TotalQuantity = TotalQuantity; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

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

بازگشت TabDoc;

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

ایجاد فرم چاپی 1C. گزینه های ثبت نام خودکار

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

به شرح زیر انجام می شود:

  • در پردازش خارجی ما یک طرح جدید ایجاد می کنیم. ما آن را "Settings_Auto-Registration" می نامیم (مهم است که اشتباه نکنید!).
  • در خانه اول طرح بندی می نویسیم مستندات.(یا دایرکتوری ها) و نام سندی که باید فرم چاپ شده را به آن وصل کنید.

اتصال فرم چاپ خارجی به پایه

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

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

روز خوب!

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

اتصال فرم های چاپ خارجی اضافی

ما 1C: Enterprise را راه اندازی می کنیم. دایرکتوری "فرم های چاپی خارجی اضافی" را از طریق منوی "ابزار" - "گزارش های اضافی و پردازش" باز کنید.

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

ما 1C: Enterprise را راه اندازی می کنیم، دایرکتوری "Counterparties" را باز می کنیم، طرف مقابل را که قرارداد ما برای آن چاپ می شود انتخاب می کنیم و روی دکمه "Files" کلیک می کنیم، به فهرست "ذخیره اطلاعات اضافی" می رویم، الگوی قرارداد را در آن بارگیری می کنیم. و البته همانطور که در شکل زیر نشان داده شده است آن را "Agreement" بنامید، در غیر این صورت برنامه نمی تواند طرح بندی فرم چاپ را پیدا کند.

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

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

طرح بندی قرارداد کار با فرمت مایکروسافت ورد

حداقل سه راه برای ایجاد یک الگو وجود دارد:

1. عبارات کلیدی در یک سند Word ایجاد می شوند، به عنوان مثال، "[شماره توافق]"، سپس، در ماژول پردازش، مقادیر جستجو و جایگزین می شوند.

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

3. فیلدهای سرویس به سند Word اضافه می شوند، به عنوان مثال، "DocVariable" یا "Author". با استفاده از DocVariable می توانید به یک متغیر با نام دسترسی داشته باشید، به عنوان مثال، "DocumentWord.Variables.Add(VariableName,VariableValue);"، اما در قالب قابل مشاهده نیست. فیلد «نویسنده» در الگو نمایش داده می‌شود، اما باید به صورت حلقه‌ای بر اساس نمایه به آن دسترسی داشته باشید: «DocumentWord.Fields.item(Index).Result.Text = Value;».

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

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

ایجاد فرم چاپ خارجی "توافقنامه"

ما 1C: Enterprise را در حالت "Configurator" راه اندازی می کنیم و از طریق منوی "File" - "New" پردازش خارجی ایجاد می کنیم. ویژگی "Object Link" و طرح "Auto-Registration_Parameters" را با نوع "Spreadsheet Document" اضافه کنید. نوع ویژگی "پیوند به یک شی" بستگی به این دارد که فرم چاپ شده برای کدام اشیاء استفاده شود، در مورد ما، فرم چاپ شده برای سند "فروش کالا و خدمات" استفاده می شود، بنابراین نوع "DocumentLink" را نشان می دهیم. فروش کالا و خدمات».

توسعه روش چاپ

این مقاله نحوه اتصال یک فرم چاپی خارجی به پایگاه داده 1C را با استفاده از مثال پیکربندی "Trade Management 11.2" شرح می دهد.

پیکربندی «مدیریت تجارت 11.2» پیکربندی روی فرم‌های «مدیریت شده» است!

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

  • "حسابداری 3.0"
  • "مدیریت تجارت 11.2"
  • حقوق و دستمزد و مدیریت پرسنل 3.1
  • "اتوماسیون جامع 2.0"
  • "مدیریت شرکت های کوچک 1.6"
  • "خرده فروشی 2.2"
  • و سایر تنظیمات مشابه

برای اتصال فرم چاپ خارجی در 1C باید 11 مرحله را طی کنیم.

1 - منوی «داده‌های اصلی و مدیریت» (در پیکربندی‌های دیگر، مانند حسابداری سازمانی 3.0، ممکن است به سادگی «اداره» نامیده شود). 2 — «فرم‌های چاپی، گزارش‌ها و پردازش» را انتخاب کنید (شکل زیر را ببینید ↓)

3 - منوی فرعی «گزارش‌ها و پردازش» را گسترش دهید (در پیکربندی‌های دیگر، مانند Enterprise Accounting 3.0، ممکن است چنین زیر منویی وجود نداشته باشد، بنابراین بلافاصله به مرحله بعدی می‌رویم). 4 - کادر «استفاده از گزارش‌های اضافی و پردازش» را علامت بزنید. 5 - به بخش: گزارش‌های اضافی و پردازش بروید. (شکل زیر را ببینید ↓) ()

6 - روی دکمه "ایجاد" کلیک کنید. (شکل زیر را ببینید ↓)

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

8 - دایرکتوری که پردازش در آن قرار دارد را انتخاب کنید. 9 - آن را انتخاب کنید (پردازش مورد نیاز ما). 10 - روی دکمه "Open" کلیک کنید. یا به جای مراحل 9 و 10، می توانید به سادگی روی فرم چاپ شده خارجی مورد نیاز ما در پنجره انتخاب دوبار کلیک کنید. (شکل زیر ↓ را ببینید)

اگر ما نیاز به اضافه کردن مکان برای پردازش اضافه شده داریم (به عنوان مثال، این یک فرم قرارداد جهانی از وب سایت ما است و ما به دستور چاپ این فرم نیاز داریم تا در شیئی که در ابتدا در آن نمایش داده نشده است نمایش داده شود) - 11 - روی خط قرار دادن ("Place in:"، شاید "Placement:") کلیک کنید و فهرست ها و اسناد لازم را انتخاب کنید. 12 — مراحل اتصال یک فرم چاپ خارجی را با کلیک بر روی دکمه «ضبط و بستن» تکمیل می کنیم. (شکل زیر را ببینید ↓)

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

قبل از ثبت و بسته شدن، متوجه شدیم که این فرم چاپی خارجی در سند فروش کالا و خدمات قرار دارد، به این معنی که می‌توانیم گزینه‌های چاپ را برای هر سندی از نوع: «فروش کالا و خدمات» باز کنیم. دکمه "Print" را فشار دهید و ببینید که پنجره ای برای انتخاب فرم های چاپی ظاهر شده است که در میان آنها وجود دارد - 13 - فرم چاپ خارجی متصل توسط ما (شکل زیر ↓ را ببینید)

حالا مطمئناً همین است. امیدواریم این مقاله برای شما مفید بوده باشد.

عصر بخیر.

امروز می‌خواهم نحوه ایجاد فرم‌های چاپی خارجی را برای پیکربندی «مدیریت حقوق و دستمزد 3.0» به شما بگویم. همانطور که می دانید، ZUP 3.0 از کتابخانه ای از زیرسیستم های استاندارد استفاده می کند، به این معنی که ساختار پردازش کاملاً متفاوت به نظر می رسد. وقتی برای اولین بار مجبور شدم یک فرم چاپی برای BSP در فرم های مدیریت شده بسازم (در آن زمان UT 11 بود)، اولین کاری که انجام دادم این بود که به دیسک ITS رفتم تا اسناد دقیقی را در آنجا پیدا کنم که رویه های صادرات، چه پارامترهایی باید باشد. پردازش شده و نحوه عملکرد آن اینجا ITS کمی من را ناامید کرد، زیرا ... همه چیز در مورد نحوه نمایش رویه ها در ماژول سند گفته شده است، و در فرم چاپ شده خارجی، پارامترهای رویه "چاپ" دوباره مرتب می شوند، بنابراین من مجبور شدم به دنبال اطلاعات در منابع دیگر باشم و زیرسیستم را از داخل سرهم کنم. .

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

گام یک- واضح. بیایید یک پردازش جدید ایجاد کنیم. بیایید یک نام دلخواه به آن اختصاص دهیم: "Print Sample".

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

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

//روشی که ساختار جدول فرمان را آماده می کند

تابع GetTableCommand()

// یک جدول دستوری و ستون های خالی در آن ایجاد کنید
Commands = New ValueTable;

// توضیحات فرم چاپ شده برای کاربر چگونه خواهد بود
Commands.Columns.Add("View", NewTypeDescription("ردیف"));

// نام طرح ما، تا بتوانیم دستور فراخوانی شده را در پردازش چاپ تشخیص دهیم
Commands.Columns.Add("Identifier", New TypeDescription("String"));

// این تنظیم می کند که چگونه دستور پردازش باید فراخوانی شود
// گزینه های ممکن:
// - OpeningForm - در این مورد، ستون شناسه باید نام فرمی را که سیستم باز می کند نشان دهد.
// - CallClientMethod - فراخوانی رویه صادرات مشتری از ماژول فرم پردازش
// - Call ServerMethod - فراخوانی رویه صادرات سرور از ماژول شی پردازش
Commands.Columns.Add("Usage", New TypeDescription("Row"));

// پارامتر بعدی مشخص می کند که آیا هنگام شروع و پایان یک کار پردازشی باید یک اعلان نشان داده شود. هنگام باز کردن فرم معنی ندارد
Commands.Columns.Add("ShowAlert", NewTypeDescription("Boolean"));

// برای یک فرم چاپی، باید شامل رشته PrintMXL باشد
Commands.Columns.Add("Modifier", New TypeDescription("Row"));

تیم بازگشت؛

EndFunction

//یک ردیف جدید در جدول فرمان ایجاد می کند

تابع AddCommand (CommandTable، View، Identifier، Usage، ShowAlert = False، Modifier = "")
NewCommand = CommandTable.Add();
تیم جدید. مشاهده = مشاهده;
تیم جدید. شناسه= شناسه;
تیم جدید. استفاده = استفاده;
تیم جدید. ShowAlert= ShowAlert;
تیم جدید. Modifier= Modifier;
EndFunction

تابع InformationOnExternalProcessing() Export
پارامترهای ثبت = ساختار جدید;
ArrayDestinations = آرایه جدید;
Array of Assignments.Add("Document.Hiring");
Registration Parameters.Insert("View", "PrintForm"); //شاید - پر کردن یک شی، گزارش اضافی، ایجاد اشیاء مرتبط...
Registration Parameters.Insert("Destination", Array of Destination);
Registration Parameters.Insert("Name", "Hello World"); //نامی که تحت آن پردازش در دایرکتوری پردازش خارجی ثبت می شود
Registration Parameters.Insert("Version", "1.0");
Registration Parameters.Insert("SafeMode", TRUE);
Registration Parameters.Insert("Information", "SAMPLE");//این چیزی است که توضیحات فرم قابل چاپ برای کاربر به نظر می رسد
CommandTable = GetCommandTable();
AddCommand(CommandTable، "Hello World"، "Layout"، "CallServerMethod"، True، "MXL Print");
Registration Parameters.Insert("Commands", CommandTable);
ReturnRegistrationParameters;
EndFunction

در واقع، هر بار که یک فرم چاپ خارجی جدید ایجاد می کنید، باید آن را سرهم کنید. از قسمت کد مشخص است که ما آن را به سند "استخدام" پیوند خواهیم داد، بر این اساس شما خودتان را بنویسید. فرم چاپی ما "Hello World" نامیده می شود، دوباره آن را به خودمان تغییر می دهیم. در اینجا راحت است که یک بیلبورد واضح در قالب بنویسید تا چشم را جلب کند تا بعداً فراموش نکنید که به نظر من "سلام جهان" مفید است. نسخه برای خودتان است، آنچه را که می خواهید بنویسید، در قالب یک عنصر در فهرست پردازش خارجی نمایش داده می شود. کلمه "SAMPLE" نیز تنها در قالب فهرستی از فرم های چاپی قابل مشاهده است. بعد، یک دستور اضافه می کنیم، در اینجا نام دکمه به پارامتر دوم منتقل می شود، این همان چیزی است که کاربر در سند در آیتم منوی "چاپ" مشاهده خواهد کرد.

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

مرحله چهارم- کمتر جالب نیست.

عملکرد PRINT؟

اما نه، اکنون این یک تابع نیست، بلکه یک رویه است.

چگونه می توانم طرح را برگردانم؟

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

باشه

در اینجا متن این روش است:

چاپ رویه (آرایه اشیاء، مجموعه ای از فرم های چاپی، اشیاء چاپی، پارامترهای خروجی) صادرات
اگر PrintManagement.NeedPrintLayout(CollectionPrintForms, "Layout") سپس
Print Management.Output TabularDocumentIntoCollection(CollectionofPrintForms,
"طرح بندی"، "طرح بندی"،
GenerateTabDocumentSample (آرایه از اشیاء، اشیاء چاپی));
endIf;
پایان رویه

حالا برای شفاف سازی خط اول روش شامل یک وضعیت کمی نامشخص است. واقعیت این است که وقتی رویه چاپ را فراخوانی می کنیم، سیستم جدولی از مقادیر را به ما ارسال می کند که نشان می دهد چه چیزی را باید چاپ کنیم. در اصل، تابع ManagePrint.NeedPrintLayout(...) وجود یک ردیف را در جدول مقادیر وجود دارد که در ستون "Name" ردیفی با نام طرح وجود دارد. در عمل، در بیشتر موارد چیز بی فایده است، زیرا ... پردازش ما قادر خواهد بود تنها یک فرم چاپی تولید کند. آن ها این شرط را می توان حذف کرد و تأثیری بر عملکرد نخواهد داشت.

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

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

سپس GenerateTabDocumentSample(...) تابعی است که باید در ماژول پردازش بنویسیم و یک سند جدولی را برمی گرداند. در 100 مورد از 100 مورد مبتنی بر سرور خواهد بود، زیرا ... ما باید مقدار جزئیات را از اشیاء فهرست شده در پارامتر "Array Object" بدست آوریم.

مرحله پنجم- ایجاد یک طرح.

هورای، بالاخره به الگوریتم چیدمان، بازیابی داده ها و غیره می پردازیم.

اما در نمونه خود ما به صورت پیش پا افتاده عمل می کنیم و من حتی در اینجا نظر نمی دهم)))

تابع GenerateTabDocumentSample (آرایه از اشیاء، اشیاء چاپی)
tabDoc = New TabularDocument;
layout = GetLayout("Layout");

AreaHeader = Layout.GetArea("Header");
tabDoc.Output(areaHeader);

بازگشت TabDoc;
EndFunction

این همه، از توجه شما متشکرم

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

فرم های چاپ شده در 1C به شما امکان می دهد یک سند الکترونیکی را به نسخه چاپی تبدیل کنید.

برای این، توسعه دهنده یک ابزار عالی - Print Designer - ارائه کرده است. با کمک آن، می توانید اسنادی ایجاد کنید که در آنها می توانید هر داده ای را که نیاز دارید و نه فقط چند فرم استاندارد را مشخص کنید. این امر به ویژه در مورد اسنادی صادق است که فرم کاملاً تنظیم شده ندارند و تحت هیچ شرایطی قابل تغییر نیستند. این، به ویژه، ممکن است شامل یک عمل تکمیل کار، برخی از فاکتورها یا پرداخت ها باشد.

در این راهنما، ما پیشنهاد می‌کنیم که توانایی‌های Print Designer را درک کنیم، در نظر بگیریم که چه نوع فرم‌های چاپی می‌تواند وجود داشته باشد و چگونه با یکدیگر تفاوت دارند. همچنین با یک مثال نحوه چاپ فرم ایجاد شده را نشان خواهیم داد.

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

فرم های چاپی در دو نوع هستند:

  • داخلی (توکار). آنها در پیکربندی برنامه ذخیره می شوند، بنابراین بهتر است آنها را تغییر ندهید، زیرا ممکن است بعداً در طول به روز رسانی مشکلاتی ایجاد شود.
  • خارجی - جدا از تنظیمات برنامه ذخیره می شود. و با کمک آنها می توانید بدون تأثیر بر پیکربندی برنامه 1C 8، سندی با هر پیچیدگی را ایجاد و برای چاپ آماده کنید.

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

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

فرم های چاپی کجا ذخیره می شوند؟

می توانید فرم های چاپ شده داخلی را هم در حالت پیکربندی و هم در حالت عادی سازمانی مشاهده کنید. در حالت اول، هنگام شروع برنامه باید روی دکمه مربوطه در پنجره شروع کلیک کنید. منوی برنامه را می بینید، شاخه «فروش محصولات و خدمات» را پیدا می کنید که حاوی آیتم «Layouts» است. اغلب شامل تنها دو مورد است - "فاکتور" و "عمل". از آنجایی که فهرست بسیار گسترده تر است، بقیه کجا هستند؟ آنها فقط در جای دیگری پنهان شده اند. شما باید شاخه "General" - "General Layouts" را باز کنید، تقریباً تمام طرح بندی ها در آن ذخیره می شوند.

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

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

ایجاد یک فرم ساده با استفاده از Print Designer داخلی

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

  1. اول از همه، به حالت Configurator راه اندازی کنید، سند مورد نیاز خود را پیدا کنید، به عنوان مثال، فروش محصولات و خدمات، در ویژگی های سند به Actions - Designers - Print Designer بروید.
  2. هنگامی که برای یک گزینه کاری از شما خواسته شد، فرم های معمولی را انتخاب کنید.
  3. به طرح‌بندی جدید یک نام بدهید، به عنوان مثال، «چاپ فاکتور».
  4. جزئیاتی را که می خواهید در هدر سند مشاهده کنید انتخاب کنید. علاوه بر این، آنها باید به ترتیبی که نمایش داده می شوند انتخاب شوند. برای انتخاب، باید مورد را در ستون سمت چپ با نشانگر برجسته کنید و فلش وسط صفحه را فشار دهید تا جزئیات در ستون سمت راست ظاهر شوند.
  5. جزئیات را برای نمایش در قسمت جدول علامت بزنید. انتخاب جزئیات از همان اصل پاراگراف قبل پیروی می کند.
  6. به همین ترتیب، جزئیات قسمت پایینی سند را انتخاب کنید.
  7. در مرحله نهایی ایجاد، انتخاب کنید که آیا می خواهید بلافاصله بدون پیش نمایش چاپ کنید، آیا نیاز به محافظت از جدول دارید یا خیر، و سپس ایجاد فرم را با دکمه OK تأیید کنید.

ایجاد فرم چاپ خارجی

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

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

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

  1. برنامه 1C 8 را در حالت Configurator باز کنید.
  2. روی File - New - External Processing کلیک کنید، نامی به آن بدهید (این فایل نباید دارای فاصله باشد)، سپس روی Actions - Open Object Module کلیک کنید.
  3. در فیلد ورودی که باز می شود، کد زیر را وارد کنید (مقادیر قابل تغییر به خودتان با رنگ زرد مشخص شده اند):

تابع InformationOnExternalProcessing() Export
پارامترهای ثبت = ساختار جدید;
ArrayDestinations = آرایه جدید;
Array of Assignments.Add("Document.Sales of Goods and Service"); // سندی را که برای آن چاپ خارجی می سازیم مشخص کنید. فرم
Registration Parameters.Insert("View", "PrintForm"); //شاید - PrintableForm، پر کردن شی، گزارش اضافی، ایجاد اشیاء مرتبط...
Registration Parameters.Insert("Destination", Array of Destination);
Registration Parameters.Insert("نام"، "سفارش فروش کالا"); //نامی که تحت آن پردازش در دایرکتوری پردازش خارجی ثبت می شود
Registration Parameters.Insert("SafeMode", FALSE);
Registration Parameters.Insert("Version", "1.0");
Registration Options.Insert("اطلاعات", "این فرم قابل چاپ به عنوان نمونه ایجاد شد");
CommandTable = GetCommandTable();
AddCommand(CommandTable، "External Order"، "ExternalOrder"، "CallServerMethod"، True، "MXL Print");
Registration Parameters.Insert("Commands", CommandTable);
ReturnRegistrationParameters;
EndFunction // اطلاعات در مورد پردازش خارجی ()
تابع GetTableCommand()
Commands = New ValueTable;
Commands.Columns.Add("View", New TypeDescription("Row"));//توضیحات فرم چاپ برای کاربر چگونه خواهد بود
Commands.Columns.Add("Identifier", New TypeDescription("String")); //نام طرح بندی فرم چاپ
Commands.Columns.Add("استفاده"، NewTypeDescription("ردیف")); //Call ServerMethod
Commands.Columns.Add("ShowAlert", NewTypeDescription("Boolean"));
Commands.Columns.Add("Modifier", NewTypeDescription("Row"));
تیم بازگشت؛
EndFunction
رویه AddCommand (CommandTable، View، Identifier، Usage، ShowAlert = False، Modifier = "")
NewCommand = CommandTable.Add();
NewCommand.View = View;
NewCommand.Identifier = شناسه;
NewCommand.Use = استفاده;
NewCommand.ShowAlert = ShowAlert;
NewCommand.Modifier = Modifier;
پایان رویه

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

رویه شروع چاپ را از منوی برنامه در همان سند وارد کنید (دستورهای برجسته شده با رنگ زرد باید با خط مطابقت داشته باشند):

اضافه کردن فرمان (جدول دستورات، "فرمان خارجی"، "نظم خارجی"):
چاپ رویه (آرایه اشیاء، مجموعه ای از فرم های چاپی، اشیاء چاپی، پارامترهای خروجی) صادرات
Print Management.Output TabularDocumentIntoCollection(
مجموعه فرم های چاپی،
"سفارش خارجی"
"سفارش خارجی"
GeneratePrintForm(ArrayofObjects, PrintObjects)؛
EndProcedure // Print()

  1. با کلیک بر روی نام فرم خارجی در گوشه سمت چپ پایین و انتخاب "Layouts" - "Add" - "Spreadsheet Document"، یک طرح برای پر کردن فرم چاپ شده وارد کنید، نام آن را انتخاب کنید. پس از آن، صفحه گسترده را با داده های لازم پر کنید. مثلا:
    • سفارش شماره محصول [شماره تحقق] از [تاریخ تحقق] - راست کلیک کنید - خواص - طرح بندی - پر کردن - الگو.
    • ستون هایی را ایجاد کنید که می خواهید در سند شما ظاهر شوند.
    • سلول های وارد شده را انتخاب کنید، روی جدول کلیک کنید - نام ها - اختصاص یک نام - نام "Header" را وارد کنید.
    • سطر را با سرصفحه های جدول کپی کنید، آنها را انتخاب کنید، راست کلیک کنید - Properties - Layout - Filling - Parameter.
    • یک خط را انتخاب کنید و نام آن را مثلا "StringTCH" بگذارید.
    • ایجاد یک پاورقی: Total را بنویسید، سلولی که مقدار کل باید در آن نمایش داده شود، نام آن را TotalTotal بگذارید، "Parameters" را در ویژگی ها انتخاب کنید.
    • شخص مسئول را مشخص کنید و در خصوصیات سلول برای نمایش نام خانوادگی، "Parameters" را مشخص کنید.
    • ردیف های پایین را انتخاب کنید و نام محدوده را "Footer" بگذارید.
  2. اکنون در پنجره ورودی، تابع تولید فرم چاپی را وارد کنید:

تابع GeneratePrintForm (LinkToDocument، Print Objects)
TabularDocument = TabularDocument جدید;
TabularDocument.Name of Print Parameters = “PRINT_PARAMETERS_Invoice for Payment to VRTU”;
Processing Layout = GetLayout ("Payment InvoiceExternal");
//سربرگ را پر کنید
AreaHeader = ProcessingLayout.GetArea("Header");
AreaHeader.Parameters.DocumentNumber = LinkToDocument.Number;
AreaHeader.Parameters.DocumentDate = LinkToDocument.Date;
AreaHeader.Parameters.OrganizationName = LinkToDocument.Organization.Name;
// خروجی هدر در یک سند صفحه گسترده
TabularDocument.Output(HeaderArea);
//خطوط PM را پر کنید
RowArea = ProcessingLayout.GetArea ("ROW");
برای هر خط جاری از Document Link.Products Cycle
FillPropertyValues(RowArea.Parameters، CurrentRow);
TabularDocument.Output(RowArea);
چرخه پایان
// زیرزمین را پر کنید
AreaFooter = ProcessingLayout.GetArea("Footer");
AreaFooter.Parameters.QuantityTotal = LinkToDocument.Products.Total("Quantity");
AreaFooter.Parameters.AmountTotal = LinkToDocument.Products.Total("مقدار");
AreaFooter.Parameters.ResponsibleName = LinkToDocument.Manager.Name;
// خروجی فوتر به یک سند صفحه گسترده
TabularDocument.Output(AreaFooter);
TabularDocument.AutoScale = True;
بازگشت TabularDocument;
EndFunction

  1. تغییرات خود را در سند ذخیره کنید.
  2. حال باید فرم ایجاد شده را فعال کنید. برای این:
    • به "اداره" - "فرم های چاپ شده، گزارش ها و پردازش" - "گزارش های اضافی و پردازش" بروید.
    • روی دکمه "ایجاد" کلیک کنید، فایل فرم خارجی را در Explorer انتخاب کنید، ورود خود را با دکمه "ذخیره و بستن" تأیید کنید.
  3. برای بررسی، به بخش فروش - فروش (اعمال، فاکتورها) بروید، روی دکمه "چاپ" کلیک کنید، فرم خود را انتخاب کنید و بررسی کنید که به درستی پر شده است.
  4. در صورت لزوم سند را چاپ کنید.

نتیجه

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

 
مقالات توسطموضوع:
صومعه بوریس و گلب و ایرینارک ارجمند، گوشه نشین روستوف، ایرینارک ارجمند
علاوه بر ورودی قبلی در مورد صومعه بوریس و گلب، می خواهم اطلاعاتی (با مختصر اختصاری) از وب سایت pravoslavie.ru در مورد ایرینارک ارجمند، راهب صومعه بوریس و گلب ارائه دهم. برای مشاهده نسخه کامل به وب سایت مراجعه کنید. ایرینارک اتو می پوشید
روز یکشنبه من و خواهرم از حیاط خارج شدیم
روز یکشنبه، من و خواهرم از حیاط خارج شدیم: "تو را به موزه می برم!" - خواهرم به من گفت: در اینجا از میدان عبور می کنیم و در نهایت وارد یک خانه بزرگ قرمز رنگ می شویم که شبیه یک قصر است
چگونه جادوی سفید به شما کمک می کند از خود در برابر دشمنان محافظت کنید جادوی سیاه چگونه یک مجرم را با استفاده از عکس مجازات کنید
این طبیعت انسان است که بخواهد بهتر زندگی کند. برای این کار، او زمان و انرژی زیادی را صرف خرید خانه و ماشین، تشکیل خانواده و به دست آوردن یک شغل معتبر می کند. اما افرادی خواهند بود که حسادت می کنند، به دنبال آسیب رساندن هستند و از شکست های دیگران خوشحال می شوند. که در
توطئه تاگانتسف  به طور بی گناه به N. Gumilyov شلیک کرد.  نسخه هایی در مورد وضعیت واقعی
واقعاً وجود داشت، خدا را شکر. افسران امنیتی و دادستان ها دو بار نتوانستند این افراد را نابود کنند. در تابستان 1921، پتروچکا بیش از 200 نفر را در پرونده به اصطلاح "سازمان رزمی پتروگراد" به ریاست پروفسور تاگانتسف دستگیر کرد. 1921/08/31 ب