Փաստաթղթի ամսաթվով գների հարցում ստանալը: Տեղեկատվական ռեգիստրում վերջին գրառումների մի հատված ստանալու առանձնահատկությունը Ստացեք փաստաթղթի ամսաթվի գինը հարցումում

/
Տվյալների մշակման իրականացում

Պարբերական տեղեկատվական մատյանների ընդհանուր գումարների լուծում

Կիրառման շրջանակը `կառավարվող ծրագիր, բջջային հավելված, ընդհանուր ծրագիր:

1.1. Պարբերական մանրամասն գրքերի համար խորհուրդ է տրվում, որ ընդհանուր գումարները միացված լինեն, եթե առկա են հետևյալ բոլոր պայմանները.

  • գրանցամատյանում մեծ քանակությամբ տվյալներ են սպասվում (օրինակ, դա հիմնավորված է ապրանքների գներով գրանցամատյանի համար, բայց ոչ էական է փոխարժեքներով գրանցամատյանի համար);
  • կոնֆիգուրացիան նախատեսում է հաճախականության հարցումներ վերջինիս շերտերին ներկա պահին և / կամ առաջինների շերտերին `իրական տվյալներ ստանալու համար (այսինքն, երբ վիրտուալ աղյուսակների պարամետրերում ժամանակահատվածը նշված չէ SliceFirstև SliceLast);
  • իսկ մնացած պայմանները վիրտուալ սեղանների համար SliceFirstև SliceLastսահմանվում են միայն չափման արժեքների համար (և անջատիչները ՝ ռեժիմում) Անկախ և համատեղ);
  • գրանցման տվյալների մուտքի սահմանափակումներում օգտագործվում են միայն չափումներ (և սահմանաչափեր, որոնք գտնվում են Անկախ և համատեղ).

Բոլոր պայմանների ամբողջական ցանկի համար, որտեղ հարցումների ժամանակ օգտագործվում են տեղեկատվական ռեգիստրի ընդհանուր տվյալները, տե՛սփաստաթղթեր 1C: Ձեռնարկությունների հարթակի համար.

Օրինակ, եթե կոնֆիգուրացիան նախատեսում է ռեգիստրում հաճախակի կատարվող հարցումներ Գներ Անուններապրանքների ընթացիկ գները ստանալու համար.

ԸՆՏՐԵԼ անվանացանկ: SKU AS SKU, Գները Գինը AS գինը ,. ... ... FROM տեղեկատուից: Անվանակարգ AS AS Nomenenclature LEFT JOIN Information Register. Գները SliceLast (, KindPrice = & KindPrice) AS PricingNomenclature ON գնագոյացման անվանացանկ. Անվանակարգ = Անվանակոչություն: Հղում . ... ...

այնուհետև, վերը թվարկված բոլոր այլ պայմանների ներքո, սահմանելով գույքը Թույլատրել ընդհանուր գումարները. Կտրատեք ամենավերջինըզգալիորեն կարագացնի նման հարցումների կատարումը `պայմանավորված այն հանգամանքով, որ ընտրությունը կկատարվի անմիջապես լրացուցիչ աղյուսակներից, որոնք պահում են միայն վերջին արժեքները (վերջինի մի կտորի համար) և առաջին արժեքները ( առաջինի հատվածը):

1.2. Բացի այդ, պետք է այլընտրանքային տարբերակներ դիտարկվեն `գրանցամատյանում հարցումները այնպես վերանայելու համար, որ այդ պայմանները բավարարվեն:

Օրինակ, եթե որոշ դեպքերում գրանցամատյանում առկա տվյալները Գներ Անուններգրանցվում են ապագա ամսաթվով, և այս ռեգիստրի համար ապրանքներ ընտրելիս ընթացիկ ամսաթվի համար միշտ հարցում է կատարվում (ամսաթիվը հստակորեն սահմանված է վիրտուալ աղյուսակի պարամետրում SliceLast), ապա ընդհանուր գումարները չեն արագացնի նման հարցումների կատարումը: Քանի որ հանրագումարները կառուցվում են միայն առաջին և վերջին գրանցման գրառումների համար:

Այնուամենայնիվ, եթե ապրանքի ընտրության ձևը բացելիս վերլուծեք, թե արդյոք գրանցողներ կան ապագա ամսաթվով, և եթե դրանք չկան, ապա կատարեք վերջինիս կտրելու մեկ այլ պահանջ ՝ առանց ամսաթիվ նշելու, ապա այդպիսի հարցումը ավելի արագ կաշխատի:

