1-р хүсэлтийн дагуу илэрхийлнэ үү 8.3. Функцийн төрөл ба утга

Асуулгын хэл нь хөгжүүлэгчдэд зориулсан 1С 8.3-ийн үндсэн механизмуудын нэг юм. Асуулга ашиглан та мэдээллийн санд хадгалагдсан аливаа өгөгдлийг хурдан авах боломжтой. Түүний синтакс нь SQL-тэй маш төстэй боловч зарим нэг ялгаа бий.

SQL-ээс 1С 8.3 (8.2) асуулгын хэлний гол давуу талууд:

  • лавлагааны талбаруудын лавлагааг хасах (объектийн дэлгэрэнгүй мэдээлэлд нэг буюу хэд хэдэн цэгийг шилжүүлэх);
  • үр дүнтэй ажиллах нь маш тохиромжтой;
  • виртуал хүснэгт үүсгэх чадвар;
  • хүсэлтийг англи, орос хэл дээр бичиж болно;
  • түгжрэлээс зайлсхийхийн тулд өгөгдлийг хаах чадвар.

1С дахь асуулгын хэлний сул талууд:

  • SQL-ээс ялгаатай нь 1С асуулгад өгөгдлийг өөрчлөхийг зөвшөөрдөггүй;
  • хадгалагдсан журмын дутагдал;
  • мөрийг тоо болгон хувиргах боломжгүй.

1С query хэлний үндсэн бүтцийн талаархи бидний бяцхан хичээлийг харцгаая.

1С дахь асуулга нь зөвхөн өгөгдөл хүлээн авах боломжийг олгодог тул аливаа асуулга "SELECT" гэсэн үгээр эхлэх ёстой. Энэ командын дараа өгөгдөл авах ёстой талбаруудыг зааж өгсөн болно. Хэрэв та "*" гэж зааж өгвөл боломжтой бүх талбарыг сонгох болно. Өгөгдлийг сонгох газрыг (баримт бичиг, регистр, лавлах гэх мэт) "FROM" гэсэн үгийн дараа заана.

Доор авч үзсэн жишээнд "Нэршил" лавлахаас бүх нэрсийн нэрийг сонгосон. "ХЭРХЭН" гэсэн үгийн дараа хүснэгт болон талбаруудын хоцрогдсон нэрийг (нэр) зааж өгсөн болно.

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

"SELECT" командын хажууд та түлхүүр үгсийг зааж өгч болно:

  • ТӨРӨЛ. Асуулга нь зөвхөн дор хаяж нэг талбарт ялгаатай мөрүүдийг сонгох болно (давхардалгүйгээр).
  • FIRST n, Хаана n– үр дүнгийн эхнээс сонгох шаардлагатай мөрүүдийн тоо. Ихэнхдээ энэ бүтцийг ангилахтай хамт ашигладаг (ORDER BY). Жишээлбэл, та огноогоор нь сүүлийн үеийн тодорхой тооны баримт бичгийг сонгох шаардлагатай үед.
  • ЗӨВШӨӨРӨЛТЭЙ. Энэхүү загвар нь мэдээллийн сангаас зөвхөн одоогийн хэрэглэгчдэд байгаа бичлэгүүдийг сонгох боломжийг олгодог. Энэ түлхүүр үгийн хэрэглээнд үндэслэн хэрэглэгч хандах эрхгүй байгаа бичлэгүүдийг асуух гэж оролдох үед алдааны мессеж хүлээн авах болно.

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

ӨӨРЧЛӨЛТИЙН ТӨЛӨӨ

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

Ихэнх тохиолдолд үлдэгдлийг хүлээн авахдаа "ӨӨРЧЛӨЛТИЙН ТӨЛӨӨ" заалтыг ашигладаг. Эцсийн эцэст, хэд хэдэн хэрэглэгчид програм дээр нэгэн зэрэг ажиллаж байхад нэг нь үлдэгдэл хүлээн авах үед нөгөө нь тэдгээрийг өөрчлөх боломжтой. Энэ тохиолдолд гарсан үлдэгдэл зөв байхаа болино. Хэрэв та энэ саналын дагуу өгөгдлийг хаах юм бол эхний ажилтан зөв үлдэгдлийг хүлээн авч, шаардлагатай бүх залруулга хийх хүртэл хоёр дахь ажилтан хүлээхээс өөр аргагүй болно.

СОНГОХ
харилцан тооцоо.Ажилтан,
харилцан төлбөр тооцоо.Харилцан тооцооны дүн Үлдэгдэл
FROM
Хуримтлалын бүртгэл.Ажилчидтай харилцан тооцоо хийх.Үлдэл AS Харилцан тооцоо хийх
ӨӨРЧЛӨЛТИЙН ТӨЛӨӨ

ХААНА

Загвар нь байршуулсан өгөгдөл дээр ямар нэгэн сонголт хийх шаардлагатай. Бүртгэлээс мэдээлэл авах зарим тохиолдолд виртуал хүснэгтийн параметрүүдэд сонгох нөхцөлийг зааж өгөх нь илүү үндэслэлтэй байдаг. "WHERE"-г ашиглах үед эхлээд бүх бүртгэлийг татаж авах бөгөөд зөвхөн дараа нь сонголт хийх бөгөөд энэ нь асуулгын явцыг ихээхэн удаашруулдаг.

Тодорхой албан тушаалд холбогдох хүмүүсийг авах хүсэлтийн жишээг доор харуулав. Сонгох параметр нь дараах форматтай байна: &ParameterName (параметрийн нэр дур зоргоороо байна).

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

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

Доорх жишээн дээр "Нэмэлт талбар" нь баримт бичиг байрлуулсан эсэхээс хамаарч текстийг агуулна.

СОНГОХ
ЭлсэлтийнT&U.Link,
СОНГОЛТ
Элсэлтийн болон U.Гүйцэтгэсэн ХЭЗЭЭ
Дараа нь "Баримт бичиг батлагдсан!"
БУСДАА "Баримт бичгийг нийтлээгүй..."
Нэмэлт талбараар Төгсгөл
FROM
Баримт бичиг.Бараа, үйлчилгээний хүлээн авалт ХЭРХЭН хүлээн авах Т&C

НЭГДЭХ

Тодорхой харилцааны нөхцөл дээр тулгуурлан хоёр хүснэгтийг холбодог.

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

ЗҮҮН холболтын мөн чанар нь эхний заасан хүснэгтийг бүхэлд нь авч, хоёр дахь нь холболтын нөхцлийн дагуу үүнтэй холбогддог. Хэрэв хоёр дахь хүснэгтийн эхний хүснэгтэд тохирох бичлэг байхгүй бол NULL-ийг тэдгээрийн утгаар орлуулна. Энгийнээр хэлбэл, үндсэн хүснэгт нь эхний заасан хүснэгт бөгөөд хоёр дахь хүснэгтийн өгөгдөл (хэрэв байгаа бол) аль хэдийн түүний өгөгдлөөр орлуулсан байна.

Тухайлбал, “Бараа, үйлчилгээний хүлээн авсан баримт”-аас нэр төрлийн бараа, “Барааны үнэ” мэдээллийн бүртгэлээс үнийг авах шаардлагатай. Энэ тохиолдолд ямар нэгэн албан тушаалын үнэ олдохгүй бол оронд нь NULL-г орлуулна. Баримт бичгийн бүх зүйлийг үнэ байгаа эсэхээс үл хамааран сонгоно.

СОНГОХ
Баримт ба U.Нэршил,
Үнэ.Үнэ
FROM
Баримт бичиг.Бараа, үйлчилгээний хүлээн авалт.Бараа ХЭРХЭН хүлээн авах Т&C
ДОТООД НЭГДСЭН БүртгэлМэдээлэл.ҮнэНэршил.ЗүсмэлСүүлийн AS үнэ
Програм хангамжийн баримт&U.Нэршил = Үнэ.Нэршил

ЗӨВ БАЙДАЛ бүх зүйл яг эсрэгээрээ байна.

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

Энэ төрлийн холболт нь өмнөхөөсөө ялгаатай бөгөөд үүний үр дүнд эхний болон хоёр дахь хүснэгтийн бүх бүртгэл буцаагдах болно. Хэрэв заасан холбоосын нөхцөл дээр үндэслэн эхний эсвэл хоёр дахь хүснэгтэд ямар ч бичлэг олдохгүй бол оронд нь NULL-г буцаана.

Өмнөх жишээн дэх бүрэн холболтыг ашиглах үед "Бараа, үйлчилгээний хүлээн авалт" баримт бичигт байгаа бүх зүйл, "Барааны үнэ" бүртгэлээс хамгийн сүүлийн үеийн бүх үнийг сонгох болно. Эхний болон хоёр дахь хүснэгтэд олдоогүй бичлэгийн утга NULL-тэй тэнцүү байна.

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

INNER JOIN болон FULL JOIN хоёрын ялгаа нь хэрэв хүснэгтүүдийн аль нэгэнд нь бичлэг олдохгүй бол асуулга нь огт харуулахгүй. Үүний үр дүнд, өмнөх жишээн дээр "БҮРЭН" гэснийг "ДОТООД" гэж сольсон бол "Бараа, үйлчилгээ хүлээн авсан" баримт бичгийн "Барааны үнэ" мэдээллийн бүртгэлд бүртгэлтэй зүйлүүдийг л сонгоно.

GROUP BY

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

Дараах асуулгын үр дүн нь бүтээгдэхүүний төрлүүдийн жагсаалт бөгөөд тэдгээрийн үнэ хамгийн их байх болно.

СОНГОХ
,
MAX(Price.Price) AS Үнэ
FROM

GROUP BY
Үнэ.Нэршил.Нэршлийн төрөл

ҮР ДҮН

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

Үр дүнг хүснэгтийн бүхэлд нь ("ЕРӨНХИЙ" гэсэн түлхүүр үг ашиглан), хэд хэдэн талбарууд, шаталсан бүтэцтэй талбаруудын хувьд ("ШИЕРАРХИ", "ЗӨВХӨН HIERARCHY" түлхүүр үгс) нэгтгэн дүгнэж болно. Үр дүнг нэгтгэхдээ нэгтгэх функцийг ашиглах шаардлагагүй.

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

СОНГОХ
Үнэ.Нэршил.Нэршлийн төрөл AS Нэршлийн төрөл,
Үнэ.Үнэ AS үнэ
FROM
Мэдээллийн бүртгэл Нэршлийн үнэ. Хамгийн сүүлийн үеийн AS үнийн агшин зураг
ҮР ДҮН
МАКСИМУМ(Үнэ)
BY
Төрөл Нэршил

БАЙХ

Энэ оператор нь WHERE оператортой төстэй боловч зөвхөн нэгтгэсэн функцэд ашиглагддаг. Энэ операторын ашигладаг талбараас бусад үлдсэн талбаруудыг бүлэглэх ёстой. WHERE оператор нь нэгтгэх функцүүдэд тохирохгүй.

Доорх жишээн дээр 1000-аас хэтэрсэн тохиолдолд барааны дээд үнийг барааны төрлөөр бүлэглэн сонгосон.

СОНГОХ

MAX(Price.Price) AS Үнэ
FROM
Мэдээллийн бүртгэл Нэршлийн үнэ. Хамгийн сүүлийн үеийн AS үнийн агшин зураг
GROUP BY
Үнэ.Нэршил.Нэршлийн төрөл
БАЙХ
МАКСИМУМ(Үнэ. Үнэ) > 1000

АНХААРУУЛАХ

ORDER BY оператор нь асуулгын үр дүнг эрэмбэлдэг. Бичлэгүүдийг дарааллаар нь харуулахын тулд AUTO ORDER-ийг ашигладаг. Анхан шатны төрлүүдийг ердийн дүрмийн дагуу ангилдаг. Лавлах төрлүүдийг GUID-ээр эрэмбэлсэн.

Ажилчдын жагсаалтыг нэрээр нь эрэмбэлсэн жишээ:

СОНГОХ
Ажилтнууд.Нэр AS Нэр
FROM
Лавлах.Ажилтнууд ХЭРХЭН Ажилтнууд
АНХААРУУЛАХ
Нэр
АВТО ЗАХИАЛГА

Бусад 1С асуулгын хэлний бүтэц

  • НЭГДЭХ– хоёр асуулгын үр дүнг нэг болгон.
  • БҮХИЙГ НЭГДҮҮЛ– COMBINE-тэй төстэй, гэхдээ ижил мөрүүдийг бүлэглэхгүй.
  • ХООСОН ширээ– заримдаа хоосон хүснэгтийг тодорхойлохын тулд асуулгад нэгдэх үед ашиглагддаг.
  • PLACE– 1С-ийн нарийн төвөгтэй асуулгыг оновчтой болгох түр зуурын хүснэгтийг үүсгэдэг. Ийм хүсэлтийг багц хүсэлт гэж нэрлэдэг.

Асуулгын хэлний онцлогууд

  • SUBSTRINGзаасан байрлалаас тэмдэгтийн тоо хүртэл тэмдэгт мөрийг таслана.
  • ЖИЛ...ХОЁРтоон төрлийн сонгосон утгыг авах боломжийг танд олгоно. Оруулах параметр нь огноо юм.
  • ҮЕИЙН ЭХЛҮҮЛЭЛТ ба ҮЕИЙН Төгсгөлогноотой ажиллахад ашигладаг. Хугацааны төрлийг (ӨДӨР, САР, ЖИЛ гэх мэт) нэмэлт параметр болгон зааж өгсөн болно.
  • ADDKDATEогнооноос (SECOND, MINUTE, DAY гэх мэт) тодорхой төрлийн тодорхой цагийг нэмэх, хасах боломжийг танд олгоно.
  • ЗӨРҮҮЛЭХ огноогаралтын утгын төрлийг (ӨДӨР, ЖИЛ, САР гэх мэт) зааж, хоёр огнооны зөрүүг тодорхойлдог.
  • ISNULLдутуу утгыг заасан илэрхийллээр орлуулна.
  • ТӨЛӨӨЛӨЛ, ТӨЛӨӨЛӨЛИЙН ХОЛБООСзаасан талбарын стринг дүрслэлийг авах. Аливаа утгууд болон зөвхөн лавлагаа утгуудад тус тус хэрэглэнэ.
  • ТӨРӨЛ, ТӨРЛИЙН УТГАоролтын параметрийн төрлийг тодорхойлоход ашигладаг.
  • ХОЛБООСшинж чанарын утгын төрлийн логик харьцуулах оператор юм.
  • ЭКСПРЕССутгыг хүссэн төрөл рүү хөрвүүлэхэд ашигладаг.
  • ОН САР ӨДӨР ЦАГтоон утгуудаас (Жил, Сар, Өдөр, Цаг, Минут, секунд) "Огноо" төрлийн утгыг авдаг.
  • УТГА 1С хүсэлтэд энэ нь урьдчилан тодорхойлсон утгыг зааж өгөхөд ашиглагддаг - лавлах, тооллого, шинж чанарын төрлүүдийн төлөвлөгөө. Хэрэглээний жишээ: " Хуулийн хувь хүн = үнэ цэнэ(Тооцоо. Хууль ёсны хувь хүн. Хувь хүн) хаана«.

Query Builder

1С-ээр асуулга үүсгэхийн тулд маш тохиромжтой суурилуулсан механизм байдаг - асуулга зохион бүтээгч. Энэ нь дараах үндсэн табуудыг агуулна.

  • "Хүснэгт ба талбарууд" - сонгох шаардлагатай талбарууд болон тэдгээрийн эх сурвалжийг агуулна.
  • "Холболтууд" - ХОЛБОГДОЛЫН бүтцийн нөхцлийг тодорхойлдог.
  • “Бүлэглэх”—бүлэглэх бүтэц, тэдгээрт үндэслэн нэгтгэсэн талбаруудын тайлбарыг агуулна.
  • "Нөхцөл" - хүсэлт дэх өгөгдлийг сонгох үүрэгтэй.
  • "Нарийвчилсан" - "SELECT" командын түлхүүр үгс гэх мэт нэмэлт асуулгын параметрүүд.
  • “Нэгдмэл/Алиас” - хүснэгтүүдийг нэгтгэх боломжуудыг зааж өгсөн ба бусад нэрүүдийг зааж өгсөн ("ХЭРХЭН" бүтэц).
  • "Захиалга" нь асуулгын үр дүнг эрэмбэлэх үүрэгтэй.
  • "Нийт" - "Бүлэглэх" табтай төстэй, гэхдээ "НИЙТ" бүтцэд ашигладаг.

Хүсэлтийн текстийг зүүн доод буланд байрлах "Хүсэлт" товчийг дарж харах боломжтой. Энэ маягт дээр гараар засах эсвэл хуулж болно.


Хүсэлтийн консол

Аж ахуйн нэгжийн горимд асуулгын үр дүнг хурдан харах эсвэл нарийн төвөгтэй асуулгад дибаг хийх бол -г ашиглана уу. Энэ нь хүсэлтийн текстийг агуулж, параметрүүдийг тохируулж, үр дүнг харуулна.

Та асуулгын консолыг ITS диск дээр эсвэл .

Энэ нийтлэлд бид тантай бүх зүйлийг хэлэлцэхийг хүсч байна 1C query хэлний функцууд, ба асуулгын хэлний бүтэц. Функц ба дизайны хооронд ямар ялгаа байдаг вэ? Функцийг хаалт болон тэдгээрийн доторх боломжит параметрүүдээр дуудаж, бүтцийг хаалтгүйгээр бичнэ. эргэлзээгүй 1С асуулгын хэлний бүх бүтэц, функцуудмэдээлэл олж авах үйл явцыг уян хатан, олон үйлдэлт болгох. Эдгээр функцууд болон бүтэц нь хүсэлтийн талбарт хамаарах ба зарим нь нөхцөл байдалд мөн хамаарна.

1С Query хэлний функцууд

Учир нь тодорхой тайлбар 1C query хэлний функцууднь бүтцийн тодорхойлолтоос хамаагүй бага байдаг тул бид функцуудыг судалж эхлэхээр шийдсэн. Одоо тус бүрийг тус тусад нь авч үзье, түүний зорилго, синтакс, хэрэглээний жишээг тайлбарлая.

1. Чиг үүрэг ОН САР ӨДӨР ЦАГ- энэ функц нь "Огноо" төрлийн тогтмол талбар үүсгэдэг.

