Gali prireikti iš naujo įdiegti komponentą arba palaikymą. Kaip sužinoti tinkamą metodą

Bet kuris 1C programuotojas susidūrė su tokiu pranešimu kaip „Klaida skambinant kontekstinio metodo metu (Vykdyti). Ši klaida dažniausiai nesukelia problemų patyrusiam programuotojui. Kodėl tai atsiranda? Pažvelkime į tai žemiau.

Kaip ir bet kuri programavimo kalba, 1C platforma turi iš anksto nustatytus metodus, kurie palengvina kūrėjų gyvenimą. Tačiau šių komandų vykdymas reikalauja teisingas laikymasis programavimo kalbos sintaksė.

Dažniausios klaidos skambinant standartiniais metodais:

  • Užsirašyti
  • Sukurti
  • Prisijungti
  • Prisijungti
  • Patikrinkite išvestį
  • PreviewFile1C
  • Skaityti
  • Vykdyti
  • Vykdyti paketą
  • Skaityti pakeitimus

Pažiūrėkime į pavyzdį. Programiškai sukūrėme užklausą (), perduodame šį fragmentą „teksto“ parametrams:

Gaukite 267 vaizdo įrašų pamokas 1C nemokamai:

Konstrukcijoje „KUR“ sąmoningai suklydome įdėdami „IR“, bet nenurodydami kitos sąlygos. Visiškai logiška, kad 1C negalės susidoroti su tokia užklausa ir sugeneruos klaidą:

(SessionModule(21)): Klaida iškviečiant kontekstinį metodą (Vykdyti)

dėl:

IR<>

Pažvelkime į kitą pavyzdį:

Perkelkime klaidingą kodą į „Programos versijų“ tvarkyklę „Prieš rašant“ ir pabandykime programiškai įrašyti katalogą. Matome klaidą:

(SessionModule(8)): klaida iškviečiant kontekstinį metodą (rašyti)
Select.GetObject().Write();
dėl:
Klaida vykdant tvarkyklę – „Prieš įrašant“
dėl:
(Directory.ProgramVersions.ObjectModule(20)): Klaida iškviečiant kontekstinį metodą (Run)
RequestResult = Request.Execute();
dėl:
((13, 4)): Sintaksės klaida
IR<>

Nepaisant to, kad klaida slypi vykdant metodą „Vykdyti“, sistema taip pat skundžiasi kodo eilute, kurioje iškviečiamas objekto programos įrašas.

Sprendimas

Norint išspręsti problemą, pakanka suprasti, kas tiksliai yra klaida. 99% atvejų problema išsprendžiama tiesiog perskaičius žinyną ir išanalizavus problemą.

Norėdami sužinoti, kaip naudoti tą ar kitą metodą, tiesiog užveskite žymeklį ant jus dominančios funkcijos ir paspauskite „Ctrl + F1“. 1C platforma suteiks jums konteksto užuominą apie reikiamą metodą:

Patikrinkite funkcijai perduotus parametrus ir ar ji tinkamai naudojama.

Susidūriau su tokia klaida: rodant informaciją spausdintoje formoje, platforma rodo tokį pranešimą:
Klaida iškviečiant kontekstinį metodą (CheckOutput)...

Checkoutput ()– toks metodas skaičiuoklės dokumentas, kuri patikrina, ar pateikti skaičiuoklės dokumentai atspausdinti telpa puslapyje. Šio metodo pastaboje 1C platformos kūrėjai nedelsdami parašė, kad jei kils problemų gaunant informaciją apie dabartinį spausdintuvą (pavyzdžiui, sistemoje nėra įdiegto nė vieno spausdintuvo), bus padaryta išimtis.

Patikrinta įdiegti spausdintuvai, viskas gerai ir veikia. Empiriškai tai radau ši klaida atsiranda tik konkrečiame spausdinta forma ir tik vienam vartotojui.

Klaida buvo išspręsta šiais veiksmais (atlikite naudotojui, kuris patyrė klaidą):
1) Sukūrė tuščią dokumentą, kad generuojant spausdintą formą nebūtų naudojamas CheckOutput() metodas. Jei šis metodas bet kuriuo atveju bus iškviestas, turėsite jį rasti konfigūracijoje ir pakomentuoti arba įdėti į struktūrą Bandymas-Išimtis-Baigti Bandymas.
3) Dabartinei spausdinimo formai atidarykite puslapio parametrus ir nustatykite teisingus parametrus.

3. Puslapio parinktys
Klaida įvyko dėl neteisingų puslapio parametrų, kuriuos platforma išsaugojo anksčiau spausdindama spausdintą formą, pvz.: platforma puslapio parametruose išsaugojo spausdintuvą, kuris vėliau buvo ištrintas ir įdiegtas naujas. Spausdinimo formos puslapio parametrai saugomi skaičiuoklės dokumento ypatybėje Spausdinti parametro raktą. Šioje ypatybėje yra reikšmės raktas, kuriame saugomos lentelės spausdinimo parinktys. Spausdinimo nustatymai, sukonfigūruoti ir išsaugoti šiuo klavišu, vėliau atkuriami, kai kitą kartą bus rodoma lentelė.

Kad ši klaida neatsirastų dėl neteisingų puslapio parametrų, ypatybė Spausdinti parametro raktą reikia nustatyti ne spausdinimo procedūros pradžioje, o pabaigoje, nes nustačius šią savybę spausdinimo parametrai iš karto atkuriami.

UPD 2015-10-04: Jei nustatote nuosavybę Spausdinti parametro raktą skaičiuoklės dokumento formavimo pabaigoje, tada metodas Patikrinkite išvestį naudos spausdinimo parinktis įdiegta pagal numatytuosius nustatymus, o ne pagal užsakymą pagamintus. Norėdami išvengti šios situacijos, turite nustatyti nuosavybę Sistemos parametro raktas skaičiuoklės dokumento formavimo pradžioje ir metodas Patikrinkite išvestįįdėkite jį į konstrukciją Bandymas-Išimtis-Pabaigas.

Klaidos naudojant tą ar kitą programą pasitaiko įvairiais būdais. Yra visa eilė jų – kurios atsiranda dėl mūsų kaltės. Pažiūrėkime, kaip ištaisyti klaidą išvedant konteksto metodą 1C, kuris atsiranda dėl konteksto taisyklių ir metodų nesilaikymo.

Kontekstinio metodo veikimo principų supratimas padės išvengti klaidų dirbant 1C.

Bet koks programinė įranga architektūriškai susideda iš modulių (angl.), dalių. ir jų vietos parodytos paveikslėlyje:

Programinės įrangos moduliai savo ruožtu susideda iš skyrių:

Kontekstas yra viena iš svarbiausių programavimo sąvokų. 1C tai reiškia modulio ir jo skyrių aplinką – kokius kintamuosius, savybes, objektus, metodą ir įvykius jis gali pasiekti kiekviename konkrečiame taške. IN skirtingus taškus kontekstas, kaip taisyklė, jau skiriasi.

Kūrėjas (kūrėjas) turi suprasti, kokias kontekstines savybes turi taškas ir kokį metodą jame galima naudoti.

Aštuntame paveikslėlyje paryškinti kontekstiniai tipai:


Keturios pagrindinės prieigos prie procedūrų, kintamųjų ir funkcijų moduliuose taisyklės yra šios:

  • Įprastose modulinėse dalyse modulinių programų kintamieji, procedūros ir funkcijos nebus eksportuojami;
  • Modulinės programos turi prieigą prie bendrų modulių eksporto procedūrų ir funkcijų;
  • Dėl bendrų modifikacijų. dalys turi prieigą prie kitų bendrų modulių procedūrų ir funkcijų eksporto;
  • Moduliniams taikomųjų programų objektams ir modulinėms formoms galimi eksporto ir bendrųjų modulių taikomųjų programų kintamieji, funkcijos ir procedūros.

Jei formai priskirtas pagrindinis atributas, tada šios formos kontekste bus ypatybė ir metodas, atitinkantis šį pagrindinį atributą. Pavyzdžiui, katalogo elemento Nomenklatūra formos modulyje galimas objekto DirectoryObject.Nomenclature metodas ir savybės.

