Зүүн ба баруун холболт 1с


1С query хэл нь 7.7 ба 8 хувилбаруудын гол ялгаануудын нэг юм. 1С програмчлалыг сурахад хамгийн чухал зүйл бол query хэл юм. 1С 8.3-д асуулга нь өгөгдөл олж авах хамгийн хүчирхэг, үр дүнтэй хэрэгсэл юм. Асуулгын хэл нь мэдээллийн сангаас мэдээллийг хялбар аргаар авах боломжийг олгодог.

Синтакс нь өөрөө сонгодог T-SQL-ийг маш их санагдуулдаг бөгөөд 1С-д асуулгын хэлийг ашигласнаар та зөвхөн Select бүтцийг ашиглан өгөгдөл хүлээн авах боломжтой. Энэ хэл нь илүү төвөгтэй бүтцийг дэмждэг, жишээлбэл, (хүсэлт доторх хүсэлт). 1С 8 дээрх асуултуудыг кирилл болон латин үсгээр бичиж болно.

Энэ нийтлэлд би 1C query хэл дээрх гол түлхүүр үгсийн талаар ярихыг хичээх болно.

  • сонгох
  • зөвшөөрөгдсөн
  • янз бүрийн
  • илэрхийлэх
  • эхлээд
  • өөрчлөлтийн төлөө
  • утга учир
  • утгын төрөл (болон REFERENCE оператор)
  • сонголт
  • бүлэг
  • байх
  • ISNULL
  • Тийм NULL
  • холболтууд - баруун, зүүн, дотоод, бүрэн.

Мөн 1С хэлний зарим жижиг заль мэх, тэдгээрийн тусламжтайгаар та хүсэлтийн текстийг оновчтой болгох боломжтой.

1C 8.2 систем дэх асуулгад дибаг хийхдээ тусгай хэрэгсэл - асуулгын консолыг өгдөг. Та тайлбарыг үзэж, холбоосыг ашиглан татаж авах боломжтой.

1С асуулгын хэлний хамгийн чухал, сонирхолтой операторуудыг авч үзье.

СОНГОХ

1С Enterprise 8 асуулгын хэлэнд аливаа асуулга түлхүүр үгээр эхэлдэг СОНГОХ. 1С хэл дээр UPDATE, DELETE, CREATE TABLE, INSERT бүтэц байдаггүй; Үүний зорилго нь зөвхөн өгөгдлийг унших явдал юм.

Жишээлбэл:

СОНГОХ
Одоогийн лавлах.Нэр
FROM
Лавлах.Нэршил AS Одоогийн лавлах

Асуулга нь зүйлийн нэр бүхий хүснэгтийг буцаана.

Бүтцийн ойролцоо СОНГОХта түлхүүр үг олох боломжтой ӨӨРЧЛӨЛТИЙН ТӨЛӨӨ, ЗӨВШӨӨРӨЛТЭЙ, ТӨРӨЛ, НЭГДҮГЭЭР

ЗӨВШӨӨРӨЛТЭЙ— Хүснэгтээс зөвхөн одоогийн хэрэглэгчийн эрхтэй бичлэгүүдийг сонгоно.

ТӨРӨЛ- үр дүн нь давхардсан мөрүүдийг агуулаагүй гэсэн үг юм.

СОНГОЛТ (ХЭРЭГСЭЛ)

Ихэнхдээ энэ загварыг програмистууд дутуу үнэлдэг. Үүнийг ашиглах жишээ:

Одоогийн лавлах.Нэр,

ХЭЗЭЭ Одоогийн лавлах.Үйлчилгээ ТЭГВЭЛ

"Үйлчилгээ"

Нэршилийг ХЭРХЭН ҮЗЭХ ВЭ

Лавлах.Нэршил AS Одоогийн лавлах

Жишээ нь "Барааны төрөл" талбарт "Бүтээгдэхүүн" эсвэл "Үйлчилгээ" гэсэн текстийн утгыг буцаана.

ХААНА

Хүлээн авсан өгөгдөл дээр сонголт хийх боломжийг олгодог 1С асуулгын хэлний дизайн. Систем нь серверээс бүх өгөгдлийг хүлээн авдаг бөгөөд зөвхөн дараа нь энэ параметр дээр үндэслэн сонгогддог гэдгийг анхаарна уу.

СОНГОХ
Лавлах.Нэр
FROM
Одоогийн лавлах.Нэршил AS Одоогийн лавлах
WHERE CurrentDirectory.Service = ҮНЭН

Жишээн дээр бид "Үйлчилгээ" шинж чанарын утгыг "Үнэн" гэж тохируулсан бичлэгүүдийг сонгоно. Энэ жишээнд бид дараах нөхцөлийг хангаж чадна.

"ҮЙЛЧИЛГЭЭ ХААНА ВЭ"

Үндсэндээ бид түлхүүр үгийн дараах илэрхийлэл нь "Үнэн"-тэй тэнцүү байх мөрүүдийг сонгож байна.

Та илэрхийлэлд шууд нөхцөлийг ашиглаж болно:

ХААНА Код = "005215"

Нөхцөл байдалд "VALUE()" операторыг ашиглан 1С хүсэлтэд урьдчилан тодорхойлсон элементүүд болон тооллогод хандах хандалтыг ашиглана уу:

ХААНА Зүйлийн төрөл = Утга(Тооцоо. Зүйлийн төрөл. Бүтээгдэхүүн)

Цагийн утгыг дараах байдлаар тодорхойлж болно.

ХААНА Хүлээн авсан огноо > DATETIME(2012,01,01):

Ихэнх тохиолдолд нөхцөлийг хүсэлтэд дамжуулсан параметр болгон тодорхойлдог.

1С дээр 267 видео хичээлийг үнэгүй аваарай:

WHERE NomenclatureGroup= &Нэршлийн бүлэг

Хэрэв шинж чанарын төрөл нь нийлмэл байвал нөхцөлийг тавьж болно:

