1c 8 виртуал хүснэгт.

Энэхүү нийтлэлд MS DBMS ашиглан клиент-сервер горимд ажилладаг тохиргооны үлдэгдлийн виртуал хүснэгтийн бодит хэрэгжилтийг тайлбарласан болно. SQL сервер.

Хэрэглэх чадвар

Нийтлэлд 1C: Enterprise платформын 8.3.5.1383 хувилбарыг авч үзэх болно. Платформын одоогийн хувилбарт материалд тайлбарласан текстэд зарим өөрчлөлт оруулах боломжтой. T-SQL асуулга DBMS сервер талд гүйцэтгэгдэнэ.

Үлдэгдэл виртуал хүснэгтийн төхөөрөмж

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

СОНГОХ
Барааны хувьцааны үлдэгдэл.Бараа,
Барааны хувьцааны үлдэгдэл.Агуулах,
Барааны хувьцааны үлдэгдэл.Тоо хэмжээ
FROM
Хуримтлалын бүртгэл.Түүхий эдийн нөөц.Үлдэгдэл(&Огноо, Агуулах = &Агуулах) ХЭРХЭН
Барааны хувьцааны үлдэгдэл

Эхлээд дэлхийн контекстийн аргаар GetDatabaseStorageStructure()"Барааны нөөц" хуримтлалын бүртгэлийн өгөгдлийг хадгалдаг мэдээллийн сангийн хүснэгтүүдийн жагсаалтыг авна уу.

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

Нийт дүнг хадгалж байна энэ бүртгэл 1C: Enterprise 8 горимд дараах байдлаар тохируулсан:

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


Платформ нь хүсэлтийн текстийг дараах хүсэлт болгон хувиргадаг бөгөөд үүнийг DBMS сервер дээр гүйцэтгэх болно.

СОНГОХ
Q_000_T_001.Fld82 ,
Q_000_T_001.Fld83 ,
Q_000_T_001.Fld84 Үлдэгдэл
FROM
(SELECT Fld82,
fld83,

FROM
(SELECT Fld82,
fld83,
SUM (Fld84 ) AS Fld84 Balance
AccumRgT85-аас
ХААНА Үе = DATETIME (3999 , 11 , 1 )
БА ((Fld83 = ))
БА (Fld84<>0 ) БА (Fld84<> 0 )
Fld82, Fld83-р бүлэглэх
Fld84 Balance БАЙНА<> 0
НЭГДЭЛ
SELECT Fld82,
fld83,
НИЙЛҮҮЛЭЛТ (RecordKind = 0 ТЭГВЭЛ - Fld84 ӨСГӨ Fld84 Төгсгөл) AS Fld84 Balance
AccumRg81-ээс
WHERE Хугацаа >= DATETIME (2012 , 9 , 1 )
БА Үе< DATETIME (3999 , 11 , 1 )
БА Идэвхтэй
БА ((Fld83 = 9:))
Fld82, Fld83-р бүлэглэх
Fld84 Balance БАЙНА<>0 ) Т
Fld82, Fld83-р бүлэглэх
Fld84 Balance БАЙНА<>0) Q_000_T_001

Хүлээн авсан хүсэлтийг илүү нарийвчлан авч үзье.

Нэгдүгээрт, нэгдэлд багтсан эхний хайлтыг ашиглан үр дүнгийн AccumRgT85 хүснэгтээс өгөгдлийг сонгоно. Нийт дүнг одоогийн нийт дүнг хадгалах өдөр (11/01/3999) авсан бөгөөд Агуулах талбарт нэмэлт нөхцөл тавьсан (ийм нөхцөлийг виртуал хүснэгтийн параметрүүдэд ашигласан тул). Нэмж дурдахад, үр дүнд нь тэг үлдэгдэлтэй мөр байхгүй эсэхийг шалгана.

Асуулгын бичвэрт сонгосон хэмжээсийн дагуу бүлэглэхийг анхаарна уу. Тийм ч учраас 1C: Enterprise асуулгын хэл дээрх текст нь хэмжээсээр нэмэлт бүлэглэх шаардлагагүй юм.

Хоёрдахь нэгдэх асуулга нь AccumRg81 бүртгэлийн хөдөлгөөний хүснэгтийг ашигладаг. Хөдөлгөөний төрлөөс хамааран (хэрэв RecordKind нь 0-тэй тэнцүү бол энэ нь Inflow, өөрөөр бол - Outflow) илэрхийлэлд тэмдэг тавина. Платформ нь виртуал хүснэгтийн параметр болгон заасан огнооноос одоогийн нийт дүнг хадгалах хүртэлх хугацааны өгөгдлийг сонгоно (01.11.3999).

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

Хэрэв MS SQL Server DBMS-ийг ашиглаж, мэдээллийн санд 2000 гэсэн огноог тохируулсан бол бүх огноог заасан зөрүүгээр хадгалах болно, өөрөөр хэлбэл. 11/01/3999-ийн оронд та 11/01/5999-г харах болно.

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

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

СОНГОХ
Q_000_T_001.Fld82 ,
Q_000_T_001.Fld83 ,
Q_000_T_001.Fld84 Үлдэгдэл
FROM
(SELECT Fld82,
fld83,
SUM (Fld84 Balance ) AS Fld84 Balance
FROM
(SELECT Fld82,
fld83,
SUM (Fld84 ) AS Fld84 Balance
AccumRgT85-аас
ХААНА Хугацаа = DATETIME(2012 , 4 , 1 )
БА ((Fld83 = 9:))
БА (Fld84<> 0 )
БА (Fld84<> 0 )
Fld82, Fld83-р бүлэглэх
Fld84 Balance БАЙНА<> 0
НЭГДЭЛ
SELECT Fld82,
fld83,
НИЙЛҮҮЛЭЛТ (RecordKind = 0 ТЭГВЭЛ Fld84 ELSE - Fld84 END ) AS Fld84 Balance
AccumRg81-ээс
WHERE Хугацаа >= DATETIME (2012, 4, 1)
БА Үе< DATETIME (2012 , 9 , 1 )
БА Идэвхтэй
БА ((Fld83 = 9:))
Fld82, Fld83-р бүлэглэх
Fld84 Balance БАЙНА<>0 ) Т
Fld82, Fld83-р бүлэглэх
Fld84 Balance БАЙНА<>0) Q_000_T_001

Хүсэлтийн хэсэгт дараах нөхцөл байдлыг анхаарч үзээрэй.

Хэрэв миний нийтлэл танд хэрэгтэй бол саналаа өгөхөө бүү мартаарай :-)

Цуглуулгын бүх даалгаварт зориулсан рубриктор энд байна(даалгавар тус бүрийн форумын холбоосуудтай хуудас)
http://chistov.spb.ru/forum/16-969-1

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

Ингээд эхэлцгээе:


Алсын зайнаас хүргэх тохиолдолд шалгалтын төгсгөлд таны ширээний компьютер дээр хоёр объект байх ёстой.

1. Эцсийн байршуулалт мэдээллийн бааз(dt файл)
2. Тайлбар тэмдэглэл

Өөр юу ч байх ёсгүй, завсрын хуулбар гэх мэт.

Тайлбар тэмдэглэл бичихээ мартуузай!
Тодорхой бус томъёолсон даалгавартай бол та яг ийм ийм шийдлийг сонгосон гэдгээ тэнд бичихээ мартуузай.
Мөн кодонд гол газруудад фанатизмгүйгээр товч тайлбар үлдээсэн нь дээр, гэхдээ шалгуулагч асуулт байвал бичих нь дээр.

Гэхдээ шалгалтын өмнө уншиж өгөх зааварт энэ талаар танд хэлэх болно.
Урьдчилан мэдэх нь дээр)


Нэвтрэх асуултуудын тэмдэгтийг ашиглаж байна.

Заримдаа залгахад илүү хурдан байдаг нэмэлт гарБайршлыг нааш цааш солих нь цаг хэмнэнэ
&=Alt+38

*************************************************************************************************
Асуулгад MomentTime()-г ашиглах

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

Moment = ?(PostMode = PostModeDocument.Online, Тодорхойгүй, MomentTime());

*************************************************************************************************
Бүртгэлээр баримт бичгийн хөдөлгөөнийг үүсгэхдээ нийтлэх процессын эхэнд одоогийн баримт бичгийн хөдөлгөөнийг бүртгэлээр цэвэрлэх шаардлагатай.

Код нь иймэрхүү байна:

Movements.RegisterName.Write = Үнэн; Movements.RegisterName.Clear();

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

Movements.RegisterName.Write();

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

Гэхдээ би хаа сайгүй эдгээр гурван мөрийг бүтээхийг нэгэн зэрэг зааж өгсөн.

Movements.RegisterName.Write = Үнэн; Movements.RegisterName.Clear(); Movements.RegisterName.Write();

*************************************************************************************************
Өгөгдлийг хаах хоёр арга байдаг бөгөөд тэдгээрийн хоорондох сонголт нь хуучин эсвэл шинэ байхаас хамаарна.

1) Уламжлалт удирдлагатай түгжих, баримт бичгийг нийтлэх хуучин арга (DataLock объект)

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


Жишээ:

Баримт бичигт - тоо хэмжээ, бүртгэлд - тоо хэмжээ, хэмжээ (зардал)
Тиймээс, бид баримтаас барааны тоо хэмжээг мэддэг - бид хэдийг хасдаг, гэхдээ зардлын үнэ - үгүй.
Бид үүнийг зөвхөн бүртгэлээс мэдэж болно, гэхдээ үлдэгдэл хүлээн авах мөчөөс хөдөлгөөнийг бүртгэх хооронд хэн ч бүртгэлийг өөрчлөхгүйн тулд бид үлдэгдлийг уншихаас өмнө бүртгэлийг хаах хэрэгтэй.
Тиймээс, энэ тохиолдолд DataLock объектыг ашигладаг. Үүнийг үүсгэхдээ ямар хэмжигдэхүүнээр бүртгэлийг хааж байгааг (жишээлбэл, манай тохиолдолд - зөвхөн баримт бичигт заасан нэр томъёогоор) зааж өгөх нь илүү зөв бөгөөд ингэснээр шаардлагагүй түгжээ байхгүй бөгөөд өөр хэрэглэгч өөр нэр томъёог зарж болно.


1. DataLock объектыг ашиглан түгжээг тохируулна уу
2. Үлдсэн хэсгийг нь уншина уу
3. Дебит хийх боломжийг шалгах
4. Бид хөдөлгөөнийг бий болгодог, жишээлбэл, бид бараагаа хасдаг
5. Баримт бичгийг байршуулсны дараа хаалт автоматаар гарна (блоклох нь байршуулах гүйлгээний хүрээнд хүчинтэй бөгөөд систем автоматаар гаргана). Өөрөөр хэлбэл, объектын түгжээг тусгайлан тайлах шаардлагагүй болно.

2) Баримт бичиг хөтлөх шинэ аргачлал (LockForChange = Үнэн өмчийг ашиглах)

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

Жишээ:
Барааны борлуулалтын үйл ажиллагааг авч үзье.
Баримт бичигт - тоо хэмжээ, бүртгэлд - зөвхөн тоо хэмжээ
Тэгэхээр барааны тоо хэмжээг баримтаас нь мэдэж байгаа.
Бид баримт бичигт заасан тоогоор хөдөлгөөн үүсгэж, тэмдэглэнэ. Дараа нь бид бүртгэлийг уншиж, үлдэгдлийг харж, сөрөг зүйл байгаа эсэхийг шинжлэх болно. Хэрэв байгаа бол бид алдаа гаргаж, Refusal = True гэж тохируулна.

Тиймээс дараалал нь:
1. Регистрээр шилжихийн тулд LockForChange = True шинж чанарыг тохируулна
2. Бид хөдөлгөөнийг бий болгодог - бид бараагаа хасдаг
3. Хөдөлгөөнийг тэмдэглэ
4. Бүртгэлийг уншиж, сөрөг үлдэгдэл байхгүй эсэхийг шалгаарай. Хэрэв байгаа бол тэд илүүдлийг нь хассан, үгүй ​​бол бүх зүйл сайхан байна.

Тиймээс, энэ тохиолдолд бид ямар хэмжигдэхүүн дээр бүртгэлийг хаах шаардлагатайг зааж өгөх шаардлагагүй болно.
Бид зүгээр л хөдөлгөөнөө бичиж, хөдөлгөөн хийж, бичлэг хийхээсээ өмнө BlockToChange = True шинж чанарыг тохируулсан.
Систем өөрөө бидний бичсэн зүйлд дүн шинжилгээ хийсний дараа шаардлагатай хэмжилтийн дагуу бичлэг хийх үед бүртгэлийг хаах болно.
Дууссаны дараа түгжээг арилгах болно.

Энэ сонголт (хоёр дахь нь) илүү энгийн бөгөөд үүнийг "баримт бичиг хөтлөх шинэ арга" гэж нэрлэдэг бөгөөд 1С нь боломжтой бол үүнийг ашиглахыг зөвлөж, эхний сонголтыг ашигласан тохиолдолд оноо хасдаг боловч зарим тохиолдолд үүнийг ашиглах боломжгүй бөгөөд эхнийх нь сонголтыг Data Lock объектод ашигладаг (доороос харна уу). дээрх жишээ).

Сонгосон аргаас үл хамааран тэдэнтэй ажиллахаасаа өмнө хөдөлгөөнийг цэвэрлэх ёстой гэдгийг би бас тэмдэглэж байна (өмнөх зөвлөмжийг үзнэ үү)

*************************************************************************************************
Өгөгдөл хаах (дээрх тайлбараас №1 блоклох арга)

Өгөгдлийг уншиж, энэ өгөгдөл дээр үндэслэн хөдөлгөөн хийх үед хяналттай түгжээ шаардлагатай
Удирддаг түгжээний кодыг авах хамгийн хурдан арга бол "DataLock" гэж бичээд, Синтакс Туслагч руу залгаж, тэндээс жишээ кодыг хуулах явдал юм. Дараа нь өөрийн бүртгэл, хэмжилтийн нэрээр үүнийг өөрчлөхөд хялбар байдаг.

Ийм харагдаж байна:

Түгжээ = Шинэ DataLock; LockElement = Lock.Add("Хуримтлалын бүртгэл.Барааны агуулах"); LockItem.Mode = DataLockMode.Exclusive; LockItem.DataSource = PM; LockElement.UseFromDataSource("Нэршил", "Нэршил"); Lock.Lock();

*************************************************************************************************
Баримт бичгийн хүснэгтийн хэсгийг "PM" гэж нэрлэх нь дээр.

Баримт бичгийн 99% -д хүснэгтийн хэсэг нь нэг байна. Ийм нэгдмэл нэр хүснэгтийн хэсгүүдЭнэ нь танд маш их цаг хэмнэхэд тусална, учир нь:
1) Маш богино - хурдан бичээрэй
2) Бүх баримт бичигт адилхан, та код бичихдээ үүнийг юу гэж нэрлэдэгийг санах шаардлагагүй

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

Ерөнхийдөө би бүх даалгаварт түүврийг ашигласан.

Дээж нь зөвхөн өгөгдлийг уншихад (TK-ээс ялгаатай) "хурцалсан" тул гүйцэтгэлийн хувьд системийн хувьд илүү оновчтой байдаг.

Гэхдээ ямар ч тохиолдолд Select() аргын өмнө хоосон байдлын хүсэлтийн үр дүнг шалгах нь илүү дээр юм, энэ нь системийн ачааллыг цаашид бууруулах болно.

Үр дүн = Request.Run(); Хэрэв Үр дүн биш бол.Хоосон() Дараа нь Сонголт = Үр дүн.Select(IteratingQueryResult.Бүлэглэлээр); ... EndIf;

Хэрэв бид хүсэлтээс зөвхөн нэг утгыг авах шаардлагатай бол
(жишээ нь, зөвхөн данснаас хасах арга нягтлан бодох бүртгэлийн бодлогоэнэ жил тогтоосон):

Үр дүн = Request.Run(); Хэрэв Үр дүн биш бол.Хоосон() Дараа нь Сонголт = Үр дүн.Select(); Selection.Next(); Зардлаас хасах арга = Дээж Зардал хасах арга; EndIf;

*************************************************************************************************
BU-ийн даалгаварт зориулсан "Үйл ажиллагаа" баримт бичиг

BU-ийн ажлуудад зориулсан Үйл ажиллагааны баримт бичгийг үүсгэхээ мартуузай.

Бид түүний дамжуулалтыг ерөнхийд нь унтраадаг ("Conducting = Deny" шинж чанарт), бид нягтлан бодох бүртгэлийн бүртгэлд ямар хөдөлгөөн хийхийг зааж, маягт дээрх хөдөлгөөнийг гаргаж авдаг.

*************************************************************************************************
Баримт бичгийн үйл ажиллагааны боловсруулалт:

Байх ёстой орсон:
Үйл ажиллагааны болон нягтлан бодох бүртгэлд. баримт бичгийн нягтлан бодох бүртгэлийг идэвхжүүлсэн байх ёстой ("Үйл ажиллагаа" баримт бичгээс бусад нь доороос үзнэ үү).

Байх ёстой унтраасан:
тооцооны ажилд цалингийн баримт бичиг нь утгагүй болно.

"Үйл ажиллагаа" баримт бичгийн хувьд нийтлэхийг ерөнхийд нь идэвхгүй болгох ёстой (баримт бичгийн шинж чанарт "Post = Disable"),
Учир нь энэ нь бичихдээ өгөгдлийг шууд регистрт бичдэг.