Aukščiau pateiktų taisyklių iliustracija diagramoje:

Rodyklės rodo, kad viena iš modulinių dalių suteikia galimybę kitiems pasiekti savo kintamuosius, funkcijas ir eksporto procedūras. Primename, kad bendrame modulyje kintamojo deklaravimo nėra.

Programinės įrangos konteksto taisyklių ir praktikos nesilaikymas

Visi programuotojai, iškvietę kontekstinį metodą, susidūrė su 1C klaidos pranešimu. Apsvarstykite šį pavyzdį:

Komandų klaidos

Kuriant užklausą kataloge, prie jo parametro „text“ buvo pridėtas fragmentas:

Konstrukcijoje „KUR“ buvo pridėtas „aš“, tačiau pati sąlyga liko nenurodyta.

Programos atsakymas buvo toks:

(MODSSession(21)): Klaida iškviečiant kontekstinį metodą (Vykdyti)
RequestResult = Request.Execute();

Kaip sužinoti tinkamą metodą?

Norėdami gauti užuominą iš 1C platformos, kaip naudoti bet kurį metodą, užveskite žymeklį ant norimą funkciją ir paspauskite „Ctrl + F1“. Jei įvyksta klaidų, turite patikrinti parametrus, kurie perduodami funkcijai, taip pat teisingą funkcijos naudojimą.

Ką naudinga žinoti apie klaidas

Galiausiai atlikime bendrą 1C klaidų analizę. Bet kuris iš jų gali būti šio straipsnio tematikos priežastis:

  • Tiek loginio, tiek fizinio informacinės bazės vientisumo pažeidimas;
  • Vartotojo klaidos tvarkant platformą;
  • Kūrėjo (kūrėjo) per klaidą įvestas kodas;
  • Žmogiškasis faktorius – pavyzdžiui, užmaršumas;
  • Avarinės situacijos (elektros trūkumas, sniego audra, lietus, kruša, uraganas, potvynis).

Išanalizuokite klaidą:

  • Palyginkite platformos leidimus ir konfigūracijas;
  • Skaityti pilnas tekstasžinutes iki galo, šiek tiek pagalvok ir suprask, ką mašina parašė. Labai dažnai žmonės neperskaito tokių pranešimų iki galo. Bet būna, kad būtent pabaigoje pateikiamos rekomendacijos, kaip jį pašalinti;
  • Išanalizuoti, kiek jis yra senas ir jo atsiradimo aplinkybes;
  • Ar įmanoma jį atgaminti;
  • Neatkuriamos klaidos, kurių anksčiau nebuvo matyti, dažniausiai nepataisomos;
  • Nesvarbu, ar klaida kartojasi iš kito kompiuterio ar kito vartotojo. Tokiu atveju apsvarstykite galimybę išvalyti talpyklą, nustatyti teises, išvalyti vartotojo nustatymus.

Papildoma informacija apie klaidų priežastis:

  • Kai kurios klaidos atsiranda dėl nelicencijuotų naudojimo programinė įranga(ir langai taip pat);
  • Pažeista platforma yra labiausiai paplitęs pavyzdys. Tik vienas pleistras gali nulaužti platformos versiją. Po to galite nerasti duomenų bazės (ar licencijos);
  • Pirmą kartą susidūrus su klaida, sprendimo reikėtų ieškoti paieškos sistemoje – galbūt kas nors jau rado sprendimą;
  • Sekite konfigūracijos leidimo aktualumą (ypač jei iš jų pateikiamos reguliuojamos ataskaitos);
  • Platformos leidimo aktualumas – kiekvienai konfigūracijai rekomenduojamas atskiras leidimas;
    Visi įvykiai, vykstantys 1C, įrašomi į technologinį žurnalą!
  • Prieš pradėdami bet kokius veiksmus su duomenų baze, turite padaryti archyvo kopiją!

Dabar žinote, kas yra kontekstas, kodėl atsiranda su juo susijusių klaidų, kaip analizuoti 1C klaidas ir kaip jas išspręsti.

Palikite savo atsiliepimus komentaruose.

Dalintis