SKDdagi balanslarni hisoblashda xatolik va uni universal hisobot misolidan foydalanib dasturiy ta'minotni tuzatish. skd 1s skd boshlang'ich va yakuniy balanslardan foydalanganda balanslarni noto'g'ri hisoblash

1s korxonasi uchun ACS bo'yicha hisobotlarni yaratishda yana bir keng tarqalgan xato - yig'ish registrlarining virtual jadvallaridagi dastlabki va yakuniy qoldiqlar noto'g'ri hisoblangan. Masalan, GoodsInWarehouses registridagi balanslar va harakatlarni ko'rsatadigan oddiy hisobot yarataylik. Uning so'rovi quyidagicha bo'ladi:

Biz oddiy variant sozlamalarini ham yaratamiz:

Natijada biz quyidagi hisobotni olamiz:

Savolingiz bormi, sizga maslahatchi yordami kerakmi?

Chunki biz hech bir joyda davrning boshi va oxirini ko'rsatmadik, hisobotda ma'lumotlar bazasi boshidan ma'lumotlar ko'rsatilishi kerak. Ammo ombor va nomenklatura bo'yicha guruhlarimizda nolga teng bo'lmagan dastlabki qoldiqlar mavjud. Ma'lumotlar noto'g'ri ko'rsatilganligini tushunish oson, chunki. ma'lumotlar bazasining boshida hech qanday qoldiq bo'lmasligi kerak. So'rovning o'zi to'g'ri bo'lsa-da.

Gap shundaki, SKD balanslarni hisoblash uchun o'z mexanizmiga ega. Uning to'g'ri ishlashi uchun magnitafonlarning vaqt o'qi bo'yicha joylashishini aniq aniqlash kerak. Bunday holda, tanlovda faqat havola mavjud, shuning uchun ulanish tizimi buni qila olmaydi. ACS ning bunday xatti-harakatiga yo'l qo'ymaslik uchun so'rovda PeriodSecond maydonini tanlang. Bunday holda, tizim balanslarni to'g'ri hisoblab chiqadi:

Shuni esda tutish kerakki, "Davr" roli bo'lgan maydonlarda "Qo'shimcha" katakchasi mavjud. Va agar biron sababga ko'ra u PeriodSecond maydonidan o'chirilsa, hisobot noto'g'ri versiyaga qaytadi. Balanslarni to'g'ri hisoblash uchun rolda yoki "Qo'shimcha" bayrog'i tekshirilishi kerak, yoki maydon variant darajasida hisobotning tanlangan maydonlarida mavjud bo'lishi kerak.

Guruhlar bo'yicha boshlang'ich va yakuniy balanslarni hisoblashda qancha odam allaqachon xatoga duch kelganini bilmayman. Shaxsan men "omadli" bo'lganman, bundan tashqari, bir necha marta. Buning sababi, men bilib olganimdek, ACS ma'lumotlar maydonlarining noto'g'ri sozlamalarida yotadi, ularning ahamiyatini ko'plab yangi (va unchalik emas) dasturchilar hali to'liq bilishmaydi.

SKD ma'lumotlar to'plami so'rov asosida avtomatik ravishda yaratilganda, odatda hech qanday muammo bo'lmaydi, chunki platformaning o'zi so'rov matni asosida maydon sozlamalarini to'g'ri to'ldiradi. Ammo shunday holatlar mavjudki, ma'lumotlar maydoni sozlamalari avtomatik ravishda to'ldirilmaydi (masalan, siz tashqi ma'lumotlar manbasidan foydalanasiz), manba ma'lumotlarida balanslar va aylanmalar bilan harakatlar mavjud.

Agar siz ilgari ushbu muammoga duch kelmagan bo'lsangiz, uning mohiyatini yaxshiroq tushunish uchun men uni universal hisobot (metama'lumotlar bo'yicha) yordamida o'zingiz takrorlashni taklif qilaman. Biz hisobotni boshlaymiz, qoldiqlar va aylanmalar bilan har qanday bo'sh bo'lmagan jamg'arish registrini tanlaymiz, hisobot sozlamalarida () "Batafsil yozuvlar" katagiga belgi qo'yamiz, ba'zi guruhlarni belgilaymiz va ko'rsatilgan maydonlarga Registratorni qo'shamiz. Voila - har bir guruhlash uchun dastlabki va yakuniy balanslar yig'iladi. Foydalanuvchilarga hech qanday tarzda ko'rsatib bo'lmaydigan mutlaqo noto'g'ri raqamlarga ega hisobot paydo bo'ldi.