2. Մնացած բոլոր դեպքերում չպետք է թույլատրեք պարբերական տեղեկատվության գրանցամատյանների գումարները: Առաջին հերթին, եթե

  • ամենից հաճախ (միշտ) հարցումները որոշակի ժամանակահատվածի համար (օրինակ ՝ փաստաթղթի ամսաթվի համար) կատարվում են տեղեկատվության պարբերական գրանցամատյանի առաջին / վերջին գրանցման անջատման վիրտուալ աղյուսակներում:
  • վիրտուալ սեղանների պայմաններում SliceFirstև SliceLastամենից հաճախ (միշտ) օգտագործվում են ենթհարցումներ և միացումներ (կետավոր մուտք դեպի հարակից աղյուսակների դաշտերը): Օրինակ, այս դեպքում.

3. Պարտադիր չէ կազմաձևման մեջ ընդհանուր գումարների վերահաշվարկի առանձին մեխանիզմ տրամադրել, քանի որ տոտալների աղյուսակները ավտոմատ կերպով թարմացվում են յուրաքանչյուր անգամ, երբ գրանցամատյանում գրվում է գրանցամատյան:

: SliceFirstև SliceLastՄտածեք այս վիրտուալ սեղանների հետ աշխատելու մասին ՝ օգտագործելով 1C: Շատ ավելի հաճախ օգտագործվում է SliceLast, այնպես որ, եկեք սկսենք դրանից:

Վերջինիս կտրվածքը թույլ է տալիս ձեռք բերել տեղեկատվական ռեգիստրի վերջին գրանցումը նշված ամսաթվի համար `չափումների համատեքստում: Վերջինիս շերտերի աղյուսակի համար (առաջին) հնարավոր է երկու պարամետր նշել ստորակետներով բաժանված փակագծերում: Առաջին պարամետրը պարունակում է շերտը պատրաստելու ամսաթիվը (եթե պարամետրը նշված չէ, շերտը պատրաստվում է ընթացիկ ամսաթվին): Երկրորդ պարամետրը պայման է 1C հարցման լեզվով և թույլ է տալիս տարբեր ընտրանքներ սահմանել: Այս ընտրություններում, որպես կանոն, օգտագործվում են չափումներ: Այս ամենը բավականին անորոշ է հնչում, այնպես որ դուք չեք կարող անել առանց օրինակի:
Այսպիսով, ենթադրենք, որ մենք ունենք տեղեկատվության պարբերական ռեգիստր Գինըորոնցում գները պահվում են ապրանքների և մատակարարների համատեքստում: Գրանցման հաճախականությունը մեկ օր է։

Գրանցամատյանը պարունակում է հետևյալ գրառումները

Սկզբից մենք կստանանք վերջինիս մի հատված՝ առանց պարամետրեր օգտագործելու՝ կատարելով այս հարցումը

ԸՆՏՐԵԼ PriceSliceLast.Period AS Period, PriceSliceLast.Product AS Product, PriceSliceLast.Ullier AS մատակարար, PriceSliceLast.Amount AS գումարը `տեղեկատվական գրանցամատյանից: Գինը:

Քանի որ պարամետրերը նշված չեն, հատվածը կատարվում է ընթացիկ ամսաթվով՝ 02/01/2017: Արդյունքում մենք ստանում ենք հետևյալ աղյուսակը

Այստեղ մենք տեսնում ենք, որ Product + Supplier- ի չափսերի համադրությունը եզակի է, այսինքն. գրանցամատյանի չափերի յուրաքանչյուր համադրության համար վերցվել է առավելագույն ամսաթվով գրառումը, և գրանցման ամսաթիվը փոքր է կամ հավասար է ընթացիկ ամսաթվին:

Եկեք ասենք, որ մենք պետք է նույնը անենք, բայց մենք ցանկանում ենք ստանալ գրառումներ ՝ 01/15/2017 -ից փոքր կամ հավասար ամսաթվով: Դա անելու համար հարկավոր է հարցման մեջ փոխել վերջինիս անջատման աղյուսակով տողը հետևյալ կերպ

FROM InfoList.Price.SliceLast (& SliceDate,) AS PriceSliceLast

Հարցումն իրականացնելուց առաջ, իհարկե, պետք է պարամետրը փոխանցել դրան & Անջատման ամսաթիվը... Այժմ հարցման արդյունքը կլինի այսպիսին

Եվ վերջապես, եկեք պատկերացնենք, որ մենք պետք է ստանանք վերջինիս լուսանկարը նույն օրը, պայմանով, որ մենք ունենք ապրանքը. Մատիտև մատակարարը Գրենական պիտույքներ... Դա անելու համար մենք դիմումի մեջ նշում ենք երկրորդ պարամետրը

InformationRegister.Price.SliceLast (& SliceDate, Item = & Item AND Supplier = & Supplier) AS PriceSliceLast

Արդյունքում մենք կստանանք ընդամենը մեկ ռեկորդ

Այս բոլոր փակագծերում և ստորակետերում չշփոթվելու համար ավելի լավ է օգտագործել հարցման կառուցողը: Թույլ տվեք ցույց տալ ձեզ վերջին խնդրանքի օրինակով.

Հարցման դիզայներում վերջինիս կտրվածքով աղյուսակ ընտրելուց հետո սեղմեք կոճակը Վիրտուալ սեղանի պարամետրերիսկ բացվող պատուհանում գրեք

Ինչպես կարող եք կռահել, առաջին հատվածի համար գործողության սկզբունքը նույնն է, բացառությամբ, որ ընտրված է հատվածի ամսաթվից հետո առաջին գրառումը:

Պարբերական տեղեկատվական գրանցամատյանների համար մատչելի է երկու վիրտուալ աղյուսակ. SliceFirstև SliceLastՄտածեք աշխատել այս վիրտուալ աղյուսակների հետ՝ օգտագործելով 1C հարցումների լեզուն: Շատ ավելի հաճախ օգտագործվում է SliceLast, այնպես որ, եկեք սկսենք դրանից:

Վերջինիս կտրվածքը թույլ է տալիս ձեռք բերել տեղեկատվական ռեգիստրի վերջին գրանցումը նշված ամսաթվի համար `չափումների համատեքստում: Վերջինիս շերտերի աղյուսակի համար (առաջին) հնարավոր է երկու պարամետր նշել ստորակետներով բաժանված փակագծերում: Առաջին պարամետրը պարունակում է շերտը պատրաստելու ամսաթիվը (եթե պարամետրը նշված չէ, շերտը պատրաստվում է ընթացիկ ամսաթվին): Երկրորդ պարամետրը պայման է 1C հարցման լեզվով և թույլ է տալիս տարբեր ընտրանքներ սահմանել: Այս ընտրություններում, որպես կանոն, օգտագործվում են չափումներ: Այս ամենը բավականին անորոշ է հնչում, այնպես որ դուք չեք կարող անել առանց օրինակի:

Այսպիսով, ենթադրենք, որ մենք ունենք տեղեկատվության պարբերական ռեգիստր Գինըորոնցում գները պահվում են ապրանքների և մատակարարների համատեքստում: Գրանցման հաճախականությունը մեկ օր է:

Գրանցամատյանը պարունակում է հետևյալ գրառումները

Սկզբից մենք կստանանք վերջինիս մի հատված՝ առանց պարամետրեր օգտագործելու՝ կատարելով այս հարցումը

ԸՆՏՐԵԼ PriceSliceLast. Pամանակաշրջան AS Period, PriceSliceLast. Ապրանք AS Ապրանք, գին CutLast. Մատակարարը AS մատակարար, գինը CutLast. Գումարը AS Amount FROM տեղեկատվական ռեգիստրից: Գինը: SliceLast AS PriceSliceLast

Քանի որ պարամետրերը նշված չեն, շերտը կատարվում է ընթացիկ ամսաթվին ՝ 02/01/2017: Արդյունքում մենք ստանում ենք հետևյալ աղյուսակը

Ամանակաշրջան | Արտադրանք | Մատակարար | Գումարը

25.01.2017 | Մատիտ | «Լեսպրոմ» ՍՊԸ | 15

02/01/2017 | Մատիտ | ՓԲԸ «Գրենական պիտույքներ» | 31

02/01/2017 | Բռնակ | «Գրենական պիտույքներ» ՓԲԸ | 145

Այստեղ մենք տեսնում ենք, որ Product + Supplier- ի չափսերի համադրությունը եզակի է, այսինքն. գրանցամատյանի չափերի յուրաքանչյուր համադրության համար վերցվել է առավելագույն ամսաթվով գրառումը, և գրանցման ամսաթիվը փոքր է կամ հավասար է ընթացիկ ամսաթվին:

Եկեք ասենք, որ մենք պետք է նույնը անենք, բայց մենք ցանկանում ենք ստանալ գրառումներ ՝ 01/15/2017 -ից փոքր կամ հավասար ամսաթվով: Դա անելու համար հարկավոր է հարցման մեջ փոխել վերջինիս անջատման աղյուսակով տողը հետևյալ կերպ

Տեղեկատվական գրանցամատյանից: Գինը: SliceLast (& amp; SliceDate,) AS PriceSliceLast

Հարցումն իրականացնելուց առաջ, իհարկե, պետք է պարամետրը փոխանցել դրան & Անջատման ամսաթիվը... Այժմ հարցման արդյունքը կլինի այսպիսին

Ամանակաշրջան | Արտադրանք | Մատակարար | Գումարը

01.01.2017 | Մատիտ | ՍՊԸ «Լեսպրոմ» | տասը

01.01.2017 | Մատիտ | «Գրենական պիտույքներ» ՓԲԸ | 27

03.01.2017 | Բռնակ | ՓԲԸ «Գրենական պիտույքներ» | 137

Եվ վերջապես, եկեք պատկերացնենք, որ մենք պետք է ստանանք վերջինիս լուսանկարը նույն օրը, պայմանով, որ մենք ունենք ապրանքը. Մատիտև մատակարարը Գրենական պիտույքներ... Դա անելու համար մենք դիմումի մեջ նշում ենք երկրորդ պարամետրը

Տեղեկատվական գրանցամատյանից: Գինը: SliceLast (& amp; SliceDate, Item = & amp; Item AND Supplier = & amp; Supplier) AS PriceSliceLast

Արդյունքում մենք կստանանք ընդամենը մեկ ռեկորդ

Ամանակաշրջան | Արտադրանք | Մատակարար | Գումարը

01.01.2017 | Մատիտ | «Գրենական պիտույքներ» ՓԲԸ | 27

Այս բոլոր փակագծերում և ստորակետերում չշփոթվելու համար ավելի լավ է օգտագործել հարցման կառուցողը: Թույլ տվեք ցույց տալ ձեզ վերջին խնդրանքի օրինակով.
Հարցման դիզայներում վերջինիս կտրվածքով աղյուսակ ընտրելուց հետո սեղմեք կոճակը Վիրտուալ սեղանի պարամետրերիսկ բացվող պատուհանում գրեք

Ինչպես կարող եք կռահել, առաջին հատվածի համար գործողության սկզբունքը նույնն է, բացառությամբ, որ ընտրված է հատվածի ամսաթվից հետո առաջին գրառումը:

43
NULL - բացակայում են արժեքները: Չշփոթել զրոյի հետ: NULL- ը ոչ թե թիվ է, ոչ հավասար տարածության, դատարկ տեղեկանքի, չսահմանված: NULL- ը տիպի ձևավորման արժեք է, այսինքն. կա NULL տեսակ և այս տեսակի մեկ արժեք: ԴԱՏԱՐԿ ... 26
1C հարթակում տվյալների բազայի աղյուսակներում հարցումներ ձևավորելու և կատարելու համար օգտագործվում է Query ծրագրավորման լեզվի հատուկ օբյեկտ: Այս օբյեկտը ստեղծվում է New Request- ի կառուցվածքը կանչելով: Հարցումը հարմար է... 18
Հոդվածում ներկայացված են օգտակար տեխնիկա 1C v.8.2 հարցումների հետ աշխատելիս, ինչպես նաև տեղեկություններ, որոնք այնքան էլ հայտնի չեն հարցումների լեզվի մասին: Ես չեմ փորձում հարցման լեզվի ամբողջական նկարագրություն տալ, բայց ուզում եմ կանգ առնել միայն ... 13
LIKE - Օպերատոր ՝ տողը նախշի նման ստուգելու համար: LIKE- ի անալոգը SQL- ում: LIKE օպերատորը թույլ է տալիս համեմատել դրա ձախ կողմում նշված արտահայտության արժեքը աջից նշված կաղապարի տողի հետ: Արտահայտության իմաստը...

Երբեմն պահանջվում է պարբերական տեղեկատվական ռեգիստրից միանգամից մի քանի ամսաթվերի տվյալներ ստանալ հարցումով: Տիպիկ օրինակ է փոխարժեքների հետ աշխատելը: Եկեք դիտարկենք այս խնդրի լուծման ալգորիթմը `օգտագործելով օրինակ:

Խնդրի ձևակերպում

Տվյալների բազայում կա «Ապրանքների ծառայությունների իրականացում» փաստաթուղթ, որի վերնագրում կա «Արժույթ» փոփոխական: Հարցումը պահանջում է, որ յուրաքանչյուր փաստաթուղթ ստանա ընթացիկ փոխարժեքը փաստաթղթի ամսաթվի վերնագրից: Արժույթի փոխարժեքների պահպանումն իրականացվում է «Արժույթի փոխարժեքներ» տեղեկատվության պարբերական գրանցամատյանում:
Այս խնդրի հիմնական լուծումը կարող է լինել հարցումը ՝ ստանալով բոլոր փաստաթղթերն իրենց ամսաթվերով և արժույթով, իսկ օրինակին ՝ վկայակոչելով Արժութային փոխարժեքների գրանցամատյանի վերջին կրճատման վիրտուալ աղյուսակը: Բայց քանի որ օղակի մեջ եղած խնդրանքը «վատ» է, եկեք փորձենք առաջադրանքը կատարել մեկ խնդրանքով:

Լուծում

Խնդիրը լուծելու համար մենք կօգտագործենք այն փաստը, որ հարցման աղյուսակները կարող է կապված լինել ոչ միայն դաշտերի հավասարության հետ.

ԸՆՏՐԵՔ RealizatsiyaTovarovUslug.Ssylka, RealizatsiyaTovarovUslug.Valyuta, MAX (KursyValyut.Period) որպես ժամանակահատվածում VTPeriodyUstanovkiKursov դնում, թե ինչպես Dokument.RealizatsiyaTovarovUslug RealizatsiyaTovarovUslug թողել միանալ RegistrSvedeniy.KursyValyut, թե ինչպես KursyValyut RealizatsiyaTovarovUslug.Valyuta = KursyValyut.Valyuta Եվ RealizatsiyaTovarovUslug.Data> = KursyValyut.Period խմբավորված Ապրանքների izationառայությունների իրականացում. Հղում, Ապրանքների izationառայությունների իրացում: Արժույթ; //////////////////////////////////////////// //////////////////////////// ԸՆՏՐԵԼ WTPInstallationPeriods Արժույթի փոխարժեքներ AS VURTY GATES VT

Հարցման մեջ գործողությունների կարգը.

  1. Յուրաքանչյուր փաստաթղթի համար ստանալ փոխարժեքի սահմանման ժամանակահատվածը:Փաստաթղթերը միացված են «Արտարժույթի փոխարժեքներ» ՖԻSԻԿԱԿԱՆ աղյուսակին: Այստեղ դուք պետք է ուշադրություն դարձնեք միացման պայմաններին: Արժույթները պետք է լինեն հավասար և փաստաթղթի ամսաթիվ> = տեղեկատվության գրանցման ժամանակաշրջան:
    Նման կապի արդյունքում յուրաքանչյուր փաստաթղթի համար կստացվի մի շարք տողեր, որոնք բավարարում են պայմանը `փաստաթղթի արժույթի դրույքաչափերի բոլոր գրառումները` հաստատված ոչ ուշ, քան փաստաթղթի ամսաթիվը:
    Եզրափակիչ փուլը կլինի գծերի խմբավորում `դասընթացի առավելագույն ժամկետը ստանալու համար: Արդյունքում յուրաքանչյուր փաստաթղթի համար կստացվի պահանջվող արժույթի փոխարժեքը սահմանելու համար անհրաժեշտ ժամկետը (փոխարժեքի սահմանման առավելագույն ժամկետը, բայց ոչ ավելի, քան փաստաթղթի ամսաթիվը): Արդյունքը տեղադրվում է VTCourseSetupPeriods ժամանակավոր աղյուսակում:
  2. Դասընթաց ստանալը:Ժամանակավոր աղյուսակ VTPperiodsCourseSetting-ը միացված է «Արժույթի փոխարժեքներ» ՖԻԶԻԿԱԿԱՆ աղյուսակին: Կապը կատարվում է Փաստաթղթի արժույթով և երկրորդ ժամանակի աղյուսակում նշված տոկոսադրույքների սահմանմամբ: