În versiunea platformei 8.3.5.1068 (și mai târziu), a devenit posibilă adăugarea, modificarea și ștergerea datelor din surse externe software 1C. Exemple ale acestei caracteristici sunt prezentate în acest articol.

Pentru a face posibilă înregistrarea către surse externe, compania 1C a adăugat noi proprietăți la tabelele de date și câmpurile surselor externe:

  • Pentru întregul tabel - proprietate Numai citire. ReadOnly = Adevăratînseamnă că modificarea datelor din acest tabel este imposibilă;
  • Pentru câmpuri individuale de tabel - proprietăți Numai citire, AllowNullŞi Valoarea de umplere:
    • ReadOnly = Adevăratînseamnă că modificarea datelor în acest domeniu este imposibilă;
    • AllowNull = Adevăratînseamnă că o valoare poate fi scrisă în acest câmp NUL;
    • Valoarea de umplere conține valoarea implicită a acestui câmp (dacă există una).

Dvs. (când descrieți tabelele manual) sau platforma (când creați tabele folosind un designer) puteți utiliza aceste proprietăți după cum urmează.

  • ReadOnly = Adevărat setați, de exemplu, pentru vederi, tabele obținute pe baza unei expresii (rezultatul funcției) și altele asemenea. Datele din astfel de tabele nu pot fi modificate;
  • ReadOnly = Adevărat specificați pentru câmpurile care sunt setate automat ( AUTOINCREMENTARE), câmpuri calculate și altele asemenea. Datele din astfel de câmpuri nu pot fi modificate;
  • AllowNull = Adevărat setat pentru toate câmpurile, cu excepția câmpurilor cheie și a celor care sunt descrise într-o sursă externă ca NU NUL;
  • Valoarea de umplere câmpurile sunt setate în cazul în care sursa externă specifică valoarea standard a acestui câmp (valoare IMPLICIT).

Puteți adăuga, modifica și șterge date din surse externe folosind limbajul încorporat sau interactiv. Limbajul încorporat utilizează următoarele metode de gestionare a tabelelor pentru aceasta:

  • CreateRecordSet()- pentru tabele non-obiect;
  • Metodă nouă CreateObject()- pentru tabelele cu obiecte.

În consecință, obiectele ExternalDataSourceTableRecordSetŞi ExternalDataSourceTableObject au apărut noi metode Scrie()Şi Şterge().

Adăugarea datelor

Când adăugați date la o sursă externă, creați un obiect (sau set de înregistrări), setați valorile câmpului și scrieți. Cu toate acestea, există câteva caracteristici care sunt utile de știut.

De exemplu, dacă încercați să setați valoarea unui câmp care are ReadOnly = Adevărat, va fi aruncată o eroare. Și când scrieți direct în baza de date în expresie INTRODUCE astfel de câmpuri vor fi sărite. Câmpurile rămase conțin valorile pe care le-ați atribuit. Prin urmare, valorile Nul iar valorile implicite trebuie atribuite câmpurilor în mod explicit.

  • id(AllowNull = Adevărat);
  • nume(AllowNull = Adevărat);
mFeature = ExternalDataSources.TableIm.shop_feature.CreateObject();

mCharacteristic.id = Cod; Scrie() mCharacteristic.name = Nume; mCaracteristic.Scrie(); Executarea declarației INTRODUCE va face ca handlerul de evenimente să fie apelat mai întâi Înainte de Înregistrare.

, apoi se efectuează o scriere fizică în tabelul sursă extern ( INTRODUCE), atunci va fi apelat handlerul de evenimente Când se înregistrează Puteți face următoarele cu câmpul cheie al tabelului sursă externă. Dacă un câmp cheie este modificabil, atunci îi setați „manual” valoarea înainte de a scrie. Dacă schimbarea câmpului de cheie este interzisă, platforma va primi în mod independent cheia mCaracteristic.Scrie(); sau imediat după. Puteți interfera cu acest proces folosind metoda Înainte de Înregistrare).

SetLinkNew()

înainte de înregistrarea fizică (în handlerul de evenimente ) sau imediat după înregistrarea fizică (în handlerul de evenimente.

Schimbarea datelor

Când datele se modifică, valorile tuturor câmpurilor de tabel care au ReadOnly = FalsŞi MFeature = ExternalDataSources.TableIm.shop_feature.FindByField("id",code); mObject = mCaracteristic.GetObject(); mObject.name = Nume; mObject.Write();.

Dacă trebuie să înregistrați doar unele câmpuri, puteți specifica o listă a acestora direct din limba încorporată folosind metodele

SetWritableFields() GetWrittenFields().

Ștergerea datelor

Ștergerea datelor șterge direct un rând dintr-un tabel al bazei de date. În acest caz, căutarea referințelor la obiectul care este șters nu este efectuată. Dacă este nevoie de o astfel de funcționalitate, o puteți programa singur în handlerul de evenimente

Înainte de ștergere() MFeature = ExternalDataSources.TableIm.shop_feature.FindByField("id",Code); mObject = mCaracteristic.GetObject(); mObject.Delete();:

  • Tranzacții;
  • Citirea datelor din surse externe, ca și înainte, se realizează în afara unei tranzacții, iar la scriere, platforma deschide o tranzacție implicită. În același timp, puteți efectua atât citirea, cât și scrierea în tranzacții explicite folosind metode obiect;
  • ExternalDataSourceManager.

StartTransaction()

  • CommitTransaction();
  • Anulează tranzacția();
  • Încuietori.

Auto Gestionat:

În plus, puteți seta independent nivelul de blocare în metodă Tranzacții.

Am adăugat exemple la articolul standard) Dacă am mai mult timp, voi adăuga mai multe exemple.

În versiunea 8 a programului 1C, dezvoltatorii au adăugat la funcționalitate posibilitatea de a conecta baze de date terțe și de a obține informații de la acestea direct din configurator, fără a utiliza conexiuni COMși obiecte OLE. Această caracteristică este implementată folosind un obiect nou - „Surse de date externe”

Sursele de date externe din 1C pot fi utilizate în același mod ca și alte tabele din sistem:

  1. Când se creează rapoarte și calcule folosind un sistem de compoziție a datelor (DCS);
  2. Pentru a obține link-uri către informații stocate în surse terțe;
  3. Pentru a modifica datele stocate în tabele;
  4. La generarea cererilor.

Este important de știut că acest mecanism nu este conceput să funcționeze cu alte baze de date 1C, deoarece modelul de operare 1C.Enterprise în sine nu implică interferarea cu datele la nivelul tabelelor fizice.

Crearea unei noi surse

Adăugarea unei noi surse externe la program are loc în modul „Configurator”. Există o ramură corespunzătoare în arborele de configurare (Fig. 1)

Va trebui să munciți din greu atunci când creați o nouă sursă, în ciuda faptului că forma noului obiect are doar patru file:

  1. De bază;
  2. Date;
  3. Funcții;
  4. Drepturi.

Prima filă are un singur parametru interesant - modul de control al blocării. Dacă nu aveți întrebări despre blocarea datelor în tranzacții sau despre complexitatea paralelizării fluxurilor de informații, puteți lăsa acest parametru în modul blocare automată. Cu toate acestea, o astfel de abordare poate duce la restricții excesive (de exemplu, atunci când, în loc de o înregistrare separată, programul blochează întregul tabel fizic, privând alți utilizatori de capacitatea de a lucra cu acesta).

Încuietori gestionate, spre deosebire de cele automate, ele folosesc un mecanism de tranzacție încorporat în programul propriu-zis, și nu în SGBD, care permite transferarea captărilor de tabel la un nivel mult mai scăzut.

Setând acest parametru la „Automat și gestionat”, oferim sistemului abilitatea de a determina ce mod să folosească accesând direct o proprietate similară pentru fiecare tabel specific.

Fila „Date” din formularul proprietăților sursei externe

Forma filei „Date” este prezentată în Fig. 2

Orez. 2

Aici putem adăuga tabele și cuburi surse externe. Există două moduri de a adăuga un tabel:

  1. Manual, apoi formularul pentru adăugarea unui tabel se va deschide în fața noastră (Fig. 3);

