نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • اهن
  • 1s مقدار رشته خالی را بررسی کنید. کار با مقادیر null در یک پرس و جو

1s مقدار رشته خالی را بررسی کنید. کار با مقادیر null در یک پرس و جو

منظور از خط در 1s چیست

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

نمایش ("سلام جهان!")؛

همچنین باید به خاطر داشت که برخی از روش‌ها، چه سیستمی و چه خودنوشته، می‌توانند یک مقدار رشته را برگردانند.

برای اینکه بفهمیم مقدار مورد نظر ما یک رشته است یا نه، می‌توان نوع آن را با نوع "" مقایسه کرد. خط":

If TypeValue("Some text") = Type("String") سپس Report("Value type - String"); EndIf

چندین تابع ویژه برای کار با یک رشته وجود دارد که انواع دیگر را به رشته تبدیل می کند و بالعکس. در اینجا چند نمونه آورده شده است:

رشته به عدد

شماره ("123.45");

شماره ("123.45");

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

رشته به تاریخ

تاریخ ("20101220235959");

زمان اختیاری است (6 کاراکتر آخر).

بررسی رشته خالی

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

خط خالی (" ");
EmptyString(" a ");

عدد به رشته

رشته (123.45); فرمت(1253.25);

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

اگر "پنجشنبه" = "پنجشنبه" سپس
EndIf

علامت مثبت (+) برای اتصال رشته ها استفاده می شود. به هم پیوستن رشته ها در برنامه نویسی، الحاق می گویند.

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

SomeThingString = ""+DayYear(CurrentDate()) +DayWeek(CurrentDate());

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

همانطور که می بینید، فضای کافی برای جدا کردن روز سال و روز هفته وجود ندارد، برای این کار می توانید یک فاصله ("") به صورت زیر اضافه کنید:

SomeString = ""+DayYear(CurrentDate()) + " " +DayWeek(CurrentDate());

شکستن خط

برای شکستن یک خط می توانید از یکی از کاراکترهای break استفاده کنید:

SomeThingString = ""+DayYear(CurrentDate()) + Symbols.PS + DayWeek(CurrentDate());

یا خط مستقیم

SomeThingString = ""+DayYear(CurrentDate()) + " |"+DayWeek(CurrentDate());

در حین کار با کوئری ها، هر برنامه نویسی باید با مقادیر خالی به روشی تعامل داشته باشد. منظور ما از مقدار خالی چیست؟

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

انواع Nulls

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

  • برای نوع Number - مقدار خالی صفر - 0 است.
  • برای نوع String - یک رشته خالی - "".
  • برای نوع Date، اول ژانویه سال اول 01.01.0001 00:00:00 است. از این تاریخ است که زمان بر حسب 1 درجه سانتیگراد شمارش می شود.
  • برای نوع Boolean، مقدار پیش‌فرض از نظر فنی False است، اما از نظر منطقی هر دو مقدار نوع پر می‌شوند. بنابراین، تصمیم گیری در مورد False بودن یا نبودن مقدار خالی بر اساس منطق یک الگوریتم خاص است.

*مراقب باشید، خارج از 1C سیستم های تاریخ متفاوتی با نقاط مرجع متفاوت وجود دارد.

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

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

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

کار با مقادیر null در یک پرس و جو

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

انواع عدد، رشته، بولیدر درخواست به صورت زبان داخلی توضیح داده شده است:

0 AS ExampleTypeNumber، "Hello World" AS ExampleTypeString، True AS ExampleTypeBoolean

تعریف نشده، که اساساً یک نوع اولیه است، به طور مشابه توصیف می شود:

Lots.Period را از Accumulation Register انتخاب کنید.Lots As Lots Where Remains.BatchDocument = Undefined

تعریف مقادیر مرجع خالی کمی دشوارتر است. تمام اشیاء مرجع دارای یک مقدار سرویس از پیش تعریف شده EmptyReference هستند. به لطف این، می توان یک پیوند خالی را به یک روش انتخاب کرد - از طریق تابع Value:

مقدار را انتخاب کنید(Reference.Nomenclature.EmptyReference) As Empty Nomenclature

امکانات کار با مقادیر Null تا حدودی غنی تر است. مانند سایر انواع ابتدایی، Null به همان روشی که در زبان داخلی توضیح داده شده است. علاوه بر این، عملگر ویژه Is Null و تابع Is Null ارائه شده است.

  • عملگر Is Null به شما امکان می دهد یک عبارت Boolean ایجاد کنید که مقدار انتخاب شده را با مقدار Null مقایسه می کند.
  • تابع IsNull آرگومان اول را اگر Null نباشد و آرگومان دوم را در غیر این صورت برمی گرداند.

عباراتی که null ها را تعریف می کنند را می توان در هر بخش کوئری که عبارات را پشتیبانی می کند استفاده کرد. به عنوان مثال، می توانید یک لینک null به بخش Select یا یک تست Null به Condition اضافه کنید.

نمونه های عملی

با استفاده از تابع Value

Goods.Reference را به عنوان نامگذاری انتخاب کنید، Goods.Reference = Value(Catalog.Nomenclature.EmptyReference) مانند اینReferenceEmpty From wGoods As wGoods

استفاده از عملگر Is Null

Goods.Link را به عنوان نامگذاری انتخاب کنید، Goods.Link مانند ThisLinkEmpty خالی است

نال در سمت چپ یا پیوستن کامل

بررسی پوچ

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

WProducts.Reference را به‌عنوان نام‌گذاری، Remains.QuantityRemainder را به‌عنوان کمیت، Remains.QuantityRemainder را به‌عنوان NoRemainder از WProducts به‌عنوان WProducts انتخاب کنید چپ پیوستن Accumulation Register.GoodsIn Warehouses.Remainders As Balance By TueGoods.Reference = Remains.Nomenclature

مدیریت مقادیر پوچ

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

TueProducts.Reference را به عنوان نامگذاری، IsNull(Remains.QuantityRemainder، 0) را به عنوان مقدار از TueProducts به عنوان WProducts انتخاب کنید چپ پیوستن Accumulation Register.GoodsIn Warehouses.Remainders As Balance By TueGoods.Reference = Remains.Nomenclature

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

Query.Text = "انتخاب | withStorageUnits.Ref |FROM | Reference.usStorageUnits AS withStorageUnits // مثال 1. مقایسه با یک مقدار بولی خالی: |WHERE | withStorageUnits.AllowFilterFromStandbyArea = False // اگر این boole تعریف شود، به عنوان مثال 2. پس بهتر است مانند این: // شرط در یک بولی منفی: |WHERE | NOT withStorageUnits.AllowFilterFromReserveZone // مثال 3. انتخاب با شرط یک فیلد خالی از نوع "مرجع نوع بتن" |WHERE | withStorageUnit.ActiveFilterArea = VALUE(Catalog .cFilterArea.EmptyReference ) // مثال 3a. انتخاب با شرط یک فیلد خالی از نوع "سند نوع خاص" | WHERE | OurRegister of Information.Document = VALUE(Document.OurDocument.NullReference) // مثال 3b. انتخاب با شرط یک فیلد خالی از نوع " اسناد انواع مختلف" (فیلد مرکب) |WHERE | (OurInformationRegister.Document = VALUE(Document.OurDocument1.EmptyReference) | یا OurInformationRegister.Document = VALUE(Document .OurDocument2.EmptyLink) | یا...(و غیره - به ترتیب شرایط را برای همه انواع ممکن این فیلد ترکیبی فهرست کنید)) // مثال 4. یا برعکس، اگر نیاز به انتخاب یک مقدار پر شده از نوع "رشته" دارید، آنگاه شرط کمک: |WHERE | usStorageUnits.Name > """ // مثال 5. اگر شما نیاز به انتخاب اسناد از یک نوع خاص، با یک نوع داده ترکیبی دارید، به عنوان مثال، در ثبات "وظایف اجرا شده"، منبع "Task" یک نوع ترکیبی دارد. ، در میان مقادیری که سند "انتخاب" ممکن است | WHERE | EXPRESS(InformationRegisterJobs to be perform.Task AS Document.Selection) REF Document.Selection // مثال 5a. مثال مشابه دیگری زمانی که باید اسنادی از نوع خاص را انتخاب کنید | انتخاب | WHEN TO EXPRESS(agDocument Compliance.DocumentBU AS Document.Incoming Products/Services) مرجع سند.کالاها/خدمات ورودی | سپس ""دریافت کالای خدمات"" | WHEN TO EXPRESS(ar Correspondence of Documents.DocumentBU AS Document.Sales of Goods of Service) مرجع سند.فروش کالاهای خدمات | سپس «تحقق کالا و خدمات» | دیگر """" | END AS DocumentType // مثال 6. انتخاب با شرط یک مقدار تعریف نشده: |WHERE | SavedSettings.User = UNDEFINITION // مثال 7. انتخاب بر اساس نوع حرکت "Incoming" ثبت تجمع، "هزینه" - به طور مشابه): |WHERE | RegProductsRetail.MovementType = VALUE(MovementTypeAccumulation.Income) // مثال 8. چگونه در یک پرس و جو نشان دهیم که اجرای یک پرس و جو ضروری نیست (به عنوان مثال، شما باید بسته به شرایطی یک نتیجه پرس و جو خالی را به صورت برنامه نویسی برگردانید - درخواست. Text = StrReplace(Query.Text، "WHERE Doc.Link = &DocumentLink"، "WHERE FALSE");). برای انجام این کار، فقط شرط "Where is False" را اضافه کنید. به هر حال، صرف نظر از میزان داده های درخواست شده در نمونه، چنین درخواستی به صورت آنی اجرا می شود. |WHERE FALSE // مثال 9. بررسی اینکه نتیجه پرس و جو حاوی داده است: If NOT Query.Execute().Empty() سپس // مثال 10. انتخاب با شرط تاریخ خالی: |WHERE | tbRows.CancellationDate = DATETIME(1، 1، 1)