Ushbu muammoni hal qilish uchun ACS ma'lumotlar to'plamining maydonlari sozlamalarini to'g'ri to'ldirish kerak - xususan, asosiy ahamiyatga ega bo'lgan "rol" maydoni.

SOLUTION interaktiv ( Universal Report uchun mos emas):

Hisobotingizning ma'lumotlarni joylashtirish sxemasini oching va ma'lumotlar to'plami maydoni sozlamalariga qarang.

Resurslarning har biri uchun dastlabki va yakuniy balanslar maydonlari uchun siz quyidagi rolni to'ldirishingiz kerak: "Qolgan" rollar guruhini tanlang va undagi "Boshlang'ich balans" yoki "Yakuniy balans" qiymatini belgilang. Shunday qilib ( ) bu SKD konstruktorida amalga oshiriladi.

Xuddi shunday, siz ma'lumotlar to'plamining barcha o'lchamlari uchun "O'lchov" rolini o'rnatishingiz kerak.

Ammo bu hisobotlarning to'g'ri ishlashi uchun etarli emas. Qoldiq maydonlarni to'g'ri hisoblash uchun ularni to'g'ri xronologik tartibda joylashtirish uchun har bir harakat davrini bilish kerak. Agar asl ma'lumot manbangizda davr maydoni bo'lmasa, uni u erga qo'shishingiz kerak. Agar ma'lumotlar to'plamida allaqachon davr maydoni mavjud bo'lsa, siz "Davr" rolini va tegishli davr raqamini ko'rsatishingiz kerak (davrlarni raqamlash haqida batafsil ma'lumot uchun yordamga qarang).

ACS ma'lumotlar maydonlarining bunday sozlamalari ko'p hollarda guruhlarga bo'lingan holda qoldiqlarni to'g'ri hisoblash imkonini beradi. standart sozlamalar bilan ular noto'g'ri hisoblangan.

Software SOLUTION (Universal metama'lumotlar hisoboti misolida):

Endi umumiy metadata hisobotida bir xil xatoni qanday tuzatishni ko'rib chiqamiz. Umumjahon hisobot boshqa hisobotlardan farq qiladi, chunki ma'lumotlar tarkibi sxemasi to'liq dasturiy tarzda yaratilgan, shuning uchun siz ACS ma'lumotlar maydonlari uchun rollarni dasturiy ravishda sozlashingiz kerak.

Rollar uchun resurslarning har biri uchun dastlabki va yakuniy balanslar eng oson yo'li - g'ildirakni qayta ixtiro qilmaslik (hamma narsa bizdan oldin yozilgan) va standart protseduradan foydalanishdir. FillDataSetFieldRemainder() dan Umumiy modul GenericReports. Siz ma'lumotlar to'plami maydonini va resurs nomini parametr sifatida u erga o'tkazasiz va natijada ma'lumotlar to'plamida to'g'ri to'ldirilgan rolga ega qolgan maydon hosil bo'ladi.

Xuddi shunday, o'lchamlar uchun ma'lumotlar to'plami maydonlarini yaratganingizda, ularga O'lchov rolini berishingiz kerak. Kod shunday bo'ladi:

NewDimension = GenericReports.AddDataSetField(DataCompositionSchema.DataSets, Dimension.Name, Dimension.Synonym); NewDimension.Role.Dimension = rost;

Yuqorida tavsiflangan resurs va o'lchov maydonlari bilan manipulyatsiyalar zarur, ammo muammoni hal qilish uchun etarli emas - universal hisobotning asosiy muammosi davrlarni raqamlashning yo'qligi. Davr maydonlari ma'lumotlar to'plamida mavjud, ammo ularning rollari to'ldirilmagan.

Davr maydonlari hisobotga AddDataSetFields() obyekt moduli protsedurasidan chaqiriladigan GenericReports.AddPeriodFieldsToDataSet() umumiy moduli protsedurasi orqali qo‘shiladi. Afsuski, bu protsedura davr raqamlarini qo'ymaydi.

Bundan tashqari, "Line number" va "Registrator" maydonlari hech qanday joyda hisobotga dasturiy jihatdan qo'shilmaydi. Bu menga g'alati tuyuldi, chunki. ular yakuniy ma'lumotlar to'plamida mavjud.

Ma'lum bo'lishicha, "Qator raqami" va "Registrator" maydonlari(Yozuvchi) sozlamalar quruvchi ishga tushirilganda platformaning o'zi tomonidan avtomatik ravishda qo'shiladi. Bundan tashqari, platforma o'zi yaratgan maydonlar uchun rollarni to'ldirmaydi va ularni dasturiy jihatdan to'ldirishning iloji yo'q, bu ular bilan keyingi ishlashda muammolarni keltirib chiqaradi. Ammo agar bu maydonlar "qo'lda" yaratilgan bo'lsa va ularga to'g'ri rollar dasturiy jihatdan tayinlangan bo'lsa, platforma ularni qayta yaratishga urinmaydi.

Quyida men platformaning ushbu muammosini va Universal metadata hisobotini deyarli to'liq hal qilishga yordam beradigan retseptni taklif qilaman:

Mana ob'ekt moduli kod parchasi:

// Davr maydonlarini qo'shish Agar TableName = "QolganlarVa aylanmalar" OR TableName = "Oborotlar" bo'lsa, GenericReports.AddPeriodFieldsToDataSet(DataCompositionScheme.DataSets); EndIf; quyidagi bilan almashtirilishi kerak: // Davr maydonlarini qo'shish Agar TableName = "QolganlarVa Aylanmalar" OR TableName = "Oborotlar" bo'lsa, ListPeriods = GenericReports.AddPeriodFieldsToDataSet(DataCompositionScheme.DataSets); //Xizmat maydonlarini to'ldiring va davrlarni qo'lda o'rnating, chunki platforma ularni to'ldirmaydi Field = GenericReports.AddDataSetField(DataCompositionScheme.DataSets, "LineNumber", "LineNumber"); Field.Role.PeriodNumber = 1; Maydon = GenericReports.AddDataSetField(DataCompositionSchema.DataSets, "Yozuvchi", "Yozuvchi"); Field.Role.PeriodNumber = 2; sc = 3; Har bir FieldPeriodFromListPeriods uchun Loop FieldPeriod.Value.Role.PeriodNumber = cn; Agar hisob > 3 bo'lsa, FieldPeriod.Value.Role.PeriodType = DataCompositionPeriodType.Optional; EndIf; sc = sc + 1; EndCycle; EndIf;

Men ushbu yechim bilan bog'liq bitta cheklovni topa oldim. To'g'ri hisoblash uchun va con. qoldiqlar, hisobotda ro'yxatga oluvchi hujjatning har qanday ma'lumotlaridan foydalanganda ro'yxatga oluvchining o'zi ham tanlanishi kerak. Aks holda, bunday yaxshilanishlardan keyin universal hisobot endi foydalanuvchilarda allergiyaga olib kelmaydi.

YANGILANISH: Izohlarda menga bir paytlar ITS diskida ushbu mavzu bo'yicha maqola chop etilganligini aytishdi. Afsuski, bu maqola mendan o'tib ketdi, ammo u universal hisobot bilan bog'liq muammolarni hal qilishda menga qisman yordam berdi. Afsuski, platformaning xizmat bilan bog'liq muammolari SKD maydonlari, masalan, "Recorder", u erda ham tasvirlanmagan.

Qanday bo'lmasin, mening maqolam shu kabi muammolarga duch kelganlarning barchasiga yordam beradi deb umid qilaman. Men bu yechimni izlashga ko'p vaqt sarfladim ...

Xayrli kun, aziz blog o'quvchilari! O'tgan safar biz allaqachon funktsiyadan foydalanish haqida gapirgan mavzuga to'xtalib o'tdik. Va bugun, ushbu maqolalar seriyasining birinchisida biz o'rganamiz ma'lumotlar tarkibi maydoni rollari nima uchun, shuningdek, ushbu rollarni to'ldirish misollarini ko'rib chiqing.

SKD maydonining roli ko'rsatadi bu nima maydon. Har bir maydon roli o'z xususiyatini o'z ichiga olishi mumkin. Masalan, bor raqamli qiymat va agar maydon nuqta bo'lsa, davr raqamini o'z ichiga oladi. Agar "Davr" xususiyatining qiymati 0 (nol) bo'lsa, demak, bu maydon davr emas. Yoki "O'lchov" xususiyati - maydon o'lchov ekanligini ko'rsatadigan belgini o'z ichiga oladi. Agar maydon o'lchov bo'lsa, bu ma'lumot qolgan maydonlar uchun jami hisoblashda ishlatiladi.

Har bir ma'lumotlar tarkibi sxemasi maydoni uchun rolni belgilashingiz mumkin. Rollar qoldiqlarni hisoblashning to'g'riligiga ta'sir qiladi. Xususan, ba'zi jadvallar uchun dastlabki va yakuniy balans. Agar so'rovda "Balanslar va aylanmalar" virtual jadvali tanlangan bo'lsa, unda dastlabki va yakuniy qoldiqlar murakkab algoritm bo'yicha hisoblanadi, ayniqsa, agar biz davrlar bo'yicha qo'shimcha teskari o'zgarishlardan foydalansak.

Ammo agar bularning barchasi chiqish maydonlari to'plamiga ko'ra so'rovlarda to'g'ri ishlayotgan bo'lsa, unda ma'lumotlar tarkibida ishlar biroz yomonroq. Axir, biz foydalanuvchi qaysi maydonlarni tanlashini bilmaymiz. Hamma narsa uning istalgan vaqtda o'zgartirishi mumkin bo'lgan hisobot versiyasining konfiguratsiyasiga bog'liq bo'ladi. Shuning uchun ma'lumotlar tarkibi tizimi ma'lum bir ma'lumotlar to'plami uchun dastlabki va yakuniy qoldiqlarni hisoblashning o'ziga xos mexanizmiga ega va buning uchun rollardan foydalaniladi. Keling, uni ochamiz va har bir maydon uchun rollarni o'rnatishingiz mumkinligini ko'rib chiqamiz.

Keling, so'rovlar ma'lumotlar to'plamini qo'shamiz. Buning uchun "Query Builder" ildiz elementini faol qilishimiz kerak. Keling, jamg'arish registrining "Balanslar va aylanmalar" virtual jadvaliga murojaat qilaylik. Biz nimani ko'ramiz?

Yuqoridagi rasmdan ko'rinib turibdiki, ba'zi maydonlar uchun rol to'ldirilganligini ko'rishimiz mumkin. Bu bizda "Avtomatik to'ldirish" belgisi o'rnatilganligi sababli sodir bo'ldi. Lekin bu har doim ham mumkin emas, shuning uchun ba'zida siz rolni qo'lda o'rnatishingiz kerak. Keling, bir nechta misollarni ko'rib chiqaylik.

Faraz qilaylik, biz foydalanadigan so'rovda, masalan, "SELECT" so'rov tili operatoridan foydalanamiz. Keling, ushbu shartni tavsiflaymiz:

Tovar qoldiqlari va aylanmalari.Nomenklatura = Qiymat(Katalog.Nomenklatura.Bo'sh ma'lumotnoma) KEYIN Qiymat(Katalog.Nomenklatura.Shampun) BOSHQA Tovar qoldiqlariVa aylanmalari.Nomenklatura QACHON TANLASH.

Bu yozuv shuni anglatadiki, agar nomenklatura null havolaga to'g'ri kelsa (biz "Nomenklatura" funktsiya qiymati ma'lumotnomasiga, null havolaga murojaat qilamiz), u holda oldindan belgilangan elementning qiymati qaytariladi. Faraz qilaylik, bizning konfiguratsiyamizda shunday oldindan belgilangan element mavjud va u "Shampun" deb ataladi. Aks holda, biz elementning o'zi qiymatini qaytaramiz. Biz quyidagilarni olamiz:

Ko'rib turganingizdek, "Nomenklatura" maydoni uchun rol to'ldirilmagan. Ammo rasmda ko'rib turganingizdek, aslida bizda "Field1" maydoni uchun rollar to'plami yo'q va bu holda qolgan qismi to'g'ri hisoblanmaydi.

Rolni mustaqil ravishda belgilash mumkin bo'lmagan boshqa misollar ham mavjud. Masalan, bu foydalanish, ya'ni ma'lum qiymatlar jadvali kirishga kiritiladi, masalan, boshqa ma'lumotlar bazasidan yuklanadi va qolganlarni undan hisoblash kerak. Bunday holda, biz o'zimiz rollarni belgilashimiz kerak. Bu qanday amalga oshirilgan, biz ko'rib chiqamiz.

Maqolaning oxirida men sizga Anatoliy Sotnikovdan bepul maslahat bermoqchiman. Bu tajribali dasturchining kursi. U sizga ACSda hisobotlarni qanday yaratishni alohida asosda ko'rsatib beradi. Siz shunchaki diqqat bilan tinglashingiz va eslab qolishingiz kerak! Quyidagi kabi savollarga javob olasiz:
  • Oddiy ro'yxat hisobotini qanday yaratish mumkin?
  • Maydonlar yorlig'idagi Maydon, Yo'l va Sarlavha ustunlari nima uchun?
  • Joylashtirish maydonlarida qanday cheklovlar mavjud?
  • Rollarni qanday qilib to'g'ri sozlash kerak?
  • Joylashtirish maydonlari uchun qanday rollar mavjud?
  • So'rovda ma'lumotlar joylashuvi yorlig'ini qayerdan topsam bo'ladi?
  • SKD-da parametrlarni qanday sozlash mumkin?
  • Yana qiziqroq...
Ehtimol, kerakli ma'lumotlarni qidirishda Internetda o'zingizni kezishga urinmasligingiz kerakdir? Bundan tashqari, hamma narsa foydalanishga tayyor. Faqat boshlang! Bepul video darslarida nima borligi haqida barcha tafsilotlar

Guruhlar bo'yicha boshlang'ich va yakuniy balanslarni hisoblashda qancha odam allaqachon xatoga duch kelganini bilmayman. Shaxsan men "omadli" bo'lganman, bundan tashqari, bir necha marta. Buning sababi, men bilib olganimdek, ACS ma'lumotlar maydonlarining noto'g'ri sozlamalarida yotadi, ularning ahamiyatini ko'plab yangi (va unchalik emas) dasturchilar hali to'liq bilishmaydi.

SKD ma'lumotlar to'plami so'rov asosida avtomatik ravishda yaratilganda, odatda hech qanday muammo bo'lmaydi, chunki platformaning o'zi so'rov matni asosida maydon sozlamalarini to'g'ri to'ldiradi. Ammo shunday holatlar mavjudki, ma'lumotlar maydoni sozlamalari avtomatik ravishda to'ldirilmaydi (masalan, siz tashqi ma'lumotlar manbasidan foydalanasiz), manba ma'lumotlarida balanslar va aylanmalar bilan harakatlar mavjud.

Agar siz ilgari ushbu muammoga duch kelmagan bo'lsangiz, uning mohiyatini yaxshiroq tushunish uchun men uni universal hisobot (metama'lumotlar bo'yicha) yordamida o'zingiz takrorlashni taklif qilaman. Biz hisobotni boshlaymiz, qoldiqlar va aylanmalar bilan har qanday bo'sh bo'lmagan jamg'arish registrini tanlaymiz, hisobot sozlamalarida () "Batafsil yozuvlar" katagiga belgi qo'yamiz, ba'zi guruhlarni belgilaymiz va ko'rsatilgan maydonlarga Registratorni qo'shamiz. Voila - har bir guruhlash uchun dastlabki va yakuniy balanslar yig'iladi. Foydalanuvchilarga hech qanday tarzda ko'rsatib bo'lmaydigan mutlaqo noto'g'ri raqamlarga ega hisobot paydo bo'ldi.

Ushbu muammoni hal qilish uchun ACS ma'lumotlar to'plamining maydonlari sozlamalarini to'g'ri to'ldirish kerak - xususan, asosiy ahamiyatga ega bo'lgan "rol" maydoni.

SOLUTION interaktiv ( Universal Report uchun mos emas):

Hisobotingizning ma'lumotlarni joylashtirish sxemasini oching va ma'lumotlar to'plami maydoni sozlamalariga qarang.

Resurslarning har biri uchun dastlabki va yakuniy balanslar maydonlari uchun siz quyidagi rolni to'ldirishingiz kerak: "Qolgan" rollar guruhini tanlang va undagi "Boshlang'ich balans" yoki "Yakuniy balans" qiymatini belgilang. Shunday qilib ( ) bu SKD konstruktorida amalga oshiriladi.

Xuddi shunday, siz ma'lumotlar to'plamining barcha o'lchamlari uchun "O'lchov" rolini o'rnatishingiz kerak.

Ammo bu hisobotlarning to'g'ri ishlashi uchun etarli emas. Qoldiq maydonlarni to'g'ri hisoblash uchun ularni to'g'ri xronologik tartibda joylashtirish uchun har bir harakat davrini bilish kerak. Agar asl ma'lumot manbangizda davr maydoni bo'lmasa, uni u erga qo'shishingiz kerak. Agar ma'lumotlar to'plamida allaqachon davr maydoni mavjud bo'lsa, siz "Davr" rolini va tegishli davr raqamini ko'rsatishingiz kerak (davrlarni raqamlash haqida batafsil ma'lumot uchun yordamga qarang).

