چگونه می توان نوع (نوع) یک سند را در یک درخواست دریافت کرد؟ 1c مقایسه انواع در یک درخواست.

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

انواع ارزش

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

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

معاینه

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

VALUE TYPE (Value) = TYPE (رشته)

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

مستندات

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

  • DocumentLink. برای ذخیره راحت ارجاعات به اشیاء مختلف در سایر بخش های سیستم استفاده می شود.
  • DocumentObject - ویرایش اسناد.
  • DocumentSelection - مرتب سازی از طریق اشیاء از پایگاه داده.

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

  • فرم؛
  • خط
  • بولی;
  • عدد؛
  • تاریخ؛
  • آرایه؛
  • چک باکس؛
  • تصویر

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

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

حالا به بقیه نگاه کنیم.

توابع کار با رشته ها در جستارهای 1C

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

در مرحله اول، رشته ها در پرس و جوها را می توان اضافه کرد. برای انجام این کار، از عملگر "+" استفاده کنید:

درخواست. متن = "انتخاب کنید
""خط:" " + منبع.نام
;

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

  1. رشته منبع
  2. تعداد کاراکتری که خط انتخاب شده باید با آن شروع شود.
  3. شخصیت ها.

درخواست. متن = "انتخاب کنید
SUBSTRING("
"خط:" "، 4، 3) به عنوان یک نتیجه"; // نتیجه: باشه

تابع ISNULL

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

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

دو پارامتر دارد:

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

درخواست. متن = "انتخاب کنید
ISNULL(Source.Remainder, 0) AS Remainder"
; // اگر نتیجه درخواست باقیمانده فیلد = NULL باشد،
// سپس با 0 جایگزین می شود و می توانید عملیات ریاضی را با آن انجام دهید

کارکرد کاراییو لینک های مقدمه

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

درخواست. متن = "انتخاب کنید
بازنمایی (درست) به عنوان بولی،
نمایندگی (4) به عنوان یک عدد،
نمایندگی (Source.Link) به عنوان پیوند،
نمایندگی (DATETIME(2016,10,07)) به عنوان تاریخ"
;
// Boolean = "بله"، شماره = "4"، لینک = "سفارش رسید نقدی سند شماره .... از..."
// Date="07.10.2016 0:00:00"

درخواست. متن = "انتخاب کنید
RERESENTATIONREFERENCE (درست) به عنوان بولی،
RERESENTATIONREFERENCE(4) به عنوان شماره
PRESENTINGLINK(Source.Link) به عنوان پیوند،
RERESENTATIONREFERENCE(DATETIME(2016,10,07)) به عنوان تاریخ"
;
// Boolean = TRUE, Number = 4, Link = "سفارش رسید نقدی سند شماره .... از..."
// تاریخ=07.10.2016 0:00:00

کارکرد تایپ کنیدو TYPE Values

تابع تایپ کنیدنوع داده پلتفرم 1C: Enterprise را برمی گرداند.

درخواست. متن = "انتخاب کنید
TYPE (شماره)
TYPE (رشته)،
TYPE (سند. سفارش نقدی مخارج)"
;

تابع TYPE Valuesنوع مقدار ارسال شده به آن را برمی گرداند.

درخواست. متن = "انتخاب کنید
VALUES TYPE (5) به عنوان شماره،
TYPE ("
"خط" ") رشته AS،
TYPE (Source.Link) AS مرجع
از منبع Directory.Source AS"
;
//Number=Number، String=String، Directory = DirectoryLink.Source

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

درخواست. متن = "انتخاب کنید

از جانب

جایی که
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)"
;

تابع معنی

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

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

درخواست. متن = "انتخاب کنید
اطلاعات تماس. مقدمه
از جانب
ثبت اطلاعات اطلاعات تماس چگونه اطلاعات تماس
جایی که
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
و ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

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

اپراتور ارتباط دادن

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

به عنوان مثال، وظیفه انتخاب اطلاعات تماس برای طرفین می تواند به این ترتیب حل شود:

درخواست. متن = "انتخاب کنید
اطلاعات تماس. مقدمه
از جانب
ثبت اطلاعات اطلاعات تماس چگونه اطلاعات تماس
جایی که
ContactInformation.Object LINK Directory.Counterparties"
;

اپراتور بیان

اپراتور بیاندر پرس و جوهای 1C در دو مورد استفاده می شود:

  • هنگامی که شما نیاز به تغییر ویژگی های یک نوع اولیه دارید.
  • زمانی که باید یک فیلد با نوع داده مرکب را به یک فیلد با یک نوع تبدیل کنید.

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

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

درخواست. متن = "انتخاب کنید
مقدار (ورود کالاها و خدمات مختلف. پیوند) به عنوان پیوند
از جانب
دریافت کالا و خدمات نحوه دریافت کالا و خدمات
دسته بندی بر اساس
EXPRESS(دریافت کالا و خدمات. نظر در ردیف (200))"
;

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

درخواست. متن = "انتخاب کنید
EXPRESS (حرکت گردش کالا. سفارش به عنوان سند. سفارش مشتری). تاریخ به عنوان تاریخ سفارش،
حرکت گردش کالا. نامگذاری
از جانب
RegisterAcumulations.Movement of Goods.Turnover AS Movement of GoodsTurnover
جایی که
جابجایی کالاها. لینک سفارش سند. سفارش مشتری"
;

اپراتورها انتخابو تهی است

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

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

درخواست. متن = "انتخاب کنید
ContactInformation. مقدمه،
انتخاب
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
سپس "
طرف مقابل "
انتخاب دیگر
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Individuals)
سپس "
شخصی"
ELSE "یک نفر دیگر" "
پایان
پایان به عنوان مالک
از جانب
ثبت اطلاعات. اطلاعات تماس به عنوان اطلاعات تماس"
;

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

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