*************************************************************************************************
"Заасан нэршил эсвэл заагаагүй бол аль нэг нь" гэх мэт асуулгын нөхцөл

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

Нэршил = &Нэршил OR &Нэршил = Утга(Каталог.Нэршил.Хоосон лавлагаа)

Гэхдээ энэ нөхцлийг өөрчлөх нь илүү оновчтой бөгөөд зөв байх болно (юкон баярлалаа):


Query.Text = Query.Text + " WHERE Нэршил = &Нэршил";

EndIf;

8.3.5-д асуулгын объектын загвар бий болсноор нөхцөл нэмэх нь илүү аюулгүй байх болно:

Хэрэв ValueFilled(Нэршил) Дараа нь
Query1.Filter.Add("Нэршил = &Нэршил");
Query.SetParameter("Нэршил", Нэршил);
EndIf;

*************************************************************************************************
Хүснэгтүүдийг асуулгад нэгтгэх:

Нийт бичлэгийн тоо нь хавсаргасан хүснэгтийн талбарыг харуулах эсэхээс хамаарахгүй, зөвхөн тохируулсан холбоосуудаас хамаарна.
Өөрөөр хэлбэл, хавсаргасан хүснэгтийн талбар харагдахгүй байж магадгүй юм.

Хэрэв та ямар ч нөхцөлгүйгээр хүснэгтийг хавсаргахыг хүсвэл "Нөхцөл" таб дээр "ҮНЭН" нөхцөлийг бичнэ үү.
Энэ тохиолдолд хүснэгт яг нэгдэх болно.

*************************************************************************************************
Онцлог шинж чанаруудын төлөвлөгөөг ашиглах (PVC):

1. Объектуудын шинж чанарыг тодорхойлох механизм болгон ашиглах.

1.1. Бид PVC хийдэг. Эдгээр нь Онцлогын төрлүүд (жишээ нь өнгө, хэмжээ, хамгийн их хурд гэх мэт) байх болно. Тохиргоо дотроос боломжит бүх төрлийн шинж чанарыг сонгож, шаардлагатай бол 1.2-р зүйлээс объект үүсгэж, тохиргоонд зааж өгнө үү.

1.2. Нэмэлт PVC утгын хувьд бид түүнд захирагдах шинж чанарын нэмэлт үнэ цэнийн лавлах (эсвэл зүгээр л шинж чанарын утгууд) үүсгэдэг.
Шинж чанарууд нь одоо байгаа лавлахад байхгүй бол түүнд хадгалагдах болно. Хэрэв бидэнд шаардлагатай бүх шинж чанарууд нь одоо байгаа лавлах санд байгаа эсвэл эдгээр утгыг энгийн өгөгдлийн төрлөөр төлөөлж болох юм бол бид үүнийг үүсгэж чадахгүй. PVC тохиргоонд бид энэ лавлахыг нэмэлт зүйлд ашиглах болно гэдгийг харуулж байна. онцлог шинж чанарууд.

1.3. Бид гурван объектыг холбосон мэдээллийн бүртгэлийг үүсгэдэг.
- Бид шинж чанарын механизмыг холбодог объект
- Төрөл шинж чанар (PVC төрөл)
- Онцлог шинж чанар (төрөл - шинж чанар, энэ нь PVC үүсгэсний дараа системд гарч ирсэн шинэ төрөл юм.
шинж чанарын утга авч болох бүх боломжит өгөгдлийн төрлийг тайлбарлах).
Мэдээллийн бүртгэлд шинж чанарын төрлөөс дахин шинж чанарын утгын өмчлөгч (сонголтын параметрийн хамаарал), мөн шинж чанарын утгын төрлийн хамаарлыг бид зааж өгнө.

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

2. Нягтлан бодох бүртгэлийн бүртгэлийн дэд конто механизмыг бий болгохын тулд PVC ашиглах .

2.1. Бид PVC төрлийн дэд контогуудыг бүтээдэг.

2.2. Бид дэд конто утгуудын дэд санг үүсгэдэг (шинж чанаруудын нэгэн адил бусад лавлахад байхгүй бол дэд конто утгыг агуулна).

2.3. Холболт нь дансны схемийг ашиглан хийгддэг.

*************************************************************************************************
Нягтлан бодох бүртгэлийн бүртгэлийн нөөц:

дүн - үлдэгдэл,
Тоо хэмжээ - балансаас гадуурх болон нягтлан бодох бүртгэлийн тэмдэгтэй холбоотой Тоо хэмжээ

*************************************************************************************************
Нягтлан бодох бүртгэлийн виртуал хүснэгтүүд:

Эргэлт: нэг дансны эргэлт
Эргэлтийн хэмжээDtKt: хоёр данс хоорондын эргэлт, өөрөөр хэлбэл тухайн тайлант хугацааны ижил гүйлгээ.

*************************************************************************************************
Нягтлан бодох бүртгэлийн бүртгэл дээрх валютын нягтлан бодох бүртгэл - хэрхэн хэрэгжүүлэх вэ:

Бид дансны төлөвлөгөөнд нягтлан бодох бүртгэлийн "валют" гэсэн тэмдгийг бий болгодог.
Нягтлан бодох бүртгэлийн бүртгэлд бид нэмэлт байдлаар дараахь зүйлийг бий болгодог.
- Валютын хэмжээ (хоосон утгыг хориглох, балансын бус, нягтлан бодох бүртгэлийн тэмдэг - валют)
- Валютын дүнгийн нөөц (баланс бус, нягтлан бодох бүртгэлийн тэмдэг - валют, энэ нь мөнгөн дүнг валютаар, өөрөөр хэлбэл 100 доллараар хадгална)
Бүгд.

Тиймээс бүртгэлийн бүтэц:

Хэмжилт:
- Валют
Нөөц
- Тоо хэмжээ
- дүн (рубль дэх дүн)
- Валютын хэмжээ (валют дахь дүн)

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

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

Үгүй бол бид хамгийн сүүлийн үеийн зүсмэлийг биш, харин заасан нөөцийн утгатай хамгийн сүүлийн бичлэгийг авах болно - энэ нь хэмжилтийн багц дахь сүүлчийнх биш байж магадгүй юм.

*************************************************************************************************
Тооцооллын бүртгэл дэх нөөц ба шинж чанарын утга

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

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

*************************************************************************************************
Тооцооллын бүртгэлийн хэмжигдэхүүний шинж чанарт "Үндсэн" хайрцгийг шалгана уу
Энэ нь ирээдүйд энэ хэмжээсийн суурийг олж авах бөгөөд энэ талбарын утгыг нэмэлт индексжүүлэхэд үйлчилнэ гэсэн үг юм.

*************************************************************************************************
Бүртгэлийн бүртгэлийг бичихдээ амралтын хүчинтэй байх хугацааг сараар нь хуваах,
хэрэв амралтыг баримт бичигт нэг мөрөнд хэдэн сарын турш нэг мөрөнд заасан бол:

StartDateCurMonth = StartMonth(CurStringBasicAccruals.ActionPeriodStart); EndDateCurMonth = EndMonth(CurStringBasicAccruals.ActionPeriodStart); CurrentMonth = Огноо; DateBeginTecMonth гэхэд<= НачалоМесяца(ТекСтрокаОсновныеНачисления.ПериодДействияКонец) Цикл Движение = Движения.ОсновныеНачисления.Добавить(); Движение.Сторно = Ложь; Движение.ВидРасчета = ТекСтрокаОсновныеНачисления.ВидРасчета; Движение.ПериодДействияНачало = Макс(ДатаНачалаТекМесяца, ТекСтрокаОсновныеНачисления.ПериодДействияНачало); Движение.ПериодДействияКонец = КонецДня(Мин(ДатаОкончанияТекМесяца, ТекСтрокаОсновныеНачисления.ПериодДействияКонец)); Движение.ПериодРегистрации = Дата; Движение.Сотрудник = ТекСтрокаОсновныеНачисления.Сотрудник; Движение.Подразделение = ТекСтрокаОсновныеНачисления.Подразделение; Движение.Сумма = 0; Движение.КоличествоДней = 0; Движение.График = ТекСтрокаОсновныеНачисления.График; Движение.Параметр = ТекСтрокаОсновныеНачисления.Параметр; Движение.БазовыйПериодНачало = НачалоМесяца(ДобавитьМесяц(Дата, -3)); Движение.БазовыйПериодКонец = КонецДня(КонецМесяца(ДобавитьМесяц(Дата, -1))); ДатаНачалаТекМесяца = НачалоМесяца(ДобавитьМесяц(ДатаНачалаТекМесяца, 1)); ДатаОкончанияТекМесяца = КонецМесяца(ДатаНачалаТекМесяца); КонецЦикла; КонецЕсли;

*************************************************************************************************
Гант диаграмыг бүтээх:

Бид маягт дээр "Гант диаграм" төрлийн элементийг байрлуулж, түүнийг DG гэж нэрлээд "Үйлдвэрлэх" командыг үүсгээд маягтын модульд дараах зүйлийг бичнэ.

&AtClient Процедур Үүсгэх(Тушаал) GenerateAtServer(); EndProcedure &AtServer Procedure GenerateAtServer() DG.Clear(); DG.Update = Худал; Запрос = Новый Запрос("ВЫБРАТЬ |ОсновныеНачисленияФактическийПериодДействия.Сотрудник, |ОсновныеНачисленияФактическийПериодДействия.ВидРасчета, |ОсновныеНачисленияФактическийПериодДействия.ПериодДействияНачало КАК ПериодДействияНачало, |ОсновныеНачисленияФактическийПериодДействия.ПериодДействияКонец КАК ПериодДействияКонец |ИЗ |РегистрРасчета.ОсновныеНачисления.ФактическийПериодДействия КАК ОсновныеНачисленияФактическийПериодДействия |ГДЕ |ОсновныеНачисленияФактическийПериодДействия.ПериодДействия МЕЖДУ &ДатаНачала И &ДатаОкончания "); Query.SetParameter("StartDate", Period.StartDate); Query.SetParameter("Төгсгөлийн огноо", Period.EndDate); Сонголт = Query.Execute().Select(); While Sample.Next() Loop Point = DG.SetPoint(Selection.Employee); Цуврал = DG.SetSeries(Selection.Calculation Type); Утга = DG.GetValue(Цэг, Цуврал); Интервал = Value.Add(); Interval.Start = Sample.PeriodActionStart; Interval.End = Sample.PeriodActionEnd; Төгсгөлийн мөчлөг; DG.Update = үнэн; Төгсгөлийн процедур

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

*************************************************************************************************
Төлбөрийн даалгаварт "storno" бүртгэлийг боловсруулах:

Нийтлэл боловсруулах процедурт (объект модуль) бид бүх хөдөлгөөнийг үүсгэдэг бөгөөд хэрэв бусад хугацаанд бичлэг байгаа бол бид үүнийг ийм байдлаар авах болно.
(систем нь тэдгээрийг автоматаар үүсгэдэг - бидэнд тусалдаг):

RecordsAdditions = Movements.BasicAccruals.GetAdditions(); // Та нэмэлтийг авахын тулд хөдөлгөөн бичих шаардлагагүй

RecordAddition Loop-аас TekLine бүрийн хувьд
Бичлэг = Movements.BasicAccruals.Add();
FillPropertyValues(Бичлэг, CurrentString);
Record.RegistrationPeriod = CurrentString.RegistrationPeriodStorno;
Record.ActionPeriodStart = CurrentString.ActionPeriodStartReverse;
Record.ActionPeriodEnd = CurrentString.ActionPeriodEndReverse;
Төгсгөлийн мөчлөг

Бүртгэлийг тооцоолохдоо чек оруулах:

Хэрэв CurrentMovement.Reversal Дараа нь
CurrentMovement.Amount = - CurrentMovement.Amount;
EndIf;

*************************************************************************************************
Үндсэн хуримтлалд юу оруулах, юуг тооцох вэ гэдэг нь тооцооллын даалгаварт нэмэлт зүйлд юу болохыг тодорхойлох.

Гэхдээ энэ нь үргэлж 100% тодорхой байдаггүй, илүү төвөгтэй тохиолдлууд байдаг, гэхдээ цөөхөн хэдэн тохиолдол байдаг.
(жишээ нь, сарын ажлын өдрийн тооноос хамаарах урамшуулал нь OH).

Үндсэн хуримтлал:
Хэрэв тооцооллын төрлөөр хуваарь (хуанлийн огноо бүхий мэдээллийн бүртгэл гэсэн үг) хамааралтай бол энэ нь үндсэн хуримтлалд хамаарна.

Өө жишээ:
- Цалин
- Ажлын өдрийн тоогоор тооцдог зүйл (мөн үүний тулд та хуваарийг ашиглах хэрэгтэй): хүчинтэй байх хугацаанд (цалин хэлбэрээр) эсвэл үндсэн хугацаанд.

Нэмэлт төлбөр:
Хуримтлагдсан дүнгээс юу гэж тооцогддог, эсвэл АЖИЛЛАСАН (мөн норм биш!) Цаг хугацаа, эсвэл огт хамаардаггүй - энэ нь нэмэлт зүйл юм. хураамж.

Энэ нь: тооцоолоход цаг хугацааны нормыг ашигладаг хуримтлал (магадгүй баримт ч байж магадгүй) OH бөгөөд бодит өгөгдөл эсвэл огт шаардлагагүй - энэ бол DN юм.

Эсвэл өөрөөр хэлбэл:

Хэрэв RT нь цагийн нормыг ашигладаг бол RT-д хүчинтэй байх хугацааг оруулах ёстой.

*************************************************************************************************
"Нэршил" лавлах номын жагсаалтын хэлбэрт "Лавлах номтой ажиллах" туслах хэсгийг нээх боломжтой сонголтыг нэмнэ үү.

Маягт дээр дараах тушаалыг ажиллуулна уу.

&AtClient
Процедурын тусламж (тушаал)
OpenHelp("v8help://1cv8/EnterprWorkingWithCatalogs");
Төгсгөлийн процедур

Хэсгийн мөрийг дараах байдлаар тодорхойлно.
Тохиргооны объектын лавлагаа мэдээлэл рүү (тохируулагчид) очиж, үг бичиж, үүнийг сонгоод, Элементүүд / Холбоос цэс рүү очоод 1С тусламжийн хүссэн хэсгийг сонгоод дараа нь холбоосыг автоматаар оруулна. Энэ нь төвөгтэй мэт боловч практик дээр хялбар байдаг.

*************************************************************************************************
Маягт хоорондын харилцан үйлчлэлийн хэрэгжилт, жишээлбэл, сонголт:

1. Одоогийн маягтаас "OpenForm()" аргыг ашиглан шаардлагатай хэлбэрийг нээнэ үү, хоёр дахь параметрийн хувьд бид бүтцийг параметрүүдээр дамжуулдаг (шаардлагатай бол). Гурав дахь параметрийн хувьд бид энэ маягтын холбоосыг дамжуулж болно - ThisForm.

2. "OnCreateOnServer()" зохицуулагчийн нээсэн хэлбэрээр бид "Parameters.[ParameterName]" дамжуулан 1-р алхам дээр дамжуулсан параметрүүдийг барьж болно. Энэ маягтыг нээхийг эхлүүлсэн маягтыг "Эзэмшигч" танигчаар дамжуулан авах боломжтой (хэрэв мэдээжийн хэрэг 1-р зүйлд заасан бол).

Хамгийн гол нь эзэмшигчийн маягтын экспортын функцууд боломжтой болно. Өөрөөр хэлбэл, бид анхны хэлбэрийн экспортын функцийг дуудаж, сонголтыг боловсруулах параметр болгон тэнд ямар нэг зүйлийг дамжуулж болно. Мөн энэ функц нь танд хэрэгтэй зүйлийг анхны хэлбэрээр бөглөх болно. Зөвхөн нэг анхааруулга - та утгын хүснэгтийг үйлчлүүлэгчийн процедурын хооронд шилжүүлэх боломжгүй, гэхдээ бид үүнийг түр хадгалалтанд хийж, зөвхөн BX-ийн хаягийг шилжүүлж, дараа нь BX-ээс гаргаж авах боломжтой.

*************************************************************************************************
Маягтын параметрүүдийн амьдралын мөчлөг

Маягтыг нээх үед дамжуулсан бүх параметрүүд нь зөвхөн OnCreateOnServer процедурт харагдана.
Үүсгэсэний дараа бүх параметрүүд устаж, маягт дээр байхгүй болно.
Үл хамаарах зүйл бол "Түлхүүр параметр" шинж чанар бүхий маягт засварлагч дээр зарлагдсан параметрүүд юм.
Тэд хэлбэрийн өвөрмөц байдлыг тодорхойлдог.
Маягт өөрөө байгаа цагт ийм параметр байх болно.

*************************************************************************************************
Таксины интерфейсийг ашиглах

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

*************************************************************************************************

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

Жич: Хамтран ажиллагсад аа, хэрэв хэн нэгэнд шалгалтанд бэлдэх, тэнцэх талаар хэрэгтэй мэдээлэл байвал сэтгэгдэл дээр бичээрэй, бид нийтлэлийг нэмж оруулах болно.

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

1. "FROM" барилгын ажил.

Өгөгдлийн сангаас мэдээлэл авахын тулд "FROM" бүтцийг ашиглах шаардлагагүй.
Жишээ: Бид банкны лавлахаас банкны талаарх бүх мэдээллийг сонгох хэрэгтэй.
Хүсэлт:

Лавлах.Банкуудыг СОНГОХ.*

Банкны лавлахаас бүх талбарыг сонгоно. Мөн асуулгатай төстэй:

Банкуудыг СОНГОХ.* Лавлахаас. Banks AS Banks

2. Лавлагааны талбараар өгөгдлийг эрэмблэх

Бид асуулгын өгөгдлийг "Мөр", "Тоо", "Огноо" гэх мэт үндсэн төрлөөр эрэмблэх шаардлагатай үед бүх зүйлийг "ORDER BY" бүтцийг ашиглан шийдэх боломжтой, хэрэв та лавлагааны талбараар өгөгдлийг захиалах шаардлагатай бол? Лавлагаа талбар нь холбоос, өвөрмөц танигч, i.e. Товчоор хэлбэл, тодорхой дурын тэмдэгтүүд, ердийн дараалал нь хүлээгдэж буй үр дүнг өгөхгүй байж магадгүй юм. Лавлагааны талбаруудыг захиалахын тулд "AUTOORDER" бүтцийг ашиглана. Үүнийг хийхийн тулд эхлээд "ORDER BY" бүтцийг ашиглан өгөгдлийг лавлагааны төрлөөр шууд захиалж, дараа нь "AUTOORDER" бүтцийг ашиглана.

Энэ тохиолдолд баримт бичгийн хувьд захиалга "Огноо-> Дугаар", лавлахын хувьд "Үндсэн харагдац" гэсэн дарааллаар явагдана. Хэрэв захиалга нь лавлагааны талбар дээр үндэслээгүй бол "AUTOORDER" бүтцийг ашиглахыг зөвлөдөггүй.

Зарим тохиолдолд "AUTOORDER" бүтэц нь дээж авах үйл явцыг удаашруулж болно. Үүний нэгэн адил та баримт бичгийг автоматаар цэгцлэхгүйгээр дахин бичиж болно:

3. Лавлагааны төрлийн текстийн дүрслэлийг олж авах. "Танилцуулга" бүтээн байгуулалт.

Дэлгэцэнд зориулж лавлагааны төрлийн талбар, жишээлбэл, "Банк" лавлахын холбоос болох "Банк" талбарыг харуулах шаардлагатай бол энэ талбар гарч ирэхэд "Банк" гэсэн дэд асуулга гарч ирнэ гэдгийг ойлгох хэрэгтэй. "Банкууд" лавлах нь лавлах хайлтыг авахын тулд автоматаар ажиллах болно. Энэ нь өгөгдлийн гаралтыг удаашруулна. Үүнээс зайлсхийхийн тулд объектын дүрслэлийг нэн даруй авахын тулд "ТӨЛӨӨЛӨЛ" бүтцийг ашиглах шаардлагатай бөгөөд үүнийг аль хэдийн үзэх боломжтой болно.

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

4. Загварын дагуу өгөгдлийн түүвэрлэлтийн нөхцөл.

Жишээлбэл, (8 -123-456-78-912) маягтын ажилчдын гар утсыг авах шаардлагатай. Үүнийг хийхийн тулд та дараах нөхцөлийг хүсэлтэд оруулах хэрэгтэй.

"_-___-___-__-__" ШИГ Утас ХААНА Ажилтан.Нэр, Ажилтан.Утсыг Лавлахаас Утас болгон СОНГООРОЙ.

"_" тэмдэгт нь үйлчилгээ бөгөөд ямар ч тэмдэгтийг орлоно.

5. Нийт ба бүлэглэлийг нэгэн зэрэг ашиглах.


Нийт дүнг ихэвчлэн бүлэглэхтэй хамт ашигладаг бөгөөд энэ тохиолдолд нийлбэр дэх нэгтгэх функцийг орхигдуулж болно.

Үйлчилгээ.Байгууллага AS Байгууллага, Үйлчилгээ.Нэршил АС Нэршил, НИЙТ(Үйлчилгээ.Баримт бичгийн дүн) Баримт бичгийн нийлбэр АС.Үйлчилгээг Үйлчилгээгээр БҮЛЭГЛҮҮЛЭХ.Байгууллага, Үйлчилгээ.Нэршил

Энэ тохиолдолд хүсэлт нь энэ хүсэлттэй бараг ижил буцаж ирнэ:

Үйлчилгээг СОНГОХ.Байгууллага AS Байгууллага, үйлчилгээ.Нэршил AS Нэршил, үйлчилгээ.Баримт бичгийн дүн Баримт бичгийн дүн Баримтаас.

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

6. Талбаруудыг ялгах.

Талбаруудыг цэгээр лавлахыг лавлагааны талбараас салгах үйлдэл гэнэ. Жишээлбэл Төлбөр.Байгууллага.Захиргааны нэгж. Энэ тохиолдолд "Төлбөр" баримт бичгийн "Байгууллага" лавлагааны талбарт "Захиргааны нэгж" шинж чанарын утгыг хүлээн авах өөр "Байгууллага" хүснэгтийг заана. Цэгээр дамжуулан талбарт хандах үед платформ нь далд байдлаар дэд асуулга үүсгэж, эдгээр хүснэгтүүдийг нэгтгэдэг гэдгийг ойлгох нь чухал юм.

Хүсэлт:

Дараах байдлаар төлөөлж болно.

Төлбөр СОНГОХ.Холбоос, Төлбөр.Байгууллага, Төлбөр.Байгууллага, Байгууллагууд. Захиргааны нэгж Баримтаас. Төлбөр ТӨЛБӨРӨӨ ҮЛДСЭН НЭГДСЭН лавлах. Байгууллага AS Байгууллага Програм хангамжийн төлбөр. Байгууллага = Байгууллага. Холбоос

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

Жишээлбэл, "Хуваарилагдаагүй төлбөр" гэсэн хуримтлалын бүртгэл байдаг бөгөөд хэд хэдэн баримт бичиг бүртгэгчийн үүрэг гүйцэтгэдэг. Энэ тохиолдолд бүртгэгчийн дэлгэрэнгүй утгыг дараах байдлаар авах нь буруу юм.

Хуваарилагдаагүй төлбөрийг СОНГОХ.Бүртгэгч.Огноо, ..... Хуримтлалын бүртгэлээс.Хуваарилагдаагүй төлбөрийг Хуваарилагдаагүй төлбөр

та нийлмэл талбар бүртгэгчийн төрлийг хязгаарлах хэрэгтэй:

SELECT EXPRESS(Хуваарилагдаагүй төлбөрүүд. Бүртгүүлэгч АС Баримт бичиг. Төлбөр). Огноо, ..... Хуримтлалын бүртгэлээс. Хуваарилагдаагүй төлбөрийг Хуваарилагдаагүй төлбөр

7. "ХАААН" барилгын ажил

Хоёр хүснэгтийг зүүн тийш холбосноор баруун талын хүснэгтэд "ХАААН" нөхцөлийг тавихад бид хүснэгтийн дотоод холболттой төстэй үр дүнг авах болно.

Жишээ. Үйлчлүүлэгчийн лавлахаас бүх үйлчлүүлэгчийг сонгох шаардлагатай бөгөөд "Байгууллага" = &Байгууллага гэсэн атрибуттай төлбөрийн баримттай үйлчлүүлэгчдэд "Төлбөрийн" баримтыг харуулах, байхгүй бол харуулахгүй байх шаардлагатай.

Асуулгын үр дүн нь зөвхөн тухайн параметрт байгууллагаараа төлбөр төлсөн харилцагчдын бүртгэлийг буцааж өгөх бөгөөд бусад харилцагчдыг шүүнэ. Тиймээс та эхлээд "ийм тийм" байгууллагын бүх төлбөрийг түр хүснэгтэд авч, дараа нь зүүн талын холбоосоор "Клиент" лавлахтай холбогдох ёстой.

Төлбөрийг СОНГОХ.Төлбөр, Төлбөр.Хувьцаа эзэмшигчийг Үйлчлүүлэгчээр Төлбөрийг Баримтаас ТӨЛБӨРӨӨ ТӨЛБӨРИЙГ ТӨЛБӨР ХААНА Төлбөр.Хэлтэс = &Department; ///////////////////////////////////////////////////////// / //////////////////////////// Clients.Reference AS Client, ISNULL(topayments.Payment, "") AS Payment FROM Лавлах .Үйлчлүүлэгчид НЭГДСЭН БАЙНА

Та энэ нөхцөл байдлыг өөр аргаар даван туулж чадна. хоёр хүснэгтийн харилцаанд "ХАААН" гэсэн нөхцөлийг шууд тавих шаардлагатай. Жишээ:

Clients.Reference, Payment.Live. Холбоос

8. Nested болон виртуал хүснэгтүүдтэй нэгддэг

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

Жишээлбэл, бид зарим үйлчлүүлэгчийн хувьд одоогийн огнооны үлдэгдлийн дүнг авах шаардлагатай.

Хуваарилагдаагүй төлбөрийн үлдэгдэл.Үйлчлүүлэгч, хуваарилагдаагүй төлбөрийн үлдэгдэл.Үнийн үлдэгдэл (Clients.Reference AS FROM Directory.Clients AS Clients WHERE Clients. Reference B(&Clients)) AS NestedQuery-аас СОНГОХ

Ийм хайлтыг гүйцэтгэх үед DBMS оновчтойлогч нь төлөвлөгөө сонгохдоо алдаа гаргах магадлалтай бөгөөд энэ нь асуулгын оновчтой бус гүйцэтгэлд хүргэдэг. Хоёр хүснэгтийг нэгтгэх үед DBMS оновчтойлогч нь хоёр хүснэгтийн бичлэгийн тоонд үндэслэн хүснэгтүүдийг нэгтгэх алгоритмыг сонгодог. Оруулсан асуулгын хувьд үүрлэсэн асуулга буцаах бичлэгийн тоог тодорхойлоход маш хэцүү байдаг. Тиймээс үүрлэсэн асуулгын оронд та үргэлж түр зуурын хүснэгтүүдийг ашиглах хэрэгтэй. Тиймээс асуулгыг дахин бичье.

Clients.Link-ийг линкээр сонгоорой. Үйлчлүүлэгчдийг лавлахаас ХААНА. Үйлчлүүлэгчийг үйлчлүүлэгч болгон тавь.
Clients.Link B (&Clients); ///////////////////////////////////////////////////////// / /////////////////////// tClients.Reference, UnallocatedPaymentsBalances.SumBalance, FROM tClients AS tClients LEFT JOIN Хуримтлалын Бүртгэлийг СОНГОХ. tClients.Reference FROM tClients)) AS tClients ДЭЭР хуваарилагдаагүй төлбөрийн үлдэгдэл. Лавлагаа = Хуваарилагдаагүй төлбөрийн үлдэгдэл.Клиент

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

Виртуал хүснэгтүүд , ихэнх хэрэглээний ажлуудад бараг бэлэн өгөгдөл авах боломжийг танд олгоно.(Slice of the First, Slice of the Last, Slice of the First, Slice of the Last, Residuals, Residuals, Residuals and Roververs) Энд байгаа түлхүүр үг нь виртуаль юм. Эдгээр хүснэгтүүд нь физик биш боловч системээр шууд угсардаг, өөрөөр хэлбэл. Виртуал хүснэгтээс өгөгдөл хүлээн авахдаа систем нь эцсийн хүснэгтээс өгөгдлийг цуглуулж, бүртгэх, бүлэглэх, хэрэглэгчдэд хүргэдэг.

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

Clients.Link-ийг линкээр СОНГОХ Хэрэглэгчийг лавлахаас PUT.Clients-ыг линкээр ХААНА INDEX хийгээрэй.
Clients.Link B (&Clients); ///////////////////////////////////////////////////////// / //////////////////////////// Хуваарилагдаагүй төлбөрийн үлдэгдэл.Үлдэгдэл, хуваарилагдаагүй төлбөр.Үйлчлүүлэгч Хэрэглэгчийн хувьд үлдэгдэлээ Хуримтлалын бүртгэлээс ТОГТООХ.Хуваарилагдаагүй төлбөр. Balances(, Client IN (SELECT tClients.Reference FROM tClients)) AS UnallocatedPaymentsBalances; ///////////////////////////////////////////////////////// / //////////////////////////// tClients.Reference, thenRemains.SumRemainder AS SumRemainder AS tClients AS tClients tClients.Reference = tRemainder .Үйлчлүүлэгч

9. Асуулгын үр дүнг шалгах.

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

RequestRes = Request.Execute(); Хэрэв reQuery.Empty() бол буцаана; EndIf;

Арга Хоосон()аргуудаас өмнө хэрэглэх ёстой Сонгох()эсвэл Буулгах(), цуглуулгыг авахад цаг хугацаа шаардагддаг.

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

Хүсэлт = Шинэ хүсэлт; Query.Text = "СОНГОХ | Clients.Link, | Clients.Date of Төрсөн |FROM | Directory.Clients AS Clients |ХААА | Clients.Link = &Client"; Мөр бүрийн хувьд TableClients Loop Query.SetParameter("Client", Client); QueryResult = Query.Execute().Select(); Төгсгөлийн мөчлөг;

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

11. "ХАВИНГ" барилгын ажил.

Асуулгад нэлээд ховор тохиолддог бүтээн байгуулалт. Энэ нь нэгтгэсэн функцүүдийн утгуудад нөхцөл тавих боломжийг танд олгоно (SUM, MINIMUM, AVERAGE гэх мэт). Жишээлбэл, та зөвхөн 9-р сард төлбөрийн хэмжээ 13,000 рубльээс дээш байсан үйлчлүүлэгчдийг сонгох хэрэгтэй. Хэрэв та "ХААЧА" нөхцөлийг ашиглавал эхлээд түр хүснэгт эсвэл үүрлэсэн асуулга үүсгэж, тэнд байгаа бичлэгүүдийг төлбөрийн хэмжээгээр бүлэглэж, дараа нь болзол тавих хэрэгтэй. Үүнээс зайлсхийхэд "ХАВИНГ" бүтээн байгуулалт тусална.

Төлбөрийг СОНГОХ.Харилцагч, СУМ(Төлбөр. Дүн) Баримтаас. Төлбөрийг ТӨЛБӨРИЙГ ХААНА САР(Төлбөр. Огноо) = 9 БҮЛЭГ ТӨЛБӨР.

Бүтээгч дээр та "Нөхцөл" таб руу орж, шинэ нөхцөл нэмж, "Захиалгат" нүдийг чагтална уу. Тэгээд л бичээрэй Дүн(Төлбөрийн дүн) > 13000


12. Тэг утга

Өгөгдлийн сан дахь гурван үнэ цэнэтэй логикийн зарчмуудыг би энд тайлбарлахгүй, энэ сэдвээр олон нийтлэл байдаг. Хэрхэн гэдгийг нь заагаад л NULLасуулгын үр дүнд нөлөөлж болно. NULL утга нь үнэндээ утга биш бөгөөд утга тодорхойлогдоогүй нь тодорхойгүй байна. Тиймээс NULL дээрх аливаа үйлдэл нь нэмэх, хасах, хуваах, харьцуулах гэх мэт NULL утгыг буцаана. Бид юуг харьцуулахаа мэдэхгүй байгаа тул NULL утгыг NULL утгатай харьцуулах боломжгүй. Тэдгээр. Эдгээр харьцуулалтуудын аль аль нь: NULL = NULL, NULL<>NULL нь үнэн эсвэл худал биш бөгөөд энэ нь тодорхойгүй байна.

Нэг жишээ авч үзье.

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

"Төлбөргүй"-г Төлбөр тооцоонд оруулах, Баримт бичгийг NULL ГЭЖ СОНГОХ; ///////////////////////////////////////////////////////// / ///////////////////////////// Clients SELECT.Link AS Client, Payment.Link AS Payment tClientPayment FROM Directory.Clients. Үйлчлүүлэгчид НЭГДСЭН Баримт бичиг.Төлбөр Төлбөрийн Програм хангамжийн Үйлчлүүлэгчид.Link = Төлбөр.Хувьцаа эзэмшигч; ///////////////////////////////////////////////////////// / ///////////////////////////// tClientPay-с tClientPay-с Хэрэглэгчийг tClientPayment-аас СОНГОХ. төлбөр.Баримт бичиг

tCustomerPayment түр зуурын хоёр дахь хүснэгтэд анхаарлаа хандуулаарай. Зүүн талын нэгдлээр би бүх үйлчлүүлэгчид болон эдгээр үйлчлүүлэгчийн бүх төлбөрийг сонгоно. Төлбөр хийхгүй байгаа харилцагчдын хувьд "Төлбөр" талбар NULL байх болно. Логикийн дагуу эхний түр зуурын "төлбөр" хүснэгтэд би 2 талбарыг тодорхойлсон бөгөөд тэдгээрийн нэг нь NULL, хоёр дахь нь "Төлбөр байхгүй" гэсэн мөр юм. Гурав дахь хүснэгтэд би "tClientPayment" болон "tPayment" хүснэгтүүдийг "Төлбөр" болон "Баримт бичиг" талбаруудаар дотоод холболтоор нэгтгэдэг. Эхний хүснэгтэд "Баримт бичиг" талбар нь NULL, хоёр дахь хүснэгтэд "Төлбөр" талбарт төлбөр хийгээгүй хүмүүс мөн NULL гэдгийг бид мэднэ. Ийм холболтыг бидэнд юу буцааж өгөх вэ? Тэгээд юу ч буцааж өгөхгүй. Учир нь NULL = NULL харьцуулалт нь Үнэн гэж үнэлэгддэггүй.

Асуулга нь бидэнд хүлээгдэж буй үр дүнг буцааж өгөхийн тулд бид үүнийг дахин бичнэ:

"Төлбөр хийхгүй" гэснийг Тэмдгээр СОНГОХ, ҮНЭТ (Баримт бичиг. Төлбөр. Хоосон лавлагаа) Баримт бичгийг Төлбөрт оруулах; ///////////////////////////////////////////////////////// / ///////////////////////////// Clients.Reference AS Client, ISNULL(Төлбөр.Лавлагаа, VALUE(Баримт бичиг.Төлбөр). .EmptyReference )) Лавлахаас tClientPayment-ийг ХЭРХЭН ТАВИХ ВЭ.Үйлчлүүлэгчид НЭГДСЭН Баримт бичгийг ҮЛДСЭН БАЙНА.Төлбөрийг Clients ДЭЭР ТӨЛБӨР.Лавлах = Төлбөр.Хувьцаа эзэмшигч; ///////////////////////////////////////////////////////// / ///////////////////////////// tClientPay-с tClientPay-с Хэрэглэгчийг tClientPayment-аас СОНГОХ. төлбөр.Баримт бичиг

Одоо, хоёр дахь түр зуурын хүснэгтэд хэрэв "Төлбөр" талбар NULL байвал энэ талбар = төлбөрийн баримтын хоосон лавлагаа гэдгийг бид зааж өгсөн. Эхний хүснэгтэд бид мөн NULL-ийг null лавлагаагаар сольсон. Одоо NULL бус талбарууд холболтод оролцож байгаа бөгөөд асуулга нь хүлээгдэж буй үр дүнг буцаана.

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

13. "ХЭЗЭЭ...ТЭГЭЭД.... ТӨГСГӨЛСӨНИЙГ СОНГОХ" гэсэн бичиг баримтгүй дизайны онцлог.

Хүсэлт дэх "Нөхцөл" бүтцийг тайлбарлах шаардлагатай тохиолдолд бид стандарт синтаксийг ашиглана:

Users.Name = "Vasya Pupkin" Дараа нь "Бидний дуртай ажилтан" БУСДАА "Бид үүнийг мэдэхгүй" гэж лавлахаас 1-р талбар ГАР ДӨГСГӨХ ҮЕД СОНГОЛТ хийгээрэй.Users AS Хэрэглэгчид.

Гэхдээ жишээ нь бид асуулгад тухайн сарын нэрийг авах шаардлагатай бол яах вэ? Асуулгад асар том бүтэц бичих нь муухай бөгөөд цаг хугацаа их шаарддаг тул дээрх тэмдэглэгээний хэлбэр нь бидэнд туслах болно:

САР СОНГОХ(АНУ-ын_Хэрэглээний_эргэлтийн хуваарь. Тооцооллын хугацаа) 1-Р САРЫН 2-НЫ ХЭЗЭЭ "2-р сар" ХЭЗЭЭ "Гуравдугаар сарын 3-нд" ДАРАААА "Дөрөвдүгээр сарын"-ны 5-НЫ ХЭЗЭЭ "5-р сар"-ыг "Тавдугаар сарын 6-нд". 7-Р САРЫН 8-НЫ ХЭЗЭЭ ТЭГВЭЛ "8-р сар" 9-НЫ ҮЭДЭЭ "Есдүгээр сар" 10-НЫ ХЭЗЭЭ ДАРАА "10-р сар" 11-НЭЭР ХЭЗЭЭ "Арваннэгдүгээр сар" 12-НЫ ХЭЗЭЭ "Арванхоёрдугаар сар" САР БОЛГОДОГ.

Одоо дизайн нь тийм ч төвөгтэй биш бөгөөд амархан мэдрэгддэг.

14. Багц асуулгын гүйцэтгэл.


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

Хэрэглэгчид.Link AS Нэр, Хэрэглэгчид.Төрсөн огноо, Хэрэглэгчид.Үүрэг СОНГОХ Хэрэглэгчийг лавлахаас ОРУУЛАХ.Хэрэглэгчид Хэрэглэгчийн нэрээр; ///////////////////////////////////////////////////////// / ////////////////////////////////////////// tuUsers.Нэр, tuUsers.Төрсөн огноо, ТӨРСӨН огноо, tuUsers AS tuUsers GROUP BY BY tuUsers. Нэр, хэрэглэгч.Төрсөн огноо; ///////////////////////////////////////////////////////// / ///////////////////////////// wUsers.Name, wUsers.Role FROM wUsers AS wUsers GROUP BY BY wUsers.Name, wUsers.Төрсөн огноо

tPackage = Request.ExecutePackage();

TP_BirthDate = tPackage.Unload();
TP_Roles = tPackage.Unload();

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

15. Багцын хүсэлтийн нөхцөл

Жишээлбэл, бид "Хэрэглэгчид" лавлахаас "Нэр, Төрсөн огноо, Код" гэсэн талбаруудыг эхлээд "Хувь хүн" лавлахаас эдгээр талбарт нөхцөл бүхий бүртгэлийг авахыг хүсч буй багц хүсэлттэй байна.

Users.Individual.Name AS Нэр, Users.Individual.Date of the Төрсөн огноо, Users.Individual.Code AS SOUT in Users FROM Directory.Users Хэрэглэгчид; ///////////////////////////////////////////////////////// / //////////////////////////// Хувь хүнийг СОНГОХ. Холбоосыг лавлахаас хувь хүн болгон сонгох. Хувь хүн

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

WHERE Individuals.Code At (Select TueUsers.Code FROM TuUsers) AND Individuals.Name At (Select TueUsers.Code FROM TuUsers) AND Individuals. Date of the At (Select TueUsers. Date of Turbans FROM)

Мөн энэ нь иймэрхүү боломжтой:

ХААНА (Хувь хүн. Код, Хувь хүн. Нэр, Хувь хүн. Төрсөн огноо) AT (TueUsers.Code, TueUsers.Name, TueUsers. Төрсөн огноог TueUsers-аас СОНГОХ)

Мөн дүрмийг баримтлахаа мартуузай.

16. Багцын асуулга доторх "Нөхцөл"-ийн талаар Query Builder руу залгана уу

Дээрх жишээн дээрх шиг нөхцөл тавих шаардлагатай бол виртуал хүснэгтэд энэ эсвэл тэр талбарыг хэрхэн дууддагийг мартаж болно.
Жишээлбэл, та "Төрсөн огноо" талбарт нөхцөл тавих хэрэгтэй бөгөөд виртуал хүснэгтэд энэ талбарыг "Өртэй этгээдийн төрсөн огноо" гэж нэрлэдэг бөгөөд хэрэв та нэрийг мартсан бол засварлахаас гарах хэрэгтэй болно. хадгалахгүйгээр нөхцөлийг оруулаад талбарын нэрийг харна уу. Үүнээс зайлсхийхийн тулд та дараах заль мэхийг ашиглаж болно.

"B" барилгын дараа хаалт хийж, хаалтны хооронд хоосон зай (зай) үлдээх шаардлагатай бөгөөд энэ газрыг сонгоод асуулга үүсгэгчийг дуудна. Бүтээгч нь бүх багц асуулгын хүснэгтэд хандах эрхтэй болно. Хүлээн авалт нь бүртгэлийн виртуал хүснэгт болон "Нөхцөл" таб дээр ажилладаг. Сүүлчийн тохиолдолд "A (дурын нөхцөл)" хайрцгийг шалгаад "F4" засварлах горимыг оруулах шаардлагатай.

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

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

upd1. 11,12-р догол мөр
upd2. 13,14,15,16-р зүйл

Ашигласан номууд:
1С: Enterprise 8 асуулгын хэл - Е.Ю. Хрусталев
1С: Enterprise 8 систем дэх мэргэжил дээшлүүлэх.

Бодит асуудалд дээжийг зохион байгуулахдаа ихэнх тохиолдолд өгөгдлийг сонгохдоо тодорхой шалгуурын дагуу зохион байгуулдаг.

Сонголтыг жинхэнэ хүснэгтээс хийсэн тохиолдолд ямар ч бэрхшээл гарахгүй. Өгөгдлийг маш энгийн байдлаар боловсруулдаг:

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


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

Виртуал хүснэгтүүд нь мэдээллийн санд байдаггүй тул виртуал гэж нэрлэгддэг гэдгийг бид аль хэдийн мэддэг болсон. Тэд зөвхөн хүсэлт гаргах үед л үүсдэг. Гэсэн хэдий ч бидний хувьд (өөрөөр хэлбэл асуулга бүрдүүлж буй хүмүүс) виртуал хүснэгтүүдийг бодитой гэж үзэх нь тохиромжтой. Бидний эмхэтгэсэн асуулга виртуал хүснэгттэй холбоотой хэвээр байвал 1С Enterprise 8 системд юу болох вэ?

