نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • اخبار
  • عملگرهای منطقی 1c عملیات منطقی (شرکت 1s)

عملگرهای منطقی 1c عملیات منطقی (شرکت 1s)

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

سکو

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

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

پیکربندی

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

فرض کنید یک سازمان تجاری معمولی داریم و عملکرد پیکربندی Trade Management 10.3/11 برای ما کافی است.

در اینجا ما دو گزینه برای استفاده از این محصول نرم افزاری داریم:

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

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

البته می توان اعتراض کرد و گفت که سازمان مثلاً حسابداری دارد. بیایید این گزینه را در نظر بگیریم.

به دلیل تغییرات در قوانین، نرخ‌های مالیات و صندوق‌های بازنشستگی و سایر کارهای سخت روزمره حسابداران، حسابداری باید دائماً به روز شود.

برای انتقال داده ها بین تجارت و حسابداری معمولاً از قوانین مبادله استفاده می شود. این یک نوع قانون است که در xml نوشته شده است، که توضیح می دهد کدام اشیاء داده تخلیه می شوند، چگونه بارگذاری می شوند. همچنین می توانید پردازش اضافی را قبل و بعد در زمان تخلیه / بارگیری مشخص کنید. اگر پیکربندی معاملاتی ما تغییری نکرده باشد، قوانین آپلود را لمس نمی کنیم (به استثنای نادر، اگر به طور ناگهانی تغییرات اساسی ایجاد شده باشد). قوانین آپلود را نیز اغلب تغییر نمی دهیم. واقعیت دریافت / فروش کالا همیشه منتقل می شود. اما روش محاسبه مالیات و سایر موارد قبلاً در حسابداری به روز شده محاسبه می شود و این به هیچ وجه بر پیکربندی معاملات تأثیر نمی گذارد.

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

استفاده از 1C در زمینه های مختلف تجاری

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

اگر در مورد بخش مشاغل کوچک صحبت می کنیم، پس برای حسابداری در اکثر شرکت ها، می توانید تقریباً از هر برنامه ای که کمی پیچیده تر از جدول محوری در اکسل است استفاده کنید. حسابداری برای کالاها / خدمات قطعه، حسابداری حساب های پرداختنی / پرداختنی، حقوق و دستمزد. گزارش دهی از طریق برنامه های شخص ثالث امکان پذیر است، که ارقام نهایی به سادگی وارد می شوند.
اگر کسب و کار بزرگتر است، پس رقبای 1C Navision، Oracle هستند، در نمونه های بسیار بزرگ SAP هستند.

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

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

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

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

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

توجه! در اینجا یک نسخه آزمایشی از درس است که ممکن است مطالب آن کامل نباشد.

به عنوان دانشجو وارد شوید

برای دسترسی به محتوای مدرسه به عنوان دانش آموز وارد شوید

زبان برنامه نویسی داخلی 1C 8.3 برای برنامه نویسان مبتدی: عبارات منطقی ساده در 1C

در آخرین درس، نحوه نام گذاری و وارد کردن مقادیر آنها را از کاربر یاد گرفتیم.

قدرت و صبر به دست آورید. درس 5 و 6 دشوار است، اما برای درک بیشتر برنامه نویسی در 1C بسیار مهم است. بنابراین، اگر حداقل چیزی نامفهوم یا فاش نشده باقی بماند - دوباره بخوانید، تامل کنید، سؤال بپرسید.

عبارات بولی ساده

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

مقدار بولی ( درست است، واقعییا دروغ) نتیجه برخی بیان منطقی است.

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

عملیات مقایسه به شرح زیر است:

من فکر می کنم به طور مستقیم مشخص است که هر یک از عملیات به چه معناست.

مثلاً به این صورت می‌خواند:

  • 1 = 1 ("یک برابر است").
  • 4 <>5 ("چهار برابر با پنج نیست")
  • 3 > 1 ("سه بزرگتر از یک است").

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

بیایید به یک مثال نگاه کنیم:

کار شماره 14.برای هر عبارت منطقی نتیجه آن را مشخص کنید - درست است، واقعییا دروغ.

  1. "زهره" = "مشتری"
  2. "سیاره زهره"<>"سیاره مشتری"
  3. 123 = 321
  4. 123 < 321
  5. 123 <= 321
  6. 123 <= 123
  7. "20000101" <> "20140101"
  8. "20000101" = "20000101"
  9. "20140101" > "20120101"
  10. 25 + 25 = 50
  11. 2 * (10 + 10) > 50
  12. "یوری" + "گاگارین" = "یوری گاگارین"

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

  1. "زهره" = "مشتری" ( دروغ، رشته ها با یکدیگر برابر نیستند و عبارت بیان می کند که آنها مساوی هستند).
  2. "سیاره زهره"<>"سیاره مشتری" ( درست است، واقعی، رشته ها همانطور که در عبارت بیان شده با یکدیگر برابر نیستند).
  3. 123 = 321 (دروغ، از آنجایی که اعداد با یکدیگر مساوی نیستند و در عبارت برابر است).
  4. 123 < 321 (درست است، واقعی، از آنجایی که 123 کمتر از 321 است، همانطور که در عبارت بیان شده است).
  5. 123 <= 321 (درست است، واقعی، از آنجایی که 123 کمتر از 321 است و اگر عدد سمت چپ کمتر یا مساوی با عدد راست باشد، این عبارت صحیح است.
  6. 123 <= 123 (درست است، واقعی، از آنجایی که 123 برابر با 123 است و اگر عدد سمت چپ کمتر یا مساوی با سمت راست باشد، این عبارت صحیح است.
  7. "20000101" <> "20140101" (درست است، واقعی، از آنجایی که تاریخ سمت چپ 01/01/2000 برابر با 01/01/2014 نیست، همانطور که در عبارت بیان شده است).
  8. "20000101" = "20000101" (درست است، واقعی, از آنجایی که تاریخ سمت چپ 01/01/2000، 01/01/2000 است، همانطور که در عبارت ذکر شده است).
  9. "20140101" > "20120101" (درست است، واقعی، از آنجایی که اول ژانویه 2014 بزرگتر از اول ژانویه 2012 است، همانطور که در عبارت بیان شده است).
  10. 25 + 25 = 50 (درست است، واقعی،از آنجایی که 25 به علاوه 25 واقعاً برابر با پنجاه است، همانطور که در عبارت بیان شد).
  11. 2 * (10 + 10) > 50 (دروغ، از آنجایی که نتیجه عبارت سمت چپ 40 است و 40 کمتر از 50 است، حتی اگر عبارت خلاف آن را بگوید).
  12. "یوری" + "گاگارین" = "یوری گاگارین" ( درست است، واقعی، از آنجایی که مجموع رشته های "یوری" و "گاگارین" یک رشته "یوری گاگارین" را تشکیل می دهد که همانطور که در عبارت بیان شده برابر با رشته سمت راست است).

بیایید حساب کنیمیک کامپیوتر

اما خود ما چه چیزی را «درست» یا «نادرست» می دانیم. پس از همه، ما یک کامپیوتر در دست داریم! بیایید این کار را به او بسپاریم و در عین حال خودمان را بررسی کنیم.

برای مثال، بیایید عبارت 2 * (10 + 10) > 50 را بررسی کنیم.
برای این کار برنامه زیر را می نویسیم:

گزارش(2 * (10 + 10 ) > 50 ) ;

اگر آن را اجرا کنیم، کامپیوتر "نه" می دهد، به این معنی - نتیجه است دروغ.

او این عبارت را چگونه محاسبه کرد؟

  1. کامپیوتر دستور Report را دید.
  2. من نگاه کردم که چه پارامتری را به این دستور منتقل می کنیم.
  3. دیدم که عبارت منطقی 2 * (10 + 10) > 50 به عنوان پارامتر مشخص شده است.
  4. شروع به محاسبه نتیجه یک عبارت منطقی کرد.
  5. دیدم که عبارت از سمت چپ 2 * (10 + 10)، سمت راست 50 و علامت بزرگتر از بین آنها تشکیل شده است.
  6. نتیجه سمت چپ را شمردم و متوجه شدم که برابر با چهل است.
  7. او دوباره به عبارت نگاه کرد، فقط به شکل ساده شده 40 > 50، و از آنجایی که 40، البته، کمتر از 50 است، "نه" را استنباط کرد.

کار شماره 15.تمام مثال‌های عبارات منطقی را از کار قبلی در رایانه محاسبه کنید.

مثلاً عبارت "زهره" = "مشتری"، که مقدار آن همانطور که متوجه شدیم برابر است با دروغ.

گزارش("زهره" = "مشتری" ) ;

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

راه حل مرجع ابتدا کد را خودمان می نویسیم ، آن را در رایانه چک می کنیم (مثل همه برنامه های نمونه دروس) ، فقط سپس بررسی می کنیم












1. مقدمه

زبان برنامه 1C ساختاری - شی است. این زبان را می توان به عنوان یک زبان میانی بین زبان های سطح بالا و زبان های برنامه نویسی مانند VBA نامید.
در هسته خود، برنامه 1C، همانطور که بود، با دو ماژول کار می کند. اولین ماژول هسته یا موتور است. در واقع، این یک کامپایلر است که کد و همچنین توضیحات فرم های چاپی و گرافیکی را به صفحه نمایش یا چاپگر ترجمه می کند. ماژول دوم پایگاه داده ای است که ماژول اول با آن کار می کند. هر دو ماژول به هم متصل هستند و نمی توانند به طور مستقل کار کنند. ماژول دوم وظیفه دسترسی به پایگاه داده و همچنین دستکاری اطلاعات در پایگاه داده را بر عهده دارد.
در نسخه 7.7 1C، 1 مکانیزم دسترسی به پایگاه داده داخلی و یک مکانیسم وجود دارد که از یک رابط دسترسی به پایگاه داده خارجی استفاده می کند.
اولین مکانیسم دسترسی به پایگاه داده با فرمت dbf است (در واقع دسترسی به پایگاه داده نیست، بلکه به هر فایل جداگانه است). نسخه dbf در حال استفاده DBASE II است، با محدودیت ها و کاستی های مربوط به این نسخه قدیمی.
مکانیسم دوم دسترسی به پایگاه داده در قالب MS SQL Server با استفاده از اتصال ODBC (به اصطلاح ارائه دهنده دسترسی ODBC به MS SQL Server) است که با MS SQL Server عرضه می شود. در ابتدا، نسخه 7.7 تحت SQL Server 6.5 توسعه یافت (به طور دقیق تر، نسخه 7.5 که روی نسخه های قبلی SQL Server کار می کرد) توسعه یافت. در زمان نگارش این مقاله، نسخه فعلی 1C (رله 7.70.027) از نسخه های SQL Server 6.5، 7.0 پشتیبانی می کند. SQL2000، هیچ اطلاعاتی در مورد پشتیبانی SQL 2005 وجود ندارد. اما نویسنده آزمایشی را برای اتصال به SQL Server 2005 نسخه 7.70.027 انجام داد و آزمایش ناموفق بود. آن ها می توان فرض کرد که نسخه رسمی 27 از SQL Server 2005 پشتیبانی نمی کند (اما این مشکل را می توان با خواندن اینجا حل کرد:).
برای درک نحوه عملکرد 1C، ​​نحوه ذخیره سازی 1C و نحوه اجرای کد را در نظر بگیرید. همه کدهای 1C از نظر فیزیکی یا در فایل 1Cv7.md یا در گزارش‌های پردازش خارجی ( کد برای اجرا به صورت مرحله ای راه اندازی می شود. این بدان معنی است که کد در صورت نیاز کامپایل و اجرا می شود (به طور دقیق تر، زمانی که به شی یا فرم شیء دسترسی پیدا می شود). تنها استثنا ماژول جهانی است، کامپایل آن در زمان راه اندازی خود 1C (به طور دقیق تر، پس از اولیه سازی پایگاه داده) انجام می شود. ماژول‌های باقی‌مانده در زمان راه‌اندازی 1C کامپایل نمی‌شوند، اما تنها زمانی کامپایل می‌شوند که به این ماژول از طریق یک فرم یا شیء دسترسی داشته باشید. این منجر به این واقعیت می شود که باید خودتان کنترل نحو را بررسی کنید یا در زمان اجرای برنامه به دنبال خطاهای نحوی بگردید.

2. ساختار شی 1C

به طور منطقی، کد 1C در ماژول ها ذخیره می شود (یک ماژول در درک زبان 1C، کدی است که برای اجرا راه اندازی می شود). در 1C، تمام ماژول ها را می توان به 3 دسته بزرگ تقسیم کرد: 1 - ماژول جهانی، ماژول های شی 1C، ماژول های پردازش و گزارش. از دیدگاه 1C، یک شی به عنوان بخشی از یک مجموعه مشترک از موجودیت ها درک می شود که در یک پایگاه داده خاص قرار دارند که دارای ویژگی های یکسان هستند، مجموعه ای از روش ها یکسان دارند و همان نوع توابع را با اطلاعات یا با پایگاه داده لازم به ذکر است که همه اشیاء 1C دارای ماژول نیستند، اما در عین حال، برخی از اشیاء بیش از یک ماژول دارند. معمولا ماژول ها به فرم ها متصل می شوند. از دیدگاه 1C، فرم پنجره ای است با مجموعه ای از ویژگی ها و جزئیات آن. همه اشیا اشکال خاص خود را ندارند، در حالی که برخی از اشیا چندین شکل دارند. این معمولاً به شکل یک عنصر خاص یا به صورت فهرستی از عناصر است.
لازم به ذکر است که 1C با پایگاه داده کار می کند، در عین حال، برخی از اشیاء در پایگاه داده ذخیره نمی شوند.
آن ها اولین طبقه بندی اشیاء را می توان بر اساس اینکه آیا اطلاعات مربوط به اشیاء در پایگاه داده ذخیره می شود یا نه در پایگاه داده باشد، اجازه دهید نوع اول اشیاء را اطلاعاتی و نوع دوم را غیر اطلاعاتی بنامیم. تمام اشیاء اطلاعاتی در پایگاه داده، در یک یا چند جدول ذخیره می شوند. کار با اشیاء اطلاعاتی همیشه مستلزم قرار دادن یک ورودی خاص در جدول است که شی را مشخص می کند. یعنی برای دسترسی به چنین شیئی باید به نحوی به رکورد مورد نیاز در پایگاه داده رفت. معمولاً از روش های 1C برای چنین انتقالی استفاده می شود.
یکی از ویژگی های بسیار خوب 1C این است که برخی از اشیاء جدید ایجاد شده می توانند نوع یک شی موجود را داشته باشند. به چنین اشیایی مولد نوع می گویند. انواعی که داده برای اشیاء تازه ایجاد شده تشکیل نمی دهند، غیر تایپ ساز هستند. تمام اشیاء مولد نوع اطلاعاتی هستند، یعنی. آنها در پایگاه داده ذخیره می شوند. در درک 1C، اشیاء مولد نوع، اشیاء انباشته هستند.
در عین حال، در 1C انواع اساسی وجود دارد که صرف نظر از اشیاء ایجاد شده وجود دارد. این انواع نیز در پایگاه داده ذخیره می شوند، اما این داده ها از نظر 1C اشیا نیستند، بلکه ویژگی های اشیاء اطلاعاتی هستند.
همچنین، یک طبقه بندی مهم از اشیاء، تایپ آنها با توجه به ویژگی هایی است که بر اساس آنها در توضیحات پایگاه داده تقسیم می شوند. این اشیاء هستند:
  • ثابت ها
  • کتاب های مرجع.
  • مدارک.
  • لاگ اسناد
  • شمارش ها
  • گزارش ها.
  • در حال پردازش.
  • طرح های حساب
  • انواع Subconto.
  • عمل.
  • سیم کشی.
  • ثبت می کند.
  • مجلات محاسباتی
  • انواع محاسبات.
  • گروه های اسکان.
  • تقویم ها
علاوه بر این، اشیایی غیر تایپ کننده هستند که اطلاعاتی نیستند و در درخت تنظیمات پیکربندی وجود ندارند:
  • متن
  • xbase.
  • نتایج حسابداری
  • سیم کشی صحیح
  • قانون محاسبه مجدد
  • دنباله.
  • تناوبی.
  • فهرست ارزش ها
  • جدول ارزش.
  • جدول.
  • درخواست.
  • تصویر
  • FS (سیستم فایل).
تقریباً تمام انواع اشیاء فهرست شده را می توان در ماژول ها از طریق تابع ایجاد شی (CreateObject) در دسترس قرار داد. ساختار کلی طبقه بندی اشیاء توصیف شده را می توان به عنوان یک ماتریس نشان داد:
انواع شی اطلاعاتی نوع سازی CreateObject() در دسترس بودن ماژول ها
ثابت ها
کتاب های مرجع + + + +
مدارک + + + +
مجلات مستند +
شمارش ها +
گزارش ها +
در حال پردازش +
نمودارهای حسابداری + + + +
انواع Subconto +
عمل + + +
سیم کشی + +
ثبت می کند +
مجلات محاسباتی + +
انواع محاسبات + +
گروه های محاسباتی
تقویم ها +
متن +
xbase +
نتایج حسابداری +
ارسال های صحیح + +
قانون محاسبه مجدد +
دنباله + +
تناوبی +
فهرست ارزش ها +
جدول ارزش +
جدول +
درخواست +
تصویر +
FS (سیستم فایل) +
عدد +
خط +
تاریخ +

3. زبان 1C. مدولار بودن

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

4. مقررات کلی برای نوشتن ماژول ها

معنای زبان 1C به گونه ای است که کل متن ماژول به عملگرها و نظرات تقسیم می شود. انتهای عملگر کاراکتر ";" است. عملگرها از عبارات تشکیل شده اند.

4.1 نظرات

نظرات در 1C فقط خط به خط هستند (بلاک به بلوک وجود ندارد). یک نظر با دو کاراکتر "//" شروع می شود و با پایان دهنده خط (یعنی تا انتهای خط) به پایان می رسد.

4.2. نام متغیرها، رویه ها و توابع

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

4.3. کلمات رزرو شده

به شرح زیر کلید واژه ها رزرو شده اند و نمی توانند به عنوان نام متغیرهای تولید شده و رویه ها و توابع اعلام شده استفاده شوند. در این نسخه از زبان، هر یک از کلمات کلیدی دارای دو نمایش است - روسی و انگلیسی. نمایش انگلیسی برای زبان های برنامه نویسی سنتی است. کلمات کلیدی در ارائه روسی و انگلیسی را می توان آزادانه در یک متن منبع ترکیب کرد. مورد حروف کلیدواژه مهم نیست. در زیر لیستی از کلمات کلیدی در هر دو نما آورده شده است.

اگر دیگر

StrLength

پایان اگر

متن نوشته

ادامه دهید

سقط

پایان رویه

EndFunctions

هشدار

چرخه پایانی

روش

4.4. ساختار ماژول برنامه

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

  • بخش تعریف متغیر؛
  • بخش رویه ها و توابع؛
  • بخش برنامه اصلی

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

بخش تعریف متغیر از ابتدای متن ماژول تا اولین دستور Procedure یا عبارت Function یا هر دستور اجرایی قرار می گیرد. این بخش فقط می تواند حاوی عبارات اعلان متغیر باشد.

بخش رویه ها و وظایف از اولین دستور یک Procedure یا یک عبارت Function تا هر دستور اجرایی خارج از بدنه یک اعلان رویه یا تابع قرار می گیرد.

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

5. قالب برای توصیف عبارات و تبدیل نوع

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

5.1. انواع داده ها در عبارات و قالب آنها.

بیایید نگاهی دقیق تر به عناصر عبارات و عملیات حسابی مورد استفاده برای کار با آنها بیاندازیم.

شماره

اعداد به صورت اعداد از 0 تا 9 نوشته می شوند. اگر لازم باشد یک عدد کسری یادداشت شود، قسمت صحیح با یک نقطه "." از قسمت کسری جدا می شود.
مثلا:
45 یک عدد صحیح مثبت است
-12 - عدد صحیح منفی
16.67 یک عدد مثبت کسری است.

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

تاریخ

تاریخ ها به صورت دنباله ای از کاراکترها در این قالب نوشته می شوند:
"DD.MM.YY"
یا
"DD.MM.YYYY"،
جایی که:
DD روز ماه است. باید دو رقمی نوشته شود: اگر روز ماه کمتر از 9 باشد، 0 در جلو قرار داده می شود، به عنوان مثال "02"؛
MM - شماره ماه، همچنین به صورت دو رقمی نوشته شده است.
YY (YYYY) - سال، می تواند با دو یا چهار رقم نوشته شود.

به عنوان مثال: "01.01.2007"

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

علاوه بر تاریخ‌های خاص، زبان داخلی چیزی به نام «تاریخ خالی» دارد. یک تاریخ خالی با دنباله "00.00.00" داده می شود. معمولاً از تاریخ خالی برای مقایسه استفاده می شود. همچنین می توانید با استفاده از روش تبدیل Date(0) یک تاریخ خالی دریافت کنید.

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

در 1C نوع Time وجود ندارد، درست مانند نوع DateTime.

مقادیر رشته

مقادیر رشته ها دنباله ای از کاراکترها هستند که در گیومه های دوتایی یا تکی محصور شده اند. مثال: "مثال رشته".

اگر نیاز به تعیین نقل قول در یک مقدار رشته دارید، باید از 2 کاراکتر نقل قول در یک ردیف استفاده کنید. به عنوان مثال، هنگام نوشتن در فرمول محتوای عملیات، یک مقدار رشته ای از فرم

"رشته مثال ""رشته نقل قول"""

یک رشته در محتوای عملیات تشکیل می دهد

مثال رشته ای "رشته نقل قول"

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

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

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

5.2. عملیات حسابی

اکنون عملیات حسابی مورد استفاده در زبان 1C را در نظر بگیرید (Op - "operand"):

با این حال، استفاده از عملیات حسابی بسته به نوع عملوند دارای ویژگی های خاصی است.

از جانب مقادیر عددیشما می توانید از تمام عملیات های حسابی ذکر شده در بالا استفاده کنید، تقریباً بدون محدودیت.

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

به عنوان مثال، نتیجه عبارت:

"رشته مثال" + "ژانویه 2007"

یک رشته وجود خواهد داشت

نمونه رشته ژانویه 2007

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

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

"ایوانف" + "" + "ایوان" + "" + "ایوانوویچ"

نتیجه رشته خواهد بود

ایوانف ایوان ایوانوویچ

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

می توانید یک عدد به تاریخ اضافه کنید، به عنوان مثال:

"02.08.2000"+2

و نتیجه عبارت به تعداد روزهای برابر ترم دوم تاریخ دیرتر از ترم اول خواهد بود. در این صورت نتیجه 08/04/2000 یا 4 اوت 2000 خواهد بود.

"02.03.2000"-2

در این صورت، تاریخ را زودتر از تاریخ کاهش می دهیم. لازم به ذکر است که با چنین افزایش یا کاهشی در تاریخ ها، انتقال صحیح بین ماه ها و سال ها انجام می شود، یعنی تعداد روزهای یک ماه، سال های کبیسه و ... در نظر گرفته می شود. در مثال ما، نتیجه عبارت، البته نه 03/00/2000، بلکه 07/29/2000 - 29 فوریه 2000 خواهد بود.

"02.10.2000" - "02.08.2000"

در این حالت نتیجه تعداد روزهای بین کم و تفریق خواهد بود.

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

"02.08.2000" + "02.10.2000"

و حتی پیغام خطا دریافت نمی کنیم، اما نتیجه چنین عبارتی معنای فیزیکی ندارد.

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

مثلاً در بیان

"استهلاک برای" + قالب (تاریخ کاری()، "D MMMMYYYY")

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

5.3. تبدیل خودکار نوع

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

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

"استهلاک برای " + فرمت(تاریخ کاری()، "D MMMMYYYY")

در این عبارت، دومین عملوند WorkingDate()، که از نوع "date" است، با استفاده از تابع Format() به نوع "string" تبدیل می شود.

با این حال، سیستم 1C:Enterprise، قبل از محاسبه عبارات، "می تواند" به طور خودکار عملوندهای انواع مختلف را به یک نوع تبدیل کند، با هدایت قوانین تبدیل نوع.

قوانین تبدیل زیر برای انواع پایه تعریف شده است:

شماره -> رشته

اگر عددی تنظیم فرمت نداشته باشد، پس نمایش رشته آن نمایش کامل نقطه ثابت عدد است.

تاریخ -> رشته

تاریخ تبدیل شده به نوع رشته به شکل DD.MM.YY است، که در آن YY دو رقم از سال است، MM تعیین عددی ماه است (01، ...، 12)، DD روز ماه است.

رشته -> شماره

رشته تا حد امکان به عدد تبدیل می شود. عدد به دست آمده نتیجه تبدیل در نظر گرفته می شود. (به عنوان مثال، رشته "1.22 Glass" به عدد 1.22 تبدیل می شود). اگر چیزی در ابتدای رشته وجود نداشته باشد که بتوان آن را به عنوان عدد تفسیر کرد، نتیجه 0 است.

تاریخ -> شماره

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

رشته -> تاریخ

اگر خط با چیزی شروع می شود که می تواند به عنوان نمایش رشته ای از تاریخ به شکل DD.MM.YY تفسیر شود، که در آن YY یک سال دو رقمی است، MM یک ماه عددی است (01، ...، 12)، DD یک ماه روز است، تبدیل مربوطه انجام خواهد شد. در غیر این صورت، مقدار تاریخ صفر خواهد بود.

شماره -> تاریخ

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

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

مثلاً نتیجه عبارت

2 + "A"

عدد 2 خواهد بود، زیرا عملوند اول عبارت دارای نوع عددی است و عملوند دوم مطابق با قوانین تبدیل نوع، برابر با 0 شده است.

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

""+ 2+"A"

چگونه نتیجه آن به طور اساسی تغییر خواهد کرد: نتیجه عبارت رشته "2A" خواهد بود.

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

یک مثال دیگر در بالا، تأکید کردیم که مقدار نوع «تاریخ» با یک رشته کاراکتر در گیومه‌های تکی مشخص می‌شود و همان دنباله کاراکترها، اما قبلاً در گیومه‌های دوگانه، یک رشته است. اکنون این موضوع را با مثال هایی توضیح می دهیم.

همانطور که قبلاً گفتیم نتیجه عبارت "08/02/2000"+2 تاریخ 08/04/2000 خواهد بود. اما با مشخص کردن عملوند اول در دو گیومه:

"02.08.2000"+2

ما یک نتیجه کاملا متفاوت دریافت می کنیم - رشته "08/02/20002".

بیایید خلاصه کنیم. شما می توانید نوع نتیجه کل عبارت را با تنظیم اولین عملوند به مقدار خالی از نوع مناسب کنترل کنید. مزیت چنین روشی این است که یک مقدار خالی نتیجه عبارت را تغییر نمی دهد.به عنوان مثال، قرار دادن 0 در ابتدای عبارت:

0+ "23"+45

در نتیجه عدد 68 را دریافت خواهیم کرد، زیرا عبارت به طور کلی از نوع "عدد" است و رشته کاراکتر مطابق با قوانین تبدیل نوع، با موفقیت به عدد 45 تبدیل شد.

در اینجا مناسب است تاریخ خالی را یادآوری کنیم. نتیجه عبارت "00.00.00" + 2 + "02.08.2000" چه خواهد شد؟ البته تاریخ 08/04/2000 (4 آگوست 2000) است، زیرا اولین عملوند عبارت مقداری از نوع "date" بود.

برعکس، حذف تاریخ خالی

2+"02.08.2000"

در نتیجه 2451761 دریافت می کنیم - این تعداد روزهای از تاریخ صفر تا 2 آگوست 2000 به اضافه 2 روز دیگر است.

5.4. عملگرهای مقایسه بولی

در 1C، چنین عبارات منطقی برای انواع داده های اساسی وجود دارد.

> بیشتر

< Меньше

<>نا برابر

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

با توجه به نوع داده های عددی، هیچ مشکلی وجود ندارد، یک عدد استاندارد (صحیح یا کسری) مقایسه می شود.

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

برای انواع تاریخ، خود تاریخ مقایسه می شود (اما ممکن است 1C قبل از مقایسه تاریخ به عددی تبدیل شود که برابر با تعداد روزهای از تاریخ (0) است).

6. مشکلات گرد کردن

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

به عنوان مثال، این وضعیت:
16 واحد کالا با قیمت (با احتساب مالیات بر ارزش افزوده) 110.50 UAH وجود دارد.
- هزینه کل 110.50 * 16 = 1768 UAH است.
- مالیات بر ارزش افزوده (با نرخ 20٪ از جمله) 1768 * 20 / 120 = 294.67 UAH است.

در صورتی که اکنون این محصول به صورت تکه ای و بدون هزینه اضافی فروخته شود، مالیات بر ارزش افزوده متفاوت خواهد بود:
- مالیات بر ارزش افزوده به ازای هر واحد کالا 110.50 * 20 / 120 = 18.42 UAH خواهد بود.
- مالیات بر ارزش افزوده برای هر 16 واحد 18.42 * 16 = 294.72 UAH خواهد بود.

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

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

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

در پیکربندی‌های معمولی 1C: Enterprise، در صورت امکان، چنین موقعیت‌هایی در نظر گرفته می‌شوند و به درستی مدیریت می‌شوند. به عنوان مثال ، اگر 3 واحد کالا با ارزش کل 1 گریونا اعتبار داده شود ، دو واحد اول با هزینه 33 کوپک و آخرین - 34 کوپک حذف می شوند. اما همه موارد گرد کردن را نمی توان در الگوریتم ها در نظر گرفت، از جمله مثال بالا با پنج کوپک مالیات بر ارزش افزوده نمی تواند به درستی در برنامه پردازش شود.
در برخی موارد، با تعیین یک قیمت "مناسب" برای کالا - به طوری که مالیات بر ارزش افزوده به طور کامل و بدون ردیابی محاسبه شود، می توان از چنین خطاهایی جلوگیری کرد. اما این قانون فقط در مورد قیمت های فروش صدق می کند - قیمت خرید لازم نیست انتخاب شود. در موارد دیگر، کاربران برنامه باید تجزیه و تحلیل کنند که "پنی های آویزان" از کجا آمده اند و تصمیم بگیرند که چگونه با آنها برخورد کنند.

7. محدودیت های سیستم V77

تاریخ
تاریخ - در محدوده تاریخ از 01/01/0000 تا 12/31/9999 به درستی کار می کند
تاریخ (0) مربوط به 1721061 روز از تاریخ 01.01.0000 است.
هنگامی که سعی می کنید به تاریخ های منفی بروید - 12/31/0001، سیستم به درستی کار نمی کند، زیرا از تاریخ 0 کار می کند، یعنی: Date("01/01/0000")-1 = 01/00/00. تابع قالب برای چنین تاریخ هایی اصلا کار نمی کند.

عدد
حداکثر تعداد مقادیر = 64 (64 کاراکتر).

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

سند
سند - 9999 نوع سند را می توان ایجاد کرد.
یک سند نمی تواند بیش از 9999 خط داشته باشد و به درستی کار کند.
حداکثر طول کد 20 است، یعنی. در مجموع (27+33+10)^20 سند از نظر تئوری می تواند ایجاد شود (70^20 = 7.9792266297612001e+36).
در کل سیستم نمی تواند بیشتر باشد (طول شناسه کد در گزارش = 9)، عملا طول شناسه 6 کاراکتر (3 در هر URIB) 36^6 = 2176782336 سند است.
تعداد اسناد وارد شده با زمان یکسان به 36^4 = 1679616 محدود شده است

به عنوان یک قاعده، مطالعه هر زبان برنامه نویسی با مثالی از نوشتن اولین برنامه ساده ("سلام جهان!") آغاز می شود. این کار به منظور نشان دادن بصری کار با ساختارهای نحوی اولیه انجام می شود. ما هنگام کاوش در یک محیط توسعه جدید از این روش رایج ارائه مطالب مستثنی نخواهیم بود، و بنابراین اولین مقاله ما باید در همین راستا در نظر گرفته شود. در آن، ما پاسخ سوالات زیر را در مورد برنامه نویسی در پلت فرم 1C:Enterprise 8 به تفصیل تجزیه و تحلیل خواهیم کرد:

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

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

قابلیت کاربرد

مطالب مربوط به پلت فرم "1C: Enterprise 8" نسخه های 8.2 است. و 8.3.

متغیرها و اپراتورها

در این مقاله، ما شروع به مطالعه زبان داخلی 1C: Enterprise 8 می کنیم. کد اجرایی در ماژول های برنامه موجود است.

تعداد نسبتاً زیادی ماژول وجود دارد که برای مدیریت رویدادهای مختلف طراحی شده اند.

بنابراین، ورود کاربر در یک ماژول پردازش می‌شود و پردازش کاربر روی یک دکمه خاص در یک ماژول کاملاً متفاوت انجام می‌شود.

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

در آینده می توان از آنها در رویه ها و عملکردهای این ماژول استفاده کرد. اگر متغیری با کلمه کلیدی Export تعریف شده باشد، در خارج از این ماژول در دسترس خواهد بود. مثال خط اعلان متغیر:

انبار رم، بخش، صادرات انباردار.

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

پشت آنها قسمتی از برنامه اصلی است که در زمان دسترسی به این ماژول اجرا می شود.

به عنوان مثال، در بخش برنامه اصلی، می توانید متغیرها را مقداردهی اولیه کنید، i.e. مقادیر اولیه را به آنها بدهید:

حالت=1;
NewExpression=2;
نتیجه=3;

یک ماژول را می توان ترکیبی از عملگرهای مختلف در نظر گرفت که اقدامات مختلفی را انجام می دهند که ما نیاز داریم.

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

نتیجه=100X200
+400
-600;

مهم نیست بیانیه در چند خط باشد.

البته، اغلب راحت تر و واضح تر است که عبارت را در یک خط قرار دهید، اما گاهی اوقات عبارات بسیار طولانی هستند (تعداد خطوط به طور منطقی می تواند به چند ده برسد).

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

Procedure CalculateValue()

مقدار اولیه = 100;
IntermediateValue = مقدار اولیه / 5;
FinalValue = InitialValue+IntermediateValue

پایان رویه

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

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

تقریباً در هر ماژول نرم افزاری که عملی را انجام می دهد، متغیرهای مختلفی وجود دارد. تایپ متغیر بر اساس مقادیر در Platform 1C: Enterprise 8 نرم است.

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

ایجاد شده = نادرست;
ایجاد شده = درست؛
ایجاد =100;

در دو عبارت اول مقدار متغیرها بولی و در سومی به مقدار عددی تغییر می کند. آن ها تایپ کردن بستگی به مقداری دارد که به این متغیر اختصاص داده شده است.
متغیرها را می توان به دو صورت اعلام کرد:

  • روش ضمنی (ذکر در سمت چپ عملگر انتساب این متغیر را توصیف می کند، هیچ توضیح اولیه ای از متغیر با کلمه Variable وجود ندارد، یعنی بخش خاصی از اعلان متغیر وجود ندارد).
  • اعلان صریح متغیرها (Variable ControlData;). از اعلان صریح متغیرها استفاده می شود، به عنوان مثال، اگر انتظار می رود انتقال بعدی این متغیر به یک تابع باشد.

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

در این حالت، نام متغیر باید منعکس کننده معنای این متغیر باشد. نام متغیرهای تک حرفی (مانند A، B، C) نمونه های بدی هستند. آنها ماهیت متغیرها را منعکس نمی کنند.

نمونه هایی از نام متغیرهای صحیح: شمارنده (متغیر افزایشی برای حلقه)، پیمانکار. اگر نام متغیر شامل چندین کلمه باشد، برای وضوح، هر کلمه جدید باید با یک حرف بزرگ شروع شود.

کلمات رزرو شده، مانند Procedure، Function، Loop، EndCycle و غیره را نمی توان در نام متغیرها استفاده کرد. (این ساختارها با رنگ قرمز در ماژول برنامه مشخص شده اند).

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

لازم به ذکر است که انواع داده ها کلمات رزرو شده نیستند (مثلاً Array، Boolean، True، False). سیستم چنین نام متغیرهایی را به درستی درک خواهد کرد.

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

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

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

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

عملیات بولی

عملگرهای مقایسه اغلب از منطق بولی استفاده می کنند که True یا False را برمی گرداند.

به عنوان مثال، در یک عملگر شرطی، می توانید مقایسه کنید: اگر Event = Sale سپس الگوریتم در امتداد یک شاخه حرکت می کند (یعنی اگر مقدار True باشد)، با توجه به شرط False، شاخه دیگری از الگوریتم اجرا می شود.

شرایط می توانند بسیار پیچیده باشند، آنها را می توان با استفاده از عملگرهای زیر ترکیب کرد: AND، OR، و NOT. بنابراین، برای عملگر AND:

Truth AND Truth = True;
درست و غلط = غلط.
نادرست و درست = نادرست.
نادرست و نادرست = نادرست.

برای عملگر OR کافی است یکی از عملوندها برابر True باشد، سپس مقدار ترکیب True خواهد بود. مقدار False فقط در صورتی است که هر دو عملوند False باشند.

عملگر NOT به سادگی مقدار فعلی را معکوس می کند (False به True، True به False).

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

عملگر NOT بالاترین اولویت را دارد و پس از آن عملگر AND و پس از آن عملگر OR قرار دارد. هر چیزی که داخل پرانتز قرار می گیرد بالاترین اولویت را دارد و ابتدا اجرا می شود.

به عنوان مثال، بیایید (توالی اجرا) را برای عملیات در عبارت بالا اولویت بندی کنیم:

NOT (شرط 1 یا شرط 2) و شرط 3 یا شرط4
1.نتیجه 1 = (شرط 1 یا شرط2)؛
2. Result2 = NOT Result1;
3. Result3 = Result2 AND Condition1;
4. نتیجه = Result3 OR Condition4;

یک قانون تبدیل وجود دارد:

NOT (شرط 1 یا شرط 2) = NOT Condition1 AND NOT Condition2.

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

اپراتور واگذاری

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

اصل عملگر انتساب به این صورت است که به مقدار سمت چپ (متغیر سمت چپ) مقداری که در سمت راست علامت مساوی است اختصاص می یابد. بیایید مثالی بزنیم:

Variable1 = Variable2 = Variable3;

متغیر 1 مقدار برابری را از منطق بولی تخصیص می دهد، یعنی. اگر Variable2 = Variable3 درست است یا در غیر این صورت False.

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

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

راه حل شماره 1 با استفاده از متغیر موقت:
TempVar = Variable1;
Variable1 = Variable2;
Variable2 = TempVariable;

راه حل شماره 2:
Variable1 = Variable1 + Variable2;
Variable2 = Variable1 – Variable2;
Variable1 = Variable1 – Variable2;

اپراتور مشروط

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

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

علاوه بر شرایط ساده و چندگانه، یک شکل اختصاری از عملگر شرطی وجود دارد: ?(Condition, Expression1, Expression2);

اگر شرط درست است، پس بیان 1، در غیر این صورت - بیان 2. مثال کد: ExpensiveItem = ?(Item.Price>100000, True, False);

در عمل، به جای مقایسه رکوردها با مقدار درست است، واقعی (دروغ) نوع:

If Variable = True then
و
اگر متغیر = نادرست سپس

نماد معادل در واقع استفاده می شود:

اگر متغیر سپس
و
اگر NOT متغیر سپس

بیانیه های چرخه ای

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

چرخه با شمارنده- یک چرخه با تعداد تکرار ثابت. شرط خروج از حلقه، تجاوز از مقدار حد است. مثالی از استفاده برای محاسبه مقدار A!

A = 5;
فاکتوریل = 1;
برای شمارنده = 1 توسط یک حلقه
فاکتوریل = فاکتوریل * شمارنده;
چرخه پایان

حلقه بر اساس شرط– در حالی اجرا می شود که شرط این چرخه درست است. مثال:

RemainderSum = 1000;
قیمت کالای اضافی = 243;
مقدار = 0;
چرخه while RemainingAmount>0
مقدار = کمیت + 1;
مقدار باقیمانده = مقدار باقیمانده - مقدار * قیمت کالاهای اضافی;
قیمت اضافی = قیمت اضافی * 0.8;
چرخه پایانی
مقدار = مقدار-1;

این حلقه محاسبه می کند که اگر پس از خرید هر واحد از یک محصول، قیمت قبلی آن در ضریب 0.8 ضرب شود، چند واحد از یک محصول را می توان برای یک مقدار معین (1000 روبل) خریداری کرد. قیمت اولیه کالا 243 روبل است.

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

از میان مجموعه ها حلقه بزنید (نام دیگری برای هر کدام است).

پلتفرم تعداد نسبتاً زیادی مجموعه دارد (اینها ظروف حاوی عناصری از نوع خاصی هستند).

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

به عنوان مثال، یک آرایه از اعداد وجود دارد، شما باید مجموع تمام عناصر آرایه را محاسبه کنید:

مجموع = 0;
برای هر عنصر از حلقه آرایه
Sum=Sum+Item;
چرخه پایان

عملگرهای خاصی برای حلقه ها وجود دارد: ادامه دهیدو سقط.

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

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

این اولین آشنایی ما با توسعه در زبان داخلی 1C را به پایان می رساند.

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

انجمن اوکراینی 1C: همه چیز درباره 1C 8.3، 1C 8.2، 1C 8.1، 1C 8.0، 1C 7.7 _ سیستم ترکیب داده _ زبان بیان سیستم ترکیب داده ها

محتوا
1 زبان بیان سیستم ترکیب داده
2 لفظ
2.1 خط
2.2 شماره
2.3 تاریخ
2.4 بولی
2.5 معنی
3 عملیات روی اعداد
3.1 Unary -
3.2 Unary +
3.3 باینری -
3.4 باینری +
3.5 آثار هنری
3.6 بخش
3.7 باقیمانده
4 عملیات روی رشته ها
4.1 الحاق (باینری +)
4.2 مشابه
5 عملیات مقایسه
5.1 برابر است
5.2 برابر نیست
5.3 کمتر
5.4 بیشتر
5.5 کمتر یا مساوی
5.6 بزرگتر یا مساوی
5.7 عملیات B
5.8 عملیات بررسی وجود یک مقدار در یک مجموعه داده
5.9 عملیات تست NULL
5.10 عملیات تست NULL
6 عملیات بولی
6.1 عملیات خیر
6.2 عملیات و
6.3 عملیات OR
7 توابع جمع
7.1 مقدار
7.2 مقدار
7.3 تعداد مختلف
7.4 حداکثر
7.5 حداقل
7.6 متوسط
8 سایر عملیات
8.1 عملیات SELECT
9 قانون برای مقایسه دو مقدار
10 کار با null
11 اولویت های عملیاتی
12 توابع زبان بیان سیستم ترکیب داده
12.1 محاسبه کنید
12.2 سطح
12.3 شماره سفارش
12.4 NumberInOrderInGroup
12.5 فرمت
12.6 دوره شروع
12.7 پایان دوره
12.8 AddDate
12.9 DifferenceDate
12.10 رشته فرعی
12.11 طول رشته
12.12 سال
12.13 سه ماهه
12.14 ماه
12.15 روز سال
12.16 روز
12.17 هفته
12.18 روز هفته
ساعت 12.19
12.20 دقیقه
12.21 ثانیه
12.22 اکسپرس
12.23 بله صفر
12.24 توابع ماژول عمومی

زبان بیان سیستم ترکیب داده ها

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

عبارات در زیر سیستم های زیر استفاده می شود:

  • طرح ترکیب داده - برای توصیف فیلدهای محاسبه شده، کل فیلدها، عبارات پیوند و غیره؛
  • تنظیمات ترکیب داده - برای توصیف عبارات فیلد سفارشی.
  • چیدمان ترکیب داده - برای توصیف عبارات رابطه مجموعه داده، توصیف پارامترهای چیدمان و غیره.

تحت اللفظی

عبارت می تواند حاوی لفظ باشد. لفظ های ممکن از انواع زیر:

  • خط؛
  • عدد؛
  • تاریخ؛
  • بولی.

خط

یک رشته واقعی با کاراکترهای "" نوشته می شود، به عنوان مثال:

"رشته واقعی"


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

مثلا:

" تحت اللفظی "" در نقل قول """

عدد

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

تاریخ

یک نوع تاریخ تحت اللفظی با استفاده از کلید واژه DATETIME نوشته می شود. بعد از این کلمه کلیدی در داخل پرانتز که با کاما از هم جدا شده اند، سال، ماه، روز، ساعت، دقیقه، ثانیه درج شده است. نشان دادن زمان لازم نیست.

مثلا:
DATETIME (1975، 1، 06) - 6 ژانویه 1975
DATETIME(2006, 12, 2, 23, 56, 57) – 2 دسامبر 2006, 23:56:57, 23:56:57

بولی

مقادیر بولی را می توان با استفاده از حروف واقعی True (True)، False (False) نوشت.

معنی

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

عملیات روی اعداد

یگانه -

این عملیات برای معکوس کردن علامت یک عدد طراحی شده است. مثلا:
-Sales.Quantity

Unary +

این عملیات هیچ عملیاتی روی شماره انجام نمی دهد. مثلا:
+فروش.تعداد

دودویی -

این عملیات برای محاسبه اختلاف دو عدد طراحی شده است. مثلا:
RemainsAndTurnovers.InitialRemainder - RemainsAndTurnovers.EndRemaining
RemainsAnd Turnovers.InitialRemainder - 100
400 – 357

باینری +

این عملیات برای محاسبه مجموع دو عدد طراحی شده است. مثلا:
موجودی و گردش مالی موجودی اولیه + موجودی و گردش مالی
RemainsAnd Turnovers.InitialRemainder + 100
400 + 357

کار کنید

این عملیات برای محاسبه حاصل ضرب دو عدد طراحی شده است. مثلا:
نامگذاری.قیمت * 1.2
2 * 3.14

بخش

این عملیات برای بدست آوردن نتیجه تقسیم یک عملوند بر عملوند دیگر طراحی شده است. مثلا:
نامگذاری.قیمت / 1.2
2 / 3.14

باقی مانده از تقسیم

این عملیات برای بدست آوردن باقیمانده تقسیم یک عملوند بر عملوند دیگر طراحی شده است. مثلا:
نامگذاری.قیمت % 1.2
2 % 3.14

عملیات روی رشته ها

الحاق (باینری +)

این عملیات برای به هم پیوستن دو رشته طراحی شده است. مثلا:
نامگذاری.مقاله + “: ”+ نامگذاری.شرح

پسندیدن

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

اگر مقدار عملگر LIKE باشد، مقدار TRUE است<Выражения>با الگو مطابقت دارد و در غیر این صورت FALSE.

شخصیت های زیر در<Строке_шаблона>معنایی غیر از یک کاراکتر دیگر در رشته داشته باشد:

  • % - درصد: دنباله ای حاوی صفر یا بیشتر کاراکتر دلخواه.
  • _ - زیر خط: یک کاراکتر دلخواه.
  • [...] - یک یا چند نویسه در کروشه مربع: یک نویسه، هر یک از آنهایی که در داخل پرانتز ذکر شده است. شمارش می‌تواند شامل محدوده‌هایی باشد، مانند a-z، که به معنای هر کاراکتری در محدوده، از جمله انتهای محدوده است.
  • [^…] - در پرانتز یک نماد نفی به دنبال یک یا چند کاراکتر: هر کاراکتری غیر از آنهایی که بعد از نماد نفی فهرست شده است.

هر علامت دیگری به معنای خودش است و بار اضافی را حمل نمی کند. اگر لازم است یکی از کاراکترهای فهرست شده به عنوان خودش نوشته شود، باید قبل از آن نوشته شود<Спецсимвол>بعد از کلمه کلیدی ESCAPE مشخص شده است.

مثلا قالب
"%ABC[abc]\_abc%" نویسه خاص "\"

به معنی یک رشته فرعی متشکل از دنباله ای از کاراکترها است: حروف A; حروف B; حروف B; یک رقمی؛ یکی از حروف a، b، c یا d؛ شخصیت زیرخط. حروف a; حروف ب نامه ها در علاوه بر این، این دنباله را می توان با شروع از یک موقعیت دلخواه در رشته قرار داد.

عملیات مقایسه

برابر است

این عملیات برای مقایسه دو عملوند برای برابری طراحی شده است. مثلا:
Sales.Counterparty = Sales.NomenclatureMainSupplier

نا برابر

این عملیات برای مقایسه دو عملوند برای نابرابری طراحی شده است. مثلا:
Sales.Counterparty Sales.NomenclatureMainSupplier

کمتر

این عملیات برای بررسی اینکه عملوند اول کمتر از عملوند دوم است طراحی شده است. مثلا:
SalesCurrent.Amount

بیشتر

این عملیات برای بررسی بزرگتر بودن عملوند اول از دومی طراحی شده است. مثلا:
SalesCurrent.Amount > SalesPast.Amount

کمتر یا مساوی

این عملیات برای بررسی اینکه عملوند اول کمتر یا مساوی دومی است طراحی شده است. مثلا:
SalesCurrent.Amount

بیشتر یا برابر

این عملیات برای بررسی اینکه عملوند اول بزرگتر یا مساوی با دومی است طراحی شده است. مثلا:
SalesCurrent.Amount >= SalesPast.Amount

عملیات B

این عملیات وجود یک مقدار را در لیست مقادیر ارسال شده بررسی می کند. در صورت یافتن مقدار، نتیجه عملیات True یا در غیر این صورت False خواهد بود. مثلا:
مورد B (&Item1, & Item2)

عملیات بررسی اینکه آیا یک مقدار در یک مجموعه داده وجود دارد یا خیر

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

عملیات بررسی NULL

اگر مقدار NULL باشد، این عملیات True را برمی گرداند. مثلا:
فروش. پیمانکار تهی است

عملیات بررسی یک مقدار برای غیر NULL

اگر مقدار NULL نباشد، این عملیات True را برمی گرداند. مثلا:
فروش. پیمانکار پوچ نیست

عملیات بولی

عملیات بولی عباراتی از نوع بولی را به عنوان عملوند می پذیرد.

عملیات NOT

عملگر NOT اگر عملوند آن False باشد True را برمی‌گرداند و اگر عملوند آن True باشد False را برمی‌گرداند. مثلا:
NOT Document.Consignee = Document.Consignor

عملیات و

اگر هر دو عملوند True باشند، عملیات AND True را برمی‌گرداند و اگر یکی از عملوندها False باشد، False را برمی‌گرداند. مثلا:
Document. Consigner = Document. Consignor AND Document. Consigner = & Contractor

یا عملیات

اگر یکی از عملوندها True باشد، عملیات OR True و اگر هر دو عملوند نادرست باشد، False را برمی‌گرداند. مثلا:
Document.Consignee = Document.Consignor OR Document.Consignee = &Contractor

توابع جمع

توابع انباشته برخی اقدامات را روی مجموعه ای از داده ها انجام می دهند.

مجموع

تابع Sum aggregate مجموع مقادیر عبارات ارسال شده به آن را به عنوان آرگومان برای تمام رکوردهای دقیق محاسبه می کند. مثلا:
Amount (Sales.AmountTurnover)

تعداد

تابع Count تعداد مقادیر غیر تهی را می شمارد. مثلا:
مقدار (فروش. پیمانکار)

تعداد مختلف

این تابع تعداد مقادیر متمایز را می شمارد. مثلا:
تعداد (فروش های مختلف. پیمانکار)

بیشترین

تابع حداکثر مقدار را دریافت می کند. مثلا:
حداکثر (باقی مانده. مقدار)

کمترین

تابع حداقل مقدار را دریافت می کند. مثلا:
حداقل (موجودی. مقدار)

میانگین

تابع میانگین مقادیر غیر تهی را دریافت می کند. مثلا:
میانگین (باقی مانده. مقدار)

سایر عملیات

عملیات SELECT

عملیات Select برای انتخاب یکی از چندین مقدار تحت شرایط خاص طراحی شده است. مثلا:
وقتی Sum > 1000 سپس Sum Else 0 End را انتخاب کنید

قوانین مقایسه دو مقدار

اگر انواع مقادیر مقایسه شده با یکدیگر متفاوت باشند، رابطه بین مقادیر بر اساس اولویت انواع تعیین می شود:
NULL (کمترین)؛
بولی;
عدد؛
تاریخ؛
خط؛
انواع مرجع

روابط بین انواع مختلف مرجع بر اساس شماره مرجع جداول مربوط به یک نوع خاص تعریف می شود.

اگر انواع داده ها مطابقت داشته باشند، مقادیر مطابق قوانین زیر مقایسه می شوند:
نوع Boolean TRUE بزرگتر از FALSE است.
نوع Number دارای قوانین مقایسه معمول برای اعداد است.
برای نوع Date، تاریخ های قبلی کمتر از تاریخ های بعدی هستند.
برای نوع رشته - مقایسه رشته ها مطابق با ویژگی های ملی تعیین شده پایگاه داده.
انواع مرجع بر اساس مقادیر آنها (تعداد رکورد و غیره) مقایسه می شوند.

کار با NULL

هر عملیاتی که در آن مقدار یکی از عملوندها NULL باشد، یک نتیجه NULL ایجاد می کند.

استثناهایی وجود دارد:
عملیات AND فقط در صورتی NULL را برمی گرداند که هیچ یک از عملوندها False نباشد.
عملیات OR فقط در صورتی NULL را برمی گرداند که هیچ یک از عملوندها True نباشد.

اولویت های عملیات

عملیات دارای اولویت های زیر است (خط اول کمترین اولویت را دارد):
یا؛
و
نه
B، IS NULL، IS NOT NULL.
=, <>, <=, <, >=, >;
باینری +، باینری – ;
*, /, %;
Unary +، ​​Unary -.

توابع زبان بیان سیستم ترکیب داده

محاسبه

تابع Calculate برای محاسبه یک عبارت در زمینه گروه بندی طراحی شده است. تابع دارای پارامترهای زیر است:
اصطلاح. String را تایپ کنید. شامل یک عبارت محاسبه شده است.
گروه بندی. String را تایپ کنید. شامل نام گروهی است که عبارت باید در زمینه آن ارزیابی شود. اگر یک رشته خالی به عنوان نام گروه بندی استفاده شود، محاسبه در زمینه گروه بندی فعلی انجام می شود. اگر رشته GrandTotal به عنوان نام گروه بندی استفاده شود، محاسبه در زمینه کل کل انجام می شود. در غیر این صورت، محاسبه در زمینه گروه بندی والد با آن نام انجام می شود. مثلا:
Amount(Sales.AmountTurnover) / Calculate("Amount(Sales.AmountTurnover)"، "TotalTotal")

در این مثال، نتیجه نسبت مقدار موجود در قسمت "Sales.AmountTurnover" رکورد گروه بندی به مقدار همان فیلد در کل طرح بندی خواهد بود.

مرحله

عملکرد برای دریافت سطح ضبط فعلی طراحی شده است.

مثال:
مرحله()

NumberInOrder

شماره دنباله بعدی را دریافت کنید.

مثال:
شماره سفارش()

NumberIn OrderInGrouping

شماره دنباله بعدی را در گروه بندی فعلی برمی گرداند.

مثال:
NumberInOrderInGroup()

قالب

رشته فرمت شده مقدار ارسال شده را دریافت کنید.

رشته قالب مطابق با رشته قالب 1C: Enterprise تنظیم شده است.

گزینه ها:
معنی؛
رشته را قالب بندی کنید.

مثال:
قالب (صورت‌حساب‌های هزینه.AmountDoc، "NPV=2")

شروع دوره

گزینه ها:

    • دقیقه؛
    • روز؛
    • یک هفته؛
    • ماه؛
    • ربع؛
    • دهه؛
    • نصف سال.

مثال:
PeriodStart(DateTime(2002, 10, 12, 10, 15, 34), "Month")

نتیجه:

01.10.2002 0:00:00

پایان دوره

این تابع برای استخراج یک تاریخ خاص از یک تاریخ معین طراحی شده است.

گزینه ها:

  • تاریخ. تاریخ را تایپ کنید. تاریخ داده شده؛
  • نوع دوره String را تایپ کنید. حاوی یکی از مقادیر زیر است:
    • دقیقه؛
    • روز؛
    • یک هفته؛
    • ماه؛
    • ربع؛
    • دهه؛
    • نصف سال.

مثال:
EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Week")

نتیجه:

13.10.2002 23:59:59

AddDate

این تابع برای افزودن مقداری به تاریخ طراحی شده است.

گزینه ها:

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

مثال:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Month", 1)

نتیجه:

12.11.2002 10:15:34

DifferenceDate

این تابع برای بدست آوردن تفاوت بین دو تاریخ طراحی شده است.

گزینه ها:

  • اصطلاح. تاریخ را تایپ کنید. تاریخ اصلی؛
  • اصطلاح. تاریخ را تایپ کنید. تاریخ کسر شده؛
  • نوع تفاوت String را تایپ کنید. حاوی یکی از مقادیر زیر است:
    • دومین؛
    • دقیقه؛
    • روز؛
    • ماه؛
    • ربع؛

مثال:
تفاوت تاریخ (DATETIME(2002، 10، 12، 10، 15، 34)،
DATETIME(2002، 10، 14، 9، 18، 06)، "DAY")

نتیجه:

رشته فرعی

این تابع برای انتخاب یک رشته فرعی از یک رشته طراحی شده است.

گزینه ها:

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

مثال:
SUBSTRING(Accounts.Address, 1, 4)

طول رشته

این تابع برای تعیین طول یک رشته طراحی شده است.

پارامتر:
خط. String را تایپ کنید. رشته ای که طول آن در حال تعیین است.

مثال:
رشته (Accounts. Address)

این تابع برای استخراج سال از مقداری از نوع Date طراحی شده است.

پارامتر:
تاریخ. تاریخ را تایپ کنید. تاریخی که در آن سال تعیین می شود.

YEAR (تاریخ شامل)

ربع

این تابع برای استخراج تعداد یک چهارم از مقدار نوع Date طراحی شده است. تعداد بلوک معمولاً از 1 تا 4 متغیر است.

پارامتر
تاریخ. تاریخ را تایپ کنید. تاریخی که سه ماهه تعیین می شود

QUARTER (فاکتور. تاریخ)

ماه

این تابع برای استخراج عدد ماه از مقداری از نوع Date طراحی شده است. شماره ماه معمولاً در محدوده 1 تا 12 است.
تاریخ. تاریخ را تایپ کنید. تاریخی که ماه تعیین می شود.
MONTH (فاکتور. تاریخ)

روز سال

این تابع برای دریافت روز سال از مقدار نوع Date طراحی شده است. روز سال معمولاً از 1 تا 365 (366) متغیر است.
تاریخ. تاریخ را تایپ کنید. تاریخی که در آن روز سال تعیین می شود.
روز سال (تاریخ Exp.Inc.Date)

روز

این تابع برای دریافت روز ماه از مقداری از نوع Date طراحی شده است. روز ماه معمولاً از 1 تا 31 متغیر است.
تاریخ. تاریخ را تایپ کنید. تاریخی که در آن روزهای ماه تعیین می شود.
DAY (تاریخ Exp.Inc.Date)

یک هفته

این تابع برای بدست آوردن عدد هفته از مقداری از نوع Date طراحی شده است. هفته های سال از 1 شماره گذاری می شوند.
تاریخ. تاریخ را تایپ کنید. تاریخی که اعداد هفته تعیین می شود.
WEEK (تاریخ Exp.Inc.Date)

روز هفته

این تابع برای دریافت روز هفته از مقداری از نوع Date طراحی شده است. روز هفته معمولاً از 1 (دوشنبه) تا 7 (یکشنبه) متغیر است.
تاریخ. تاریخ را تایپ کنید. تاریخی که در آن روز هفته تعیین می شود.
روز هفته (تاریخ Exp.Inc.Date)

این تابع برای دریافت ساعت روز از مقدار نوع Date طراحی شده است. ساعت روز از 0 تا 23 متغیر است.
تاریخ. تاریخ را تایپ کنید. تاریخی که ساعت روز تعیین می شود.
HOUR (تاریخ Exp.Inc.)

دقیقه

این تابع برای دریافت دقیقه ساعت از مقدار نوع Date طراحی شده است. دقیقه ساعت از 0 تا 59 متغیر است.
تاریخ. تاریخ را تایپ کنید. تاریخی که دقیقه ساعت تعیین می شود.
MINUTE (تاریخ Exp.Inc.)

دومین

این تابع برای دریافت ثانیه از یک دقیقه از مقدار نوع Date طراحی شده است. ثانیه از یک دقیقه از 0 تا 59 متغیر است.
تاریخ. تاریخ را تایپ کنید. تاریخی که ثانیه های دقیقه تعیین می شود.
SEC (تاریخ Exp.Inc.)

بیان

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

گزینه ها:
عبارتی که باید تبدیل شود.
نشانگر نوع String را تایپ کنید. شامل یک نوع رشته است. به عنوان مثال، "Number"، "String" و غیره. علاوه بر انواع اولیه، این رشته ممکن است حاوی نام یک جدول باشد. در این صورت سعی می شود به یک ارجاع به جدول مشخص شده بیان شود.

مثال:
Express(Data.Attribute1، "Number(10,3)")

پوچ است

اگر مقدار پارامتر اول NULL باشد، این تابع مقدار پارامتر دوم را برمی گرداند.

در غیر این صورت مقدار پارامتر اول برگردانده می شود.

مثال:
IsNULL(مبلغ(فروش، مقدار گردش)، 0)

توابع ماژول مشترک

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

مثال:
نام اختصاری (اسناد. پیوند، اسناد. تاریخ، اسناد. شماره)

در این مثال، تابع "ShortName" از ماژول پیکربندی عمومی فراخوانی می شود.

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

همچنین، توابع متداول ماژول را نمی توان در عبارات فیلد سفارشی استفاده کرد.

Php؟ D1.80.D0.B8.D0.BE.D0.B4.D0.B0

انجمن اوکراین 1C: همه چیز درباره 1C 8.3، 1C 8.2، 1C 8.1، 1C 8.0، 1C 7.7
http://site

برترین مقالات مرتبط