Синтакс: ОН САР ӨДӨР ЦАГ(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Хэрэглээний жишээ:

2. ОГНЫ ЗӨРҮҮ функц- хэмжээсүүдийн аль нэгэнд (жил, сар, өдөр, цаг, минут, секунд) хоёр огнооны зөрүүг буцаана. Хэмжилтийг параметр болгон дамжуулдаг.

Синтакс: ЗӨРҮҮЛЭХ огноо(<Дата1>, <Дата2>, <Тип>)

Хэрэглээний жишээ:

Query.Text = "СОНГОХ | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | Тоо.Өдрийн тоогоор";

3. VALUE функц- өгөгдлийн сангаас урьдчилан тодорхойлсон бичлэг бүхий тогтмол талбарыг тохируулдаг бөгөөд та ямар ч төрлийн хоосон холбоос авах боломжтой.

Синтакс: VALUE(<Имя>)

Хэрэглээний жишээ:

Request.Text = "СОНГОХ //урьдчилан тодорхойлсон элемент | VALUE(Дирectory.Currencies.Dollar) AS Dollar, //хоосон холбоос | VALUE(Document.Receipt of Bars and Services.EmptyLink) AS Receipt, //шилжүүлэх үнэ | VALUE(Шилжүүлэх). . Хуулийн хувь хүн. Хувь хүн) AS Хувь хүн, //урьдчилан тодорхойлсон данс | VALUE(Дансны график. Өөрийгөө дэмжих. Материал) AS Данс_10" ;

4. SELECT функц- бидний өмнө кодонд хэрэглэгддэг IF бүтцийн аналог байгаа бөгөөд зөвхөн үүнийг 1С асуулгад ашигладаг.

Синтакс: ХЭЗЭЭ СОНГОХ<Выражение>ТЭГВЭЛ<Выражение>ҮГҮЙ БОЛ<Выражение>ТӨГСГӨЛ

Хэрэглээний жишээ:

Хүсэлт.Текст = //хэрэв дүн нь 7500-аас дээш бол 300 рублийн хөнгөлөлт байх ёстой, // хэрэв нөхцөл идэвхжсэн бол функц // Sum - 300-г буцаана // эс тэгвээс хүсэлт нь зүгээр л нийлбэрийг буцаана. "СОНГОХ | СОНГОХ | ХЭЗЭЭ TCReceipts. Дүн > 7500 | ДАРАА TCReceipts. Дүн - 300 | БУСДАА TCReceipts. Дүн | Үнийн дүнг Хөнгөлөлттэй ТӨГСӨГДҮҮЛЭХ | FROM | Баримт бичиг. Бараа үйлчилгээний хүлээн авалт. Барааг TCReceipts AS;"

5. EXPRESS функц- тодорхой төрөл бүхий тогтмол талбарыг илэрхийлэх боломжийг танд олгоно.

Синтакс: EXPRESS(Талбарын нэр төрөл нэр)

Хэрэглээний жишээ:

Query.Text = "ЯНГҮЙ СОНГОХ | Борлуулалт.Бүртгэгч.Дугаар, | СОНГОХ | ХЭЗЭЭ Борлуулалт.Бүртгэгчийн LINK Баримт бичиг. Хэрэглээний материал ТЭГЭЭД ИЛЭРХИЙЛ(Борлуулалт.Бүртгэгч. Баримт бичиг. Хэрэгжилт) | Төгсгөл | ... | ДУГААР ДУГААР | FROM | Хуримтлал. Худалдан авалтыг Худалдан авалт гэж бүртгээрэй";

Холимог төрлийн талбарт EXPRESS функцийг ашиглах өөр сонголт бий юу, тэдгээр нь хаана тохиолддог вэ? Хамгийн энгийн жишээ бол аливаа бүртгэлийн "Бүртгэгч" юм. Тэгэхээр бид яагаад бүртгэгч дээрх төрлийг шалгуур болгох шаардлагатай байж болох вэ? Бүртгүүлэгчээс "Дугаар" талбарыг сонгохдоо нөхцөл байдлыг авч үзье, аль хүснэгтээс дугаарыг сонгох вэ? Бүгдийн зөв хариулт! Тиймээс бидний хүсэлт хурдан ажиллахын тулд EXPRESS функцийг ашиглан тодорхой төрлийг зааж өгөх хэрэгтэй

Хэрэглээний жишээ:

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS Comment, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenclature AS Nomenclature";

6. ISNULL функц(ISNULL үсгийн өөр хувилбар) - хэрэв талбар нь NULL төрлийн байвал функцийн хоёр дахь параметрээр солигдоно.

Синтакс: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Хэрэглээний жишээ:

Мөн NULL төрлийг ямар нэг утгаар ҮРГЭЛЖ солих нь зүйтэй гэдгийг анхаарна уу, учир нь NULL төрлийн харьцуулалт нь NULL-ийг NULL-тэй харьцуулсан ч гэсэн үргэлж ХУДАЛ буцаана. Ихэнх тохиолдолд NULL утгууд нь хүснэгтүүдийг нэгтгэсний үр дүнд үүсдэг (дотоодоос бусад бүх төрлийн холболтууд).

Query.Text = //Зүйлийг бүхэлд нь болон түүний үлдэгдлийг сонгох //Хэрэв зарим зүйлд үлдэгдэл байхгүй бол //NULL талбар байх бөгөөд үүнийг 0 "SELECT | No. Link, | ISNULL" гэсэн утгаар солино. (Бүтээгдэхүүний нөөцийн үлдэгдэл. InStockRemaining, 0) AS үлдэгдэл | FROM | лавлах.Нэршил AS дугаар | ЗҮҮН ХОЛБОО. Бүртгэл Хуримтлал. Бараа агуулахын үлдэгдэл. Бараа Агуулахад үлдэнэ.

7. ТӨЛӨӨЛӨХ функц- хүсэлтийн талбарын дүрслэлийг авах боломжийг танд олгоно.

Синтакс: ГҮЙЦЭТГЭЛ(<НаименованиеПоля>)

Хэрэглээний жишээ:

Query.Text = "СОНГОХ | ТӨЛӨӨЛӨЛ(Үлдсэн.Үлдсэн.Нэршил) Нэршил, | ТӨЛӨӨЛӨЛ(Үлдсэн.Агуулах) Агуулахын

1С query хэл дээр бүтээгдсэн

Бид тантай дээр ярилцсан 1C query хэлний функцууд, одоо бодох цаг болжээ 1С query хэл дээр бүтээдэг, тэдгээр нь чухал бөгөөд ашигтай биш тул эхэлцгээе.

1. Барилгын LINK- лавлагааны төрлийг шалгах логик оператор юм. Энэ нь нарийн төвөгтэй төрлийн талбарыг тодорхой төрлөөр шалгахад ихэвчлэн тохиолддог. Синтакс: ХОЛБООС<Имя таблицы>

Хэрэглээний жишээ:

Хүсэлт.Текст = //хэрэв бичигч утгын төрөл нь баримт бичгийн хүлээн авсан бол //дараа нь асуулгад "Барааны хүлээн авалт", эс тэгвээс "Барааны борлуулалт" "СОНГОХ | СОНГОХ | ХЭЗЭЭ үлдэгдэл.Бүртгэгч LINK Баримт бичиг. Бараа хүлээн авах ба Үйлчилгээ | ДАРАА ""Хүлээн авалт"" | ӨӨРӨӨ ""Хэрэглээ"" | Хөдөлгөөний төрөл ГЭЖ ТӨГСГӨНИЙ | Хуримтлалын бүртгэл. Агуулахад үлдсэн бүтээгдэхүүнүүд" ;

2. Загвар ХООСОН- энэ оператор утгыг заасан мужид байгаа эсэхийг шалгадаг.

Синтакс: ХООРОНД<Выражение>БА<Выражение>

Хэрэглээний жишээ:

Request.Text = //код нь 1-ээс 100 хүртэлх зайд байгаа нэршлийг бүхэлд нь авах "СОНГОХ | Нэршил.Холбоос |FROM | Лавлах.Нэршил AS Нэршил |ХААА | Нэршил. 1-ээс 100-ийн хооронд код" ;

3. Барилгын Б ба Б ШАТНАЛТ- шилжүүлсэн жагсаалтад утга байгаа эсэхийг шалгах (массив, утгын хүснэгт гэх мэтийг жагсаалт болгон шилжүүлж болно). IN HIERARCHY оператор нь шатлалыг харах боломжийг олгодог (Дансны графикийг ашиглах жишээ).

Синтакс: IN(<СписокЗначений>), ШАТНАЛТАНД(<СписокЗначений>)

Хэрэглээний жишээ:

Хүсэлт.Текст = //бүх дансны дэд дансыг сонгоно уу "СОНГОХ | Өөрийгөө дэмжих. Дансны холбоос | НАС | Дансны график. Өөрийгөө дэмжих AS Өөрийгөө дэмжих | ХААНА | Өөрийгөө дэмжих. ШАТНАЛТЫН ҮНЭ ЦЭВЭРЛЭХ холбоос (График данс. Өөрийгөө тэжээдэг. Бараа)";

4. Дизайн ТЭЦТЭЙ- Энэ функц нь утсыг мөрний загвартай харьцуулах боломжийг олгодог.

Синтакс: LIKE"<ТекстШаблона>"

Мөрийн загварын сонголтууд:

% - дурын тооны дурын тэмдэгт агуулсан дараалал.

Нэг дурын дүр.

[...] - дөрвөлжин хаалтанд жагсаасан дурын нэг тэмдэгт эсвэл тэмдэгтүүдийн дараалал. Тооцоолол нь мужийг зааж өгч болно, жишээ нь a-z, энэ нь мужид дурын тэмдэгт, түүний дотор мужын төгсгөлүүдийг багтаасан гэсэн үг.

[^...] - үгүйсгэх тэмдгийн дараа жагсаасан тэмдэгтүүдээс бусад дөрвөлжин хаалт дотор жагсаасан тэмдэгтүүдийн аль нэг тэмдэгт эсвэл дараалал.

Хэрэглээний жишээ:

Query.Text = //TABUR язгуурыг агуулсан, //жижиг эсвэл том үсгээр t эхэлсэн нэршлийг бүхэлд нь олоорой "СОНГОХ | Нэршил. Холбоос | FROM | Лавлах. Нэршил AS Нэршил | ХААНА | Бүтээгдэхүүн. Нэршил LIKE "" [Tt ]абур%""" ;

5. Дизайныг ЗӨВШӨӨРӨН- энэ оператор нь зөвхөн мэдээллийн сангаас дуудлага хийгчийн унших зөвшөөрөлтэй бичлэгүүдийг сонгох боломжийг олгодог. Эдгээр эрхийг рекорд түвшинд (RLS) тохируулсан.

Синтакс: SELECT түлхүүр үгийн ард ALLOWED гэж бичнэ

Хэрэглээний жишээ:

Request.Text = "ЗӨВШӨӨРӨГДӨГӨӨ СОНГОХ | Сөрөг талууд. Холбоос | Лавлах

6. ТӨРӨЛИЙН дизайн- давхардсан бүртгэл байхгүй бичлэгийг сонгох боломжийг танд олгоно.

Синтакс: SELECT түлхүүр үгийн ард VARIOUS гэж бичнэ

Хэрэглээний жишээ:

Хүсэлт.Текст = //уншигч эрх бүхий бүртгэлийг сонгоно "ЯНГҮЙ СОНГОХ | Counterparties.Name |FROM | лавлах. Counterparties AS Conterparties" ;

Мөн ТӨРӨЛ БҮТЭЭГДЭХҮҮН бүтээцийг ЗӨВШӨӨРӨГДСӨН оператор болон бусад операторуудтай хамт ашиглаж болно.

Хэрэглээний жишээ:

Request.Text = //уншигч эрх бүхий төрөл бүрийн бүртгэлийг сонгоно "СОНГОХ ЗӨВШӨӨРӨЛТ БАЙГУУЛЛАГЫН | Counterparties.Name |FROM | Лавлах. Counterparties AS Conterparties";

7. НЭГДҮГЭЭР дизайн хийх- асуулгын үр дүнгээс параметрт заасан бичлэгийн тоог сонгоно.

Синтакс: FIRST<число>

Хэрэглээний жишээ:

Хүсэлт.Текст = //"Эхний 4 | CCD дугааруудыг SELECT. Холбоос | FROM | Лавлах. CCD Numbers AS CCD Numbers" лавлахаас эхний 4 CCD дугаарыг сонгоно уу;

8. ӨӨРЧЛӨЛТТЭЙ дизайн- хүснэгтийг түгжих боломжийг олгодог, зөвхөн гүйлгээнд ажилладаг (зөвхөн автомат цоожтой холбоотой).

Синтакс: ӨӨРЧЛӨЛТИЙН ТӨЛӨӨ<НаименованиеТаблицы>

Хэрэглээний жишээ:

Query.Text = "СОНГОХ | Үнэгүй үлдэгдэл үлдэгдэл. Нэршил, | Үнэгүй үлдэгдэл. Үлдэгдэл. Агуулах, | Үнэгүй үлдэгдэл. Үлдэгдэл. Нөөцөд үлдсэн | НЬ | Хуримтлалын бүртгэл. Үнэгүй үлдэгдэл. Үлдэгдэл Чөлөөт үлдэгдэл үлдэгдэл | Хуримтлалыг өөрчлөхөд | Үнэгүй үлдэгдэл. Үлдэгдэл";

9. Дизайн ЗАХИАЛГА- тодорхой талбараар өгөгдлийг зохион байгуулдаг. Хэрэв талбар нь холбоос бол туг тавих үед АВТО ЗАХИАЛГААнгилал нь холбоосын дүрслэлээр хийгдэх бөгөөд хэрэв туг унтарсан бол холбоосыг санах ой дахь холбоосын хаягийн насаар ангилдаг.

Синтакс: АНХААРУУЛАХ<НаименованиеПоля>АВТО ЗАХИАЛГА

Хэрэглээний жишээ:

Query.Text = "СОНГОХ | Үнэгүй үлдэгдэл. Нэршил AS Нэршил, | Үнэгүй үлдэгдэл. Агуулах AS Агуулах, | Үнэгүй үлдэгдэл. Үлдэгдэл. Агуулахад байна | FROM | Хуримтлалыг бүртгэх. Үнэгүй үлдэгдэл. Үнэгүй үлдсэн | ЗАХИАЛГА | Нэршил | АВТО ЗАХИАЛГЫГ Сэргээх";

10. Design GROUP BY- асуулгын мөрүүдийг тодорхой талбараар бүлэглэхэд ашигладаг. Тоон талбаруудыг нэгтгэх функцтэй хамт ашиглах ёстой.

Синтакс: GROUP BY<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Хэрэглээний жишээ:

Query.Text = "СОНГОХ | Агуулахад байгаа бүтээгдэхүүн.Нэршил AS Нэршил, | Агуулахад байгаа бүтээгдэхүүн.Агуулах, | НИЙЛЭГ(Агуулахад байгаа бараа.Агуулахад). ature, | Агуулах дахь бүтээгдэхүүн.Агуулах" ;

11. ХИЙЖ БАЙНА- WHERE бүтэцтэй төстэй өгөгдөл сонгох нөхцөлд нэгтгэх функцийг ашиглах боломжийг танд олгоно.

Синтакс: БАЙХ<агрегатная функция с условием>

Хэрэглээний жишээ:

Query.Text = //InStock талбар нь 3-аас их "СОНГОХ | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccsIccsIn БҮЛЭГЛЭХ | Агуулахад байгаа бүтээгдэхүүн.Нэршил, | Агуулахад байгаа бүтээгдэхүүн.Агуулах | |БОЛОМЖТОЙ | ДҮН(Бүтээгдэхүүн агуулах.Дахин) > 3" ;

12. Барилгын INDEX BY- асуулгын талбарыг индексжүүлэхэд ашигладаг. Индексжүүлсэн хайлтыг дуусгахад удаан хугацаа шаардагдах боловч индексжүүлсэн талбаруудаар хайлтыг хурдасгадаг. Зөвхөн виртуал хүснэгтэд ашиглах боломжтой.

Синтакс: INDEX BY<Поле1, ... , ПолеN>

Хэрэглээний жишээ:

Query.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

13. Дизайныг ХААНА- ямар ч сонголтын талбарт нөхцөл тавих боломжийг танд олгоно. Үр дүн нь зөвхөн нөхцөлийг хангасан бүртгэлийг агуулна.

Синтакс: ХААНА<Условие1 ОператорЛогСоединения УсловиеN>

Хэрэглээний жишээ:

Query.Text = //Үлдсэн нөхөн олговортой бүх бичлэг сонгогдсон<>0 болон //CalcCompRemaining > 100 "СОНГОХ | Нөхөн олговорRPORemains.Counterparty, |НөхөхRPORemains.Child, | Нөхөн RPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |AmountForCalcCompRemains |AmountForCalcCompRemains |AmountForCalcCompRemains |AmountForCalcCompRemains |Place DataTzCalcCompulation. stat ki |ХААНА |Нөхөн RPORҮлдсэн.Нөхөн олговорҮлдсэн<>0 | Мөн нөхөн олговорRPORemains.AmountForCalcCompRemaining> 100" ;

14. Зураг төслийн ҮР ДҮН... ЕРӨНХИЙ- нийлбэр дүнг тооцоолоход ашигладаг; дизайн нь нийт дүнг тооцоолох талбаруудыг тодорхойлж, нийт талбарт нэгтгэх функцуудыг ашигладаг. TOTAL бүтээцийн дараах талбар бүрт нийлбэрийг ашиглах үед өгөгдлийг бүлэглэнэ. Нэмэлт ЕРӨНХИЙ бүтэц байдаг бөгөөд түүний хэрэглээ нь нэмэлт бүлэглэлийг бий болгодог. Та хүсэлтийн үр дүнгийн жишээг доороос харах болно.

Синтакс: ҮР ДҮН<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>BY<ОБЩИЕ> <Поле1, ... , ПолеN>

Хэрэглээний жишээ:

Хүсэлт.Текст = "СОНГОХ | Тооцоолол. Эсрэг талын гэрээ. Гэрээний төрөл AS Гэрээний төрөл, | Тооцоолол. Эсрэг талын гэрээ AS Гэрээ, | Тооцоолол. Сөрөг тал, | Тооцоолол. Харилцан төлбөр тооцооны үлдэгдэл AS Үлдэгдэл | FROM | Хуримтлалын бүртгэл. Mut. Харилцагч талуудтай хийх тооцоо. Үлдэгдэл AS Тооцоолол | НИЙТ | ДҮН (Үлдэгдэл) |Програм хангамж | ЕРӨНХИЙ, | Гэрээний төрөл";

Зураг дээр хүсэлтийг гүйцэтгэх явцад үүссэн бүлгүүдийг тоймлон харуулсан бөгөөд дээд хэсэг нь ЕРӨНХИЙ хэсэг, хоёр дахь нь эсрэг талын гэрээний гэрээний төрөл талбарт хамаарна.

Одоо үлдсэнийг нь харцгаая.

1С асуулга дахь мөрүүдтэй ажиллах функцууд

1С асуулгад мөрийн өгөгдөлтэй ажиллах цөөн тооны функц, операторууд байдаг.

Нэгдүгээрт, асуулгад мөрүүдийг нэмж болно. Үүнийг хийхийн тулд "+" операторыг ашиглана уу:

Хүсэлт. Текст = "СОНГОХ
" "Мөр:" " + Эх сурвалж.Нэр
;

Хоёрдугаарт, та шугамын хэсгийг сонгож болно. Үүнийг хийхийн тулд функцийг ашиглана уу ОРЛУУЛАХ.Функц нь суулгасан 1С хэлтэй төстэй. Энэ нь гурван параметртэй:

  1. Эх сурвалжийн мөр.
  2. Сонгосон мөр эхлэх тэмдэгтийн дугаар.
  3. Тэмдэгтүүд.

Хүсэлт. Текст = "СОНГО
SUBSTRING("
"Мөр:" ", 4, 3) Үр дүнд нь"; // Үр дүн: зүгээр

Чиг үүрэг ISNULL

NULL нь 1C: Enterprise платформ дээрх тусгай өгөгдлийн төрөл юм. Энэ нь бас энэ төрлийн цорын ганц боломжит үнэ цэнэ юм. NULL нь хэд хэдэн тохиолдолд асуулгад гарч ирж болно: асуулгын эх сурвалжийг холбох үед хүснэгтүүдийн аль нэгэнд тохирох утга олдоогүй бол; байхгүй объектын дэлгэрэнгүй мэдээлэлд хандах үед; хэрэв асуулгын талбаруудын жагсаалтад NULL заасан бол (жишээлбэл, хэд хэдэн хүснэгтээс сонгон авсан үр дүнг нэгтгэх үед) гэх мэт.

Учир нь NULL нь null ч биш, хоосон мөр ч биш, бүр утга ч биш юм Тэмдэглэгдээгүй,үүнийг илүү ашигтай өгөгдлийн төрлөөр солих нь ихэвчлэн ашигтай байдаг. Энэ функц нь үүнд зориулагдсан болно. ISNULL.

Энэ нь хоёр параметртэй:

  1. Шалгаж буй утга.
  2. Эхний параметр нь NULL болж хувирвал түүнийг солих утга.

Хүсэлт. Текст = "СОНГО
ISNULL(Source.Remainder, 0) AS Үлдэгдэл"
; // Хэрэв хүсэлтийн үр дүн талбарын үлдэгдэл = NULL бол,
// дараа нь 0-ээр солигдох бөгөөд та түүгээр математикийн үйлдлүүдийг хийж болно

Функцүүд ГҮЙЦЭТГЭЛТэгээд ТАНИЛЦУУЛГА ХОЛБООС

Эдгээр функцууд нь янз бүрийн утгын хэлхээний дүрслэлийг олж авахад зориулагдсан. Өөрөөр хэлбэл, тэд лавлагаа, тоо, логик гэх мэтийг хөрвүүлдэг. энгийн текст болгон. Тэдний хоорондох ялгаа нь функц юм ГҮЙЦЭТГЭЛаливаа өгөгдлийн төрлийг текст (мөр) болон функц болгон хувиргадаг ТАНИЛЦУУЛГА ХОЛБООС- зөвхөн холбоос хийж, үлдсэн утгуудыг хөрвүүлэхгүй байгаагаар нь буцаана.

Хүсэлт. Текст = "СОНГО
Boolean ТӨЛӨӨЛӨЛ(ҮНЭН),
ТӨЛӨӨЛӨЛ (4) ДУГААР,
ТӨЛӨӨЛӨЛ (Эх сурвалж.Link) AS Link,
ТӨЛӨӨЛӨЛ(DATETIME(2016,10,07)) Огноо"
;
// Boolean = "Тийм", Тоо = "4", Холбоос = "Баримт бичгийн бэлэн мөнгөний ордер No....-аас..."
// Огноо = "2016.10.07 0:00:00"

Хүсэлт. Текст = "СОНГО
ТӨЛӨӨЛӨЛИЙН ЛАВЛАГА(ҮНЭН) БУЛИЙН,
ТӨЛӨӨЛӨЛИЙНЛАВЛАГА(4) ДУГААР
PRESENTINGLINK(Source.Link) AS Link,
ТӨЛӨӨЛӨЛИЙНЛАВЛАГА(DATETIME(2016,10,07)) Огноо"
;
// Boolean = ҮНЭН, Тоо = 4, Холбоос = "Бэлэн мөнгөний баримтын захиалгын дугаар....-аас..."
// Огноо=2016.10.07 0:00:00

Функцүүд ТӨРӨЛТэгээд УТГА ТӨРӨЛ

Чиг үүрэг ТӨРӨЛ 1C: Enterprise платформын өгөгдлийн төрлийг буцаана.

Хүсэлт. Текст = "СОНГО
TYPE (Тоо)
TYPE (мөр),
ТӨРӨЛ (Баримт бичиг. Зардлын бэлэн мөнгөний захиалга)"
;

Чиг үүрэг УТГА ТӨРӨЛтүүнд дамжуулсан утгын төрлийг буцаана.

Хүсэлт. Текст = "СОНГО
УТГЫН ТӨРӨЛ (5) Тоо,
ТӨРӨЛ ("
"Мөр" ") AS мөр,
TYPE (Source.Link) AS лавлагаа
Лавлахаас. Эх сурвалж AS Эх сурвалж"
;
//Тоо=Дугаар, мөр=мөр, лавлах = DirectoryLink.Source

Эдгээр функцийг жишээлбэл, хүсэлтэд хүлээн авсан талбар нь ямар нэг төрлийн утгатай эсэхийг мэдэх шаардлагатай үед ашиглахад тохиромжтой. Жишээлбэл, харилцагч талуудын холбоо барих мэдээллийг Холбоо барих мэдээллийн бүртгэлээс авъя (зөвхөн эсрэг талууд төдийгүй байгууллага, хувь хүмүүс гэх мэт холбоо барих хаягууд энд хадгалагддаг):

Хүсэлт. Текст = "СОНГО

FROM

ХААНА
VALUES TYPE(ContactInformation.Object) = TYPE(Лавлах.Counterparties)"
;

Чиг үүрэг УТГА

Чиг үүрэг Утга 1С тохиргооны объектуудыг ашиглахгүйгээр шууд хүсэлтэд ашиглах боломжийг танд олгоно.

Өмнөх жишээн дээр дахиад нэг нөхцөл нэмье. Та зөвхөн түншүүдийнхээ утасны дугаарыг авах хэрэгтэй.

Хүсэлт. Текст = "СОНГО
Холбоо барих мэдээлэл.Танилцуулга
FROM
Мэдээллийн бүртгэл.Холбоо барих мэдээлэл ХЭРХЭН Холбоо барих мэдээлэл
ХААНА
ҮНЭ ТӨРӨЛ(Холбоо барих мэдээлэл.Объект) = TYPE(Лавлах.Харилцагч талууд)
БА ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Энэ функцийг зөвхөн урьдчилан тодорхойлсон утгуудад ашиглах боломжтой гэдгийг тэмдэглэх нь зүйтэй, i.e. тохируулагчаас шууд хандах боломжтой утгуудтай. Энэ нь функц юм УТГАХэрэглэгчийн үүсгэсэн лавлах элементүүдтэй ашиглах боломжгүй, гэхдээ тооллого, урьдчилан тодорхойлсон лавлах элементүүд, утгуудтай ажиллах боломжтой. EmptyLink.

Оператор ХОЛБООС

Оператор ХОЛБООСхүсэлтээр буцаасан утгуудыг тодорхой лавлагааны төрөлд хамаарах эсэхийг шалгах зорилготой юм. Үүнтэй ижил ажлыг функцуудыг ашиглан хийж болно ТӨРӨЛТэгээд УТГА ТӨРӨЛ(илүү өргөн хүрээтэй бөгөөд дээр хэлэлцсэн).

Жишээлбэл, эсрэг талуудын холбоо барих мэдээллийг сонгох ажлыг дараахь байдлаар шийдэж болно.

Хүсэлт. Текст = "СОНГО
Холбоо барих мэдээлэл.Танилцуулга
FROM
Мэдээллийн бүртгэл.Холбоо барих мэдээлэл ХЭРХЭН Холбоо барих мэдээлэл
ХААНА
Холбоо барих мэдээлэл.Object LINK лавлах.Харилцагч талууд"
;

Оператор ЭКСПРЕСС

Оператор ЭКСПРЕСС 1С асуулгад хоёр тохиолдолд ашиглагддаг:

  • анхдагч төрлийн шинж чанарыг өөрчлөх шаардлагатай үед;
  • нийлмэл өгөгдлийн төрөл бүхий талбарыг нэг төрлийн талбар болгон хувиргах шаардлагатай үед.

Анхдагч өгөгдлийн төрлүүд нь: тоо, мөр, огноо, логик.Эдгээр өгөгдлийн төрлүүдийн зарим нь нэмэлт шинж чанартай байдаг. Төрөл Тооурт ба нарийвчлалтай, төрөл Шугам -урт эсвэл хязгааргүй.

Оператор ЭКСПРЕССөгөгдлийн төрлийг бус харин нэмэлт шинж чанарыг өөрчлөх боломжийг танд олгоно. Жишээлбэл, тэрээр хязгааргүй урттай утсыг хязгаарлагдмал урттай утас болгон хувиргаж чадна. Хэрэв та асуулгын үр дүнг ийм талбараар бүлэглэх шаардлагатай бол энэ нь хэрэг болно. Та хязгааргүй урттай талбаруудаар бүлэглэх боломжгүй тул бид үүнийг 200 тэмдэгтийн урттай мөр болгон хөрвүүлдэг.

Хүсэлт. Текст = "СОНГО
ТООО (ӨӨР ӨӨР БҮТЭЭГДЭХҮҮН ирэх. Холбоос) AS Холбоос
FROM
Баримт бичиг.Бараа, үйлчилгээний хүлээн авалт ХЭРХЭН Бараа, үйлчилгээг хүлээн авах
GROUP BY
EXPRESS(Бараа, үйлчилгээний хүлээн авалт. Сэтгэгдэл AS ROW (200))"
;

Зарим тохиолдолд нийлмэл өгөгдлийн төрөл бүхий талбаруудын хүсэлтийг 1С платформ оновчтой боловсруулахгүй байж болно. Үүний үр дүнд асуулгын хугацааг уртасгадаг тул нийлмэл төрлийг нэг төрөлд урьдчилан хөрвүүлэх нь ашигтай байж болох юм.

Хүсэлт. Текст = "СОНГО
EXPRESS(Хөдөлгөөн барааны эргэлт.Order AS Document. Хэрэглэгчийн захиалга). Date AS Захиалгын огноо,
Барааны эргэлт.Нэршил
FROM
Хуримтлалыг бүртгэх.Барааны хөдөлгөөн.Барааны эргэлт AS Барааны эргэлт.
ХААНА
Барааны эргэлт.Захиалгын LINK Баримт бичиг.Үйлчлүүлэгчийн захиалга"
;

Операторууд СОНГОЛТТэгээд IS NULL

Оператор СОНГОЛТоператортой төстэй ХЭРВЭЭсуулгасан 1С хэл дээр, гэхдээ бага зэрэг буурсан функцтэй.

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

Хүсэлт. Текст = "СОНГО
Холбоо барих мэдээлэл.Танилцуулга,
СОНГОЛТ
ХЭЗЭЭ ҮНЭ ТӨРӨЛ(Холбоо барих мэдээлэл.Объект) = TYPE(Лавлах.Харилцагч талууд)
ТЭГЭЭД "
Эсрэг тал "
ӨӨР СОНГОЛТ
ХЭЗЭЭ ҮНЭ ТӨРӨЛ(Холбоо барих мэдээлэл. Объект) = TYPE (Лавлах. Хувь хүн)
ТЭГЭЭД "
Хувь хүн"
ӨӨР "Өөр хэн нэгэн" "
ТӨГСГӨЛ
ЭЗЭН БОЛОХ
FROM
Мэдээллийн бүртгэл. Холбоо барих мэдээлэл AS Холбоо барих мэдээлэл"
;

Дизайн дээр жишээн дээрээс харж болно СОНГОЛТгэдэг үгийн ард үргэлж нөхцөл байдаг ХЭЗЭЭ;үгийн дараа нөхцөл үнэн байвал утга хэрэглэнэ ТЭГВЭЛнөхцөл хангагдаагүй тохиолдолд тухайн үгийн дараа хэрэглэх утга ҮГҮЙ БОЛ.Бүх гурван дизайны элемент СОНГОЛТзаавал байх ёстой. Элементийг орхих ҮГҮЙ БОЛ, операторыг ашиглахтай адил арга ХЭРВЭЭсуулгасан 1С хэл дээр энэ нь боломжгүй юм. Мөн оператороос СОНГОЛТдизайны аналог байхгүй ЭЛСЕЙФ, гэхдээ та нэг хөрөнгө оруулалт хийж болно СОНГОЛТөөр нэг жишээнд бидний жишээнд хийсэн шиг.

Оператор IS NULLдизайнд ашигладаг СОНГОЛТ NULL төрлийн асуулгын талбарыг харьцуулах.

Хүсэлт. Текст = "СОНГО
СОНГОЛТ
УТГА ХҮМҮҮС БАЙХ ҮЕД 0
БУСДАА гэсэн утгатай
ТӨГСГӨЛ"
;

Үүнээс гадна оператор IS NULLөгүүлбэр зэрэг асуултын нөхцөлд ашиглаж болно ХААНА.

Олон хүмүүс 1С 8 асуулгын хэл дээрх EXPRESS функцийг төрөл хувиргагч гэж тайлбарладаг боловч энэ нь эдгээр зорилгод огт зориулагдаагүй болно. Зүссэн доор дэлгэрэнгүй...

Тиймээс олон хүмүүс төрөлтэй талбарыг хөрвүүлж чадна гэж андуурдаг Шугамтөрөл бүхий талбарт Тооэсвэл мөрөнд холбоос. Үнэн хэрэгтээ EXPRESS оператор нь дараахь зүйлийг хөрвүүлж чадна.

  • анхдагч төрлийн тохиргоо;
  • нийлмэл төрлийн талбарыг нэг төрлийн талбар болгох;

Эдгээр нөхцөл байдлыг илүү нарийвчлан авч үзье ...

Анхдагч төрлийн тохиргоог хөрвүүлэх

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

СОНГОХ
EXPRESS(Admission.Comment AS LINE(300)) AS Тайлбар,
QUANTITY(Incoming.Link) AS Link
FROM
Баримт бичиг.Орцны танхим AS Орцны танхим

GROUP BY
EXPRESS(Элсэлт. Сэтгэгдэл МӨРӨӨ (300))

Өөр нэг нөхцөл байдал бол хүсэлт нь тооцооллыг ашигладаг бол гаралт дээр бид олон тооны аравтын оронтой тоог авах боломжтой (1100.001568794). Асуулга дууссаны дараа энэ дугаарыг боловсруулахгүйн тулд та шаардлагатай уртыг нэн даруй тайрч болно, гэхдээ энэ дугаарыг тайрч байгаа бөгөөд дугуйраагүй гэдгийг ойлгох нь чухал юм. Жишээ:

СОНГОХ
Борлуулалт.Бүтээгдэхүүн,
EXPRESS(Борлуулалт.Тоо хэмжээ * Борлуулалт.Үнэ ДУГААР(15, 2)) Дүн
FROM

Нийлмэл төрлийг нэг төрөл болгон хувиргах

Бүртгэлийн бүртгэл нь ихэвчлэн нийлмэл төрөлтэй байдаг бөгөөд үүнийг нэг төрөл болгон хөрвүүлэхийн тулд бүтцийг ашиглана уу ЭКСПРЕССГэсэн хэдий ч, дээж авах үе шатанд та хэрэгжилтийн баримт бичгийг төлбөрийн баримт болгон хөрвүүлэхийг оролдвол хүсэлт нь алдаатай байх нь дамжиггүй тул хөрвүүлэхээсээ өмнө холбоосын төрлийг шалгах хэрэгтэй. Энэ бол ямар ч утгагүй зүйл))) Энэ бүхэн яагаад хэрэгтэй вэ гэж та асууж байна. Би хариулж байна, энэ бол товчхон бичих зардлаар далд хайлтыг оновчтой болгох мөчүүдийн нэг юм. Энэ цэгийн хэрэглээг жишээгээр харцгаая.