در 1C، بررسی مقدار خالی توسط یک تابع خاص انجام می شود. برای بررسی اینکه آیا ویژگی یا متغیری که دارید پر شده است یا خیر، باید از تابعی از زمینه جهانی استفاده کنید ValueFilled(<Значение>) .

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

1s مقدار خالی را بررسی کنید. مثال ها

متغیر = References.Nomenclature.EmptyReference(); Check = ValueFilled(Variable);

در این حالت متغیر معاینهحاوی مقدار خواهد بود دروغ. همچنین عملکرد ValueFilled(<Значение>) . می توان به طور مستقیم در شرایط استفاده کرد.

مثال 1.1

If ValueFilled(Variable) then Report("مقدار موجود در متغیر خالی نیست!"); EndIf

متغیر = Documents.Expense Report.FindBy Number("000000001"); Check = ValueFilled(Variable);

در این مثال اگر سند گزارش قبلیبا شماره 000000001 وجود دارد، سپس در متغیر معاینهحاوی مقدار خواهد بود درست است، واقعی، در غیر این صورت دروغ.

استفاده از تابع ValueFilledبرای متغیرهایی از انواع قابل تغییر مانند جدول مقادیر, درخت ارزشو غیره. این تابع برای تمام تنظیمات کار می کند.

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

مثال 3. اجازه دهید جدول من- جدول مقادیر تعریف شده در بالا در کد.

اگر MyTable.Count() = 0 سپس Return; EndIf

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

مثال 4. اجازه دهید MyTreeدرخت ارزش است که در بالا در کد تعریف شده است.

اگر MyTree.Rows.Count() = 0 سپس Return; EndIf

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

مثال 5. اجازه دهید استعلام- پرس و جو به پایگاه داده 1C 8، تعریف شده در بالا.

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

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

بررسی این مقدار را می توان با استفاده از ساختار "IS NULL" و "" انجام داد. در حالت اول True یا False برگردانده می شود. در حالت دوم، می توانید بلافاصله مقدار دیگری را در حالتی که NULL برگردانده شود، تنظیم کنید.

جستار 1C 8.3 زیر فهرستی از افراد تماس را برای آن دسته از شرکا که مجموعه ای از بخش ندارند برمی گرداند.

انتخاب کنید
ContactPartners.Link
از جانب
Directory.Contact Persons of Partners AS Contact Persons of Partners
پیوستن داخلی
PO ContactPartners.Owner = SegmentsPartners.Parent
جایی که
SegmentsPartners.Reference NULL است

تاریخ خالی

مقدار با مقایسه آن با ساختار DATETIME(1، 1، 1، 0، 0، 0) برای یک تاریخ خالی بررسی می شود. یک مثال استفاده در زیر آورده شده است:

لینک خالی در درخواست 1C

در مواردی که ویژگی برگردانده شده دارای یک نوع مرجع باشد، به عنوان مثال، عنصری از دایرکتوری، سند و غیره باشد، ساختار زیر استفاده می شود: VALUE(Catalog.CatalogName.EmptyReference).

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

برای بررسی "ValueFilled" باید شرایط مخالف را انجام دهید:

Partners.BusinessRegion<>VALUE(Catalog.BusinessRegions.EmptyReference)

خط خالی

برای بررسی انواع رشته ها، مقایسه ای با الگوی دیگری انجام می شود. در این مورد - "".

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

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