Хэрэв та утгуудын жагсаалт эсвэл массиваас сонголтыг хязгаарлах шаардлагатай бол дараахь зүйлийг хийж болно.

Хуримтлалын бүртгэл ХААНА (& Сонгон шалгаруулах баримт бичгийн жагсаалт).

Нөхцөл байдал нь хэд хэдэн нөхцлөөс бүрдсэн нарийн төвөгтэй байж болно:

ХААНА Хүлээн авсан огноо > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup БА Үйлчилгээ биш

GROUP BY

Үр дүнг бүлэглэхэд ашигласан 1С 8.2 асуулгын хэлний дизайн.

Жишээлбэл:

СОНГОХ
Бараа, үйлчилгээний хүлээн авалт Бараа,.
SUM(Receipt of GoodsServicesGoods.Quantity) AS Тоо хэмжээ,
SUM(Receipt of GoodsServicesGoods.Amount) AS Дүн
FROM
Бараа, үйлчилгээний баримт бичиг Бараа, үйлчилгээний бараа

GROUP BY
Бараа хүлээн авахҮйлчилгээБараа.Бараа

Энэхүү хүсэлт нь бүх баримтыг дүнгээр нь, тоо хэмжээгээр нь нэгтгэн дүгнэнэ.

Түлхүүр үгээс гадна СУМТа бусад нэгтгэх функцуудыг ашиглаж болно: Тоо хэмжээ, ТОО ӨӨР, ДЭЭД, ДОХ, ДУНДЖ.

БАЙХ

Ихэнхдээ мартагддаг, гэхдээ энэ нь маш чухал бөгөөд хэрэгцээтэй загвар юм. Энэ нь танд нэгтгэх функц хэлбэрээр сонголтыг тодорхойлох боломжийг олгодог бөгөөд үүнийг дизайнд хийх боломжгүй юм ХААНА.

1С хүсэлтэд HAVING ашиглах жишээ:

СОНГОХ
Бараа, үйлчилгээний хүлээн авалт Бараа,.
SUM(Receipt of GoodsServicesGoods.Quantity) AS Тоо хэмжээ,
SUM(Receipt of GoodsServicesGoods.Amount) AS Дүн
FROM
Бараа, үйлчилгээний баримт бичиг Бараа, үйлчилгээний бараа

GROUP BY
Бараа, үйлчилгээний хүлээн авалт Бараа

СУМ(Барааны хүлээн авалтҮйлчилгээБараа.Тоо хэмжээ) > 5

Тиймээс бид 5-аас дээш ширхэг ирсэн бүтээгдэхүүний тоог сонгох болно.

УТГА()

Жишээлбэл:

ХААНА Банк = Утга(Дирectory.Banks.EmptyLink)

ХААНА Нэршлийн төрөл = Утга(Лавлах.Нэршлийн төрөл. Бүтээгдэхүүн)

ХААНА Зүйлийн төрөл = Утга(Тооцоо.Зүйлийн төрөл.Үйлчилгээ)

TYPE хүсэлт гаргасан

Өгөгдлийн төрлийг TYPE() ба VALUETYPE() функцууд эсвэл логик REFERENCE оператор ашиглан шалгаж болно.

EXPRESS()

1С асуулга дахь Экспресс оператор нь өгөгдлийн төрлийг хөрвүүлэхэд ашиглагддаг.

Синтакс: EXPRESS(<Выражение>ХЭРХЭН<Тип значения>)

Үүнийг ашигласнаар та мөрийн утгыг огноо руу хөрвүүлэх эсвэл лавлах утгыг мөр өгөгдөл болгон хөрвүүлэх гэх мэт.

Практик хэрэглээнд Express() операторыг хязгааргүй урттай талбаруудыг хөрвүүлэхэд ихэвчлэн ашигладаг, учир нь хязгааргүй урттай талбаруудыг сонгох, бүлэглэх гэх мэт боломжгүй байдаг. Хэрэв ийм талбаруудыг хөрвүүлээгүй бол та алдаа хүлээн авах болно Та хязгааргүй урттай талбарууд болон тохирохгүй төрлийн талбаруудыг харьцуулах боломжгүй.

СОНГОХ
Холбоо барих мэдээлэл.Объект,
EXPRESS(ContactInfo.View AS ROW(150)) AS View
FROM
Мэдээллийн бүртгэл ХЭРХЭН Холбоо барих мэдээлэл

GROUP BY
EXPRESS(ContactInfo.Representation AS ROW(150)),
Холбоо барих мэдээлэл.Объект

ISNULL (ISNULL)

Бичлэг дэх утга, тэнцүү эсэхийг шалгадаг 1С асуулгын хэлний нэлээд ашигтай функц NULL,Ингэснээр та үүнийг өөрийн үнэ цэнээр солих боломжтой. Нуухын тулд үлдэгдэл, эргэлтийн виртуал хүснэгтийг олж авахад ихэвчлэн ашигладаг NULLмөн тодорхой 0 (тэг) тавина.

ISNULL(Сарын өмнөх татвар. Хэрэглэсэн FSS тэтгэмж, 0)

ISNULL 1С асуулгын хэлний ийм функц нь утга байхгүй тохиолдолд тэгийг буцаана, энэ нь алдаа гарахаас зайлсхийх болно.

НЭГДЭХ

4 төрлийн холболт байдаг: ЗҮҮН, ЗӨВ, БҮРЭН, ДОТООД.

ЗҮҮН БА БАРУУН ХОЛБОО

Холболтыг тодорхой нөхцөл дээр үндэслэн хоёр хүснэгтийг холбоход ашигладаг. Хэзээ онцлог ЗҮҮН НЭГДЭХБид эхний заасан хүснэгтийг бүхэлд нь авч, хоёр дахь хүснэгтийг нөхцөлт байдлаар холбодог. Хоёрдахь хүснэгтийн нөхцөлөөр хязгаарлагдах боломжгүй талбарууд нь утгаараа дүүрсэн байна NULL.

