Trimiterea de mesaje prin API-ul VK folosind PHP pentru leneși. Mesaje personale pentru comunitățile VKontakte

Articolul continuă seria articolelor „Primii pași în dezvoltare pe 1C”.

În acesta, vom analiza metodele de informare a utilizatorului care sunt prezente în platforma 1C:Enterprise 8 și, de asemenea, vă vom concentra atenția asupra unora dintre caracteristicile de funcționare a acestor mecanisme sunt legate de modul de utilizare; modalitatea.

Aplicabilitate

Articolul discută funcționalitatea:

  • Interfață în versiunea „Versiunea 8.2” pentru configurația dezvoltată pe platforma 1C:Enterprise 8.2.19.130
  • Interfață taxi pentru configurație dezvoltată pe platforma 1C:Enterprise 8.3.4.496 până la 8.3.9+
  • Interfață taxi pentru o configurație dezvoltată pe platforma 1C:Enterprise 8.3.10-8.3.11

Cum să afișați un mesaj utilizatorului în 1C

Afișarea mesajelor în modul utilizator rezolvă o serie de probleme:

  • reflectarea progresului procesului curent (afișarea stadiului de execuție a procesului; afișarea valorilor calculate obținute în timpul funcționării algoritmului);
  • afișarea erorilor către utilizator pentru o eventuală corectare;
  • emiterea de recomandări;

Tipuri de mesaje:

  • terminator, care oprește execuția programului și nu îi permite să continue până când utilizatorul citește acest mesaj și execută anumite actiuni. De exemplu, utilizatorului i se va prezenta o întrebare pe ecran la care va trebui să răspundă Da sau Nu. Până când utilizatorul răspunde, programul nu se execută actiunile urmatoare;
  • mesaje introductive care sunt pur și simplu afișate utilizatorului și permit lucrări ulterioare (adică, utilizate în modul de alertă).

Mesajele de terminare ar trebui să fie mesaje de eroare și mesaje introductive: recomandări, mesaje despre stadiul curent al procesului și afișarea valorilor calculate (printare de depanare).

Mesajele introductive au scopul de a oferi utilizatorului anumite informații.

Este necesar ca utilizatorul să se familiarizeze cu acesta și, eventual, să întreprindă unele acțiuni care sunt descrise în acest mesaj.

Este foarte important ca utilizatorul să citească efectiv aceste mesaje, așa că acestea ar trebui să conțină doar informații importante.

Mesajele de testare și depanare nu ar trebui să fie emise utilizatorului, deoarece mai devreme sau mai târziu va începe să ignore absolut toate mesajele.

În conceptul de interfață gestionată, abordarea emiterii unui mesaj s-a schimbat oarecum. Acum este legat de forma în care a apărut. Nu mai poate fi închis, astfel încât textul să fie complet invizibil.

Nu puteți anula fixarea unei casete de mesaj dintr-un formular.

Sintaxa funcției:

A raporta (<Текст сообщения>, <Статус>)

Acestea. primul parametru este textul în sine.

Al doilea parametru (starea mesajului) este opțional. Puteți specifica valori pentru starea: Normal, Important, Foarte important etc.

Din valoare dată depinde de ce pictogramă va fi amplasată lângă mesaj. Cu toate acestea, acest lucru funcționează numai în interfața normală.

În conceptul de interfață gestionată, pictograma este întotdeauna în formă semn de exclamare, nu poate fi redefinit.

Faptul este că dacă un mesaj este generat în momentul scrierii unui element de director, poate apărea următoarea situație.

Utilizatorul face clic pe un buton Salveaza si inchide, in acest caz mesajul este afisat in fereastra corespunzatoare (in dreapta formularului).

Dar formularul se închide instantaneu, iar utilizatorul nu va vedea că a fost afișată nicio informație pentru el.

Prin urmare, în concept aplicație gestionată Se recomandă afișarea mesajelor introductive folosind așa-numitele alerte. Un exemplu de utilizare incorectă a unei funcții A raporta prezentate în figură.

Cu toate acestea, funcția A raporta poate fi folosit pentru a afișa informații despre anumite erori, de exemplu, la momentul postării documentului.

În acest caz, sistemul poate fi informat că formularul nu trebuie să fie închis și să arate utilizatorului ce erori apar la postarea documentului.

Funcţie A raporta pe deplin suportat în Platforma 8.3. Poate fi folosit și va funcționa (atât în ​​versiunea de fișier, cât și în versiunea client-server).

Dar trebuie remarcat și faptul că funcția A raporta Există dezvoltare ulterioară– aceasta este o clasă de mesaje pentru utilizator, care permite, pe lângă afișarea unui mesaj, să-l lege contextual la orice elemente de formular.

De exemplu, un mesaj de eroare poate fi legat de un element de formular, ceea ce este foarte clar pentru utilizator. Vom reveni să analizăm această problemă puțin mai târziu. Funcţie A raporta există o caracteristică interesantă.

Astfel, codul programului din Platforma 8.3 poate fi executat atât pe partea Client, cât și pe partea Server.

În acest caz, codul programului client este responsabil pentru interacțiunea cu utilizatorul, adică. Pe partea clientului, se deschid formulare și sunt afișate rapoarte.

Diverse documente de dialog sunt, de asemenea, afișate numai pe client. Ele nu pot fi executate pe server deoarece serverul nu are capacitatea de a interacționa cu utilizatorii.

Dar funcția A raporta poate fi executat atât pe partea Client cât și pe partea Server. În acest caz, utilizarea metodei A raporta pe Server nu înseamnă deloc că mesajul va fi afișat pe Server, pur și simplu nu există unde să le afișeze.

Aceasta înseamnă că dacă afișăm un mesaj în procedura serverului folosind această metodă, ele se vor acumula într-un buffer și vor fi afișate pe ecran doar când procedura serverului se încheie și revine la Client.

În acest moment, sistemul va solicita date din buffer și le va afișa pe ecran.

Aceeași caracteristică se aplică clasei Mesaj pentru utilizator. Figura prezintă un exemplu de utilizare a metodei A raporta pe partea Server.

Ca urmare a utilizării metodei A raporta pe partea Server, mesajele au fost afișate pe ecran pe partea Client.

Este necesar un mecanism de alertă pentru a informa utilizatorul că „ceva” s-a întâmplat în sistem și că „ceva” necesită atenția utilizatorului. Alertele sunt generate de două scenarii:

  1. Prin platforma în sine atunci când înregistrați sau schimbați interactiv un obiect
  2. De către dezvoltator atunci când apelează o metodă din cod .

Notificarea în sine este o fereastră mică care apare, de regulă, în colțul din dreapta jos și informează despre acțiunea finalizată. În câteva secunde, se estompează treptat și dispare. În același timp, dacă treci cu cursorul mouse-ului peste notificare, aceasta nu dispare și o poți citi cu atenție.

În plus, alertele pot fi accesate în zona corespunzătoare a panoului de informații (butonul „Istoric” din partea stângă jos a formularului de cerere în opțiunea de interfață „Versiunea 8.2”).

Pentru a vă crea propriile alerte trebuie să utilizați metoda contextului global ShowUserAlert(). Sintaxa sa înainte de versiunea 8.3.10 este prezentată mai jos:

Afișați alertă utilizator (<Текст>, <НавигационнаяССылка>, <Пояснение>, <Картинка>)

Primul parametru conține textul care va fi afișat în notificare.

Apoi, ca al doilea parametru, puteți trece un anumit link de navigare unui element baza de informatii(elementul care corespunde textului mesajului nostru). Când un utilizator face clic pe o alertă, linkul va fi urmat.

Folosind al treilea parametru, puteți transmite o explicație pentru mesaj, de exemplu. o descriere extinsă.

De asemenea, puteți aloca o imagine care afișează starea notificării.

Trebuie remarcat faptul că toți acești parametri sunt opționali. Mai jos este un exemplu de utilizare aceasta metoda(în configurator și în modul utilizator în opțiunea de interfață „Versiunea 8.2”).

În versiunea platformei 8.3.10.216 pentru interfața „Taxi”, mecanismul de notificare a fost îmbunătățit semnificativ pentru a îmbunătăți gradul de utilizare atât a clientului subțire, cât și a clientului web. Din acest motiv, s-au modificat și parametrii trecuți metodei ShowUserAlert(). Acum sintaxa arată astfel:

ShowUserAlert(<Текст>, <ДействиеПриНажатии>, <Пояснение>, <Картинка>, <СтатусОповещенияПользователя>, <КлючУникальности>)

Se poate observa că al doilea parametru, numit anterior Legătură de navigație, a primit un nume nou ActionWhenClicked. Acest lucru se datorează faptului că acum a devenit posibil să transferați nu numai un șir cu link de navigare, dar și o descriere a alertei. Acest lucru este ilustrat în captura de ecran de mai jos:

După cum se poate vedea din exemplu, acum avem capacitatea de a procesa programatic un clic pe o fereastră de notificare, conform logicii necesare.

Următorul parametru Stare alertă utilizator a aparut pentru prima data. Indică starea alertei (Informații sau Important).

În cazul opțiunii Important, dacă utilizatorul nu a răspuns la mesaj, atunci după ce acesta este ascuns de pe ecran, acesta poate fi citit prin Centrul de notificare (mai multe despre el mai jos). În cazul opțiunii Informații, notificarea este ștearsă fără a fi stocată în acest centru. Să rescriem codul din exemplul nostru, după cum urmează:

După executarea comenzii, obținem aproximativ această vedere a ferestrei aplicației:

Un buton cu o pictogramă clopoțel a apărut în bara de instrumente, care apelează Centrul de notificare menționat mai sus. Acumulează noi alerte importante la care utilizatorul nu a răspuns încă.

Dacă există alerte în Centru, lângă el apare un mic punct portocaliu pentru a atrage atenția utilizatorului. Utilizatorul poate deschide Centrul de notificare, poate citi textul și, dacă este necesar, poate întreprinde unele acțiuni.

Din Centru, alerta este ștearsă făcând clic pe butonul de ștergere, dar dacă există o acțiune asociată cu alerta, atunci de îndată ce utilizatorul face clic pe textul mesajului, acesta va dispărea și el.

Și, în sfârșit, ultimul parametru adăugat a fost Cheia unicității. Îl puteți folosi pentru a găsi alerta afișată pe ecran și pentru a o modifica. Dacă nu există nicio alertă cu acest parametru, va fi afișată o nouă alertă.

După cum puteți vedea, posibilitățile oferite de metoda corespunzătoare au devenit și mai mari! Dar acestea nu sunt toate modificările în mecanismul de notificare.

După cum probabil ați observat deja, lor aspect. Alertele arată acum mai moderne și mai ergonomice, dar nu pot fi mutate pe ecran sau redimensionate. Vă rugăm să rețineți că, în exemplul nostru, textul de notificare pur și simplu nu s-a încadrat în întregime în fereastra în sine, iar utilizatorul îl poate citi în întregime doar prin deschiderea Centrului de notificări. Prin urmare, nu ar trebui să scrieți o cantitate mare de text în textul de notificare.

Noile funcții includ și afișarea simultană a până la trei alerte pe ecran.

Aceasta încheie cunoștințele noastre cu formarea programatică alerte. Totuși, rețineți că alertele sunt generate nu numai de dezvoltator în mod programatic, ci și de platforma însăși în momentul înregistrării interactive sau al schimbării unui obiect. Și adesea acest fapt provoacă neînțelegeri în primul rând în rândul utilizatorilor începători: de ce sunt necesare aceste alerte de serviciu, care, apropo, nu pot fi dezactivate?

Să ne imaginăm asta situatie simpla: Utilizatorul a setat un filtru într-o listă pentru comoditate. Să presupunem că a făcut asta sub forma unei liste în directorul Nomenclatură. Apoi, după ceva timp, am decis să vă prezint element nou cu numele „Scaun”, care nu se potrivește cu filtrul instalat anterior. Intră în el, îl notează și...? Și nu o vede pe listă. Ce va face utilizatorul mediu? Desigur, va intra în el a doua oară, dar nu o va mai vedea. Aceasta poate fi urmată de a treia, a patra, a cincea oară. Când se sătura să intre în același lucru iar și iar, te va întreba în sfârșit: unde se duce totul?

Tocmai de aceea platforma afișează aceste alerte de service, informând utilizatorul că acțiunea sa a fost finalizată. În exemplul nostru, în momentul înregistrării interactive, utilizatorul va vedea următoarea notificare:

Mesaje de terminare

Mesajele de terminare sunt acele mesaje care nu vor permite lucrul până când utilizatorul efectuează anumite acțiuni, de ex. până când procesează mesajul.

Vom vorbi despre posibilitatea utilizării mesajelor de terminare în Platforma 8.3 puțin mai târziu (în În ultima vreme Ei încearcă să nu le folosească, așa că exemplul luat în considerare este mai relevant pentru Platforma 8.2).

Există două metode de emitere a mesajelor de terminare AvertizareȘi Întrebare. Avertizare difera de Întrebare deoarece are un singur buton Bine.

O întrebare poate specifica seturi diferite de opțiuni de răspuns ( Nu chiar, DaNuAnulează, Bine, OKAnulează, RepetAnulare, AbortRepeatSkip), care sunt specificate folosind parametrul.

Să afișăm niște avertismente folosind linia (de exemplu, într-un modul de aplicație gestionată):

Avertisment(„Baza va fi acum deschisă”);

Pentru a deschide un modul de aplicație gestionat, selectați obiectul din arborele de configurare Configurare, apel meniul contextualși selectați elementul Deschideți un modul de aplicație gestionată.

ÎN în acest caz,, la pornirea aplicației, va fi afișată o fereastră care este modală. O fereastră modală se suprapune pe toate ferestrele care există în aplicație. Până când procesăm această fereastră, nu sunt posibile alte acțiuni.

Funcția funcționează într-un mod similar Întrebare.

Sintaxă:
Întrebare(<ТекстВопроса>,<Кнопки>,<Таймаут>,<КнопкаПоУмолчанию>,<Заголовок>,
<КнопкаТаймаута>);

Sunt necesari doar primii doi parametri. Pentru al doilea parametru, tipul de date este compus ( Modul de dialog Întrebare sau ListValues). Al treilea parametru ( <Таймаут> ) caracterizează intervalul de timp în secunde în care sistemul va aștepta răspunsul utilizatorului.

Când intervalul expiră, fereastra de întrebări va fi închisă. Parametru similar( <Таймаут> ) este prezentă și în funcție Avertizare.

Ca exemplu de utilizare a funcției Întrebare Puteți utiliza următorul cod, scris într-un modul de aplicație gestionat:

Vă rugăm să rețineți că aceste metode ( AvertizareȘi Întrebare) nu sunt disponibile pe server. Și acest lucru este logic, deoarece metodele de interfață nu pot fi executate pe un Server unde nu există utilizator.

Caracteristici de utilizare ferestre modaleîn Platforma 8.3

În platforma 8.3, există moduri de operare cu și fără modalitate. Setarea implicită este Nu utilizați modul modality.

În acest caz, utilizarea mesajelor de reziliere este imposibilă. Dacă este necesară utilizarea mesajelor de terminare (funcții AvertizareȘi Întrebare) ar trebui să modificați valoarea proprietății de configurare pe Utilizare.

Fereastra modală este afișată în partea de sus și blocurile funcționează cu alte ferestre până când acțiunile cu fereastra modală sunt finalizate. În plus, execuția se oprește codul programului la locul unde este numită această fereastră. Execuția codului va continua numai după ce fereastra modală este închisă.