درخواست. متن = "انتخاب کنید
انتخاب
وقتی مقدار NULL است، 0 است
معنی ELSE
پایان"
;

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

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

سینتکس به خودی خود بسیار یادآور T-SQL کلاسیک است، با این تفاوت که در 1C، با استفاده از زبان پرس و جو، فقط می توانید داده ها را با استفاده از ساختار Select دریافت کنید. این زبان همچنین از ساختارهای پیچیده تری پشتیبانی می کند، به عنوان مثال، (درخواست در یک درخواست). پرس و جوها در 1C 8 را می توان به دو زبان سیریلیک و لاتین نوشت.

در این مقاله سعی می کنم در مورد کلمات کلیدی اصلی در زبان پرس و جو 1C صحبت کنم:

  • انتخاب کنید
  • مجاز است
  • مختلف
  • بیان
  • اولین
  • برای تغییر
  • معنی
  • نوع مقدار (و عملگر REFERENCE)
  • انتخاب
  • دسته بندی بر اساس
  • داشتن
  • ISNULL
  • بله NULL
  • اتصالات - راست، چپ، داخلی، کامل.

و همچنین برخی از ترفندهای کوچک زبان 1C که با استفاده از آنها می توانید متن درخواست را بهینه بسازید.

برای اشکال زدایی پرس و جوها در سیستم 1C 8.2، یک ابزار ویژه ارائه شده است - کنسول پرس و جو. با استفاده از لینک - می توانید توضیحات را مشاهده و دانلود کنید.

بیایید مهم ترین و جالب ترین عملگرهای زبان پرس و جو 1C را بررسی کنیم.

انتخاب کنید

در زبان پرس و جو 1C Enterprise 8، هر درخواستی با یک کلمه کلیدی شروع می شود انتخاب کنید. در زبان 1C هیچ ساختار UPDATE، DELETE، CREATE TABLE، INSERT وجود ندارد؛ این دستکاری ها در فناوری شی انجام می شود. هدف آن فقط خواندن داده ها است.

مثلا:

انتخاب کنید
فهرست راهنمای فعلی
از جانب
Directory.Nomenclature AS فهرست فعلی

پرس و جو جدولی را با نام آیتم ها برمی گرداند.

نزدیک سازه انتخاب کنیدمی توانید کلمات کلیدی را پیدا کنید برای تغییر, مجاز, مختلف, اولین

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

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

انتخاب (مورد)

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

فهرست راهنمای فعلی، نام،

WHEN Current Directory.Service THEN

"سرویس"

پایان نحوه مشاهده نامگذاری

Directory.Nomenclature AS فهرست فعلی

مثال یک مقدار متنی را در قسمت "نوع مورد" - "محصول" یا "سرویس" برمی گرداند.

جایی که

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

انتخاب کنید
فهرست نام
از جانب
Current Directory.Nomenclature AS فهرست فعلی
WHERE CurrentDirectory.Service = TRUE

در مثال، ما رکوردهایی را انتخاب می کنیم که برای آنها مقدار ویژگی "Service" روی "True" تنظیم شده است. در این مثال می‌توانیم با شرط زیر به نتیجه برسیم:

"خدمات کجاست"

در اصل، ما ردیف هایی را انتخاب می کنیم که عبارت بعد از کلمه کلیدی برابر با "True" باشد.

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

کد WHERE = "005215"

با استفاده از عملگر "VALUE()" در شرایط، از دسترسی به عناصر و شمارش های از پیش تعریف شده در یک درخواست 1C استفاده کنید:

WHERE نوع مورد = مقدار (Enumeration.Item Types.Product)

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

WHERE تاریخ دریافت > DATETIME(2012,01,01):

اغلب، شرایط به عنوان پارامترهای ارسال شده به درخواست مشخص می شود:

267 درس ویدیویی را در 1C به صورت رایگان دریافت کنید:

WHERE NomenclatureGroup= &NomenclatureGroup

اگر از نوع ترکیبی باشد، می توان یک شرط بر روی نوع ویژگی اعمال کرد:

اگر نیاز به محدود کردن انتخاب از لیست مقادیر یا آرایه دارید، می‌توانید موارد زیر را انجام دهید:

WHERE ثبت تجمع است. ثبت B (&فهرست اسناد برای انتخاب)

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

WHERE تاریخ دریافت > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup AND NOT Service

دسته بندی بر اساس

طراحی زبان پرس و جو 1C 8.2 که برای گروه بندی نتیجه استفاده می شود.

مثلا:

انتخاب کنید
دریافت کالا و خدمات کالا.
SUM (دریافت کالا خدمات کالاها. مقدار) مقدار،
SUM(دریافت کالاخدمات کالاها.مبلغ) AS Amount
از جانب
سند دریافت کالا و خدمات کالا چگونه دریافت کالا و خدمات کالا

دسته بندی بر اساس
رسید کالاخدمات کالاها.کالا

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

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

داشتن

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

مثالی از استفاده از HAVING در درخواست 1C:

انتخاب کنید
دریافت کالا و خدمات کالا.
SUM (دریافت کالا خدمات کالاها. مقدار) مقدار،
SUM(دریافت کالاخدمات کالاها.مبلغ) AS Amount
از جانب
سند دریافت کالا و خدمات کالا چگونه دریافت کالا و خدمات کالا

دسته بندی بر اساس
دریافت کالا و خدمات کالا

SUM (دریافت کالا خدمات کالاها. مقدار) > 5

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

معنی ()

مثلا:

WHERE Bank = Value (Directory.Banks.EmptyLink)

WHERE نوع نامگذاری = ارزش (Directory.Numenclature Types.Product)

WHERE نوع مورد = مقدار (Enumeration.Item Types.Service)

در درخواست تایپ کنید

نوع داده را می توان با استفاده از توابع TYPE() و VALUETYPE() یا با استفاده از عملگر REFERENCE منطقی بررسی کرد.

بیان()

عملگر Express در پرس و جوهای 1C برای تبدیل انواع داده استفاده می شود.

نحو: بیان(<Выражение>چگونه<Тип значения>)

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

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

انتخاب کنید
ContactInformation.Object،
EXPRESS(ContactInfo.View AS ROW(150)) AS View
از جانب
ثبت اطلاعات اطلاعات تماس چگونه اطلاعات تماس

دسته بندی بر اساس
EXPRESS(ContactInfo.Representation AS ROW(150))،
ContactInformation.Object

ISNULL (ISNULL)

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

ISNULL(مالیات قبل از ماه. مزیت AppliedFSS، 0)

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

پیوستن

4 نوع اتصال وجود دارد: ترک کرد, درست, کامل، داخلی.

اتصال چپ و راست

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

نمونه ای از پیوستن چپ در یک درخواست 1C:

کل جدول را برمی گرداند و فیلد "بانک" را فقط در مکان هایی پر می کند که شرط "Counterparties.Name = Banks.Name" وجود دارد. در صورت عدم رعایت شرایط، فیلد بانک به صورت تنظیم می شود خالی.

RIGHT JOIN به زبان 1C 8.3کاملا مشابه اتصال چپ، به استثنای یک تفاوت: در حق اتصالجدول "اصلی" دومی است نه اولی.

اتصال کامل

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

مثلا:

اتصال کامل
فهرست.بانک ها چگونه بانک ها

توسط

تنها در صورتی که شرط Join records برقرار باشد، زبان پرس و جو هر دو جدول را به طور کامل برمی گرداند. برخلاف اتصال چپ/راست، امکان دارد NULL در دو فیلد ظاهر شود.

پیوستن داخلی

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

مثلا:

از جانب
دایرکتوری. مشتریان AS طرف مقابل

پیوستن داخلی
فهرست.بانک ها چگونه بانک ها

توسط
مشتریان.نام = بانک ها.نام

این پرس و جو فقط ردیف هایی را برمی گرداند که بانک و طرف مقابل در آنها نام یکسان دارند.

نتیجه

این تنها بخش کوچکی از نحو از زبان پرس و جو 1C 8 است؛ در آینده سعی خواهم کرد برخی از نکات را با جزئیات بیشتر، نمایش و موارد دیگر در نظر بگیرم!

درخواست .متن = "انتخاب کنید | StorageUnits.Link |از | Directory.usStorageUnits چگونه touseStorageUnits // مثال 1: مقایسه با یک مقدار بولی خالی: | کجا | StorageUnits.AllowSelectionFromReserveZone = نادرست // مثال 2. اما اگر این Boolean تعریف شده باشد، بهتر است اینگونه باشد: // شرط برای یک Boolean منفی: | کجا | واحدهای ذخیره سازی نیستند. انتخاب از منطقه رزرو مجاز است // مثال 3. انتخاب بر اساس شرایط یک فیلد خالی که دارای نوع "directory of a specific type" است. | کجا | StorageUnits.ActiveSelectionArea = VALUE(Directory.usSelectionArea.EmptyRef) // مثال 3a. انتخاب بر اساس شرط یک فیلد خالی با نوع "سند نوع خاص" | کجا | OurInformationRegister.Document = VALUE(Document.OurDocument.EmptyLink) // مثال 3b. انتخاب بر اساس شرط یک فیلد خالی با نوع "اسناد از انواع مختلف" ( میدان مرکب) | کجا | (OurInformationRegister.Document = VALUE(Document.OurDocument1.EmptyLink) | OR OurInformationRegister.Document = VALUE(Document.OurDocument2.EmptyLink) | یا... (و غیره - ما به صورت متوالی شرایط همه انواع فیلد ممکن را فهرست می کنیم) ) // مثال 4. یا برعکس، اگر شما نیاز به انتخاب یک مقدار پر شده از نوع "رشته" دارید، شرط کمک خواهد کرد: | کجا | Storage Unit.Name > """" // مثال 5. اگر شما نیاز به انتخاب اسناد از یک نوع خاص، با یک نوع داده ترکیبی دارید، به عنوان مثال، در ثبات "RunningTasks"، منبع "Task" دارای یک نوع ترکیبی است که در میان مقادیر آن سند "انتخاب" امکان پذیر است | کجا | EXPRESS(Information RegisterExecutedTasks.Task AS Document.Selection) LINK Document.Selection // مثال 5a. مثال مشابه دیگری زمانی که باید اسنادی از نوع خاصی را انتخاب کنید | انتخاب | WHEN TO EXPRESS (ag مکاتبات اسناد. DocumentBU AS Document. Recive of کالا و خدمات) LINK سند. دریافت کالا و خدمات | سپس ""دریافت کالا و خدمات"" | WHEN TO EXPRESS (ag مکاتبات اسناد. DocumentBU AS Document. فروش کالا و خدمات) سند پیوند. فروش کالا و خدمات | سپس ""فروش کالا و خدمات"" | دیگر """" | پایان به عنوان نمای سند // مثال 6. انتخاب با شرط یک مقدار تعریف نشده: | کجا | SavedSettings.User = UNDEFINED // مثال 7. انتخاب بر اساس نوع حرکت "ورودی" ثبت انباشت، "هزینه" - به طور مشابه): | کجا | RegProductsInRetail.MovementType = VALUE(MovementTypeAccumulation.Incoming) // مثال 8. چگونه در یک درخواست نشان دهیم که نیازی به اجرای درخواست نیست (به عنوان مثال، شما باید به صورت برنامه نویسی، بسته به شرایط، یک نتیجه درخواست خالی را برگردانید - Request.Text = StrReplace(Request.Text, "WHERE Doc.Link = &DocumentLink" , "WHERE IS THE LIE");). برای انجام این کار، فقط شرط "Where is False" را اضافه کنید. به هر حال، صرف نظر از حجم داده های درخواست شده در نمونه، چنین درخواستی به صورت آنی اجرا می شود. |دروغ کجاست // مثال 9. بررسی اینکه نتیجه پرس و جو حاوی داده است: اگر نهدرخواست.اجرا کردن().خالی() سپس // مثال 10. انتخاب بر اساس تاریخ خالی: | کجا | tbStrings.CancellationDate = DATETIME(1، 1، 1)

43
NULL - مقادیر از دست رفته. نباید با مقدار صفر اشتباه گرفته شود! NULL یک عدد نیست، با فاصله، مرجع خالی یا تعریف نشده برابر نیست. NULL یک مقدار شکل دهنده نوع است، یعنی. یک نوع NULL و یک مقدار واحد از این نوع وجود دارد. خالی... 26
برای تولید و اجرای پرس و جوها در جداول پایگاه داده در پلت فرم 1C، از یک شی خاص از زبان برنامه نویسی Query استفاده می شود. این شی با فراخوانی ساختار New Request ایجاد می شود. درخواست راحت ... 18
این مقاله تکنیک های مفیدی را هنگام کار با پرس و جوهای 1C v.8.2 و همچنین اطلاعاتی ارائه می دهد که در مورد زبان پرس و جو چندان شناخته شده نیستند. من سعی نمی کنم توصیف کاملی از زبان پرس و جو ارائه کنم، اما می خواهم فقط در مورد ... 13
LIKE - عملگر برای بررسی شباهت یک رشته به یک الگو. آنالوگ LIKE در SQL. عملگر SIMILAR به شما امکان می دهد مقدار عبارت مشخص شده در سمت چپ آن را با رشته الگوی مشخص شده در سمت راست مقایسه کنید. معنی عبارت ...