Та RN Sales-ээс бүртгэгч бүрийн дугаарыг авахаар шийдсэн гэж бодъё. хүсэлт бичих:

ТӨРӨЛ СОНГОХ
Борлуулалт.Бүртгэгч.Дугаар
FROM
Хуримтлалыг бүртгэх.Борлуулалт ХЭРХЭН Борлуулалт

Үнэндээ юу ч илүү энгийн байж чадахгүй. Гэхдээ 1С нь гүйцэтгэлийн шатандаа энэ хүсэлтийг ямар ч холболтгүйгээр бид боломжтой бүртгэгчид байгаа бол аль болох олон зүүн холболттой хүсэлт болгон хувиргадаг. Тэдгээр. Хэрэв энэ бүртгэлд 20 баримт бичиг бичигдсэн бол бид 20 зүүн холболттой SQL асуулга авах болно. Яагаад ийм зүйл болж байна вэ? Суурилуулсан 1С оновчтойлогч нь цэгээр хүлээн авсан талбаруудыг маш сайн боловсруулдаггүй тул энэ тохиолдолд энэ нь Number шинж чанар юм. Эдгээр нь бялуу юм, хэрэв бид ихэвчлэн баримт бичгийн дугаарыг авахыг хүсч байвал үүнийг бүртгэлийн дэлгэрэнгүй мэдээлэлд оруулах эсвэл EXPRESS операторыг ашиглах нь хамгийн үндэслэлтэй боловч товчхон байх болно.