1С хүсэлтэд зүүн талд нэгдэх жишээ:

Энэ нь хүснэгтийг бүхэлд нь буцааж өгөх бөгөөд зөвхөн "Counterparties.Name = Banks.Name" нөхцөл хангагдсан газруудад "Банк" талбарыг бөглөнө. Хэрэв нөхцөл хангагдаагүй бол Банк талбарыг тохируулна NULL.

1С 8.3 хэлээр ЗӨВ НЭГДЭХтуйлын төстэй ЗҮҮН холболт, нэг ялгааг эс тооцвол: in ХОЛБОГДОХ ЭРХ"Үндсэн" хүснэгт нь эхнийх биш харин хоёр дахь нь юм.

БҮРЭН ХОЛБООТОЙ

БҮРЭН ХОЛБООТОЙЭнэ нь хоёр хүснэгтийн бүх бичлэгийг харуулах ба зөвхөн нөхцөлөөр холбогдож чадахыг нь холбодгоороо зүүн ба баруунаас ялгаатай.

Жишээлбэл:

БҮРЭН ХОЛБООТОЙ
лавлах.Банкууд ХЭРХЭН Банкууд

BY

Бичлэгүүдийг нэгтгэх нөхцөл хангагдсан тохиолдолд асуулгын хэл нь хоёр хүснэгтийг бүрэн буцаана. Зүүн/баруун холболтоос ялгаатай нь NULL нь хоёр талбарт гарч ирэх боломжтой.

ДОТООД НЭГДСЭН

ДОТООД НЭГДСЭНЭнэ нь зөвхөн тухайн нөхцөлийн дагуу холбогдож болох бичлэгүүдийг харуулдаг гэдгээрээ бүрэн хэмжээнээс ялгаатай.

Жишээлбэл:

FROM
Лавлах Counterparties AS Clients

ДОТООД НЭГДСЭН
лавлах.Банкууд ХЭРХЭН Банкууд

BY
Clients.Name = Banks.Name

Энэ асуулга нь зөвхөн банк болон эсрэг талын ижил нэртэй мөрүүдийг буцаана.

Дүгнэлт

Энэ бол 1С 8 асуулгын хэл дээрх синтаксийн зөвхөн багахан хэсэг юм; Ирээдүйд би зарим зүйлийг илүү нарийвчлан авч үзэх, харуулах гэх мэт олон зүйлийг хичээх болно!

; Оруулсан асуулга (хөгжүүлж байна).

Даалгавар №1: бүх нийтэлсэн баримт бичгийг сонгохын тулд асуулга ашиглана уу Бараа, үйлчилгээний борлуулалт,

Тайлбар: тохиргоо Нягтлан бодох бүртгэл 2.0 / 3.0Хэрэгжилт нь гаргасан нэхэмжлэхийн холбоосыг хадгалдаггүй. Эдгээр баримт бичгийн хоорондох холболт нь эсрэгээрээ байна: нэхэмжлэх (дэлгэрэнгүй мэдээлэл). Баримт бичгийн суурь) хамаарах хэрэгжилтийн лавлагаа хадгалагдана. Тиймээс, ямар программд нэхэмжлэх байхгүй байгааг ойлгохын тулд асуулгад хоёр хүснэгт ашиглах шаардлагатай болно. Бараа, үйлчилгээний борлуулалтТэгээд Нэхэмжлэх гаргасан.

Даалгавар №2: лавлах мэдээллийн санд хэлье Харьцагч талуудын гэрээнэмэлт мэдээлэл үүсгэсэн Хойшлуулах(хадгалах байршлын бүртгэл нэмэлт мэдээлэл). 0-ээс 10 хоногийн хоцролттой заасан эсрэг талын бүх гэрээг сонгохын тулд асуулга ашиглана уу.

Тайлбар: Энэ даалгаварт хоёр хүснэгт ашиглахгүйгээр хийх боломжтой, хэрэв нэг нөхцөл болоогүй бол: тэг хойшлуулах гэрээг сонгох. Гол нь бүртгэлд байгаа юм нэмэлт мэдээлэлНэмэлт мэдээллийн хоосон утгууд хадгалагдаагүй тул тэнд тэг хойшлуулах бичилт байхгүй болно. Тиймээс та энэ бүртгэлийг лавлахад хавсаргах хэрэгтэй болно Харьцагч талуудын гэрээ, хэрэв аль нэг гэрээний хувьд хойшлуулсан бүртгэл байхгүй бол энэ нь тэг болно.

Шинэ таб: Холболтууд

Шинэ механизмууд: 1С хүсэлт дэх null эсэхийг шалгах.

3-р хичээлийн онолын хэсэг

Хэрэв 1С асуулга нь зөвхөн нэг хүснэгтийг ашигладаг бол өгөгдлийг зөвхөн түүнээс авдаг. Гэхдээ хэрэв та олон хүснэгтээс өгөгдөл сонгох шаардлагатай бол эдгээр хүснэгтүүдийн хоорондын харилцааг тохируулах хэрэгтэй. Нэг өгөгдлийн сангийн хүснэгтийн мөрийг өөр хүснэгтийн мөртэй харьцуулж, асуулга үүсгэх үед бүх асуулгын хүснэгтээс шаардлагатай өгөгдлийг агуулсан эцсийн хүснэгтийг олж авахын тулд харилцаа холбоо шаардлагатай.

Тодорхой харилцаа бүрийг хоёр хүснэгтийн хооронд тохируулсан бөгөөд тэдгээрийн аль нэгийг нь нэрлэдэг Зүүн, бусад Зөв. Гурван төрлийн холболт байдаг:

  • ДОТООД НЭГДСЭН- холболтын нөхцөл хангагдсан тохиолдолд л зүүн талын хүснэгтийн бичлэг асуулгын үр дүнд, зөвхөн холболтын нөхцөл хангагдсан тохиолдолд баруун талын хүснэгтийн бичлэг асуулгын үр дүнд гарч ирнэ;
  • ЗҮҮН ХОЛБОО- зүүн талын хүснэгтийн бичлэг ямар ч тохиолдолд асуулгын үр дүнд, баруун талын хүснэгтийн бичлэгийг зөвхөн холболтын нөхцөл хангагдсан тохиолдолд сонголтонд оруулна. Зүүн талын аналог нь юм ЗӨВ НЭГДЭХБаруун талын хүснэгтийн өгөгдлийг ямар ч тохиолдолд үр дүнд, зүүн хүснэгтийн өгөгдлийг зөвхөн нөхцөл хангагдсан тохиолдолд оруулна. Ихэвчлэн асуулга бичихдээ үүнийг ашигладаг Зүүн холболт, хэрэв та зөвийг ашиглавал дараагийн удаа асуулга нээх үед асуулгын зохион бүтээгч хүснэгтүүдийг сольж зүүн тал руу хөрвүүлнэ;
  • БҮРЭН ХОЛБООТОЙ- зүүн талын хүснэгтийн бичлэг нь асуулгын үр дүнд ямар ч тохиолдолд эхлээд гарч ирэх бөгөөд зөвхөн холболтын нөхцөл хангагдсан тохиолдолд баруун талын хүснэгтийн бичлэг нь хайлтын үр дүнд ямар ч тохиолдолд эхлээд гарч ирнэ, дараа нь зөвхөн холболтын нөхцөл үүссэн тохиолдолд л гарч ирнэ. уулзаж байна. Энэ тохиолдолд үүссэн давхардсан мөрүүдийг дээжээс хасна.

Онолын хувьд, асуулгын хүснэгтэд нэгдэх нь сургалтгүй 1С програмистын хувьд ойлгоход хэцүү байдаг ч жишээнүүдийг судлахад бүх ойлгомжгүй зүйлүүд илүү тодорхой болно.

Query Designer доторх харилцаа таб

Асуулгын дизайнерын таб руу очно уу Холболтууд. Энэ нь бүх төрлийн хос хүснэгтэд шаардлагатай тооны холболтыг үүсгэсэн хүснэгт юм. Та хүснэгтийн дээр байрлах товчлууруудыг ашиглан холболтыг нэмэх, устгах, хуулах, өөрчлөх боломжтой (бид тус бүрийг нарийвчлан шинжлэхгүй).

Шинэ холболт нэмсний дараа та хүснэгтийн бүх баганыг бөглөх ёстой. Холболтын хүснэгтийн багана бүрийг харцгаая:

  • Хүснэгт 1. Зүүн талын харилцааны хүснэгтийг энэ баганад сонгосон. Та зөвхөн таб дээр сонгосон хүснэгтүүдийг ашиглах боломжтой Хүснэгт ба талбарууд;
  • Бүгд. Хэрэв та зүүн талын хүснэгтийн бүх өгөгдлийг сонгох шаардлагатай бол энэ баганад туг байрлуулна Зүүнэсвэл Бүрэнхолболтууд);
  • Хүснэгт 2. Энэ баганад зөв холболтын хүснэгтийг сонгосон;
  • Бүгд. Хэрэв та зөв хүснэгтийн бүх өгөгдлийг сонгох шаардлагатай бол энэ баганад туг байрлуулна Зөвэсвэл Бүрэнхолболтууд);
  • үнэгүй. Холболтын нөхцөлийг гараар засварлах горимд шилжих боломжтой туг;
  • Холболтын нөхцөл.-д хэлэлцсэн нөхцөлтэй төстэй асуулгын хэл дээрх нөхцөл. Энэ нь үргэлж хоёр утгын аль нэгийг буцаах ёстой илэрхийлэл юм: Үнэнэсвэл Худлаа.Ихэвчлэн холбоосын нөхцөл нь гурван хэсгээс бүрдэнэ.
    • Зүүн тал. Ихэвчлэн зүүн талын хүснэгтийн талбар, гэхдээ энэ нь баруун хүснэгтийн талбар эсвэл параметр байж болно (зөвхөн захиалгат нөхцөлийг засах горимд);
    • Харьцуулах оператор. Анхдагчаар "=", "<>», «<«, «>», «>=», «<=». Но в произвольном режиме редактирования можно использовать и некоторые другие, например «Между»;
    • Баруун хэсэг. Ихэвчлэн баруун талын хүснэгтийн талбар, гэхдээ энэ нь зүүн хүснэгтийн талбар эсвэл параметр байж болно (зөвхөн захиалгат нөхцөлийг засах горимд);

Бөглөх, засварлах Харилцааны нөхцөл, өнгөрсөн хичээл дээр хэлэлцсэн ердийн нөхцөлийг засварлахтай адил бөгөөд анхдагчаар бол нөхцөлийн баруун хэсэгт параметр биш, харин баруун хүснэгтийн талбарыг зааж өгсөн байдаг. Чөлөөт горимд чөлөөт илэрхийлэл засварлагч бас байдаг.

3-р хичээлийн практик хэсэг

Хичээлийн эхэнд өгөгдсөн асуудлын шийдлийг авч үзье.

Даалгавар №1