ACS ma'lumotlar maydonlarining bunday sozlamalari ko'p hollarda guruhlarga bo'lingan holda qoldiqlarni to'g'ri hisoblash imkonini beradi. standart sozlamalar bilan ular noto'g'ri hisoblangan.

Software SOLUTION (Universal metama'lumotlar hisoboti misolida):

Endi umumiy metadata hisobotida bir xil xatoni qanday tuzatishni ko'rib chiqamiz. Umumjahon hisobot boshqa hisobotlardan farq qiladi, chunki ma'lumotlar tarkibi sxemasi to'liq dasturiy tarzda yaratilgan, shuning uchun siz ACS ma'lumotlar maydonlari uchun rollarni dasturiy ravishda sozlashingiz kerak.

Rollar uchun resurslarning har biri uchun dastlabki va yakuniy balanslar eng oson yo'li - g'ildirakni qayta ixtiro qilmaslik (hamma narsa bizdan oldin yozilgan) va standart protseduradan foydalanishdir. FillDataSetFieldRemainder() dan Umumiy modul GenericReports. Siz ma'lumotlar to'plami maydonini va resurs nomini parametr sifatida u erga o'tkazasiz va natijada ma'lumotlar to'plamida to'g'ri to'ldirilgan rolga ega qolgan maydon hosil bo'ladi.

Xuddi shunday, o'lchamlar uchun ma'lumotlar to'plami maydonlarini yaratganingizda, ularga O'lchov rolini berishingiz kerak. Kod shunday bo'ladi:

NewDimension = GenericReports.AddDataSetField(DataCompositionSchema.DataSets, Dimension.Name, Dimension.Synonym); NewDimension.Role.Dimension = rost;

Yuqorida tavsiflangan resurs va o'lchov maydonlari bilan manipulyatsiyalar zarur, ammo muammoni hal qilish uchun etarli emas - universal hisobotning asosiy muammosi davrlarni raqamlashning yo'qligi. Davr maydonlari ma'lumotlar to'plamida mavjud, ammo ularning rollari to'ldirilmagan.

Davr maydonlari hisobotga AddDataSetFields() obyekt moduli protsedurasidan chaqiriladigan GenericReports.AddPeriodFieldsToDataSet() umumiy moduli protsedurasi orqali qo‘shiladi. Afsuski, bu protsedura davr raqamlarini qo'ymaydi.

Bundan tashqari, "Line number" va "Registrator" maydonlari hech qanday joyda hisobotga dasturiy jihatdan qo'shilmaydi. Bu menga g'alati tuyuldi, chunki. ular yakuniy ma'lumotlar to'plamida mavjud.

Ma'lum bo'lishicha, "Qator raqami" va "Registrator" maydonlari(Yozuvchi) sozlamalar quruvchi ishga tushirilganda platformaning o'zi tomonidan avtomatik ravishda qo'shiladi. Bundan tashqari, platforma o'zi yaratgan maydonlar uchun rollarni to'ldirmaydi va ularni dasturiy jihatdan to'ldirishning iloji yo'q, bu ular bilan keyingi ishlashda muammolarni keltirib chiqaradi. Ammo agar bu maydonlar "qo'lda" yaratilgan bo'lsa va ularga to'g'ri rollar dasturiy jihatdan tayinlangan bo'lsa, platforma ularni qayta yaratishga urinmaydi.

Quyida men platformaning ushbu muammosini va Universal metadata hisobotini deyarli to'liq hal qilishga yordam beradigan retseptni taklif qilaman:

Mana ob'ekt moduli kod parchasi:

// Davr maydonlarini qo'shish Agar TableName = "QolganlarVa aylanmalar" OR TableName = "Oborotlar" bo'lsa, GenericReports.AddPeriodFieldsToDataSet(DataCompositionScheme.DataSets); EndIf; quyidagi bilan almashtirilishi kerak: // Davr maydonlarini qo'shish Agar TableName = "QolganlarVa Aylanmalar" OR TableName = "Oborotlar" bo'lsa, ListPeriods = GenericReports.AddPeriodFieldsToDataSet(DataCompositionScheme.DataSets); //Xizmat maydonlarini to'ldiring va davrlarni qo'lda o'rnating, chunki platforma ularni to'ldirmaydi Field = GenericReports.AddDataSetField(DataCompositionScheme.DataSets, "LineNumber", "LineNumber"); Field.Role.PeriodNumber = 1; Maydon = GenericReports.AddDataSetField(DataCompositionSchema.DataSets, "Yozuvchi", "Yozuvchi"); Field.Role.PeriodNumber = 2; sc = 3; Har bir FieldPeriodFromListPeriods uchun Loop FieldPeriod.Value.Role.PeriodNumber = cn; Agar hisob > 3 bo'lsa, FieldPeriod.Value.Role.PeriodType = DataCompositionPeriodType.Optional; EndIf; sc = sc + 1; EndCycle; EndIf;

Men ushbu yechim bilan bog'liq bitta cheklovni topa oldim. To'g'ri hisoblash uchun va con. qoldiqlar, hisobotda ro'yxatga oluvchi hujjatning har qanday ma'lumotlaridan foydalanganda ro'yxatga oluvchining o'zi ham tanlanishi kerak. Aks holda, bunday yaxshilanishlardan keyin universal hisobot endi foydalanuvchilarda allergiyaga olib kelmaydi.

YANGILANISH: Izohlarda menga bir paytlar ITS diskida ushbu mavzu bo'yicha maqola chop etilganligini aytishdi. Afsuski, bu maqola mendan o'tib ketdi, ammo u universal hisobot bilan bog'liq muammolarni hal qilishda menga qisman yordam berdi. Afsuski, "Recorder" kabi ACS xizmat ko'rsatish sohalari bilan bog'liq platforma muammolari ham u erda tasvirlanmagan.

Qanday bo'lmasin, mening maqolam shu kabi muammolarga duch kelganlarning barchasiga yordam beradi deb umid qilaman. Men bu yechimni izlashga ko'p vaqt sarfladim ...

41
Men yaqinda cheksiz sonli ustunlar bilan hisobot tayyorladim. Men kod bilan aralashishni istamasdim, men buni ACSda qilishga qaror qildim. Bunda hech qanday muammo yo'q edi, natijani o'zboshimchalik bilan tartibga solish kerak edi (o'z sarlavhasi + ... 27
SKD o'rganuvchilar birinchi yoki ikkinchi kuni buni uchratishsa ham, u FAQ bo'limida bo'lishi kerak. Standart sozlamalardan foydalangan holda tartib bo'yicha hisobotni dasturiy ravishda chiqarishning oddiy misoli. //Sxemani dan oling... 18
ACS-da hisobotlarni yaratishda, sukut bo'yicha, barcha guruhlar kengaytiriladi, lekin hosil bo'lgandan so'ng darhol yiqilgan guruhlar bilan hisobotni ko'rsatish kerak bo'ladi! Hisobot modulidagi ushbu kod sizni yig'ish imkonini beradi... 10
Ushbu yorliqda siz ikki yoki undan ortiq ma'lumotlar to'plami o'rtasida qanday ulanishlar, qanday parametr va shartlarga muvofiq amalga oshirilishini belgilashingiz mumkin..png 1. "Bog'lanish manbai" - birinchi ma'lumotlar to'plami ko'rsatilgan, dan ... 9
Hisobotlarni ishlab chiqishda cheklangan huquqlarga ega foydalanuvchi huquqlarni tekshirmasdan to'liq hisobot yaratishi kerak! Ayniqsa, agar RLS sozlangan bo'lsa.Buning bir necha yo'li mavjud: 1. O'rnatish...