ТӨРӨЛ СОНГОХ
Борлуулалт.Бүртгэгч.Дугаар,
СОНГОЛТ
ХЭЗЭЭ Борлуулалт.Бүртгэгч LINK Document.Consumable
Дараа нь EXPRESS(Борлуулалтын.Бүртгэгчийг Баримт бичиг болгон. Хэрэглээний материал)
ӨӨР СОНГОЛТ
ХЭЗЭЭ Борлуулалт.Бүртгэгч LINK Document.Implementation
Дараа нь EXPRESS(Борлуулалтын.Бүртгэгчийг Баримт бичиг.Хэрэгжүүлэх)
ТӨГСГӨЛ
...
ДУГААР ДУГААР
FROM
Хуримтлалыг бүртгэх.Борлуулалт ХЭРХЭН Борлуулалт

Одоо зүүн талын нэгдэл нь тодорхой нэг хүснэгтийг хамарна.

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

За ингээд эхэлцгээе. Асуулга нь 1С 8.2-ийн тусгай объект бөгөөд систем дэх өгөгдлийн сангийн хүснэгтэд асуулга үүсгэх, гүйцэтгэхэд ашиглагддаг. Асуултыг гүйцэтгэхийн тулд та асуулгын өгөгдлийн эх сурвалж болгон ямар хүснэгтүүдийг ашиглах, аль талбарыг сонгох, ямар эрэмбэлэх, бүлэглэх гэх мэтийг тодорхойлсон асуулгын текстийг зохиох хэрэгтэй. Та "1С 8.2 Хөгжүүлэгчийн гарын авлага" номноос асуулгын талаар илүү ихийг уншиж болно. 1С 8.2 асуулгын хэл нь синтаксийн хувьд бусад SQL өгөгдлийн сангийн асуулгын хэлтэй маш төстэй боловч ялгаанууд бас бий. Суурилуулсан асуулгын хэлний гол давуу талуудын дунд талбаруудын хамааралгүй байдал, виртуал хүснэгтүүд байгаа эсэх, нийлбэртэй ажиллахад тохиромжтой, асуулгад бичээгүй талбаруудыг тэмдэглэх нь зүйтэй. Сул тал нь асуулга гаралтын талбар болгон ашиглах боломжгүй, хадгалагдсан процедурыг ашиглах боломжгүй, мөрийг тоо болгон хувиргах боломжгүй юм.