În primul rând, apar probleme cu utilizarea ferestrelor modale pentru aplicatie de mobil. În al doilea rând, în browser, modalitatea ferestrelor este implementată folosind ferestre pop-up separate.

Ferestrele pop-up sunt adesea dezactivate prin setările implicite ale browserului. Utilizatorul trebuie să fie forțat să seteze permisiunea pentru aceste ferestre.

Browsere pentru tablete iar pentru telefoane în majoritatea cazurilor nu acceptă deloc ferestre pop-up.

Pentru a înlocui funcțiile ÎntrebareȘi Avertizare au fost dezvoltate noi metode: Afișează întrebare, ShowWarning.

Aceste metode vă permit să apelați o fereastră, dar nu opresc execuția codului programului. Din punct de vedere tehnic, acest lucru se realizează prin formarea unei pseudo-fereastră în interiorul ferestrei părinte. Pseudo-fereastra nu se suprapune cu fereastra părinte. După deschiderea unei astfel de ferestre, codul continuă să se execute.

Primirea și procesarea valorilor introduse de utilizator se efectuează într-o procedură separată, care este numită atunci când caseta de dialog este închisă.

Sintaxa funcției ShowWarning:

Afișează avertisment(<ОписаниеОповещенияОЗавершении>, <ТекстПредупреждения>, <Таймаут>, <Заголовок>)

Parametru <ОписаниеОповещенияОЗавершении> (optional)

Tip de date: DescriereAlerte.

Conține o descriere a procedurii care va fi apelată după închiderea ferestrei de avertizare.

Sintaxa funcției Afișează întrebare:

Afișează întrebarea(<ОписаниеОповещенияОЗавершении>, <ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)

Primii trei parametri sunt necesari.

Mai jos este un exemplu de utilizare a funcției.

Clasa MessageToUser

Comoditatea de bază a clasei de mesaje Mesaj pentru utilizator este că acesta este un mesaj contextual (spre deosebire de metode AvertizareȘi Întrebare).

Mesajele pot fi legate de un anumit element de ecran. Acest obiect este disponibil și pe Server.

Trebuie remarcat faptul că, în primul rând, acest obiect trebuie creat. De exemplu: Mesaj = New MessageToUser;

Astfel creăm o instanță a acestui obiect.

În al doilea rând, trebuie să specificați textul mesajului într-o proprietate separată.

În al treilea rând, în proprietate Camp puteți specifica ce element de formular acest mesaj trebuie legat.

Atenţie! Pentru a vă lega la câmpul de formular dorit, acordați atenție inițializării proprietăților PathToDataȘi Cheie de date. Pentru un document, atunci când plasați cod într-un modul obiect, puteți scrie:

Message.DataPath = „Obiect”;
Message.DataKey = ThisObject.Link;

Pentru a deschide modulul document, în fereastra de editare a obiectului (documentului), accesați fila Alte apasa butonul Modul obiect.

Pentru experiment, vom plasa codul în modulul obiect al unui document.

Mai jos este rezultatul obținut în modul utilizator pentru Platforma 8.3.

Trebuie remarcat faptul că mesajele ies folosind noul obiect de sistem Mesaj pentru utilizator V caz general nu se încheie. Acestea. sistemul va permite utilizatorului să continue acțiunile ulterioare fără a răspunde la mesajele afișate.

Dar, în primul rând, aceste mesaje sunt destul de vizibile. În al doilea rând, mesajele sunt de obicei afișate utilizatorului în momentul înregistrării elementelor directoarelor sau postării documentelor, adică atunci când se efectuează unele verificări. Și dacă au fost detectate erori, utilizatorul va vedea aceleași mesaje.

În consecință, atunci când sunt detectate erori, tranzacția este anulată, adică. scrierea unui element de director este interzisă sau postarea unui document este interzisă.

Astfel, apare un fel de emulare a mesajului de terminare. Deoarece acțiunea este anulată până când utilizatorul reacționează la mesajul introdus, va fi imposibil să finalizați acțiunea, de exemplu, postarea unui document.

Dar, pe de altă parte, este posibil să închideți documentul fără a-l conduce, fără a reacționa în vreun fel la mesaj. Prin urmare, aceste mesaje către utilizator nu se încheie.

Notificarea de stare proces

Există functie speciala, cu care puteți afișa progresul aproximativ al unui proces.

Sintaxă: Stat(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
Opțiuni:<ТекстСообщения>Și<Пояснение>– optional, tip – Linia.
Textul este afișat pe o bară de stare specială.
<Прогресс>Parametrul este și el opțional, dar vizual.
Tip: Număr. Valoarea indicatorului de progres (de la 1 la 100).
<Картинка>de asemenea, un parametru opțional.
La procesarea oricărui eveniment, apelurile periodice ale unei funcții precum:

În acest caz, etichetele se pot schimba, iar valorile parametrului Progress se pot modifica.

O funcție poate fi apelată dintr-o procedură (funcție) sau din mai multe. În acest fel, puteți urmări starea de execuție a procesului.

Dacă doriți să aruncați o privire mai atentă asupra mecanismului de notificare, opriți-vă chiar acum și citiți-ne articol nou Afișarea progresului operațiunilor de lungă durată în 8.3.10. Nu mai explică la nivel de începător toate subtilitățile și roci subacvatice funcționarea acestui mecanism.

Terminăm introducerea noastră cu privire la modalitățile de informare a utilizatorului. Sperăm că ați înțeles în ce situații ar trebui utilizată una sau alta metodă.

Aș dori să vă atrag încă o dată atenția asupra faptului că, dacă configurația dvs. (versiunea 8.3.3+) implică lucrul cu un client web, atunci:

  • la nivelul de configurare, setarea modului modalității trebuie să fie setată la „Nu utilizați”
  • Codul trebuie să utilizeze metode ale modelului de interacțiune cu utilizatorul asincron. Astfel de metode încep cu cuvintele Spectacol sau ÎNCEPE.

Puteți citi mai multe despre refuzul de a folosi ferestrele modale în platforma 1C:Enterprise 8.3 în articolul final al seriei. Și trecem mai departe și, în sfârșit, începem să studiem interfața mult așteptată Taxi, care a fost deja menționată de mai multe ori în materialele noastre.

Astăzi vă voi povesti despre unul nou caracteristică interesantă„Mesaje pentru comunitatea VKontakte”. Cu ajutorul acestuia, orice utilizator poate scrie un mesaj administratorului comunității prin mesaje private, iar administratorul, la rândul său, va răspunde în numele comunității.

Pentru a-l activa, accesați „Community Management”. Apoi, setați comutatorul din blocul „Mesaje comunitare” la „Activat”. În plus, puteți adăuga link separatîn coloana din stânga a meniului dvs. VKontakte folosind caseta de selectare „Adăugați la”. meniul din stânga„. Pentru a salva modificările, faceți clic pe butonul „Salvați” de mai jos.

Acum, după ce ați intrat în comunitate, butonul „Trimite mesaj” ar trebui să apară în coloana din dreapta. Cu ajutorul acestuia, orice utilizator poate trimite un mesaj comunității.

Toate mesajele primite în acest fel vor fi afișate în comunitate și în coloana din stânga.

În viitor, comunicarea are loc cu utilizatorul prin „ Mesaje private”, și din comunitate prin „Mesaje comunitare”.

Când treceți cu mouse-ul peste un dialog, corespondența poate fi adăugată la important sau ștearsă complet. De asemenea, puteți face un mesaj important în cadrul unei corespondențe.

La ștergere, puteți marca mesajul ca spam sau puteți bloca utilizatorul.

Încă unul functie importanta- capacitatea de a marca mesajele ca răspuns. Să ne imaginăm o situație în care un utilizator ți-a scris, dar dă un răspuns acest moment Nu se poate. E în regulă, comunitatea are 4 file de mesaje pentru asta.

  • Important - acele mesaje pe care le-ați marcat în dialoguri sau în corespondență;
  • Fără răspuns - acele mesaje care au fost citite, dar din anumite motive nu ați dat niciun răspuns;
  • Necitite - mesaje noi care nu au fost încă citite.

Puteți răspunde la un mesaj în cadrul unei conversații folosind o pictogramă specială deasupra dialogului. Aici puteți adăuga un mesaj la „Important”.

Asta e tot. sper pentru tine această ocazie va fi de folos.

În această lecție vă voi arăta cum descărcați muzică de pe VKontakte folosind extensia de browser de la savefrom.net. Primul pas este instalarea " Asistentul Savefrom.net". Urmați linkul și urmați instrucțiunile pentru a instala extensia pentru browserul dvs. Nu fiți atenți la ceea ce vă spun instrucțiunile despre YouTube. Sarcina noastră este pur și simplu să instalăm asistentul.

În această lecție, vă voi spune cum să anulați un vot în VK dacă îl puneți accidental într-un sondaj. Dacă ți-ai dat seama că ai făcut o greșeală și ai dori să revotezi, atunci există mai multe modalități de a rezolva această problemă - folosind site-ul VKontakte în sine sau folosind servicii de la terți. Aceste metode sunt despre care vom vorbi astăzi.

În această lecție vă voi spune cum să puneți o emoticon în starea VKontakte.

Toata lumea face greseli. Erorile apar și atunci când oamenii interacționează cu interfețe cu utilizatorul(interfețe utilizator). Uneori apar din cauza unei erori umane, iar uneori motivul constă în aplicația în sine. Oricare ar fi motivul, greșelile și modul în care le tratați au un impact enorm asupra ( experiența utilizatorului). Mesajele de eroare inutile pot provoca frustrarea utilizatorului și pot găsi un înlocuitor pentru aplicația dvs.

În acest articol, vom analiza cum puteți optimiza pentru a evita erorile utilizatorilor și cum să creați mesaje de eroare eficiente.

Ce este un mesaj de eroare?

Un mesaj de eroare este un ecran care apare atunci când ceva nu merge bine, care împiedică utilizatorul să finalizeze acțiunea dorită. Acesta poate fi orice: operațiuni incompatibile, introducerea incorectă a datelor, incapacitatea aplicației de a se conecta la server etc.

Fiecare eroare, indiferent de motiv, devine o piatră de poticnire pentru utilizatorii dvs. și îi împiedică să interacționeze în continuare cu aplicația. Din fericire, abordarea corectă la problemele emergente va contribui la reducerea acestui obstacol.

Este mai ușor să previi decât să repari

Dacă dezvoltați o aplicație, ar trebui să fiți conștienți de cele mai frecvente interacțiuni care pot duce la erori. De exemplu, este obișnuit să vi se pară dificilă completarea unui formular la prima încercare sau imposibilitatea de a sincroniza datele din cauza unei conexiuni slabe la rețea. Aceste cazuri trebuie luate în considerare pentru a minimiza erorile. Cu alte cuvinte, este mai bine să le preveniți oferind sfaturi utilizatorului și fiind flexibil.

De exemplu, dacă oferiți un serviciu pentru găsirea și rezervarea de hoteluri, ce rost are să faceți datele anterioare disponibile pentru selecție și apoi să afișați un mesaj de eroare?

O soluție înțeleaptă în acest caz este oferită de Booking.com: selectorul lor de interval de date vă permite să selectați doar datele curente sau ulterioare și, prin urmare, nu există nicio modalitate ca o persoană să greșească.

Mesaje de eroare despre introducerea incorectă a datelor

Validarea formularului este necesară pentru a informa utilizatorul despre eventualele inexactități ale datelor pe care le-a introdus. Validarea bună a formularelor conține patru elemente importante:

1. Timpul corect (validare încorporată)

Utilizatorilor chiar nu le place să piardă timpul completând un formular lung și apoi află doar la sfârșit că au greșit undeva.

Validarea ar trebui să informeze imediat utilizatorii că informațiile introduse sunt corecte. Principiul principal validarea bună a formei este: Vorbește cu utilizatorii! Spune-le ce nu se întâmplă! Acest lucru îi va ajuta să reducă timpul necesar pentru a corecta erorile.

2. Locul potrivit

Mesajele dvs. trebuie plasate întotdeauna în contextul acțiunii. Dacă doriți să informați utilizatorul că a apărut o eroare într-un anumit câmp, afișați un mesaj lângă acel câmp - de preferință în dreapta acestuia sau, dacă acest lucru nu este posibil, chiar sub acesta.

Exemplu din stânga: informațiile introduse nu au fost verificate în timp util, mesajul de eroare este în afara contextului și nu oferă nicio îndrumare utilizatorului
Exemplu din dreapta: Mesajele informează utilizatorul despre anumite inexactități ale datelor pe care le-a introdus, prezentate în context și în timp real

3. Culoare potrivită (design intuitiv)

Culoarea este una dintre cele mai bune instrumente la elaborarea mesajelor de eroare deoarece funcționează la nivel instinctiv. Utilizarea roșu pentru mesajele de eroare, galben pentru mesajele de avertizare și verde pentru mesajele de succes este incredibil de puternică. Cu toate acestea, asigurați-vă că culorile dvs interfata digitala disponibile utilizatorilor. Acest aspect important design vizual de înaltă calitate.

4. Ștergeți mesajul

Mesajul dvs. de eroare ar trebui să spună clar utilizatorului ce este exact în neregulă și ce trebuie să remedieze. Adică, în loc să afișați mesajul „e-mail invalid”, ar trebui să clarificați exact ce este greșit: a fost o greșeală de tipar, aceasta e-mail deja ocupat etc. Apoi trebuie să oferiți opțiunile utilizatorului (autentificare sau recuperarea parolei).

Erori de aplicație

Acum vom vorbi despre erori care apar fără intervenția utilizatorului. De exemplu, atunci când conexiunea la Internet este pierdută, iar utilizatorul în acel moment se află pe un ecran care este disponibil doar în modul online. În aceste situații, trebuie să clarificați din nou ce s-a întâmplat și ce pași trebuie luați în continuare.

Nu ar trebui să afișați niciodată mesaje ca acesta:

1. Mesaj „Codificat”. Mesaje care conțin coduri erori interne aplicațiile sau abrevierile de neînțeles nu le spun utilizatorilor nimic, ci doar îi sperie.

Acest mesaj de eroare a fost scris de un dezvoltator pentru un dezvoltator: „Operația nu a putut fi finalizată (WDGeneralNetworkError 500)”

2. Mesaj de blocare. Astfel de mesaje nu dau niciunul Informatii utile pentru utilizatori.

3. Mesaj abstract. Mesajul din exemplul de mai jos oferă utilizatorilor exact aceeași cantitate de informații ca în cazul precedent. Nu este clar ce înseamnă și ce trebuie făcut în continuare.

Nu vă așteptați ca oamenii să înțeleagă contextul mesajului sau că sunt pricepuți din punct de vedere tehnic. Vorbește într-un limbaj simplu pentru ei, evitând jargonul.

Mesajul dvs. de eroare ar trebui să comunice clar într-un limbaj ușor de utilizat:

  • Ce a mers prost și din ce posibil motiv
  • Ce ar trebui să facă utilizatorul pentru a remedia această eroare?

Mesajele de eroare sunt o oportunitate excelentă de a folosi pictograme și ilustrații, deoarece oamenii răspund mai bine informatii vizuale decât textul simplu. Acest mod bun„umanizează” aplicația ta și da-i personalitate. În plus, umorul va ajuta la distragerea atenției utilizatorului de la disconfortul cauzat de eroare.

Când aplicația Basecamp întâmpină o eroare legată de introducere incorectă informații, eroul situat în partea stângă a ecranului are o expresie de surpriză pe față:

În Gmail, atunci când creați un cont nou, este posibil să întâlniți acest mesaj de eroare.

1C Mesaj pentru utilizator afișează un mesaj utilizatorului (după finalizarea procesării) sau îl salvează într-o coadă dacă mesajul nu poate fi afișat „în acest moment”, de exemplu:
Mesaj = New MessageToUser();
Message.Text = „Bună, lume!”;
Message.Message();

În multe cazuri, mesajele sunt generate în vrac în timpul anumitor procesări. De exemplu, la verificare masa mare, multe mesaje de eroare pot apărea în diferite rânduri ale tabelului. Sau la procesarea unei tranzacții. În acest caz, procesarea poate fi efectuată pe server sau în sarcina de reglementareși este dificil să afișați aceste mesaje.

1C Mesaj pentru utilizator scrie mesaje în coada „unei” și, după finalizarea procesării, le afișează utilizatorului, dacă este posibil. În caz contrar, întreaga listă de mesaje poate fi obținută folosind metoda GetMessagesToUser().

Pentru a afișa un mesaj utilizatorului folosind 1C Mesaj pentru utilizator într-un anumit, deja formă deschisă, mai trebuie să setați identificatorul formularului:
Message.DestinationIdentifier = Form.UniqueIdentifier;

Pentru ca mesajul 1C Mesaj către utilizator să fie afișat într-o fereastră pop-up lângă un câmp specific al formularului în care este executat codul în modul, trebuie să specificați „calea” către acesta:
Message.Field = „Nume”; //unde Nume este un atribut al formularului
Message.Field = "Object.Name"; //unde Nume este atributul obiectului (adică directorul a cărui formă este editată)
Message.Field = „Produse.Preț”; //unde Produse este partea tabelară a formularului, Prețul este coloana acestei părți tabelare

Pentru a face același lucru, dar într-un modul al altui obiect (modul general), trebuie să specificați suplimentar obiectul (DirectoryObject, DocumentObject etc.):
Message.Field = „Nume”; //unde Nume este atributul DirectoryObject
Message.SetData(DirectoryObject);
//Când dați dublu clic pe un mesaj, formularul de obiect se va deschide cu un mesaj pop-up pentru câmpul necesar

O altă modalitate de a asocia un mesaj 1C unui mesaj utilizator cu datele obiectului:
//pentru o carte de referință, document..
Message.DataKey = DirectoryLink;
Message.DataPath = „Obiect”;

//pentru intrări în registru
Message.DataKey = RegisterRecordManager.InitialRecordKey; //de obicei, principalul atribut al formei asociat registrului
Message.DataPath = „Înregistrare”;

În configurații tipice pe formulare gestionate pentru client slab, de exemplu, „Trade Management, Edition 11” și „Accounting, Edition 3”, în modulul general de uz general ClientServer există o funcție NotifyUser(), care „universalizează” lucrul cu acest obiect. Sintaxa funcției în diferite configurații- diferit.

Deoarece 1C Message to User generează o listă de mesaje, pentru a o reseta (de exemplu, înainte de a efectua o procesare complexă), puteți apela funcția:
GetMessagesUser(True);

Bună ziua.

Astăzi vom vorbi despre un lucru atât de simplu ca mesajele către utilizator.

ÎN 1C Metoda 8 a migrat de la 7.7 - " A raporta(...)„. Această metodă este foarte simplă, deschide o fereastră de mesaj dacă nu este deschisă și adaugă acolo textul mesajului. Ca și în 1C 7.7, are un al doilea parametru care definește pictograma vizavi de mesaj. Această pictogramă determină importanța mesajului.

Timpul a trecut și ne-am pus mâna formulare gestionate. Formularele gestionate nu au o singură casetă de mesaje. Cu toate acestea, metoda este încă acceptată. În noua interfață, mesajele sunt lipite de fereastra activă. Când trec la altă fereastră, mesajele dispar din vedere, dar când revin, apar din nou. În unele cazuri, acest lucru nu este convenabil, dar nu puteți face nimic în acest sens, un formular gestionat implică absența unei ferestre principale la care ar putea fi atașate mesajele.

Cu toate acestea, deoarece mesajul este asociat cu un formular specific, acest lucru permite autorilor platformei să extindă funcționalitatea unui mesaj simplu. Este posibil să fi văzut deja în configurațiile standard că mesajele sunt acum integrative, făcând clic pe un mesaj ne poziționează într-un anumit câmp, dublu clic poate deschide un alt element al bazei de date.

Faptul este că acum se obișnuiește să se folosească nu metoda contextului global „Report(...)”, ci obiectul „ Mesaj pentru utilizator". Acest obiect este disponibil peste tot, atât pe client, cât și pe server. Are mai multe proprietăți și câteva metode.

În general, dacă trebuie să oferi utilizatorului doar un mesaj, fără nicio interacțiune, atunci este suficient să scrieți:



Message.Message();

Aceste trei linii sunt absolut identice cu metoda pe care o cunoaștem deja și, prin urmare, utilizarea acestui obiect pentru un astfel de mesaj este inutilă.

Principalele câmpuri care extind capacitățile mesajului sunt:

  • Cheie de date
  • Camp

Cheie de date- un link către obiectul bazei de informații la care se referă acest mesaj sau o cheie de înregistrare. Asa scrie in certificat. Dacă punem aici un link către un document sau o carte de referință, atunci făcând dublu clic se va deschide acest obiect, indiferent de forma în care a fost afișat mesajul. În consecință, dacă mesajul a ieșit sub forma unui document, iar cheia de date conține un link către acesta, atunci formă nouă nu se va deschide.

Prostii se pot întâmpla dacă emitem un mesaj sub forma unui obiect care nu a fost încă notat. În acest caz avem un link gol. Dar platforma nu este pierdută și pur și simplu nu deschide nimic, adică. Rămâni în forma în care ai fost.

Camp- aceasta este o linie cu numele câmpului care trebuie activat. Și nu contează dacă forma altui obiect se deschide sau dacă rămânem în forma actuală.

Iată un exemplu despre cum funcționează:

Să presupunem că înainte de a scrie un element de director în modulul formular, verificăm unicitatea atributului „Id” și, dacă există deja, afișăm mesajul:


Dacă selectează.Next() Atunci
Refuza = Adevărat;
Mesaj = New MessageToUser;
Message.DataKey = Select.Link;
Message.Field = "id";
Message.Text = „O secțiune cu acest ID există deja”;
Message.Message();
endIf;

ÎN în acest exemplu De dublu click se va deschide un element de director cu același Id, iar câmpul Id va fi activ și va fi un indiciu în el:

Pare convenabil, atât putem schimba ID-ul noului element, cât și pe cel vechi, este ușor să intri în el făcând clic pe mesaj. Dar câmpul din elementul curent nu este activat, ceea ce înseamnă cantitati mari câmpurile pot fi mai utile decât deschiderea formularului altui obiect. La urma urmei, un alt obiect a fost deja înregistrat și este utilizat, iar probabilitatea ca să existe o eroare în el este mică. Cel mai probabil trebuie să edităm elementul curent.

Pentru a face acest lucru, schimbați codul după cum urmează:

//dacă există duplicate, eșantionul va conține date
Dacă selectează.Next() Atunci
Refuza = Adevărat;
Mesaj = New MessageToUser;
Message.DataKey = Object.Link;
Message.Field = "id";
Message.Text = „O secțiune cu acest ID există deja”;
Message.Message();
endIf;

Singura diferență este că în Cheie de date trecem un link către elementul pe care îl avem deschis. Din păcate, acest cod nu funcționează: (Dublu clic se va deschide o fereastră modală.

Pentru ca acest lucru să funcționeze, există o nuanță pe care trebuie să completați „ PathToData". Nu pot explica exact de ce, trebuie doar să-mi amintesc asta. Deschide un alt obiect - calea datelor nu este necesar, poziționăm în interiorul celui actual – necesar. Concluzie - este mai bine să o completați întotdeauna, nu puteți greși. Adăugați linia la cod:

Message.DataPath = „obiect”;

Și totul este frumos:

Mai este o nuanță despre care vreau să vorbesc. Dacă „câmpul” este lăsat gol, atunci poziționarea pe elementul de control nu va avea loc și nu va apărea un sfat cu instrumente în dreptul acestuia. Dacă „câmpul” este completat incorect, atunci poziționarea va avea loc pe formular în ansamblu și va apărea un tooltip, dar la sfârșitul formularului, fără referire la câmpul de intrare real.

Următoarea nuanță este că mesajul are o metodă - " SetData„. Pe baza obiectului, completează câmpurile Cheie de dateȘi PathToData. Este mult mai convenabil să faci totul într-o singură linie. De obicei, sub forma unui element/document, avem un obiect. Singurul lucru care trebuie scris pe server este următorul:

Message.SetData(FormAttributesValue("Obiect"));

Dar în procedura predefinită a formularului Înainte de înregistrarea pe server de fapt există deja un parametru CurrentObject. Dar pe client nu vom primi deloc obiectul. Chiar și în modulul obiect (nu în formă) trebuie să scrieți acest lucru:

Message.SetData(ThisObject);

În concluzie, vreau să spun câteva lucruri urâte despre formularele gestionate. Acest lucru se aplică atât TAXI-urilor, cât și UV-urilor obișnuite. Faptul este că listele de interfețe sunt transferate foarte slab la UV. Un tabel care conține 1000 de rânduri este desenat foarte lent și în browser web Poate dura chiar câteva minute pentru a se deschide. Acest lucru este valabil și pentru lista de mesaje. Pentru un experiment, afișați 1000 de mesaje și încercați să comutați între ferestre. Sistemul va muri imediat. Mai mult decât atât, este clar vizibil modul în care sistemul se gândește la ieșirea mesajelor. Accesul la o fereastră cu o grămadă de mesaje arată astfel:

Conținutul ferestrei este afișat
-care pâlpâie puternic și apare bara de mesaje
-totul se blochează și vezi cum scroll-ul din fereastra de mesaj se strecoară în jos

Acestea. Ca și înainte, este imposibil să afișați un jurnal de procesare pe termen lung în panoul de mesaje, care conține câteva mii de înregistrări. Aș recomanda să vă limitați la 10 mesaje. Jurnalele trebuie să fie scoase pe o linie cu mai multe linii; acestea sunt afișate aproape instantaneu, indiferent de numărul de linii. Desigur, dacă verificați caracterul complet al detaliilor părții tabelare, există 1000 de rânduri în ea și există o eroare în fiecare, atunci da, va trebui să așteptați :) Deși în acest caz vă puteți gândi la dvs. propriul mod de afișare a mesajelor, de exemplu într-un câmp de document HTML.