Orez. 3

  1. Sau selectați din lista tabelelor sursă fizice (Fig. 4), caz în care un constructor special se deschide în fața noastră.

Orez. 4

Să aruncăm o privire mai atentă la formularul pentru adăugarea unui tabel. Proprietatea „Nume” este utilizată pentru a identifica unic un obiect din configurație.

Compararea obiectului de metadate și a tabelului fizic final are loc prin proprietatea „Nume în sursa de date” aflată în fila „Avansat” (Fig. 5)

Orez. 5

În continuare trebuie să stabilim tipul mesei, sau mai degrabă obiectivitatea acestuia. Dacă datele stocate într-o structură pot fi identificate în mod unic prin orice câmp, tabelul poate fi unul obiect. Dacă individualitatea unei înregistrări este determinată de un set de câmpuri cheie, tabelul trebuie să aibă un tip non-obiect.

Comparând astfel de tabele cu alte obiecte de metadate, se poate da următoarea analogie:

  • Tabelele cu obiecte sunt cărți de referință;
  • Cele non-obiecte sunt registre de informații.

Setul de câmpuri cheie este definit în următorul parametru de formular („Câmpuri cheie”). Acest câmp este obligatoriu dacă îl lăsați necompletat, salvarea configurației va eșua.

După cum se poate observa din Fig. 5, unele câmpuri și butoane ale formularului nu sunt editabile:

  • Exprimarea în sursa de date;
  • Tipul de date din tabel;
  • Câmp de prezentare;
  • Vizualizați handlere.

Ele pot fi folosite numai după ce completăm câmpurile din tabel, definim tipul lor și atribuim identificatori (Fig. 6)

Orez. 6

Aici ar trebui să acordați atenție parametrului „Allow Null” dacă această casetă de selectare este bifată, nu este recomandabil să utilizați un astfel de câmp ca cheie.

Constructor de mese

Poate cel mai important și interesant punct în lucrul cu surse externe este crearea unui șir de conexiune. Constructorul său se deschide dacă faceți clic pe butonul cu trei puncte de lângă parametrul „Șir de conexiune”.

În primul rând, ni se va cere să decidem asupra driverului care va fi folosit pentru conectare (Fig. 7)

Orez. 7

Definirea incorectă a acestui parametru nu vă va permite să vă conectați la o terță parte baza de informatii. De asemenea, ar trebui să înțelegeți că nu toate driverele specificate în lista derulantă pot fi folosite pentru a genera automat un șir de conexiune. Dacă platforma generează o eroare (Fig. 8), atunci șirul de conexiune va trebui introdus manual.

Fig.8

Orez. 9

Linia în sine este o construcție strict reglementată.

Exemplu de șir de conexiune

Să luăm în considerare o bază de date terță parte creată în Microsoft Access și situată în rădăcina unității D. Pentru a conecta această bază de date, trebuie să folosim driverul corespunzător, dar selectând-o în constructorul de rânduri rezultă eroarea Fig. 8.

Vom configura singuri parametrii de conectare.

Driver=(Microsoft Access Driver (*.mdb)) – așa arată prima parte a liniei. În bretele am definit șoferul.

Pentru fișierele Excel va arăta ca ( Microsoft Excel Driver (*.xls)), pentru fișierele Excel create într-un birou mai vechi de 2003, linia de driver va arăta ca (Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)).

Separând acest parametru de următorul prin virgulă, trebuie să introducem adresa stocării noastre (în cazul nostru DBQ=D:\Database1.mdb).

Adăugând acești doi parametri, obținem Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb Prin scrierea acestui parametru, obținem acces la structurile interne ale acestei baze de date.

Pentru obiectul „Sursă externă”, nu este suficient doar să îl creați în configurație, trebuie să fie conectat și în modul „Enterprise”. Acest lucru se poate face din meniul „Toate funcțiile”->Surse externe. Când intrăm prima dată în tabelul nostru, trebuie să introducem același șir de conexiune în modul „Enterprise”.

Lucrați cu ei în liste în modul 1C Enterprise.

Cu toate acestea, în muncă există adesea o situație în care o parte din date este stocată în altă parte.

  • Magazin online (de obicei stochează date într-o bază de date MySQL/SQL externă)
  • O altă bază.

Pentru a lucra cu astfel de date stocate în alte baze de date, este necesar să se dezvolte mecanisme speciale.

În versiunea 1C 8.2.14, a apărut una nouă numită 1C External Data Sources, care facilitează foarte mult munca programatorului, deoarece:

  • acum nu mai este nevoie să se creeze mecanisme speciale pentru obținerea datelor
  • astfel de date pot fi accesate în mod obișnuit
  • astfel de date pot fi vizualizate în liste 1C.
    • Sursă de date externă 1C – bază de date SQL externă

      Să presupunem că avem o bază de date SQL în care sunt stocate datele de care avem nevoie. Să încercăm să citim datele din acesta folosind mecanismul 1C External Data Source.

      Să adăugăm o sursă de date 1C externă. Trebuie să mergeți la configurator, sursele de date externe sunt situate în fereastra de configurare, în partea de jos a arborelui.

      1. Conexiune

      Să adăugăm o nouă sursă externă de date 1C, denumim-o în mod arbitrar.

      Baza de date este formată din tabele. Trebuie să le adăugăm în sursa externă de date adăugată. Faceți clic pe el clic dreapta mouse-ul și selectați Adăugare tabel.

      Prima dată, vă va solicita să furnizați un șir de conexiune. Poate fi introdus manual sau generat făcând clic pe butonul „…”.

      În cazul nostru specific, vom selecta „SQL Server” ca driver

      Să completăm parametrii de bază pentru conectarea la SQL. Numele serverului poate fi introdus sau selectat din listă.

      1C se va conecta la SQL și se va oferi să selecteze o anumită bază de date din listă.

      După aceasta, 1C va afișa o listă de tabele din această bază de date și coloanele acestora. Trebuie să bifați casetele pentru a selecta tabelele necesare.

      Vor fi adăugate tabele și coloane. Numele vor fi aceleași cu cele definite în baza de date la distanță. În 1C le puteți redenumi (în proprietăți).

      Iată un exemplu de tabel adăugat:

      Iată un exemplu de coloană adăugată:

      Pentru ca platforma 1C să funcționeze cu un tabel extern în același mod ca și cu directoarele 1C, puteți specifica parametri suplimentari în tabel:

      • În proprietatea Câmp cheie, specificați una dintre coloanele care va furniza o identificare unică a rândului; dacă unicitatea este asigurată de mai multe rânduri, atunci această metodă nu funcționează (analog cu câmpul Cod)
      • În proprietatea Câmp de prezentare, specificați una dintre coloanele care va oferi o scurtă reprezentare a liniei (analog câmpului Nume)
      • În proprietatea tip de date din tabel, specificați Date obiect.

      2. Vizualizare

      Conexiunea la baza de la distanță nu se face automat. Pentru a vă conecta, trebuie să selectați un meniu standard.

      În filiala Standard se află echipa speciala Gestionarea surselor de date externe, care vă permite să specificați parametrii de conectare (specifici modului 1C Enterprise) și să realizați o conexiune.

      Mai întâi trebuie să specificați parametrii pentru conectarea la baza de date.

      Când ai făcut setările în configurator, ți-a arătat șirul de conexiune ca rezultat. Îl puteți vedea din nou făcând clic din nou pe Adăugare tabel în configurator.

      Copiați șirul de conexiune și specificați-l în modul 1C Enterprise.

      După aceasta, trebuie să faceți conexiunea reală.

      După realizarea conexiunii, este posibil să lucrați cu liste.

      3. Utilizare în limbajul 1C

      Conexiunea se poate face și din codul programului în limbajul 1C.

      Parametrii de conectare sunt specificați după cum urmează:
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetGeneralConnectionParameters();

      ConnectionParameters.AuthenticationStandard = Adevărat;
      ConnectionParameters.UserName = "sa";
      ConnectionParameters.Password = "parolă";
      ConnectionParameters.ConnectionString = „șir de conexiune din configurator”;
      ConnectionParameters.DBMS = "MSSQLServer";

      ExternalDataSources.SourceNameConfigurator.SetGeneralConnectionParameters(ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters(UserName(), Parameters);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters(Parameters);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      Puteți interoga date dintr-o bază de date folosind un . Un exemplu de text de interogare pentru o sursă externă OurExternalSource și tabelele ExternalSource Table:

      ALEGE
      ExternalSourceTable.FieldName
      DIN
      ExternalDataSource.OurExternalSource.Table.ExternalSourceTable"

      Sursă de date externă 1C - lucrul cu fișierul Excel

      Să încercăm o altă opțiune - lucrul cu un fișier Excel printr-o sursă de date 1C externă.

      Să creăm un fișier Excel simplu.

      Să adăugăm o sursă externă, numim-o în mod arbitrar FileExcel. Să adăugăm tabelul „Sheet1$” la acesta. După cum puteți vedea cu ușurință, acesta este numele foii în Excel cu adăugarea simbolului „$”.

      Ca și în cazul SQL, să adăugăm coloane. Ele pot fi adăugate manual. Este important să vă asigurați că tipurile de coloane pe care le adăugați se potrivesc, altfel s-ar putea să primiți ulterior o eroare precum „Nepotrivire tip de date”.

      Pentru coloană trebuie să specificați un nume în 1C și un nume în sursa de date.

      Există o caracteristică pentru Excel (eroare precum „Prea puțini parametri. Sunt necesari 3”):

      • Dacă în prima linie tabele Excel numele coloanelor sunt localizate, trebuie doar să indicați numele acestei coloane, de exemplu „Cod”.
      • În caz contrar, trebuie să specificați numele complet cu numele tabelului „Sheet1$.Code”, dar adăugați „HDR=NO;” în parametri.

      Parametrii de conectare pt Fișier Excel arata asa:

      • Fișiere XLSX ( Versiunea Office 2007 și mai sus)
        Driver=(Driver Microsoft Excel (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;
      • Fișiere XLS (anterior)
        Driver=(Driver Microsoft Excel (*.xls)); DriverID=790; DBQ=D:\FileExcel.xls;
        Trebuie să specificați propriul nume și calea către fișier.

Surse de date externe 1C - un obiect de metadate relativ nou 1C 8.3 și 8.2, cu care este posibilă conectarea la surse de date externe 1C: tabele SQL, Excel, Access, FoxPro (dbf), o altă bază de date 1C, Oracle, Paradox (db) , - și chiar citind din fișiere simple txt/csv.

Acest lucru oferă multe posibilități cu alte sisteme. Să aruncăm o privire mai atentă.

Configurarea surselor de date externe în 1C 8

Configurarea surselor externe este individuală pentru fiecare tip de sistem. Dar, de regulă, partea generală a configurației este aceeași - aceasta este setarea șirului de conexiune:

Obțineți 267 de lecții video pe 1C gratuit:

Dacă șirul de conexiune este specificat corect, sistemul vă va solicita să selectați tabelul dorit din baza de date. Ca urmare, vom obține un tabel gata făcut în care putem specifica câmpul cheie (un câmp unic) și câmpul de prezentare (cum se va reflecta înregistrarea în 1C):

Utilizarea surselor de date externe în 1C 8.3

Sursele de date externe în 1C pot fi utilizate ca și alte tabele de baze de date. Platforma generează automat un formular pentru ei dacă nu este specificat unul. De asemenea, este posibil să utilizați date din surse externe în interogări.

De ce este această oportunitate atât de interesantă? Orice persoană care a programat în 1C este destul de familiarizată cu SQL și este cel puțin în general familiarizată cu arhitectura și principiile de dezvoltare ale altor platforme tehnologice pentru aplicații de afaceri vă va spune cu fermitate ce îi place cel mai mult la 1C. Desigur, generatorul de interogări este cel mai convenabil și mai atent mecanism pentru scrierea de interogări pentru preluarea datelor din structuri relaționale pe care le-am întâlnit personal vreodată. Și acum 1C ne-a oferit o oportunitate atât de minunată de a-l folosi nu numai cu 1C, ci și cu orice alte mese. Doar că acest „butoi de miere” are o mulțime de „muște în unguent”. Primele lucruri în primul rând:

1) Configurare și utilizare- fără „dans cu tamburin” nu va funcționa
a) Adăugați o sursă externă de date - nu pare complicat
b) bifați caseta de selectare „Selectați din listă” - acest lucru este necesar - acest lucru este necesar pentru a verifica funcționalitatea la început și vă va salva de probleme inutile
c) - asigurați-vă că faceți clic pe „...” - conexiunea este ODBC. Nu OLEDB cum suntem toți obișnuiți, ci cu un nivel mai jos

D) Dar aici fiți FOARTE ATENȚI.

Acesta este un driver ODBC - dacă utilizați versiunea client-server, acesta trebuie să fie pe server. Dacă dezvoltați pe un sistem și lucrați pe altul (cum este de obicei cazul), asigurați-vă că nu vă așteaptă nicio surpriză. O recomandare ciudată, dar alegeți cel mai vechi sau cel mai obișnuit driver dacă nu vă preocupă în mod deosebit viteza și nu intenționați să depășiți capacitățile standardului SQL92. Acest lucru vă va oferi o compatibilitate mai bună. De exemplu, pentru SQL Server 2008 cel mai bun sofer va exista SQL Server Native Client 11, dar recomand să alegeți doar SQL Server, altfel acest client foarte nativ va trebui instalat fie pe server, fie pe toate mașinile client (dacă se folosește versiunea de fișier), și nu va da prea mult beneficii pentru sarcini simple.
e) Casete de dialog pentru selectarea serverului standard

E) Vă recomand să răspundeți „da” la întrebarea despre salvarea parolei, altfel nu veți putea începe această afacere.
g) Selectați tabelul și detaliile... o oportunitate minunată - îl puteți redenumi imediat după bunul plac (și detaliile de asemenea), iar în proprietăți veți vedea numele câmpurilor sursei de date

