1c ամսաթվերի համեմատություն հարցումում: Ինչպե՞ս նշել դատարկ ամսաթիվ հարցման մեջ: Փոխակերպել ամսաթվի
Հաճախ անհրաժեշտություն է առաջանում աշխատել «Ամսաթիվ» տիպի փոփոխականների հետ։ Այս հոդվածում մենք կդիտարկենք հիմնական տեխնիկան՝ փոխանցել ընթացիկ ամսաթիվը, ստուգել դատարկ արժեք, կամայական ամսաթիվ:
Հարցումներ գրելիս հաճախ պետք է տվյալները համեմատել ընթացիկ ամսաթվի հետ: Ներկառուցված 1C լեզուն ունի CurrentDate() ֆունկցիան: Այն թույլ է տալիս որոշել ձեր համակարգչի ընթացիկ ժամը և ամսաթիվը: Ընթացիկ ամսաթվով գործողություններ կատարելու համար դուք պետք է այս ֆունկցիայի արժեքը որպես պարամետր փոխանցեք հարցումին:
Ստորև ներկայացված է հարցում, որն ընտրում է ծախսերի հաշվետվություններին կցված բոլոր ֆայլերը՝ մինչ այժմ ստեղծման ամսաթվով.
ExampleRequest = Նոր հարցում;
Օրինակ Request.Text = "
|ԸՆՏՐԵԼ
| AdvanceReportAttachedFiles.Link
|ԻՑ
| Directory.AdvanceReportAttachedFilesAS AdvanceReportAttachedFiles
|ՈՐՏԵՂ
| AdvanceReportAttachedFiles.Date< &ТекДата»;
Օրինակ Request.SetParameter ("CurrentDate", CurrentDate());
Պատվերով ամսաթիվ
Վերևում քննարկված գործառույթը թույլ է տալիս համեմատել և, հետևաբար, ընտրություն կատարել ցանկացած ժամանակաշրջանի համար: Այս մեթոդը թույլ է տալիս հարցումում նշել խիստ ընտրություն՝ առանց լրացուցիչ պարամետրեր օգտագործելու:
Խնդրում ենք նկատի ունենալ, որ վերը նշված օրինակում այս ֆունկցիան օգտագործելիս մենք ընդամենը երեք թիվ ենք փոխանցել (տարի, ամիս, օր) որպես մուտքային պարամետրեր: Վերջին երեքը (ժամ, րոպե, վայրկյան) կամընտիր են և բացակայելու դեպքում փոխարինվում են «0»-ով, այսինքն՝ օրվա սկիզբ:
Այս օրինակը կվերցնի բոլոր ֆայլերը, որոնք կցված են ծախսերի հաշվետվություններին մինչև անցյալ տարվա վերջ 2016 թ. Այս առումով կնշենք ժամը, րոպեն և վայրկյանը՝ համեմատելու «Դեկտեմբերի 31, 2016թ. 23:59:59» ժամանակային կետը:
ԸՆՏՐԵԼ
AdvanceReportAttachedFiles.Link
ԻՑ
Directory.AdvanceReportAttachedFiles AS AdvanceReportAttachedFiles
ՈՐՏԵՂ
AdvanceReportAttachedFiles.Date< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)
Դատարկ ամսաթիվ
Փոփոխականը ստուգելու ամենահեշտ ձևը պարզ համեմատություն օգտագործելն է, թե արդյոք այն պարունակում է դատարկ ամսաթիվ: Այս օրինակում, օգտագործելով հարցում, մենք կընտրենք բոլոր դրամական մուտքերը այն հաշվին, որի մուտքային ամսաթիվը լրացված չէ:
43
NULL – բացակայող արժեքներ: Չպետք է շփոթել զրոյական արժեքի հետ: NULL-ը թիվ չէ, չի հավասարվում բացատին, դատարկ հղումին կամ Չսահմանվածին: NULL-ը տիպի ձևավորող արժեք է, այսինքն. կա NULL տեսակ և այս տեսակի մեկ արժեք: ԴԱՏԱՐԿ...
26
1C հարթակում տվյալների բազայի աղյուսակներում հարցումներ ստեղծելու և գործարկելու համար օգտագործվում է Query ծրագրավորման լեզվի հատուկ օբյեկտ: Այս օբյեկտը ստեղծվում է՝ կանչելով New Request կառուցվածքը: Հարմար խնդրանք...
18
Հոդվածում ներկայացված են օգտակար տեխնիկա 1C v.8.2 հարցումների հետ աշխատելիս, ինչպես նաև տեղեկություններ, որոնք այնքան էլ հայտնի չեն հարցումների լեզվի մասին: Ես չեմ փորձում տալ Ամբողջական նկարագրությունհարցման լեզուն, բայց ես պարզապես ուզում եմ կանգ առնել...
13
LIKE - Օպերատոր, որը ստուգում է տողը օրինաչափության նմանության համար: LIKE-ի անալոգը SQL-ում: SIMILAR օպերատորը թույլ է տալիս համեմատել դրա ձախ կողմում նշված արտահայտության արժեքը աջ կողմում նշված օրինաչափության տողի հետ: Արտահայտության իմաստը...
«Ամսաթիվ» տեսակը 1C-ում տվյալների 4 հիմնական տեսակներից մեկն է՝ թվով, տողով և բուլյանով: Ամսաթվերը համատարած են կոնֆիգուրացիաներում. անհնար է խուսափել այս տվյալների տեսակի հետ աշխատելուց մշակման ընթացքում: Հետևաբար, ավելի լավ է սկսել հարցումներ գրել՝ արդեն հասկանալով, թե ինչպես մշակել ամսաթվերը, ինչ տարբերակներ կան դրանց հետ աշխատելու համար և ինչպես են դրանք պահվում: Դիտարկենք տարբեր տարեթվերով հարցումներ գրելու բոլոր նրբությունների օրինակները:
1C հարցումներում ամսաթվերի հետ աշխատելու օրինակներ
Նախևառաջ պետք է հայտում ամսաթիվը ստանալ անհրաժեշտ ձևաչափով՝ ժամանակով կամ առանց ժամանակի: Այս առաջադրանքը կատարելու մի քանի եղանակ կա.
- Անցում պարամետրով: Դուք կարող եք ստանալ ընթացիկ նստաշրջանի ամսաթիվը միայն այս մեթոդով.
- Ստացեք հարցման ամսաթիվը ընտրության դաշտից;
- Փոխակերպեք թվային արժեքներից՝ օգտագործելով DATETIME() ֆունկցիան:
Փաստաթղթերի հետ աշխատելիս ամենատարածված խնդիրը 1C հարցումում դատարկ ամսաթվի ստուգումն է: Այս դեպքում ամենահեշտն է համեմատել փոփոխականը կամ դաշտը դատարկ ամսաթվի հետ, որը ստացվում է DATETIME(1,1,1) ֆունկցիայի միջոցով.
DATETIME (1, 1, 1)Օգտագործելով նմանատիպ հրաման, դուք կարող եք ստանալ կամայական ամսաթիվ և ժամ հարցումում: Ավելին, դրանք կարող են ճշգրտվել մինչև վայրկյանի ճշգրտությամբ՝ որպես պարամետր նշելով 6 թիվ։ Եթե օգտագործվում է ընդամենը 3 թիվ, ապա ժամերը, րոպեները և վայրկյանները կսահմանվեն 0 (օրվա սկիզբ): Օրինակ, մենք պետք է ընտրենք փաստաթղթեր 2018 թվականի հունվարի առաջին 10 օրվա համար հարցումում.
ԸՆՏՐԵՔ անդորրագիրը ընթացիկ հաշվին: Հղեք AS Հղում փաստաթղթից: Անդորրագիր ընթացիկ հաշվին AS անդորրագիր ընթացիկ հաշվին WHERE ստացականը ընթացիկ հաշվին: Ամսաթիվ DATETIME (2018, 1, 1, 0, 0, 0) ԵՎ DATETIME (2018, 10, 23, 59, 59)Ներկառուցված 1C լեզվով հարցումով դուք կարող եք ոչ միայն ընտրել տարբեր դաշտեր և ստանալ պարամետրեր: Կան բազմաթիվ գործառույթներ, որոնք հեշտացնում են կոնկրետ առաջադրանքի համար ամսաթվերի ձևաչափումը: Եթե դուք հաճախ եք աշխատում ամսաթվերի հետ հարցման մեջ, ապա դուք պետք է իմանաք այս հրամանները.
- ԺԱՄԱՆԱԿԻ ՍԿԶԲԸ.Պարամետրերը նշում են ամսաթիվը և ժամանակաշրջանը, որի համատեքստում անհրաժեշտ է ստանալ ամսաթվի սկիզբը: Օգտագործվում է ամսաթիվը անժամկետ ձևաչափի փոխարկելու համար: Դա անելու համար անհրաժեշտ է սահմանել երկրորդ պարամետրը՝ «ՕՐ»;
- ԺԱՄԱՆԱԿԻ ՎԵՐՋ.Նմանատիպ հրաման, որը վերադարձնում է վերջին ամսաթիվը պարամետրերում նշված միավորների առումով.
- ADDKDATE:Թույլ է տալիս Ձեզ ստանալ ամսաթիվ, որն ավելի մեծ է նշված ժամանակային միավորների որոշակի քանակով: Գործառույթի պարամետրերը ներառում են ամսաթիվը, ժամանակի միավորը և համարը.
- ՏԱՐԲԵՐՎԵԼ.Ստանում է նշված միավորների ամսաթվերի տարբերությունը.
- ՇԱԲԱԹՎԱ ՕՐ.Վերադարձնում է շաբաթվա օրերից մեկի հերթական համարը:
Այս գործառույթները ճիշտ օգտագործելով՝ ծրագրավորողը կարող է լուծել բավականին ոչ տրիվիալ խնդիրներ։ Օրինակ՝ ստանալով ընթացիկ ամսաթվի շաբաթվա օրվա անվանումը հարցումում՝ որպես տող.
ԸՆՏՐԵՔ ՇԱԲԱԹԻ ՈՒՐԱՇԱԲԱԹ (&Ընթացիկ Ամսաթիվ) = 1 ՀԵՏՈ «Երկուշաբթի» ՇԱԲԱԹՕՐ (&Ընթացիկ Ամսաթիվ) = 2 ՀԵՏՈ «Երեքշաբթի» ՇԱԲԱԹԻ ԿԱԶՄԱԿԵՐՊՈՒՄ (&Ընթացիկ ամսաթիվ) = 3 ՀԵՏՈ «Չորեքշաբթի» Շաբաթ օրը (&Ընթացիկ 4ՇԱԲԱԹՕՐ) (&CurrentDate) = 5 ՀԵՏՈ «Ուրբաթ» ՇԱԲԱԹԻ ՈՒՐԲԱԹ (&CurrentDate) = 6 ՀԵՏՈ «Շաբաթ» ԱՅԼ «Կիրակի» ՎԵՐՋ1C հարցումում տիպերը թվից կամ տողից ամսաթվի փոխակերպելը աշխատատար խնդիր է: Դուք կարող եք ամսաթիվ ստանալ թվերից՝ օգտագործելով DATETIME ֆունկցիան, տողից՝ համատեղելով SUBSTRING ֆունկցիան և SELECT WHEN THEN ELSE կառուցվածքը: Ելնելով դրանից՝ մշակողները նախընտրում են ստանալ ամսաթիվը մոդուլի այլ տեսակներից և այն փոխանցել հարցումին՝ օգտագործելով պարամետր: Ցավոք, դա միշտ չէ, որ հնարավոր է, այնպես որ դուք պետք է փոխեք ամսաթվի ձևաչափը հարցումում:
Հնարավոր է նշել ամսաթիվը 1C հարցումում որպես պարամետր՝ վիրտուալ ռեգիստրի աղյուսակներից տվյալներ ստանալու համար: Այս դերը կարող է նաև օգտագործել վերը նշված բոլոր գործառույթները: Բայց այստեղ կարեւոր է թույլ չտալ դատարկ ամսաթիվ 1C հարցումը կարող է ազդել կոդի կատարման վերջնական արդյունքի վրա, ուստի պետք է ստուգել:
Շատ հաճախ 1C հարցումներում դուք պետք է աշխատեք ամսաթվերի հետ: Հատկապես, երբ հարցումը կատարվում է մետատվյալների օբյեկտներին, որոնք պարունակում են պարբերական տեղեկատվություն: Որպես կանոն, դրանք ռեգիստրներ են (տեղեկատվություն, կուտակում, հաշվարկ, հաշվառում): Դիտարկենք 1C հարցումների լեզվի ամենատարածված գործառույթները՝ ամսաթվերի հետ աշխատելու համար: Մենք օրինակներ կկառուցենք տեղեկատվական ռեգիստրի հիման վրա ԱշխատակիցներԿազմակերպություններ ZUP կոնֆիգուրացիաների տարբերակ 2.5.
Ամսաթիվ ԺԱՄԱՆԱԿ
Թույլ է տալիս Ձեզ ստանալ հայտի ամսաթիվ (ժամանակով կամ առանց ժամանակի)՝ նշելով տարին, ամիսը, օրը, ժամը, րոպեն, վայրկյանը:
Շարահյուսություն:
DATETIME (տարի, ամիս, օր, ժամ, րոպե, վայրկյան)
Սովորաբար ժամը, րոպեն և վայրկյանը նշված չեն: Եկեք մի մինի օրինակ բերենք. Հարցման վահանակում մուտքագրեք հետևյալ տեքստը.SELECT DATETIME (2016, 1, 1)
Հարցման կատարման արդյունքում ստանում ենք ամսաթիվ՝ 01.01.2016թ
Իրականում դժվար է պատկերացնել մի իրավիճակ, երբ խնդրանքում ամսաթիվն այսպես նշվի։ Ի վերջո, երբ դուք պետք է նշեք ժամկետ, օգտագործվում են պարամետրեր: Բայց կա դեպք, երբ այս ֆունկցիան առանձնահատուկ արժեք ունի։ Սա այն դեպքում, երբ մենք պետք է դաշտերում կամ հարցումների պայմաններում նշենք դատարկ ամսաթիվ: Հիշեցնեմ, որ 1C լեզվի համար դատարկ ամսաթիվ ունի 0001.01.01 ձևը: Այսպիսով, հարցումում դատարկ ամսաթիվ ստանալու համար պարզապես նշեք DATETIME (1, 1, 1). Որպես օրինակ՝ ընտրենք տեղեկատվական ռեգիստրից ԱշխատակիցներԿազմակերպություններգրառումներ, որոնք չեն լրացվում Ավարտման ժամկետը:SELECT Organizational Employees.Period, Organizational Employees.Employee, Organizational Employees.Position, Organizational Employees.Organization Division FROM Register Information.Organizational Employees AS Organizational Employees WHERE Organizational Employees.Ավարտման ժամանակաշրջան = DATETIME(1, 1)
ԺԱՄԱՆԱԿԻ ՍԿԶԲԸ
Համար նշված ամսաթիվըվերադարձնում է այն ժամանակաշրջանի սկիզբը, որի մեջ մտնում է:
Շարահյուսություն:
ԺԱՄԱՆԱԿԱՇՐՋԱՆԻ ՄԵԿՆԱՐԿ (ամսաթիվ, ժամանակաշրջանի տեսակ)
PeriodType-ը կարող է ընդունել հետևյալ արժեքները. ՐՈՊԵ, ԺԱՄ, ՕՐ, ՇԱԲԱԹ, ԱՄԻՍ, ԵՌԱՄՍՅԱԿ, ՏԱՐԻ, Տասնամյակ, ԿԵՍ ՏԱՐԻ
Հարցման վահանակում մուտքագրեք.ԸՆՏՐԵՔ ԺԱՄԱՆԱԿԱՀԱՏՎԱԾԻ ՍԿՍԻԶԲ (ԱՄՍՎԱԾ ԺԱՄԱՆԱԿ(2016, 1, 15), ԱՄԻՍ)
Հարցումը կվերադառնա - 01/01/2016
Իսկ հիմա օրինակ. Ինչպես գիտեք, ռեգիստրի պարբերականությունը ԱշխատակիցներԿազմակերպություններմի օր. Եկեք ստեղծենք հարցում, որում փաստացի ռեկորդային ժամանակահատվածի փոխարեն կցուցադրվի ամսվա սկզբի ամսաթիվը:SELECT BEGINNING OF PERIOD(Employees of Organizations.Period, MONTH) AS Սկիզբը, Employees of Organizations.Employee, Employee of Organizations.Position, Employees of Organizations.Organization of Division FROM Register Information.Employees of Organizations AS Employees of Organizations.
ԺԱՄԱՆԱԿԻ ՎԵՐՋ
Շարահյուսությունը նույնն է, ինչ ժամանակաշրջանի սկզբի համար: Եվ ինչպես ենթադրում է անունը, այն վերադարձնում է ժամանակաշրջանի ավարտը ըստ ամսաթվի և ժամանակաշրջանի տեսակի: Մենք դա մանրամասն չենք դիտարկի։ Սահմանափակվենք մինի օրինակով.
Հայց.ԸՆՏՐԵՔ ԺԱՄԱՆԱԿԱՇՐՋԱՆԻ ԱՎԱՐՏԸ (DATETIME (2016, 1, 15), ԱՄԻՍ)
Վերադարձ 31.01.2016 23:59:59
Ինչպես տեսնում եք, արժեքը ճշգրիտ վերադարձվում է երկրորդին:ADDKDATE
Ամսաթվին ավելացնում է նշված թվով ժամանակային ընդմիջումներ:
Շարահյուսություն:
ADDKDATE (ամսաթիվ, ժամանակաշրջանի տեսակ, քանակ)
PeriodType-ն ընդունում է նույն արժեքները, ինչ ֆունկցիայի համար ԺԱՄԱՆԱԿԻ ՍԿԶԲԸ
Օրինակ՝ ընտրենք փետրվարի ամսաթիվը.SELECT ADDKDATE(DATETIME(2016, 2, 15), MONTH, 2)
Մենք ստանում ենք ամսաթիվ 04/15/2016 0:00:00 Չնայած այն հանգամանքին, որ փետրվարը կարճ ամիս է, ստացված ամսաթվի օրը նույնն է, ինչ սկզբնականը: Շատ հարմար է, որ դուք ստիպված չեք լինի մտածել ամիսների օրերի քանակի մասին:
Քանակը կարող է լինել նաև բացասական։ Այնուհետեւ միջակայքը հաշվում են հակառակ ուղղությամբ։ՏԱՐԲԵՐՎԵԼ
Հաշվեք նշված միավորներում երկու ամսաթվերի տարբերությունը:
Շարահյուսություն:
ԱՄՍԹՎԱՅԻ ՏԱՐԲԵՐՈՒԹՅՈՒՆ (Սկիզբի ամսաթիվ, ավարտի ամսաթիվ, ժամանակաշրջանի տեսակ)
Ժամանակահատվածի տեսակը կարող է վերցնել հետևյալ արժեքները. ԵՐԿՐՈՐԴ, ՐՈՊԵ, ԺԱՄ, ՕՐ, ԱՄԻՍ, ԵՌԱՄՍՅԱԿ, ՏԱՐԻ
Օրինակ:ԸՆՏՐԵԼ ՏԱՐԲԵՐՈՒԹՅՈՒՆԸ (DATETIME (2016, 2, 15), DATETIME (2016, 3, 1), DAY)
վերադարձնում է 15
Այստեղ մենք վերանայեցինք 1C հարցումների լեզվի առավել հաճախ օգտագործվող գործառույթները: Մնացածները բավականին հազվադեպ են օգտագործվում։ Անհրաժեշտության դեպքում նրանց հետ աշխատելու օրինակները կարելի է գտնել 1C հարթակում ներկառուցված օգնության մեջ: