Lentelinės dalys egzistuoja daugeliui objektų 1C:
- Katalogai
- Dokumentacija
- Ataskaitos ir apdorojimas
- Sąskaitų planai
- Būdingi tipo planai
- Skaičiavimo tipo planai
- Verslo procesai ir užduotys
Lentelinės dalys leidžia saugoti neribotą kiekį struktūrinės informacijos, priklausančios vienam objektui.
Pažvelkime į kai kuriuos darbo su lentelių dalimis būdus.
Kaip apeiti lentelės dalį
Norėdami pereiti stalo dalį, galite naudoti kilpą Kiekvienam
Kiekvienai eilutei iš lentelės formos ciklo dalies
Report(String. TabularPart atributas) ;
EndCycle ;
Kiekvienoje iteracijoje į kintamąjį Linija perduodama kita lentelės skyriaus eilutė. Eilučių detalių reikšmes galima gauti pagal išraišką Line.AttributeName.
Kaip gauti ir apeiti pasirinktas lentelės dalies eilutes
Norėdami rodyti informaciją iš objekto lentelės dalies, naudokite formos elementą Lentelės laukas. Norėdami įgalinti galimybę lentelės lauke pasirinkti kelias eilutes, turite nustatyti reikšmę Daugkartinis jo nuosavybėje Pasirinkimo režimas.
Norėdami gauti pasirinktų eilučių sąrašą, naudokite šį kodą:
Pasirinktoms eilutėms kartoti naudojama kilpa. Kiekvienam:
SelectedRows = Formos elementai. Lentelės lauko pavadinimas. SelectedRows;
Kiekvienai eilutei iš pasirinktų eilučių ciklo
//ciklo turinys
EndCycle ;
Kaip programiškai pasirinkti lentelės dalies (lentelės lauko) eilutes ir panaikinti jų pasirinkimą
Norėdami programiškai panaikinti lentelės lauko eilučių pasirinkimą:
Formos elementai. Lentelės lauko pavadinimas. Pasirinktos eilutės. Išvalyti () ;
Norėdami programiškai pasirinkti visas lentelės lauko eilutes:
Kiekvienai esamai eilutei iš lentelės dalies ciklo
Formos elementai. Lentelės lauko pavadinimas. SelectedLines. Pridėti(dabartinė eilutė) ;
EndCycle ;
Kaip išvalyti stalo dalį
Lentelinė dalis. Išvalyti () ;
Kaip gauti dabartinę lentelės sekcijos eilutę
Dabartinė eilutė yra laikotarpis, kurį vartotojas turi Šis momentas yra žymeklis. Norėdami jį gauti, turite pasiekti formos valdymo elementą, susietą su lentelės dalimi.
Įprastoms formoms kodas atrodys taip:
Formos elementai. Lentelės lauko pavadinimas. CurrentData;
Tvarkomoms formoms:
Elementai. Lentelės lauko pavadinimas. CurrentData;
Kaip į lentelės skyrių įtraukti naują eilutę
Naujos eilutės įtraukimas į lentelės dalies pabaigą:
NewRow = lentelės dalis. Papildyti() ;
Naujos eilutės pridėjimas bet kurioje lentelės skilties vietoje (paskesnės eilutės bus perkeltos):
NewRow = lentelės dalis. Įterpti (indeksas)
//Indeksas – pridėtos eilutės numeris. Eilučių numeracija prasideda nuo nulio.
Nauja linija. Props1 = "Vertė" ;
Kaip programiškai užpildyti lentelės eilutės informaciją
Jei reikia programiškai užpildyti vartotojo pridėtos lentelės sekcijos eilutės informaciją, turite naudoti lentelės sekcijos įvykių tvarkyklę Pradėjus redaguoti.
Prižiūrėtojo sukurta procedūra turi tris parametrus:
- Elementas- yra valdymo elementas Lentelės laukas.
- Nauja linija- loginis. Sudėtyje yra vertės Tiesa, jei pridėta nauja linija lentelės dalis ir melas, jei vartotojas pradėjo redaguoti jau esamą eilutę.
- Kopijuoti- loginis. Sudėtyje yra vertės Tiesa, jei vartotojas nukopijuoja eilutę, ir Melas kitais atvejais.
Pažiūrėkime į pavyzdį. Tarkime, kad turime užpildyti lentelės skyriaus duomenis PaskyraPaskyra, jei bus pridėta nauja eilutė. Redaguojant esamą eilutę, apskaitos sąskaitos keisti nereikia.
Procedūros lentelės dalies redagavimo pradžioje (elementas, nauja eilutė, kopija)
//Jei vartotojas redaguoja esamą eilutę, nieko nedarome
Jei NE NewRow Tada
Grąžinti;
EndIf ;
//Jei eilutė nauja, nustatykite apskaitos sąskaitą
TechString = elementas. CurrentData; //Gauti dabartinę lentelės dalies eilutę
TechString. Apskaita = sąskaitų planai. Savarankiškas. ReikalingaPaskyra;
Procedūros pabaiga
Pirmiausia turite suprasti, kad yra objektas, kuriame yra duomenų, pavyzdžiui, Form DataCollection, ir yra objektas, kuriame duomenys rodomi vizualiai - lentelė.
Lentelėje yra tik dabartinė eilutė; jos negalima naudoti norint sužinoti visas esamas FormCollectionData reikšmes, su kuriomis ji susieta. Savo ruožtu FormDataCollection neturi dabartinės eilutės. Norint sujungti šiuos objektus 1C, naudojamas Identifier, nes eilučių tvarka gali būti keičiama tiek vaizdinėje dalyje, tiek duomenyse, tačiau ryšys neturėtų nutrūkti.
Pažvelkime į tai su pavyzdžiu:
Forma turi tipo specifikaciją (reikšmių lentelė) – skliausteliuose, nes tikrasis tipas yra FormDataCollection
Išsami informacija formoje rodoma lentelės pavidalu.
Reikšmių lentelės eilutės apibrėžimas pagal dabartinę lentelės eilutę
Norėdami nustatyti, kuri TK eilutė šiuo metu yra aktuali, pirmiausia turite gauti eilutės identifikatorių lentelėje, o tada naudoti jį norėdami rasti eilutę TK
RowIdentifier = Elements.TZ.CurrentRow; // Gaukite identifikatorių lentelėje LineTZ = TZ.FindByIdentifier(StringIdentifier);
Dabartinės lentelės eilutės nustatymas
Norėdami nustatyti dabartinę lentelės eilutę, turite elgtis priešingai. Pirmiausia gaukite TK identifikatorių, tada nustatykite jame dabartinę lentelės eilutę.
LineTZ = FormDataCollection; // Pavyzdžiui, paimkite eilutę 1String Identifier = LineTZ.GetIdentifier(); Elements.TK.CurrentRow = eilutės identifikatorius;
Kad būtų lengviau suprasti, galite atsisiųsti
Kaip įdiegti liniją 8.2 ( Tvarkomos formos) skaitykite .
Pirmiausia norėčiau priminti, kad duomenys lentelės dokumento dalyje (arba reikšmių lentelėje) ir lentelės lauke yra skirtingi objektai. Norėdami atlikti kai kuriuos vaizdinius veiksmus, dirbame su lentelės lauku. Šiuo atveju naudosime jos ypatybę „CurrentRow“, kuri yra atsakinga už tai, kuri eilutė yra aktyvi.
Norėdami pasirinkti reikiamą eilutę lentelės lauke, turime atlikti du veiksmus:
1. Raskite mums reikalingą eilutę duomenų objekte, kuris rodomas lentelės lauke
Norėčiau pabrėžti, kad čia reikalingas duomenų objektas. Pavyzdžiui, turime dokumentą „Prekių ir paslaugų pardavimas“, kuris turi lentelės dalis„Produktai“ ir nusprendėme 2-ąją eilutę suaktyvinti dokumento formoje. Tada dokumento formos modulyje parašysime:
// antrosios eilutės indeksas yra vienas
RequiredString = Produktai;
Arba žinome, kad antroje nomenklatūros stulpelio eilutėje kodas yra „001“, tada naudojame konstrukciją:
// pirmiausia suraskite katalogo elementą Nomenklatūra pagal kodą
// ir tada jo ieškokite lentelės dalyje „Produktai“.
RequiredLine = Produktai.Rasti(Katalogai.Nomenklatūra.FindByCode("001"));
2. Nustatykite esamos eilutės reikšmę į rastą eilutę
Dabar turime priskirti kintamojo RequiredRow reikšmę CurrentRow lentelės lauko ypatybei:
// jei mūsų lentelės laukas dar vadinamas Produktais
Form Elements.Products.CurrentRow = RequiredRow;
// jei lentelės laukas vadinamas TableField1
Dėl to kodo eilutės gali atrodyti taip:
RequiredLine = Produktai.Rasti(Katalogai.Nomenklatūra.FindByCode("001"));
Form Elements.TableField1.CurrentRow = Reikalinga eilė;