Z) Acum îl lansați, deschideți designerul de interogări - selectați prostește toate înregistrările din tabel și OPA - o eroare. Ce să fac? Dacă aveți o interfață gestionată, uitați-vă la meniul de service, iar dacă una obișnuită...
Eu personal am folosit acest cod:
Cod 1C v 8.x Parametri = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = Adevărat;
Parameters.UserName = "sa";
Parametri.Parola = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=database";
Parameters.DBMS = "MSSQLServer";

ExternalDataSources.DAX.SetCommonConnectionParameters(Parameters);
ExternalDataSources.DAX.SetUserConnectionParameters(UserName(), Parameters);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();
Este posibil ca unele piese să nu fie necesare, dar funcționează.
Trebuie să rulați codul O dată. După care va fi normal să ne conectăm... misticism desigur - de ce a fost necesar acest lucru nu este clar...

2) Surse de date numai pentru citire- Da, miracolele nu se întâmplă... dar uneori vrei...

3) NU POT FI UTILIZATE ÎMPREUNĂ CU SURSE INTERNE DE DATE
Personal, acest fapt m-a ucis pe loc.

Cum poate fi asta... ceea ce așteptam și deja ne-am imaginat și ne-am lins buzele despre cum ne vom combina acum datele cu 1C într-o singură solicitare, îl vom restrânge - grupați-l, inserați-l în raport, dar nu este cazul ...
Dar, desigur, acest lucru nu îi oprește pe oamenii experimentați... ce gând mi-a venit în minte? Așa este - tabele temporare:

4) NU POT FI UTILIZATE IMPREUNA CU TABELE TEMPORARE

Dar asta nu mai arată ca dificultăți tehnologice, ci seamănă foarte mult cu ceea ce vor ei să facem „pentru ca viața să nu pară paradis” :).