1. Хүсэлтийн уншигдах чадварыг нэмэгдүүлэх, хүсэлтийн параметрүүдийн тоог багасгахын тулд та хүсэлтийн урьдчилан тодорхойлсон тохиргооны өгөгдөлд хандахын тулд литерал ашиглаж болно. ҮНЭ ЦЭНЭ (ҮНЭ ТӨЛӨӨЛӨЛ).Утга, тооллогын утга, лавлахын урьдчилан тодорхойлсон өгөгдөл, тооцооллын төрлүүдийн төлөвлөгөө, шинж чанарын төлөвлөгөө, дансны бүдүүвч, хоосон холбоосууд, маршрутын цэгүүдийн утгууд, системийн шилжүүлгийн утгууд ( жишээ нь, Хуримтлалын хөдөлгөөний төрөл, Дансны төрөл) ашиглаж болно.

ХААНА Хот = ҮНЭ ЦЭНЭ(Лавлах.Хотууд.Москва)

ХААНА Хот = ҮНЭТ (Лавлах.Хотууд.ХоосонХолбоос)

WHEREProductType = VALUE(Тооцоо. Бүтээгдэхүүний Төрөл. Үйлчилгээ)

WHEREMMotionType = VALUE(Хөдөлгөөний Төрөл Хуримтлал. Ирж буй)

Маршрутын цэг хаана байна =

ҮНЭТ (Бизнесийн үйл явц. Гэрээ. Маршрутын цэг. Гэрээ)

Хаалтанд байгаа илэрхийлэл нь үргэлж урьдчилан тодорхойлсон утгын төрөлд тохирох ганц үгээр (Лавлах, Тоолуур гэх мэт) эхэлдэг.

2.Асуулгад автоматаар захиалга өгөх нь үйл явцыг ихээхэн удаашруулдаг. Хэрэв ангилах шаардлагагүй бол үүнийг огт ашиглахгүй байх нь дээр. Ихэнх тохиолдолд түлхүүр үг ашиглан эрэмбэлэх нь илүү үр дүнтэй байдаг АНХААРУУЛАХ.

3.Та алиас ашиглах үед тодорхой бус талбар гарч ирэхгүй байх ёстой. Үгүй бол систем ямар объект руу хандах шаардлагатайг ойлгохгүй.

Тодорхой бус талбар бүхий хүсэлтийн жишээ:

СОНГОХ

Үлдсэн бараа.Үлдсэн тоо хэмжээ

Лавлах.Нэршил AS Нэршил

ЗҮҮН ХОЛБОЛТ Хуримтлалыг бүртгэх.Үлдсэн бараа.Үлдсэн бараа.Үлдсэн бараа.

Програм хангамж Үлдсэн бүтээгдэхүүнүүд.Нэршил = Нэршил.Холбоос

Хүснэгтийн бусад нэрийг засах шаардлагатай, тухайлбал: "Лавлах.Нэршлийн AS Нэршил1", "Нэршил.Холбоос"-ыг "Нэршил1.Холбоос"-ын дагуу засах хэрэгтэй.

4.Заримдаа түлхүүр үг ашиглан лавлагааны талбаруудын дүрслэлийг авах нь ашигтай байдаг ГҮЙЦЭТГЭЛөгөгдлийн санд дахин нэвтрэх боломжгүй байхын тулд холбоосын хамт. Энэ нь асуулгын үр дүнг хүснэгтэд харуулахад хэрэг болно.

СОНГОХ

ТӨЛӨӨЛӨЛ(Баримт бичиг.Харилцагч тал) Хүлээн авагч,

ИЛТГЭЛ(Баримт бичиг.Үндсэн)

Document.Invoice AS Document

5. Хүсэлтэд ашиглах EXPRESS(Талбарын төрөл)нийлмэл өгөгдлийн төрлийн талбартай холболтоос шаардлагагүй хүснэгтүүдийг устгах боломжийг танд олгоно. Ингэснээр хүсэлтийн хэрэгжилт хурдасна.

Жишээ (Бүртгэгч гэдэг нь үлдэгдэл барааны хуримтлалын бүртгэлийн физик хүснэгтийн нийлмэл төрлийн талбар бөгөөд хүсэлтэд Бараа хүлээн авсан баримтын огноо, дугаарыг сонгосон бол баримт бичгийн дэлгэрэнгүй мэдээллийг үзэхдээ огноо, дугаарыг ашиглана. Бүртгэлийн ажилтан, бүртгэлийн хүснэгтийг Барааны үлдэгдлийн бүртгэлийн бүртгэгч болох баримт бичгийн хүснэгттэй олон тооны холболт байхгүй байна ):

ТӨРӨЛ СОНГОХ
EXPRESS(Үлдсэн бараа.Бүртгэгч Баримт бичиг. Бараа хүлээн авсан).Дугаар ХҮЛЭЭН АВАХ ДУГААР,

EXPRESS(Үлдсэн бараа.Бүртгэгч Баримт бичиг. Бараа хүлээн авсан).ХҮЛЭЭН АВАХ ӨДӨР

FROM
Хуримтлалын бүртгэл.Үлдсэн бараа AS Үлдсэн бараа
ХААНА
(Үлдсэн бараа.Бүртгэгч Баримт бичиг. Бараа хүлээн авах) ХҮМҮҮС БАЙХГҮЙ)

6. 1С тохиргоонд зарим тохиргооны объектын эрх хязгаарлагдмал хэрэглэгчид байгаа тохиолдолд тухайн объектын хүсэлтэд түлхүүр үгийг заавал ашиглах ёстой. ЗӨВШӨӨРӨЛТЭЙингэснээр хүсэлтийг алдаагүй гүйцэтгэх болно (Зөвшөөрөгдсөн...-г сонгоно уу)

7. Оруулсан хүснэгтүүдийг (жишээ нь, хүснэгтийн хэсэгтэй баримт) агуулсан хүснэгтүүдийг нэгтгэх үед түлхүүр үг хэрэг болно. ХООСОН ХҮСНЭГТжишээ нь, баримт бичгийн аль нэг нь хүснэгтийн хэсэггүй тохиолдолд.

БҮХИЙГ НЭГДҮҮЛ

Document.Invoice-аас

8. Тус бүр нэг мөр агуулсан хүснэгтүүдийн холболттой ажиллахдаа хүснэгтийн мөрүүдийг нэгтгэх шаардлагатай байж магадгүй (хоёр хүснэгтэд тэдгээрийг нэгтгэх талбар байхгүй). Үүнийг бүтээн байгуулалтыг ашиглан хийж болно " БҮРЭН ХОЛБОГДОЛЫН Хүснэгт ҮНЭН" Хүснэгтүүд нэгээс олон мөртэй бол үр дүн нь хоёр хүснэгтийн мөрийн тооны үржвэртэй тэнцүү тооны мөр болно. Хэрэв нэг хүснэгтэд O мөр байгаа бол үр дүнгийн хүснэгтийн мөрийн тоо хоёр дахь хүснэгтийн мөрийн тоотой тэнцүү байна. Мөн ийм хүснэгтүүдийг холбохын тулд та хүснэгтүүдийн декартын үржвэрийг ашиглаж болно, үүнд хоёр хүснэгтийн бүх эгнээний хослолууд гарч ирэх хүснэгтэд гарч ирнэ. Хүснэгтүүдийн аль нэгэнд 0 мөр байгаа бол декартын үржвэр 0 байх тул бүтэн нэгдэл нь илүү дээр байх болно гэдгийг бид санах ёстой. Ерөнхийдөө бүрэн холболтын оронд ҮНЭНЭЭРТа өөр ямар ч төрлийн холболтыг ашиглаж болно, гэхдээ энэ тохиолдолд хүснэгтүүдийн аль нэг нь тэгээс өөр мөртэй байсан ч үр дүнд нь 0 мөр байх боломжтой. Бүрэн нэгдэх тохиолдолд энэ нөхцөл байдал зөвхөн нэг тохиолдолд л тохиолдох бөгөөд хэрэв хоёр хүснэгтийн мөрийн тоо 0 бол. Хэрэв та хүснэгтэд яг дор хаяж нэг мөр байгааг мэдэж байгаа бол та ашиглаж болно. ЗҮҮН ХОЛБООнөхцөлтэй өөр хүснэгттэй ҮНЭНЭЭР.

Жишээ (бүрэн нэгдлийн хувьд зохиомлоор хийгдсэн)

СОНГОХ

K. Эсрэг тал

Тооцоолол.Хүйс AS Хүйс

БҮРЭН ХОЛБООТОЙ (Эхний 1 Г. Баримт бичгээс эсрэг талыг сонгоно уу. Барааны борлуулалт ХЭРХЭН D. Цагийн агшинаар зохицуулах) ХЭРХЭН

АСААЛТТАЙ(ҮНЭН)

9. Тодорхой талбарт өвөрмөц бичлэг авахын тулд бүлэглэхийн оронд түлхүүр үг ашиглах нь илүү зөв юм. ТӨРӨЛхүсэлтэд, учир нь энэ барилга нь илүү тодорхой бөгөөд түлхүүр үг юм GROUP BYнь илүү өргөн хэрэглээтэй бөгөөд нэгтгэсэн функцийг бүлгээр тооцоход нэмэлт шаардлагатай тохиолдолд ихэвчлэн ашиглагддаг. Зарим тохиолдолд хязгаарлагдмал тооны шугам гаргах шаардлагатай байдаг. Үүнийг хийхийн тулд та хүсэлтийн тайлбарт түлхүүр үгийг зааж өгөх хэрэгтэй НЭГДҮГЭЭРба түүний дараа - шаардлагатай тооны мөр.

Жишээ нь НЭГДҮГЭЭР:

Эхний 5-ыг сонгоно уу

Лавлах.Нэршил.Нэр,

Лавлах.Нэршил.Худалдан авах үнэ

Эрэмбэлэх

Лавлах.Нэршил.Худалдан авахҮнэ буурах

Жишээ нь ТӨРӨЛ:

Төрөл бүрийн хэсгийг сонгоно уу

Баримт бичиг.Хэрэглээний.Харилцагч тал

10.Асуулга дахь нэгтгэх функцийг түлхүүр үггүйгээр ашиглаж болно БҮЛЭГ. Энэ тохиолдолд бүх үр дүнг нэг мөрөнд бүлэглэнэ.

Сонго

Дүн(Нэхэмжлэх. Дүн) Дүн

Баримт бичиг.Нэхэмжлэх.Нэхэмжлэхийн бүрдэл

11. Сонгох талбарууд дахь асуулгад та сонголтын талбаруудын дэлгэрэнгүй мэдээлэлд чөлөөтэй хандах боломжтой. Энэ функцийг сонгох талбарыг салгах гэж нэрлэдэг. Хэрэв өгөгдлийн эх сурвалж нь үүрлэсэн хүснэгт (баримт бичгийн хүснэгтийн хэсэг) бол сонгох талбарт та үндсэн хүснэгтийн талбаруудад хандах боломжтой (жишээлбэл, "Холбогдох" талбараар дамжуулан Дансны үндсэн хүснэгтийн талбарт хандах)

СОНГОХ


Бараа, үйлчилгээний хүлээн авалт Бараа.Тоо хэмжээ AS Тоо хэмжээ,
Бараа, үйлчилгээний хүлээн авалтБараа.Холбоос.Харилцагч тал
FROM

ХААНА
Бараа, үйлчилгээний хүлээн авалтGoods.Link = &Link

Хүсэлтэд бүлгүүд байгаа бол талбарын лавлагааг арилгах нэг онцлог байдаг. Асуулгын талбаруудын жагсаалтад бүлэглэсэн аливаа асуулгад та бүлэглэх талбаруудын дэлгэрэнгүй мэдээлэлд чөлөөтэй хандах боломжтой.

СОНГОХ

Бараа, үйлчилгээний хүлээн авалт Бараа.Нэршил,

Бараа, үйлчилгээний хүлээн авалт Бараа.Нэршил, код,

СУМ (Бараа, үйлчилгээний бараа хүлээн авах. Тоо хэмжээ) AS Тоо хэмжээ,

Баримт бичиг.Бараа үйлчилгээ хүлээн авах Бараа ХЭРХЭН Бараа, үйлчилгээний хүлээн авалт Бараа

GROUP BY

Бараа, үйлчилгээний хүлээн авалт Бараа.Нэршил,

1С-ийн тусламжид хэрэв бүлэглэл байгаа бол асуулга сонгох талбарт зөвхөн бүлэглэх талбарууд болон сонголтын талбаруудын нэгтгэх функцүүд оролцох боломжтой гэж хэлсэн. Нэгдсэн хүснэгтийн талбарт нэгтгэх функцийг ашиглах онцгой тохиолдол байдаг. Энэ тохиолдолд сонгох талбаруудын жагсаалтад үр дүнг эдгээр талбараар бүлэглэхгүйгээр дээд түвшний хүснэгтийн талбарт хандах боломжтой.

СОНГОХ

Бараа, үйлчилгээний хүлээн авалт.Бараа.(СУМ (Тоо хэмжээ), Нэршил),

бараа үйлчилгээ хүлээн авах.Харилцагч тал

Баримт бичиг.Бараа, үйлчилгээний хүлээн авалт ХЭРХЭН Бараа, үйлчилгээг хүлээн авах

GROUP BY

Бараа, үйлчилгээний хүлээн авалт.Бараа.(Нэршил)

12. Заримдаа бүлэглэлд аль нэг талбарыг зааж өгөхийн оронд асуулга сонгох талбарт дараах параметрийг оруулах нь ашигтай байдаг.

СОНГОХ
DocProducts.Нэршил,
&Харилцагч тал,
&Үе,
SUM(DocProducts.Quantity * DocProducts.K) AS Тоо хэмжээ,
SUM(DocProducts.Amount) AS Summary
FROM
Document.Admission.Products AS DocProducts
ХААНА
DocProducts.Link = &Холбоос

GROUP BY
DocProducts.Нэршил

Дараа нь хүсэлтийн хэсэгт параметрийг тохируулна уу:

Request.SetParameter("&Account", SelectAccount);

Query.SetParameter("&Цэг", Огноо);

13. Бүх нийтийн асуулгад параметрүүдийг асуулгын өгөгдлийн эх сурвалжийн тодорхойлолтод, нөхцөл байдалд ашиглаж болно. ХААНА,хүснэгтүүд болон виртуал хүснэгтүүдийн параметрүүдийг нэгтгэх нөхцөлд. Ерөнхий асуулга үүсгэх хоёр арга байдаг:

A) стринг холбох механизмыг ашиглан хүсэлтийн текстэд хувьсагч нэмэх;

OrderingType = ?(SOME VARIABLE,"","DESC");

Query.Text = "Сонгох... Талбар1-аар зохион байгуулах " + OrderType + "...";

Query.Text = "Талбар1 сонгох...";

ЗАРИМ ХУВЬСАГЧ = 1 бол

Хүсэлт.Текст = Хүсэлт.Текст + ", Талбар2 ...";

endIf;

B) хүсэлтийн янз бүрийн хэсэгт параметрүүдийг (жишээлбэл, хүсэлтийн мэдээллийн эх сурвалжийн хэсэгт), дараа нь суулгасан хэлний аргыг ашиглах - STREPLACE().Бүх нийтийн асуулга зохиохдоо объектуудын өмчид хандах нь ашигтай байдаг МЕТАДАТА(), үүний тусламжтайгаар та зарим холбоосын хүснэгтийн нэрийг тодорхойлж болно (жишээлбэл, баримт бичгийн хувьд энэ нь иймэрхүү байх болно - Холбоос . METADATA().NAME), параметрээр дамжуулан зарим универсаль процедурт дамжуулсан.

Сонго

DocTch.Нэршил,

&Зарим DocTC AS DocTC

Дараа нь хүсэлтийн биед параметрийг тохируулна уу

Request.Text = StrReplace(Request.Text, "&SomeDocTCH", "Баримт бичиг."+Link.Metadata().Нэр+".Бүтээгдэхүүн");

Нэмэлт нөхцөлийг идэвхжүүлэхийн тулд асуулгын нөхцөлд параметрүүдийг ашиглаж болно &Параметр ЭСВЭЛ SomeProperty ЭСВЭЛ:

Request.SetParameter(“&Parameter”, “Counterparty.Name=””Иванов”””);

Шууд үг ашиглах ҮНЭНТа хүсэлтийн зарим шүүлтүүрийг устгаж болно

Request.SetParameter("&Параметр", Үнэн);

14. Хүснэгтийн контекст цэсийн команд нь асуулга зохион бүтээгчид маш их хэрэгтэй байдаг - " Хүснэгтийн нэрийг өөрчлөх...", үүний тусламжтайгаар та өгөгдлийн эх сурвалжийн ерөнхий нэр гаргаж болно. Бүтцийн хувьд ижил төстэй ижил төрлийн хүснэгтүүдэд асуулга үүсгэхийн тулд эхний хүснэгтийн асуулгын текстийг хуулах нь хоёр дахь хүснэгтэд ашигтай байж болно. асуулга зохион бүтээгчийн цонх руу орж, хүснэгтийн контекст цэсэн дэх зүйлийг сонгоно уу - Хүснэгтийг солих...болон хоёр дахь хүснэгтийг сонгоно уу.

15. Асуулга зохион бүтээгчийн виртуал хүснэгтийн нөхцөл эсвэл параметрийн хэсгүүдэд үүрлэсэн асуулга үүсгэхтэй ажиллахдаа хаалтанд хоосон зайг тодруулах аргыг ашигладаг бөгөөд контекст цэсэнд "Query Designer" гэсэн зүйл гарч ирнэ. үүрлэсэн асуулга засварлах үед хаалтанд байгаа асуулгыг бүхэлд нь нөхцөлөөр тодруулна.

Оруулсан асуулгын жишээ:

Б бүтээгдэхүүн (Бүтээгдэхүүн сонгох...)

16. Регистрүүдийг тэнцвэржүүлэх асуулгад ACS тайланг зохиохдоо илэрхийллийг Period параметр болгон ашиглах нь илүү тохиромжтой бөгөөд зөв юм. Нэмэх огноо(Төгсгөлийн үе(Хугацаа, ӨДӨР), ХОЁРДУГААР,1), виртуал үлдэгдлийг сүүлийн секундийг оруулалгүйгээр хугацааны эхэнд авдаг тул. Баримт бичигт +1 секундын аргыг ашиглах боломжгүй: Баримт бичгийг байршуулах шинэ аргын дагуу бүртгэлийн үлдэгдлийг Хилийн объектын заасан хугацаанд, баримт бичгийг бүрдүүлсэн мөчид (түүний өдөр биш) хүлээн авах ёстой. баримт бичиг +1 секунд!), мөн хуучин байршуулах аргын дагуу - баримт бичгийн цаг үед (баримт бичгийн огноо биш!). Тодорхой хугацааны эргэлт эсвэл өгөгдөлд дүн шинжилгээ хийхдээ төрөлтэй нь параметр нэмэх нь тохиромжтой Стандарт хугацаа(энэ тохиолдолд өдрийн төгсгөлд интервалын сүүлчийн огноог өгөх шаардлагагүй). "Үеийн эхлэл" стандарт талбарын хувьд "Илэрхийлэл" талбарт та оруулах ёстой "&Хугацаа. Эхлэх огноо" "Илэрхийлэл" талбарт "Үеийн төгсгөл" гэсэн стандарт талбарт " гэж бичнэ үү. &Хугацаа.Төгсгөлийн огноо".Асуулгын хэлний талаархи олон хэрэгтэй мэдээллийг синтаксийн туслахаас биш, харин 1C 8.2 тохируулагчийн бүрэн тусламжаас олж болно (F1 товчлуур)

