1s kaip gauti dabartinę lentelės dalies eilutę. Kaip gauti dabartinę lentelės sekcijos eilutę

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ė;

Dalintis