Асуулга бүхий бүх нийтэлсэн баримт бичгийг сонгоно уу Бараа, үйлчилгээний борлуулалт,нэхэмжлэх хийгээгүй тогтоосон хугацаанд.

  • Шинэ хүсэлт үүсгэцгээе;
  • Хүснэгтүүдийг сонгоцгооё Бараа, үйлчилгээний борлуулалтТэгээд Нэхэмжлэх гаргасанутаснаас Баримт бичиг;
  • Ширээн дээрээс Бараа, үйлчилгээний борлуулалтталбар сонгоно уу Холбоос;
  • Таб руу орцгооё Нөхцөл байдал;
  • Бүлэгт Талбайнууд, сэдвээ нээцгээе Бараа, үйлчилгээний борлуулалт"+" товчийг ашиглан;
  • Таяг олцгооё огноонөхцөл хэсэг рүү чирээд харьцуулах операторыг сонгоно хооронджишээлбэл, хугацааны эхлэл ба төгсгөлийн параметрүүдийг зааж өгнө Сарын эхлэлТэгээд Хугацааны төгсгөл;
  • хэсгээс Талбайнуудтулгуурыг чирье явуулсан, нөхцөлтэй мөрөнд туг тавина үнэгүймөн “= & Passed” нөхцөлийн нэмэлт хэсгийг арилгана;
  • Таб руу орцгооё Харилцаа холбоо;
  • "Нэмэх" товчийг ашиглан шинэ холболт үүсгэцгээе;
  • Талбайд Хүснэгт 1хүснэгт сонгоно уу Бараа, үйлчилгээний борлуулалт(энэ нь зүүн талын хүснэгт байх болно) ;
  • Асуудлыг зөв шийдэхийн тулд бид бүх хэрэгжилтийг авч, нэхэмжлэхийг хавсаргах шаардлагатай бөгөөд хэрэв нэхэмжлэх олдохгүй бол хүсэлтийн үр дүнд хэрэгжилтийг харуулах хэрэгтэй. Энэ даалгаврыг хоёр дэд даалгавар болгон хуваацгаа:
    • Бүх борлуулалтыг сонгоод, холболтыг ашиглан тэдний нэхэмжлэхийг олохыг хичээцгээе;
    • Нөхцөлийг ашигласнаар бид нэхэмжлэхгүй мөрүүдийг л сонгоно;
  • Өмнөх догол мөрөөс харахад бид ашиглах шаардлагатай байна Зүүн холболт, бүх хэрэгжилтийг сонгохын тулд. Тиймээс баганад туг байрлуулъя Бүгд
  • Талбайд хүснэгт 2хүснэгт сонгоно уу Нэхэмжлэх гаргасан(энэ нь зөв хүснэгт байх болно);
  • Хэрэгжилтийн холбоос нь нэхэмжлэхийн дэлгэрэнгүй мэдээлэлд хадгалагддаг тул Д DocumentBase,холболтын нөхцөлд бид дараахь зүйлийг сонгоно.
    • Талбайн зүүн талд Бараа, үйлчилгээний борлуулалт;
    • Талбайн баруун талд: InvoiceInvoiceOssued.DocumentBase.
  • Холболтын тохиргоо дууссан;

Зүүн хүснэгтийн нэг эгнээний хувьд холболтын нөхцлийг хангасан баруун хүснэгтийн нэг мөр байхгүй бол зүүн талын хүснэгтийн өгөгдсөн мөрийн баруун баруун талын хүснэгтийн бүх талбарууд утгатай байна. NULL. Үүнийг ашиглан зөвхөн нэхэмжлэхгүй зүүн талын хүснэгтийн мөрүүдийг сонгоцгооё;

1С асуулгын хэл нь талбарт утга агуулсан эсэхийг шалгах боломжийг олгодог тусгай логик оператортой NULL, түүний синтакс <Поле>IS NULL. Энэ нь утгыг буцаана Үнэнхэрэв талбар нь утгатай бол NULLТэгээд Худлаа- эсрэг тохиолдолд.

Талбарын утгыг шалгахыг анхаарна уу NULLзөвхөн заасан функц, бүтээцийг ашиглах боломжтой <Поле>= NULLЭнэ шалгалтыг хийх боломжгүй болно.

  • Таб руу орцгооё Нөхцөл байдал;
  • Хүснэгтийн талбаруудын аль нэгийг нөхцөлийн хэсэг рүү чирнэ үү Нэхэмжлэх гаргасан, жишээ нь талбар Холбоос;
  • Шугаманд туг тавь үнэгүйталбарын ард операторыг нэмнэ IS NULL, өмнө нь нөхцөл байдлын шаардлагагүй хэсгийг устгасан;

Хүсэлт = Шинэ хүсэлт; Request.SetParameter("StartPerid" , StartPerid); Request.SetParameter("Үеийн төгсгөл", Хугацааны төгсгөл); Хүсэлт.Текст = "СОНГОХ | Бараа, үйлчилгээний борлуулалт. Холбоос | FROM | Баримт бичиг. Бараа, үйлчилгээний борлуулалт AS Бараа, үйлчилгээний борлуулалт | ЗҮҮН ХОЛБОГДОЛЫН Баримт. Нэхэмжлэхийн нэхэмжлэхийн Нэхэмжлэхийн гаргасан | Програм хангамжийн бараа, үйлчилгээний борлуулалт. Холбоос = Бараа болон үйлчилгээний борлуулалтын баримт бичиг.

Даалгавар №2

  • Шинэ хүсэлт үүсгэцгээе;
  • Асуулга зохион бүтээгчийг ажиллуулцгаая;
  • Таб дээр Хүснэгт ба талбаруудХоёр хүснэгтийг сонгоцгооё: Эсрэг талуудын гэрээутаснаас ЛавлахуудТэгээд Нэмэлт мэдээлэлутаснаас Мэдээллийн бүртгэл;
  • Ширээн дээрээс Эсрэг талуудын гэрээталбар сонгоно уу Холбоос;

Нөхцөлийн дагуу хүсэлтийн үр дүнд зөвхөн нэг эсрэг талын гэрээг оруулах ёстой бөгөөд тэдгээрийн утгыг параметр ашиглан хүсэлтэд шилжүүлэх болно. Гэрээнд хамаарах эсрэг тал нь талбайд хадгалагддаг Эзэмшигчлавлах Харьцагч талуудын гэрээ.

  • Таб руу орцгооё Нөхцөл байдал. Ширээн дээрээс Эсрэг талуудын гэрээталбарыг нөхцөлийн хэсэг рүү шилжүүлнэ Эзэмшигч. Нөхцөлийн баруун талд бид шаардлагатай эсрэг талдаа дамжуулах параметрийн нэрийг тохируулна, үүнийг дуудъя. Эсрэг тал;
  • Мөн бид 0-ээс 10 хүртэл сааталтай гэрээг сонгох ажлыг хоёр дэд ажилд хуваана.
    • Бүх гэрээг сонгоод холболтыг ашиглан тэдгээрийн хойшлуулалтыг олохыг хичээцгээе;
    • нөхцөлийг ашиглан бид зөвхөн шаардлагатай хойшлуулсан гэрээг сонгох болно;
  • Гэрээ болон нэмэлт мэдээлэл хоорондын холболтыг тохируулцгаая. Холболтын таб руу орж, шинэ холболт нэмнэ үү;
  • Талбайд Хүснэгт 1хүснэгт сонгоно уу Эсрэг талуудын гэрээ(энэ нь зүүн талын хүснэгт байх болно);
  • Нэгэнт бүх гэрээ хэрэгтэй байгаа учраас бид ашиглах болно Зүүн холболт.Зүүн талын хүснэгтэд хамаарах All баганад тугийг байрлуулъя;
  • Талбайд хүснэгт 2хүснэгт сонгоно уу Нэмэлт мэдээлэл(энэ нь зөв хүснэгт байх болно);
  • Гэрээний лавлагаа хэмжээст хадгалагдаж байгаа тул Объектмэдээллийн бүртгэл Нэмэлт мэдээлэл,холболтын нөхцөлд бид дараахь зүйлийг сонгоно.
    • Талбайн зүүн талд Эсрэг талуудын гэрээ;
    • Стандарт харьцуулах операторыг орхиё "=";
    • Талбайн баруун талд: Нэмэлт мэдээлэл.Объект.

Бид бүх нэмэлтийг сонгох холбоосыг нэмсэн. гэрээ бүрийн талаархи мэдээлэл. Гэхдээ бидэнд зөвхөн нэг л нэмэлт хэрэгтэй. холих - Хойшлуулах, бид дахин нэг холболт нэмэх хэрэгтэй. Энэ тохиолдолд Хойшлуулахнэмэлт өмч юм. Нэмэлт шинж чанарууд нь төрөл юм Шинж чанаруудын төрлүүдийн төлөвлөгөө Нэмэлт мэдээлэл, мэдээлэл.Бүртгэлд Нэмэлт мэдээлэлнэмэлт үнэ цэнэ шинж чанарууд нь хэмжээст хэлбэрээр хадгалагддаг Өмч. Тиймээс бид зөвхөн хойшлуулах шинж чанарт нэмэлт мэдээллийг хязгаарлах харилцааг нэмэх хэрэгтэй.

  • Шинэ холболт нэмье;
  • Талбайд Хүснэгт 1хүснэгт сонгоно уу Эсрэг талуудын гэрээ;
  • Хэрэв та нэг хос хүснэгтэд олон харилцаатай бол тэдгээрт ижил төрлийн холболтыг ашиглах ёстой гэдгийг мэдэх нь чухал юм. Манай тохиолдолд ийм байна Зүүн холболт.Тиймээс баганад туг байрлуулъя Бүгд, зүүн талын хүснэгттэй холбоотой;
  • Талбайд хүснэгт 2хүснэгт сонгоно уу Нэмэлт мэдээлэл;
  • Харьцааны нөхцөлд бид зүүн талын хүснэгтийн талбарыг ашиглах шаардлагагүй, харин хэмжээс дээр нөхцөл тавих болно Өмч, нэмэлттэй тэнцүүлэх. өмч Хойшлуулах, параметрийг ашиглан хүсэлт рүү шилжих болно;
  • Туг тавиацгаая үнэгүйутгаараа ҮнэнДараах нөхцөлийн текстийг гараар бичнэ үү: “Нэмэлт мэдээлэл.Property = &PropertyDelay”;

  • Холболтын тохиргоо дууссан;

Одоо хойшлуулах хэмжээний болзол тавих л үлдлээ. Бид 0-ээс 10 хүртэлх интервалыг ашигладаг тул Between харьцуулах операторыг ашиглах шаардлагатай болно. Тэг буцаалт нь нэмэлт мэдээлэлд хадгалагдахгүй тул энэ тохиолдолд холбогдсон үед бүх бүртгэлийн талбарууд утгыг буцаана. NULL. Нөхцөл дэх утгыг солихын тулд NULL 0 хүртэл бид асуулгын хэлний функцийг ашиглах болно ISNULL(<Выражение1>, <Выражение2>) . Функц буцаана Илэрхийлэл1, хэрэв тэнцүү биш бол NULLТэгээд Илэрхийлэл2өөрөөр.

  • Таб руу орцгооё Нөхцөл байдалдизайнераас асууж, шинэ нөхцөл нэмэх;
  • Дотор нь туг байрлуулцгаая үнэгүймөн чөлөөт илэрхийлэл засварлагч руу очно уу;
  • Асуулгын хэлний функцийн хэсэгт бид салбарыг өргөжүүлэх болно Функцууд -> Бусад функцууд;
  • Функцийг илэрхийлэл хэсэг рүү чирье ISNULL;
  • Үүссэн барилгын дараа бид хооронд харьцуулах оператор руу орж интервалыг тохируулна: 0 ба 10;
  • "OK" дээр дарна уу, нөхцөл бэлэн боллоо;

Хамгийн сүүлд хийх зүйл бол хүсэлтийн талбарт хойшлуулах утгыг харуулах явдал юм. Үүний оронд NULL 0 утгыг харуулсан бол бид мөн чөлөөт илэрхийлэл засварлагч болон функцийг ашигладаг ISNULL.

  • Таб руу орцгооё Хүснэгт ба талбаруудшинэ талбар нэмэх;
  • Нээгдэх чөлөөт илэрхийлэл засварлагчаас функцийг сонгоно уу ISNULL;
  • Илэрхийлэл 1-ийн оронд Нэмэлт мэдээлэл.Үнэ талбарыг, 2-р илэрхийллийн оронд 0-ийг оруулна;
  • OK дарна уу, талбар бэлэн боллоо;