5) Poate fi utilizat numai în conexiuni ACS
Pentru cei care nu știu, acesta se află în ACS în fila „Linkuri seturi de date”. Le folosesti des? Confortabil? Se pare că vor să ne oblige să le folosim mai des. Numai că există o coloană „Condiție de comunicare” și „Parametru de comunicare”. Nu am găsit un exemplu de utilizare a acestora în nicio configurație standard și, cumva, totul nu este transparent nici în documentație, nici în munca lui Khrustaleva. Poate cineva să-mi explice cum funcționează „condiția de conectare”. Dacă scrieți Atribute sursă = Atribute receptor acolo, nu funcționează. Desigur, condiția poate fi scrisă în câmpul „Expresie” - în cele mai multe cazuri este suficient... dar cumva nu funcționează foarte ușor.

În total, această problemă a fost rezolvată anterior undeva astfel:
Cod 1C v 8.x Funcția InitializeDataSource()

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
Dacă DataCon > „20100101” Atunci
DataCon = "20100101";
endIf;

CN = New QualifiersNumbers(15,2);
KS = NewStringQualifiers(255);

ArrayNumber = New Array();
ArrayNumber.Add(Type("Number");

ArrayString = New Array();
ArrayString.Add(Type(„String”));

ArrayData = New Array();
ArrayDate.Add(Type ("Data"));

//Vom completa costul contabil în tabel
TypeNumber = New DescriptionTypes(ArrayNumber, CN);
TypeString = New TypeDescription(ArrayString, KS);
TypeDate = New TypeDescription(ArrayDate);

//tabel pentru încărcarea datelor din SQL
TZ = New ValueTable();
TK.Columns.Add("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add(„Perioada”, DataType);

TK.Indici.Add(„Perioada”);

//Conectează-te la SQL
Șir de conexiune = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Pwd=;Data Source=;Utilizați procedura pentru Pregătire=1;Auto Translate=True;Packet Size=4096;Workstation ID=;Use Criptare pentru date=False;Etichetă cu colaţionarea coloanelor atunci când este posibil=Fals;Catalog iniţial=Rapoarte";
Conexiune = New COMObject("ADODB.Connection");
Comanda = New COMObject("ADODB.Command");
RecordSet = New COMObject("ADODB.RecordSet");
Data = "";
Încercare
Connection.Open(AbbrLP(ConnectionString));
Command.ActiveConnection = Conexiune;
Command.CommandText = "S_elect * din PH unde perioada >= "" + String(Format(Data de început, "DF=aaaaMMzz"))) + "" și punct<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Excepţie
Returnarea specificațiilor tehnice;
EndTempt;

În timp ce RecordSet.EOF = Buclă falsă
Linie = TZ.Add();
Row.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Value;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value;
Row.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Value;
RecordSet.MoveNext();
EndCycle;

Solicitare = Solicitare nouă();
VrTable = New TemporaryTableManager();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter("Data de începere", Data de începere);
Request.SetParameter("DataCon", DateCon);
Query.Text = „SELECT
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Plasați DataTable
|DIN
| &vDataTable AS vrDataTable
|UNDE
| vrDataTable.Period >= &StartDate
| Și vrDataTable.Period<= &ДатаКон";
Request.Run();
TZ = nedefinit;

Solicitare = Solicitare nouă;
Query.TemporaryTableManager = VrTable;
Query.Text = "Iată o interogare care implică un tabel variabil";

Rezultat = Query.Run();
Rezultat returnat;

EndFunction

ExternalSet = InitializeDataSource();
DataSet = Structură nouă();
DataSet.Insert ("Tabel SQL", ExternalSet);
TypicalReports.GenerateTypicalReport(ThisObject, Result, Decryption Data, OutputToReportForm, DataSet);

De fapt, nu există multe linii de cod și sunt destul de standard... în acest caz, puteți utiliza întreaga funcționalitate a designerului de interogări și puteți oferi doar funcția DATA COMPOSITION la ACS

Dar, desigur, nu arată la fel de frumos... și de fiecare dată trebuie să scrieți cod pentru a încărca valori într-un tabel și a verifica dacă ați greșit în numele detaliilor... și ce ni s-a dat în 1C arată cumva cu jumătate de inimă. Încă nu m-am hotărât care este mai convenabil de utilizat. Tu decizi și scrie despre deciziile tale și despre ce te-a determinat să le faci.

Informatii preluate de pe site