Эхний алхамд систем нь виртуал хүснэгтийг бүтээх болно. Хоёрдахь алхамд, WHERE заалтад заасан нөхцөлийг хангасан бичлэгүүдийг үр дүнгийн хүснэгтээс сонгоно.
Виртуал хүснэгтийн бүх бичлэгүүд (мөн өгөгдлийн сангаас) эцсийн сонголтонд орохгүй нь тодорхой харагдаж байна, гэхдээ зөвхөн заасан нөхцөлийг хангасан бичлэгүүд. Үлдсэн бичлэгүүд нь үр дүнгээс хасагдах болно.

Тиймээс систем нь зүгээр нэг ашиггүй төдийгүй давхар ашиггүй ажил хийх болно! Нэгдүгээрт, нэмэлт өгөгдөл дээр суурилсан виртуал хүснэгтийг бүтээхэд нөөцийг зарцуулна (зураг дээр тэдгээрийг "өгөгдлийн талбар А ба В" гэж тэмдэглэсэн болно), дараа нь энэ өгөгдлийг эцсийн үр дүнгээс шүүхээр илүү их ажил хийх болно.

Виртуал хүснэгтийг бүтээх үе шатанд шаардлагагүй өгөгдлийг ашиглахаас шууд татгалзах боломжтой юу? Та чадна гэж харагдаж байна. Виртуал хүснэгтийн тохиргоо нь үүнд зориулагдсан:

Виртуал хүснэгтийг параметрчилснээр бид асуулгад боловсруулагдах өгөгдлийн хэмжээг нэн даруй хязгаарладаг.

"Хавсрах арга" виртуал хүснэгтийн параметрийн утгуудын хооронд ямар ялгаа байдаг вэ?
ComplementMethod-г "хөдөлгөөн" гэж тохируулсан үед зөвхөн хөдөлгөөн байсан үеийг буцаана. "Хөдөлгөөн ба хугацааны хязгаар"-ыг тохируулах үед дээрх хөдөлгөөнүүдэд 2 бичлэг нэмэгдэх болно: BT параметрт заасан хугацааны эхэн ба төгсгөлд хийсэн хөдөлгөөн. Эдгээр 2 бүртгэлд "Бүртгэгч" талбар хоосон байх болно.

Мэдээллийг сайтаас авав

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

Бүртгэлийн төрлийг тохируулагч дээр үүсгэх үед сонгоно

Нэрнээс нь харахад зарим нь тодорхой огнооны үлдэгдэл, хоёр дахь нь сонгосон хугацааны эргэлтийг хүлээн авах зориулалттай. Хуримтлуулах бүртгэлийн төрлөөс хамааран 1C: Enterprise платформ нь өөр өөр виртуал хүснэгтүүдийг үүсгэдэг. Энэ нийтлэлд бид хуримтлалын бүртгэлийн виртуал хүснэгттэй ажиллах талаар авч үзэх болно. Үүнийг хийхийн тулд бид үлдэгдэл хуримтлуулах бүртгэлийг бий болгоно. Бараа үлдэгдэлболон эргэлтийн хуримтлалын бүртгэл - Барааны эргэлт.

Одоо эдгээр регистр бүрт платформ ямар виртуал хүснэгтүүдийг санал болгож байгааг харцгаая.

Бараа эргэлтийн бүртгэл

Тодорхой болгохын тулд бүртгэлд ямар хүснэгтүүд байгааг нээж харцгаая Барааны эргэлт. Энэ бол регистрийн хүснэгт − Барааны эргэлтөгөгдлийн санд физик байдлаар байдаг бөгөөд нэг виртуал хүснэгт - Барааны эргэлт.Барааны эргэлт

Стандарт хүснэгтээр бүх зүйл тодорхой байна. Виртуал бодит байдлыг илүү нарийвчлан авч үзье.

Виртуал хүснэгтийн эргэлт

Энэ хүснэгт нь хэмжилтийн хүрээнд нөөцийн эргэлтийг авах боломжийг танд олгоно. Манай тохиолдолд бид хоёр хэмжигдэхүүнтэй байна: ХувьцааТэгээд Бүтээгдэхүүн. Мөн нэг нөөц Тоо хэмжээ

Манай бүртгэлд дараах бичилтүүдийг оруулаарай

Асуулга үүсгэгч рүү буцаж очоод хүснэгтээс сонгох замаар эхэлцгээе Барааны эргэлт.Барааны эргэлтбүх талбарууд

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

СОНГОХ Бараа бараа эргэлт.Агуулах, Бараа бараа эргэлт.Агуулах.Бүтээгдэхүүн, Барааны эргэлт.Тоо хэмжээ Бүртгэлээс хийсэн эргэлт Хуримтлал.Барааны эргэлт.Эргэлтийн(,) AS Барааны эргэлт.

Асуулгын үр дүн дараах байдалтай байна.

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

Үүнийг хийхийн тулд хэмжээсийг асуулгаас хас Хувьцаа

Барааны эргэлтийг сонго

Үүний үр дүнд бид зөвхөн хоёр мөртэй болно

Гэхдээ дүрмээр бол бүртгэл байгаа бүх хугацаанд эргэлтийг хүлээн авах шаардлагагүй. Үндсэндээ тэд тодорхой хугацаанд шаардлагатай байдаг: сар, улирал, жил гэх мэт. Дээрээс нь ихэвчлэн хэмжээсээр (Бүтээгдэхүүн, Агуулах) сонголт хийх шаардлагатай байдаг. Үүнийг ашиглан үр дүнд хүрдэг виртуал хүснэгтийн параметрүүд. Баригчаас параметрүүдийг бөглөх нь тохиромжтой. Товчлуураар Виртуал хүснэгтийн сонголтуудБидэнд хэрэгтэй бүх зүйлийг бүртгүүлэх харилцах цонх нээгдэнэ.

Үүний дараа бидний анхны асуулга дараах хэлбэрийг авна

СОНГОХ Барааны эргэлт.Агуулах, Барааны эргэлт.Бүтээгдэхүүн, Барааны эргэлт.Тоо хэмжээ Хуримтлалын бүртгэлээс хийсэн эргэлт.Барааны эргэлт.Оролцоог(&Үеийн эхэн, &Үеийн төгсгөл, Агуулах, Барааны эргэлт)

Таны харж байгаагаар ялгаа нь виртуал хүснэгтийн нэрний дараа хаалтанд параметрүүд гарч ирсэн бөгөөд асуултыг гүйцэтгэхийн өмнө бөглөх ёстой.

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

Хуримтлалын бүртгэлээс.Барааны эргэлт.Оролцоог(,) AS Бараа бараа эргэлт ХААНА Бараа бараа эргэлт.Агуулах = &Агуулах

Параметрүүдийг бөглөхдөө бид алдсан Үе үе. Жагсаалтыг нээж, боломжит сонголтуудын массаас сонгоцгооё Сар. Бид төөрөлдөхгүйн тулд бусад бүх параметрүүдийг устгах болно.

Үүний дараа хүснэгтийн талбарт талбар гарч ирснийг бид ажиглаж байна Хугацаа.

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

Барааны эргэлтийг СОНГОХ.Хугацаа, Барааны эргэлт.Агуулах, Барааны эргэлт.Агуулах.Бүтээгдэхүүн, Барааны эргэлт.Тоо хэмжээ Хуримтлалын бүртгэлээс хийсэн эргэлт.Барааны эргэлт.Эргэлтийн(, сар,) АСТновур

Бид хүсэлтийг биелүүлдэг:

Тиймээс сонгосон хугацааны интервалд бид эргэлтийг сонгосон давтамжийн дагуу жижиг интервал болгон хувааж болно.

Үлдэгдэл хуримтлалын бүртгэл

Урвуу бүртгэлийн нэгэн адил асуулга үүсгэгчээс үлдэгдэл хуримтлалын бүртгэлд ямар виртуал хүснэгтүүд байгааг харцгаая.

Таны харж байгаагаар үлдэгдэл хуримтлалын бүртгэлийн гурван виртуал хүснэгт байдаг. Эргэлт, Үлдсэн, Үлдэгдэл ба эргэлт. Тэд тус бүрийг тусад нь авч үзье.

Виртуал хүснэгтийн эргэлт

Хэдийгээр бүртгэлийн төрөл нь Үлдсэн, бид үүнээс эргэлт авч болно. Үүнээс гадна бидэнд хоёр нэмэлт нөөц бий: Ирж байнаТэгээд Хэрэглээ

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

Виртуал хүснэгтийн үлдэгдэл

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

Нэг жижиг жишээг авч үзье. Бидэнд дараах бүртгэлийн бичилтүүд байна.

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

Барааны үлдэгдэл.Агуулах, Барааны үлдэгдэл.Бүтээгдэхүүн, Бараа үлдэгдэл.Тоо хэмжээ Хуримтлалын Бүртгэлээс Үлдэгдэл.Бүтээгдэхүүний үлдэгдэл.Үлдэгдэл(&Үлдсэн огноо,) Барааны үлдэгдэл.

Үүнийг хэрэгжүүлсний дараа бид дараах үр дүнг авна

Виртуал хүснэгт

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

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



Ачааж байна...
Топ