Үүний үр дүнд бид дараах текст бүхий хүсэлтийг хүлээн авах болно.

Хүсэлт = Шинэ хүсэлт; Query.SetParameter("PropertyDelay", PropertyProperty); Request.SetParameter("Account", Account); Query.Text = "СОНГОХ | Counterparty Agreements. Холбоос, | ISNULL(Нэмэлт мэдээлэл. Утга, 0) AS талбар1 | FROM | Лавлах. Counterparty Agreements AS Counterparty Agreements | LEFT JOIN мэдээллийн бүртгэл. Нэмэлт мэдээлэл | AS Нэмэлт мэдээлэл | ON Counterparty Agreements . Холбоос = Нэмэлт мэдээлэл.

Мөн 1С 8 асуулгын хэлний талаархи нийтлэлүүдийг уншина уу.

Бид хэд хэдэн хүснэгтийн өгөгдлийг нэгэн зэрэг харахыг хүссэн үед, i.e. Хэд хэдэн хүснэгтийг нэг дор цуглуулахын тулд хүснэгтүүдийг холбох, тэдгээрийн хоорондын харилцааны тухай ойлголт гарч ирдэг. Дөрвөн төрлийн холболт байдаг:

  • зүүн;
  • зөв,
  • дотоод;
  • бүрэн.

Бид хийсвэр жишээ ашиглан төрөл бүрийг авч үзэх болно. 2 хүснэгт байдаг бөгөөд эхний хэсэгт бид тухайн зүйлийн талаархи тайлбар, хоёрдугаарт түүний үлдэгдлийн талаархи мэдээллийг хадгалдаг.

Эдгээр хүснэгтээс нэгийг авахын тулд бид ямар талбаруудыг ямар нөхцөл, төрлөөр холбохоо тодорхой зааж өгөх хэрэгтэй. Одоо энэ нь илүү тодорхой болно.

Зүүн холболт

Зүүн талын холболтыг ашигласнаар бид зүүн талын хүснэгтээс бүх бичлэгийг, баруун талын холболтын нөхцөлийг хангасан бичлэгүүдийг харахыг хүсч байгаагаа системд хэлдэг. Бид хүснэгтүүдийг ижил нөхцөлтэй бүтээгдэхүүний талбараар холбосон гэж бодъё, тэгвэл бид дараах хүснэгтийг авна.

Хүсэлт.Текст =
"СОНГО
| Нэршил.Бүтээгдэхүүн,
| Нэршил.Өнгө AS ӨнгөНэршил,
| Өнгө AS Өнгө үлдлээ,
| Үлдэгдэл.Тоо хэмжээ
|FROM

";

Үлдэгдэл хүснэгтээс сандал дээр тохирох зүйл байхгүй тул талбаруудыг ISNULL функцээр боловсруулах ёстой NULL утгуудаар дүүргэсэн. 1С 8 Асуулгын хэлний функцуудыг үзнэ үү.

Зүүн талын холболт нь ойролцоогоор гогцоо доторх гогцоо шиг ажилладаг - энэ нь зүүн хүснэгтээс эхний бичлэгийг авч, холболтын нөхцөл хангагдсан эсэхийг баталгаажуулахын тулд баруун хүснэгтийн бүх бичлэгийг дамжуулдаг. Дараа нь хоёр дахь бичлэгийг зүүн талын хүснэгтээс авна гэх мэт. Хэрэв гэнэт баруун хүснэгтээс хэд хэдэн бичлэгүүд холболтын нөхцөлийг хангаж байвал үр дүнгийн хүснэгтэд хэд хэдэн мөр нэмэгдэх болно (амжилттай холболтын тооноос харахад үр дүнгийн хүснэгт нь мэдээлэлгүй, өгөгдөл тусгагдаагүй болно). Жинхэнэ мөн чанар тул эдгээр хүснэгтүүдийг Бүтээгдэхүүн ба Өнгө гэсэн хоёр талбараар холбосон нь дээр, зөвхөн энэ удаад бид NULL-ийг зохицуулах болно:

Хүсэлт.Текст =
"СОНГО
| Нэршил.Бүтээгдэхүүн,
| Нэршил, өнгө,
| ISNULL(Үлдсэн.Тоо хэмжээ, 0) AS Тоо хэмжээ
|FROM
| Нэршил AS Нэршил
| ЗҮҮН НЭГДСЭН үлдэгдлийг үлдэгдэл AS
| Програм хангамжийн нэршил.Бүтээгдэхүүн = Үлдсэн.Бүтээгдэхүүн

Зөв холболт

Баруун талын холболт нь үндсэндээ зүүнээс ялгаатай биш юм. Хүснэгтүүдийг сольсон тохиолдолд баруун нэгдэл нь зүүн холболт болж хувирах бөгөөд бүтээгчийг ашиглах үед систем өөрөө бүх баруун холболтыг зүүн холболт руу хөрвүүлдэг.

Дотоод нэгдэл

Дотоод холболтыг ашиглан бид системд зөвхөн баруун болон зүүн талын холболтын нөхцөлийг хангасан бичлэгүүдийг харахыг хүсч байна гэж хэлдэг. Иймээс үүссэн бичлэгийн тоо нь нэгдэлд оролцож буй хамгийн богино хүснэгтийн бичлэгийн тооноос бага буюу тэнцүү байх болно. Хүснэгтийнхээ Бүтээгдэхүүн болон Өнгөний талбарт дотоод холболтыг оруулцгаая:

Хүсэлт.Текст =
"СОНГО
| Нэршил.Бүтээгдэхүүн,
| Нэршил, өнгө,
| Үлдэгдэл.Тоо хэмжээ AS Тоо хэмжээ
|FROM
| Нэршил AS Нэршил
| INNER JOIN үлдэгдэл AS үлдэгдэл
| Програм хангамжийн нэршил.Бүтээгдэхүүн = Үлдсэн.Бүтээгдэхүүн
| Мөн Нэршил.Өнгө = Үлдсэн.Өнгө";