17.Асуулгын функц IsNull(англи хувилбарыг бичих нь илүү тохиромжтой IsNull) нь ихэвчлэн тоон асуулгын талбаруудын Null утгыг арилгахад ашиглагддаг. Зарим тохиолдолд, жишээлбэл, хоёр хүснэгтийн бүрэн нэгдэл, функц IsNull (Параметр1, Параметр2)загварыг амжилттай сольж болно ХЭЗЭЭ... ТЭГВЭЛ..ӨӨРӨӨ....Төгсгөл, аль ч талбарын хувьд NULL утгууд нь эхний болон хоёр дахь хүснэгтэд хоёуланд нь байж болно (энэ бүтэц нь талбарт Null бус утгыг авах боломжийг танд олгоно). Гэхдээ нөхцөлт оператороос ялгаатай нь бид үүнийг санах ёстой СОНГОЛТфункц IsNullхоёр дахь аргументын төрлийг эхний аргументын төрөл болгон хувиргадаг бөгөөд хэрэв аргументуудын төрлүүд өөр байвал үүнийг анхаарч үзэх хэрэгтэй!

IsNull(Reg.Remaining,0)

IsNull(Doc.Product,Doc1.Item)

18. Болзолт барилга байгууламжийн үед СОНГОЛТТодорхой утгын тэгш байдлыг шалгах энгийн тохиолдлын өөр синтакс байдаг боловч энэ нь баримтжуулаагүй байна:

Сонголтын илэрхийлэл Хэзээ 1 Дараа нь "Өндөр" Хэзээ 2 Дараа нь "Дундад" Бусад "Бага" Төгсгөл

19. NULL утгыг шалгах оператор Тиймээ Null(Бид англи хувилбарыг ашиглахыг зөвлөж байна Null байна). Хамгийн багадаа нэг нь Null гэсэн хоёр утгыг харьцуулах аливаа үйлдэл үргэлж худал байдаг тул ийм бүтэц бий болсон. бичих Энд нэр = nullбуруу. Энэ операторыг үгүйсгэх хэлбэр нь бас сонирхолтой юм Үгүй- буруу, гэхдээ зөв Тиймээ Null бишэсвэл хэлбэр Үгүй (Талбар1 нь хоосон)- энэ нь He оператортой хамт хэрэглэгддэг бүх операторуудаас мэдэгдэхүйц ялгаа юм.

20. Заримдаа операторын хэлбэр хэрэг болдог INжагсаасан утгуудын аль нэгтэй таарч байгаа эсэхийг шалгах.

...Бүтээгдэхүүн хаана байна.Б нэр ("Гэр ахуйн цахилгаан хэрэгсэл","Компьютер")

Лавлах номын хувьд операторын маягт хэрэгтэй байж болох юм INшатлалын гишүүнчлэлийн шалгалт.

...ШАТНАЛТЫН Нэршил хаана байна (&Бүлэг)

Оператор INихэвчлэн дэд асуулгын үр дүнд утга орсон эсэхийг шалгахад ашиглагддаг.

Дэд асуулгад та нөхцөл дэх гадаад асуулгын талбарт хандах боломжтой.

// Одоо байгаа бүтээгдэхүүний нэрийг сонгоно уу

// нэхэмжлэх дээр

СОНГОХ

Бүтээгдэхүүн.Нэр

Лавлах.Нэршил ХЭРХЭН Бүтээгдэхүүн

(СОНГОХ

Нэхэмжлэхийн бүрдэл.Нэршил

Баримт бичиг.Нэхэмжлэх.Бүрдэл Нэхэмжлэхийн Нэхэмжлэхийн бүрдэл

Нэхэмжлэхийн агуулга.Нэршил = Бүтээгдэхүүн.Холбоос)

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

Дэд асуулгын синтакс

(илэрхийлэл1, илэрхийлэл2,..., илэрхийлэлN) (Илэрхийлэл1, илэрхийлэл2,..., илэрхийлэлN... сонгоно уу)

Утгын хүснэгтийн синтакс

(илэрхийлэл1, илэрхийлэл2,..., илэрхийлэлN) (&TK) дотор TK утгын хүснэгтэд эхний N багана ашиглагдана.

20. Асуулга зохион бүтээгч үргэлж яаж хийдэг тухай онигоо интернетэд байдаг ЗҮҮНБид хэрхэн зааж байгаагаас үл хамааран хүснэгтүүдийг нэгтгэх (мөн тэдгээрийг солих). ЗӨВ:

1С: Байгууллага "зүүн тийш" дуртай.

21. Query консол дээр нарийн төвөгтэй асуултуудыг дибаг хийхэд тохиромжтой. Интернетэд тэдний олон байдаг. Асуултыг дибаг хийсний дараа та үүнийг хуулж болох бөгөөд асуулгын дизайнер дээр гайхалтай товчлуур байна " Хүсэлт", та үүнийг ижил хэлбэрээр буулгаж, хадгалах боломжтой (өмнө нь үүнийг зөвхөн тохируулагч руу хуулж, мөр таслах тэмдэгтийг ашиглан хүсэлтийг форматлах боломжтой байсан). "Асуулга" товчийг дарахад нээгдэх цонхонд та асуулгыг засварлаж, гүйцэтгэлийн үр дүнг харах боломжтой бөгөөд энэ нь маш тохиромжтой.

22. ACS тайланг боловсруулахдаа хэрэв та тодорхой талбараар шүүлт хийх шаардлагатай бол хүсэлтийн текстэд параметр нэмэх шаардлагагүй гэдгийг санах хэрэгтэй. Query Builder нь табтай " Өгөгдлийн бүтэц", та нөхцөл байдалд параметр нэмэх боломжтой. Нэмж дурдахад, ACS тайлангийн түвшинд дурын нөхцлүүдийг нэмж, хурдан тохиргоонд хадгалах боломжтой болзолын таб байдаг. Энэ тохиолдолд нөхцөл нь бүх нийтийн байх болно (тэгш байдал, тэгш бус байдал, харьяалагдах, жагсаалтад оруулах гэх мэт).

23. Баримт бичгүүдтэй ажиллахдаа виртуал хүснэгтийн талбараар эрэмбэлэх шаардлагатай ЦАГ ХУГАЦАА, гэхдээ азгүй - үүрлэсэн асуулгад энэ талбараар эрэмбэлэх нь зөв ажиллахгүй байна. Хэнгэрэгтэй бүжиглэх нь тусалдаг: виртуал талбараар ангилах ЦАГ ХУГАЦААогноо, холбоос гэсэн хоёр ангиллаар солигдоно. Та мөн үүрлэсэн асуулгыг тусдаа асуулга болгон зөөж түр хүснэгтээр дамжуулан асуудлыг шийдэж болно. Олон хувилбарын хувьд энэ функц эсвэл алдаа засаагүй байна.

Заасан эсрэг талын хамгийн сүүлд байршуулсан баримт бичгийг хүлээн авсан буруу ажиллах хүсэлтийн жишээ (эсвэл баримт бичгийн хүснэгтийн хэсэг):

СОНГОХ

Хэрэглээний материал. Шугамын дугаар,

Хэрэглээний бүтээгдэхүүн. Бүтээгдэхүүн,

Хэрэглээний зүйл.Тоо хэмжээ,

Хэрэглээний бүтээгдэхүүн.Үнэ,

Хэрэглээний зүйлс.Хэмжээ

Баримт бичиг. Хэрэглээний материал AS D

Боломжит шийдлүүд:

A) -ээр солино АНХААРУУЛАХдээр

ЗАХИАЛГА Д.Огноо ЗАХИАЛГА.

B) Та үүрлэсэн асуулгыг түр зуурын хүснэгт рүү зөөж болно:

Баримт бичиг. Хэрэглээний материал AS D

Мөн Д.Сөрөг тал = &Харилцагч

////////////////////////////////////////////////////////////////////////////////

СОНГОХ

Хэрэглээний материал. Шугамын дугаар,

Хэрэглээний бүтээгдэхүүн. Бүтээгдэхүүн,

Хэрэглээний зүйл.Тоо хэмжээ,

Хэрэглээний бүтээгдэхүүн.Үнэ,

Хэрэглээний зүйлс.Хэмжээ

Баримт бичиг.Хэрэглээний материал.Бараа AS Хэрэглээний бараа

C) Та баримт бичгийн үндсэн хүснэгт, зөвхөн дараа нь хүснэгтийн хэсэгт хандаж болно

ШИЛДЭГ 1-ийг СОНГОХ

Шугамын дугаар,

Бүтээгдэхүүн,

Тоо хэмжээ,

Үнэ,

нийлбэр

Баримт бичиг.Consumables AS Consumables

Зардал.Харилцагч тал = &Харилцагч тал

Мөн Хэрэглээний материал.Гүйцэтгэсэн

АНХААРУУЛАХ

Хэрэглээ.Цаг агшин БУУРАЛТ

24. Баримт бичгийн (лавлах) үндсэн хүснэгтэд хандахдаа дэд хүснэгтийн (хүснэгт хэсэг) өгөгдөлд хандах боломжтой. Энэ боломжийг гэж нэрлэдэг хүснэгтийн талбаруудын лавлагааг хасах. Даалгаврын жишээ бол хүснэгтийн хэсэгт тодорхой бүтээгдэхүүн агуулсан баримт бичгийг хайх даалгавар юм.

Бараа хүлээн авсан хүснэгтийн асуулгатай харьцуулахад энэ асуулгын давуу тал нь хэрэв баримт бичигт давхардсан тоо байгаа бол асуулгын үр дүн нь түлхүүр үг ашиглахгүйгээр зөвхөн өвөрмөц баримтуудыг буцаана. ТӨРӨЛ.

Харьцуулах:

Энэ нь магадгүй бүх зүйл юм. Асуулгын хэлэнд миний авч үзээгүй олон асуулт байсаар байгаа нь тодорхой байна. Энэ нийтлэлийг бичихийн тулд би 1С 8.2 spec8.ru үндсэн сургалтыг дүүргэсний дараа олж авсан мэдээлэл, мөн "1С 8.2 Хөгжүүлэгчийн гарын авлага" ном, Интернетээс авсан.



Санамсаргүй нийтлэлүүд

Дээшээ