Бүрэн холболт

Бүрэн нэгдүүлснээр хоёр хүснэгтийн бүх бичлэгүүд гарч ирэх бөгөөд холболтын нөхцөлийг хангасан бичлэгүүд холбогдож, холболтын нөхцлийг хангаагүй бичлэгүүд асуулгын үр дүнд дуусна, гэхдээ зарим NULL талбаруудтай. Гүйцэтгэх нь нэг дор зүүн, баруун холболттой адил юм.

Энэ сэдвээр олон асуудал байж болох бөгөөд тэдгээрийн аль нэгийг нь шийдэхийг хичээцгээе. Манай байгууллага нь "Заря", "Рассвет" гэсэн 2 тавилгын үйлдвэрийн дилер юм. Үйлдвэр бүрийн өртөг бүхий нэр төрлийг өөр өөр хүснэгтэд хадгалдаг. Нэг үнийн жагсаалт гаргаж, хамгийн бага үнээр бүтээгдэхүүнийг оруулах шаардлагатай.

Бүх талбарыг сонгон бүрэн нэгдэл хийцгээе, бид бүтээгдэхүүнээр холбогдоно:

Хүсэлт.Текст =
"СОНГО
| НэршилЗаря.Бүтээгдэхүүн AS БүтээгдэхүүнЗаря,
| НэршилЗаря.Үнэ AS үнэZarya,
| Нэршил Rassvet Product AS Product Rassvet,
| НэршилRassvet.Price AS PriceRassvet
|FROM

Энэ нь бидэнд яг хэрэгтэй зүйл биш, бүтээгдэхүүний талбарыг нэг болгон нэгтгэж, NULL-ыг боловсруулцгаая:

Хүсэлт.Текст =
"СОНГО
//ISNULL бүтцийг асуулгын хэлний функцийн хэсэгт авч үзсэн
//хэрэв үнэ тодорхойлогдоогүй бол үүнийг эхлүүлнэ үү
//яагаад 1000000 гэж доорх тайлбарыг үзнэ үү
| ISNULL(НэршилЗаря.Үнэ, 1000000) AS PriceZarya,
| ISNULL(НэршилРассвет.Үнэ, 1000000) AS PriceRassvet
|FROM
| НэршилЗаря AS НэршилЗаря
| БҮРЭН ХОЛБООТОЙ Нэршил Үүр AS Нэршил Үүр
| Software NomenclatureZarya.Product = NomenclatureDawn.Product";

Хамгийн бага үнийг сонгох л үлдлээ. Эцсийн хүсэлтийн текст дараах байдлаар харагдах болно.

Хүсэлт.Текст =
"СОНГО
| ISNULL(NomenclatureZarya.Product, NomenclatureDawn.Product) AS Бүтээгдэхүүн,
| СОНГОЛТ
| ХЭЗЭЭ ISNULL(НэршилЗаря.Үнэ, 1000000) > ISNULL(НэршилРассвет.Үнэ, 1000000)
| Дараа нь ISNULL(НэршилРассвет.Үнэ, 1000000)
| ELSE ISNULL(НэршилЗаря.Үнэ, 1000000)
| ҮНЭЭР ДУУСНА
|FROM
| НэршилЗаря AS НэршилЗаря
| БҮРЭН ХОЛБООТОЙ Нэршил Үүр AS Нэршил Үүр
| Software NomenclatureZarya.Product = NomenclatureDawn.Product";

Хэрэв үнэ тодорхойлогдоогүй (NULL) бол түүнийг ямар нэг утгаар эхлүүлэх ёстой, эс тэгвээс илүү/бага харьцуулах үйлдэл алдаатай бүтэлгүйтэх болно. Асуудлын нөхцлийн дагуу бид хамгийн бага үнийг сонгодог тул харьцуулах явцад "алддаг" тул бодит бус их хэмжээгээр үнийг эхлүүлдэг.

← 1С асуулгын хэлний функцууд 8 | 1С 8 асуулгад нэгдэнэ →

Редакторын сонголт
Зээлийн гэрээ нь зээл, зээлийн гэрээнээс юугаараа ялгаатай вэ, хөтөлбөрт ажилтанд мөнгө олгохыг хэрхэн зөв...

1С Нягтлан бодох бүртгэл 8.3 дахь барааны тайлан 1С Нягтлан бодох бүртгэл 8.3 программ дахь барааны тайлан нь TORG-29,...

Энэ нийтлэлд би 1С 8.3-т хувь хүний ​​орлогын албан татварыг тооцох, суутгал хийх, түүнчлэн 2-NDFL маягтын тайланг бэлтгэх асуудлыг авч үзэхийг хүсч байна.

Нягтлан бодох бүртгэлд алдаатай бичилт хийсэн бол яах вэ? Үүнийг хийхийн тулд алдаа гарвал ийм бүртгэлийг засах тусгай арга техникийг ашиглаж болно.
Хуурамч программ хангамжийг худалдан авах, бизнест ашиглахаас татгалзах 5-аас доошгүй шалтгаан бий. Үүнд: Эдийн засгийн бус эрсдэлүүд:...
Худалдааны менежментийн жишээн дээр программ дахь барааг хэрхэн угсарч, задлах вэ? Энэ нь хэрэгцээ байгаа нь тохиолддог ...
Энэ нийтлэлд би 1С 8.3-т хувь хүний ​​орлогын албан татварыг тооцох, суутгал хийх, түүнчлэн 2-NDFL маягтын тайланг бэлтгэх асуудлыг авч үзэхийг хүсч байна.
1C query хэл нь 7.7 ба 8 хувилбаруудын гол ялгаануудын нэг юм. 1С програмчлалыг сурахад хамгийн чухал зүйл бол...
KUDIR бол бүх байгууллага, хувиараа бизнес эрхлэгчдийн хөтлөх ёстой орлого, зардлын дэвтэр юм (ОХУ-ын Татварын хуулийн 346.24-р зүйл). Номоо татвараар баталгаажуулаарай...