LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam

In questo articolo vogliamo discutere con voi di tutto 1c funzioni del linguaggio di interrogazione, così come costrutti del linguaggio di query... Qual è la differenza tra una funzione e una costruzione? La funzione viene chiamata con parentesi e possibili parametri al loro interno e la costruzione viene scritta senza parentesi. Indubbiamente tutte le costruzioni e le funzioni del linguaggio di query 1c rendere flessibile e multifunzionale il processo di acquisizione dati. Queste funzioni e costrutti sono applicabili ai campi di query e alcuni sono applicabili anche nelle condizioni.

1c funzioni del linguaggio di interrogazione

Dal momento che la chiara descrizione 1c funzioni del linguaggio di interrogazioneè molto meno comune della descrizione delle strutture, abbiamo deciso di iniziare a guardare esattamente le funzioni. Ora diamo un'occhiata a ciascuno separatamente, descrivendone lo scopo, la sintassi e l'esempio di utilizzo, quindi:

1. Funzione APPUNTAMENTO - questa funzione crea un campo costante di tipo "Data".

Sintassi: APPUNTAMENTO(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Esempio di utilizzo:

2. Funzione DIFFERENZA- restituisce la differenza tra due date in una delle dimensioni (anno, mese, giorno, ora, minuto, secondo). La misura viene passata in un parametro.

Sintassi: DIFFERENZA (<Дата1>, <Дата2>, <Тип>)

Esempio di utilizzo:

Query.Text = "SELECT | DIFFERENCE OF DATE (DATE TIME (2015, 4, 17), DATE TIME (2015, 2, 1), DAY) | AS Numero di giorni";

3. Funzione VALORE- imposta un campo costante con un record predefinito dal database, puoi anche ottenere un collegamento vuoto di qualsiasi tipo.

Sintassi: VALORE (<Имя>)

Esempio di utilizzo:

Request.Text = "SELEZIONA // elemento predefinito| VALUE (Directory.Currencies.Dollar) AS Dollar, // link vuoto | VALUE (Document.Incoming of GoodsServices.EmptyLink) AS Receipt, // value. trasferimenti | VALORE (Enumerazione.Persona giuridica.Fisica.Persona fisica) AS Individuo, // conto predefinito | VALORE (Piano dei Conti. Autoportante. Materiali) AS Conto_10";

4. SELEZIONA funzione- prima di noi c'è un analogo della costruzione IF utilizzata nel codice, solo questa viene utilizzata nelle richieste 1C.

Sintassi: SELEZIONA QUANDO<Выражение>POI<Выражение>ALTRIMENTI<Выражение>LA FINE

Esempio di utilizzo:

Request.Text = // se l'importo è superiore a 7500, dovrebbe esserci uno sconto di 300 rubli, // quindi se la condizione viene attivata, la funzione // restituisce l'importo - 300 // altrimenti, la richiesta verrà semplicemente restituire l'importo "SELECT | SELECT | WHEN TCH Receipts. Importo > 7500 | THEN PM Receipts. Importo - 300 | ELSE PM Receipts. Importo | END AS AmountScounted | FROM | Document. Receipt of GoodsServices. Goods AS PM Receipts ";

5. Funzione EXPRESS- permette di esprimere un campo costante con un tipo specifico.

Sintassi: EXPRESS (FieldName AS TypeName)

Esempio di utilizzo:

Query.Text = "SELECT VARIOUS | Sales.Registrar.Number, | SELECT | WHEN Sales.Registrar LINK Document.Invoice | THEN EXPRESS (Sales.Registrar AS Document.Expense) | ELSE SELECT | WHEN Sales.Registrator LINK. THEN EXPRESS ( Sales.Registrator AS Document.Realization) | END | ... | END AS Number | FROM | Accumulo Registro.Acquisti AS Acquisti";

Esiste anche una variante dell'utilizzo della funzione EXPRESS in campi di tipo misto, dove si trovano? L'esempio più semplice è "Registrar" per qualsiasi registro. Allora perché dovremmo specificare il tipo nel registrar? Consideriamo la situazione quando selezioniamo il campo "Numero" dal registrar, da quale tabella verrà selezionato il numero? Risposta corretta di tutti! Pertanto, affinché la nostra query funzioni rapidamente, è necessario specificare un tipo esplicito utilizzando la funzione EXPRESS

Esempio di utilizzo:

Query.Text = "SELECT | EXPRESS (Nomenclature.Comment AS Line (300)) AS Comment, | EXPRESS (Nomenclature.Sum AS Number (15,2)) AS Sum | FROM | Reference.Nomenclature AS Nomenclature";

6. Funzione ISNULL(ortografia alternativa IS NULL) - se il campo è di tipo NULL, viene sostituito con il secondo parametro della funzione.

Sintassi: È ZERO (<Поле>, <ПодставляемоеЗначение>)

Esempio di utilizzo:

Si noti inoltre che è consigliabile sostituire SEMPRE il tipo NULL con un valore, poiché il confronto con il tipo NULL restituisce sempre FALSE anche se si confronta NULL con NULL. Molto spesso, i valori NULL si formano come risultato dell'unione di tabelle (tutti i tipi di join tranne quelli interni).

Request.Text = // Seleziona l'intero articolo e il saldo su di esso // se non c'è saldo in qualche articolo, allora ci sarà un campo // NULL che sarà sostituito dal valore 0 SELECT | Nom.Ref, | IS NULL (Articoli in Magazzini. Saldo | FROM | Directory.Nomenclatura AS Nomenclatura | LEFT JOIN Registro Accumulo.ProdottiNei Magazzini.Rimane AS ProdottiNei Magazzini

7. Funzione PRESENTE- permette di avere una visione del campo richiesta.

Sintassi: RAPPRESENTAZIONE(<НаименованиеПоля>)

Esempio di utilizzo:

Query.Text = "SELECT | RAPPRESENTAZIONE (Saldi liberi. Saldi. Nomenclatura) AS Nomenclatura, | PRESENTAZIONE (Saldi liberi. Saldi. Magazzino) AS Magazzino, | Saldi gratuiti.

Costruzioni nel linguaggio di interrogazione 1c

Sopra abbiamo considerato con te 1c funzioni del linguaggio di interrogazione, ora è il momento di considerare costruzioni in linguaggio di interrogazione 1c, non sono meno importanti e utili, cominciamo.

1. COSTRUZIONE RIFERIMENTO- rappresenta a operatore logico controlli del tipo di riferimento. Si incontra più spesso durante il controllo di un campo di un tipo complesso per un tipo specifico. Sintassi: COLLEGAMENTO<Имя таблицы>

Esempio di utilizzo:

Request.Text = // se il tipo valore del registrar è un documento Ricezione, // allora la richiesta restituirà "Ricevuta merce", altrimenti "Vendita merce" "SELECT | SELECT | WHEN Balances. Registrar LINK Document. "" Consumi "" | FINE AS Tipo di Movimento | DA | Registro Accumulo. Saldi Merci nei Magazzini AS Saldi ";

2. Costruzione TRA - questo operatore controlla se un valore rientra nell'intervallo specificato.

Sintassi: TRA<Выражение>E<Выражение>

Esempio di utilizzo:

Request.Text = // ottiene tutta la nomenclatura il cui codice è compreso nell'intervallo da 1 a 100 "SELECT | Nomenclature.Ref | FROM | Directory.Nomenclature AS Nomenclature | WHERE | Nomenclature.Code BETWEEN 1 AND 100";

3. Costruzione B e B GERARCHIA- verificare se il valore è nella lista trasmessa (matrici, tabelle di valori, ecc. possono essere passate come lista). L'operatore IN GERARCHIA permette di visualizzare la gerarchia (esempio di utilizzo del Piano dei Conti).

Sintassi: V(<СписокЗначений>), NELLA GERARCHIA (<СписокЗначений>)

Esempio di utilizzo:

Request.Text = // seleziona tutti i subaccount dell'account "SELECT | Self-supporting.Link AS account | FROM | Plan of accounts. Self-supporting AS Self-supporting | DOVE | Self-supporting. Riferimento IN GERARCHIA VALORE (Piano di conti. Autoportanti.Merci)";

4. Costruzione LIKE- questa funzione ci permette di confrontare una stringa con uno schema di stringa.

Sintassi: PIACE "<ТекстШаблона>"

Opzioni del modello di stringa:

% è una sequenza contenente un numero qualsiasi di caratteri arbitrari.

Un carattere arbitrario.

[...] - qualsiasi singolo carattere o una sequenza di caratteri elencati tra parentesi quadre. Gli intervalli possono essere specificati nell'enumerazione, ad esempio a-z, che denotano un carattere arbitrario incluso nell'intervallo, comprese le estremità dell'intervallo.

[^ ...] - qualsiasi singolo carattere, o una sequenza di caratteri elencati tra parentesi quadre, ad eccezione di quelli elencati dopo il segno di negazione.

Esempio di utilizzo:

Request.Text = // trova tutta la nomenclatura che contiene la radice TABUR e inizia // con una t minuscola o maiuscola "SELECT | Nomenclature.Ref | FROM | Directory.Nomenclature AS Nomenclature | WHERE | Products. Name LIKE" " [TT ] abur% "" ";

5. Design CONSENTITO- questo operatore permette di selezionare solo quei record dal database a cui il chiamante ha il diritto di leggere. Questi diritti sono configurati a livello di record (RLS).

Sintassi: ALLOWED è scritto dopo la parola chiave SELECT

Esempio di utilizzo:

Request.Text = "SELECT ALLOWED | Contractors.Link | FROM | Directory.Contractors AS Contractors";

6. Costruzione VARIE- consente di selezionare record in cui non sono presenti record ripetuti.

Sintassi: DIFFERENT è scritto dopo la parola chiave SELECT

Esempio di utilizzo:

Request.Text = // seleziona i record per i quali il lettore dispone dei diritti "SELECT DIFFERENT | Contractors.Name | FROM | Directory.Contractors AS Contractors";

Inoltre, Construction VARIOUS può essere utilizzato con l'operatore AUTORIZZATO e altri operatori.

Esempio di utilizzo:

Request.Text = // seleziona diversi record per i quali il lettore ha i diritti "SELEZIONARE ALLOWED DIFFERENT | Contractors. Name | FROM | Directory.Contractors AS Contractors";

7. Costruzione PRIMA- seleziona il numero di record specificato nel parametro dal risultato della query.

Sintassi: FIRST<число>

Esempio di utilizzo:

Request.Text = // seleziona i primi 4 numeri GTE dalla directory "SELEZIONARE I PRIMI 4 | Numeri GTD.Link | FROM | Riferimento.Numeri GTD AS numeri GTD";

8. PROGETTAZIONE PER CAMBIARE- consente di bloccare una tabella, funziona solo nelle transazioni (rilevante solo per i blocchi automatici).

Sintassi: PER CAMBIARE<НаименованиеТаблицы>

Esempio di utilizzo:

Query.Text = "SELECT | Saldi gratuiti. Saldi. Nomenclatura, | Saldi gratuiti. Saldi. Magazzino, | Saldi gratuiti. Saldi. Disponibile

9. Design ORDINA PER- ordina i dati per un campo specifico. Se il campo è un collegamento, quando si imposta il flag ORDINAZIONE AUTOMATICA l'ordinamento verrà eseguito dalla presentazione del collegamento, se il flag è disattivato, i collegamenti vengono ordinati in base alla priorità dell'indirizzo del collegamento in memoria.

Sintassi: ORDINA PER<НаименованиеПоля>ORDINAZIONE AUTOMATICA

Esempio di utilizzo:

Request.Text = "SELEZIONA | Saldi gratuiti

10. Costruzione CARICO DA- utilizzato per raggruppare le stringhe di query per campi specifici. I campi numerici devono essere utilizzati con qualsiasi funzione aggregata.

Sintassi: CARICA DA<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Esempio di utilizzo:

Request.Text = "SELECT | ProductsIn Warehouses. Nomenclature AS Nomenclature, | ProductsIn Warehouses. Warehouse, | AMOUNT (ProductsIn Warehouses. In Stock) AS Stock | FROM | Registro di accumulo.

11. PROGETTAZIONE AVERE- consente di applicare una funzione di aggregazione ad una condizione di selezione dei dati, simile alla costruzione WHERE.

Sintassi: AVENDO<агрегатная функция с условием>

Esempio di utilizzo:

Request.Text = // seleziona i record raggruppati in cui il campo in Stock è maggiore di 3 "SELECT | ProductsIn Warehouses. GoodsIn Warehouses.Nomenclature, | GoodsIn Warehouses.Warehouse | | HAVING | AMOUNT (GoodsIn Warehouses In Stock)> 3";

12. Costruzione INDICE PER- utilizzato per l'indicizzazione del campo di query. Una query indicizzata richiede più tempo per essere completata, ma accelera le ricerche sui campi indicizzati. Può essere utilizzato solo su tavoli virtuali.

Sintassi: INDICE PER<Поле1, ... , ПолеN>

Esempio di utilizzo:

Request.Text = "SELECT | Tz.Name OS, | Tz.Number della cartella, | Tz.codeOS, | Tz.Term, | Tz.Type | POST Data .KodOS ";

13. Edilizia DOVE- consente di imporre una condizione su eventuali campi di selezione. Solo i record che soddisfano la condizione verranno inclusi nel risultato.

Sintassi: DOVE<Условие1 ОператорЛогСоединения УсловиеN>

Esempio di utilizzo:

Request.Text = // seleziona tutti i record per i quali Compensazione rimanente<>0 e // SummaDlyaRaschKompOstatok> 100 "SELECT | KompensatsiyaRPOstatki.Kontragent, | KompensatsiyaRPOstatki.Rebenok, | KompensatsiyaRPOstatki.KompensatsiyaOstatok, | KompensatsiyaRPOstatki.SummaDlyaRaschKompOstatok | PUT DannyeTz | DA | RegistrNakopleniya.KompensatsiyaRP.Ostatki KompensatsiyaRPOstatki COME | DOVE | KompensatsiyaRPOstatki.KompensatsiyaOstatok<>0 | E compensazione per il saldo. AmountForCalculateCompOut saldo> 100 ";

14. RISULTATI COSTRUTTIVI...IN GENERE- viene utilizzato per calcolare i totali, il design specifica i campi in base ai quali verranno calcolati i totali e le funzioni aggregate applicate ai campi totali. Quando si utilizzano i totali per ogni campo dopo la costruzione TOTALE, i dati vengono raggruppati. Esiste un costrutto GENERALE facoltativo e il suo utilizzo fornisce anche un raggruppamento aggiuntivo. Vedrai un esempio del risultato della query di seguito.

Sintassi: RISULTATI<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>IN POI<ОБЩИЕ> <Поле1, ... , ПолеN>

Esempio di utilizzo:

Request.Text = "SELECT | Transazioni.Contratto del contraente.Tipo di accordo AS Tipo di accordo, | Transazioni.Accordo dell'appaltatore AS Accordo, | Transazioni.Appaltatore, | Transazioni.Importo della transazione reciproca. | ON | GENERALE, | Tipo di accordo " ;

Nella figura sono cerchiati i raggruppamenti che si sono formati durante l'esecuzione della query, quello più in alto appartiene alla sezione GENERALE, il secondo al campo ContractorAgreementContractType.

43
NULL - valori mancanti. Da non confondere con nullo! NULL non è un numero, non è uguale a uno spazio, link vuoto, Non definito. NULL è un valore che forma il tipo, ad es. esiste un tipo NULL e un singolo valore di questo tipo. NULLO ... 26
Per formare ed eseguire query su tabelle di database nella piattaforma 1C, viene utilizzato un oggetto speciale del linguaggio di programmazione Query. Questo oggetto viene creato chiamando il costrutto New Request. La richiesta è conveniente... 18
L'articolo contiene tecniche utili quando si lavora con le query 1C v.8.2, nonché informazioni non molto note sul linguaggio di query. non cerco di dare Descrizione completa linguaggio delle interrogazioni, ma voglio soffermarmi solo su... 12
Di fronte a un problema, è stato necessario selezionare tutti i documenti di pagamento e raggrupparli per tipo di documento! Dopo aver esaminato tutti gli alloggi, i servizi comunali e Internet, mi sono reso conto che modo semplice ottenere il tipo di documento nella richiesta no: (ho dovuto ...

L'istruzione LIKE in una query controlla i valori di stringa dalle tabelle per un comportamento simile a un modello.
Si usa come segue: a sinistra di questo operatore viene posizionata la stringa da controllare e il modello viene posizionato a destra.

Dopo il controllo, restituisce True o False, rispettivamente, viene utilizzato attivamente nelle condizioni.
I seguenti simboli di servizio vengono utilizzati per creare un modello:

  • % (percentuale) - una sequenza contenente un numero qualsiasi di caratteri arbitrari
  • _ (trattino basso) - un carattere arbitrario
  • […] (v parentesi quadre uno o più caratteri) - qualsiasi singolo carattere elencato tra parentesi quadre
    Inoltre, oltre a vari caratteri, è possibile utilizzare intervalli, ad esempio a-z (A-z), che indica la presenza di un carattere arbitrario incluso nell'intervallo, comprese le estremità dell'intervallo.
  • [^ ...] (tra parentesi quadre un segno di negazione seguito da uno o più caratteri) - qualsiasi singolo carattere, eccetto quelli elencati dopo il segno di negazione

Il resto dei personaggi viene utilizzato per lo scopo previsto.
Se è necessario trasmettere uno dei suddetti caratteri di servizio come carattere, allora deve essere preceduto da<Спецсимвол>... Me stessa<Спецсимвол>(qualsiasi carattere adatto) è definito nella stessa istruzione dopo la parola chiave SPECIAL CHARACTER.
Ad esempio, il pattern “% ABC [abcg] \ _ abc%” SPECIAL SYMBOL “\” indica una sottostringa costituita da una sequenza di caratteri:
lettere A; lettere B; lettere B; una cifra; una delle lettere a, b, c o d; carattere di sottolineatura; lettere a; lettere b; lettere c.
Inoltre, davanti a questa sequenza può essere posizionato un insieme arbitrario di caratteri.

Procedura Selezionare AccordoContenenteInDescrizioneText (mText)
// Nella richiesta, utilizzeremo un modello del modulo "%" + mText + "%" Request = New Request; Request.SetParameter ("Nome", "%" + Testo + "%"); Request.Text = "SELECT | Accordi.Link, | Accordi.Proprietario | FROM | Directory.Accordi degli appaltatori AS Accordi | | WHERE | Accordi. Nome LIKE & Nome"; Risultato = Query.Esegui (); Selezione = Risultato.Seleziona (); Report ("Contratti contenenti nel nome:" + mText + "hanno i seguenti Appaltatori"); While Selection.Next() Cycle Report ("Controparte:" + Selection.Owner + "; Contract:" + Selection.Ref EndIf; EndProcedure

A volte si verifica una situazione in cui in 1C 8.3 o 8.2 è necessario effettuare una selezione, ad esempio, da una directory di tutti gli elementi che hanno la parola "smalto" nel nome. Oppure seleziona dall'elenco tutti gli appaltatori i cui nomi contengono la parola "Ivan". In generale, controlla un valore di stringa.

Per fare ciò, c'è un operatore nelle query 1C 8.3 e 8.2 - "Simile". Viene utilizzato, rispettivamente, in condizioni:

Ottieni gratuitamente 267 tutorial video 1C:

Come utilizzare i modelli nelle richieste 1C?

Per formare una condizione di selezione, un modello deve essere passato come parametro. Per creare un modello, ci sono i cosiddetti simboli di servizio.

Ad esempio, il carattere "%" consente qualsiasi sequenza di caratteri arbitrari:

Ci sono altri caratteri speciali:

  • % (percentuale) - consente qualsiasi sequenza di caratteri arbitrari;
  • _ (trattino basso) - un carattere qualsiasi;
  • […] - un carattere arbitrario tra quelli elencati all'interno delle parentesi. Oltre a enumerare i caratteri, puoi utilizzare gli intervalli. Esempio: a-o;
  • [^ ...] - lo stesso del precedente, ma viceversa. Il segno "^" significa negazione.

Nonostante tutte le carenze, la ricerca tramite campo di testo è ancora una delle più popolari. Possiamo trovare tipi di dati stringa ovunque: nomi, numeri di conto, indirizzi e altre informazioni possono essere archiviate in questo formato. Per comodità degli sviluppatori, nelle query nel linguaggio 1C integrato viene utilizzato un operatore speciale "LIKE". Questo è uno dei comandi più utilizzati, quindi sarà difficile per un programmatore lavorare senza una conoscenza approfondita della sua sintassi e delle sue capacità.

Utilizzando l'operatore "MI PIACE"

Prima di utilizzare in pratica qualsiasi operatore, è necessario comprenderne chiaramente lo scopo, i luoghi di applicazione e la sintassi. Lo scopo dell'utilizzo di "MI PIACE" in una richiesta 1C è verificare se la condizione presentata sotto forma di modello è soddisfatta. Il valore restituito è tipo booleano- vero o falso, che indica se la condizione specificata è soddisfatta. L'operatore LIKE può essere utilizzato in più punti in una query:

  • Nel blocco delle condizioni indicato parola chiave"DOVE";
  • In costruzione Scelta quando poi altro finisce;
  • Direttamente nei campi di selezione, come risultato del confronto dei campi.

La sintassi del controllo è sempre la stessa ed è composta da 3 collegamenti. A sinistra c'è il valore del testo che viene controllato, quindi l'operatore "MI PIACE" stesso e a destra c'è il modello che viene controllato. Per disegnare modelli in modo rapido e semplice, ci sono simboli speciali che facilitano lo sviluppo:

  1. "%" È una sequenza di qualsiasi carattere di lunghezza arbitraria. Utilizzato per trovare singole parole o numeri in una stringa;
  2. "_" È un singolo carattere. Progettato per indicare la presenza di un carattere;
  3. "[...]" è una sequenza di caratteri per il confronto con un segno in una stringa. Con l'aiuto di tale modello, viene verificata la corrispondenza con uno qualsiasi dei caratteri elencati tra parentesi. Puoi anche specificare un intervallo di numeri o lettere ([a-d],);
  4. "[^ ...]" è l'opposto del modello precedente. Viene verificata la differenza tra il carattere specificato nella stringa e quelli elencati tra parentesi.

Per comprendere e comprendere meglio i principi della creazione di buoni modelli, diamo un'occhiata ad alcuni esempi comuni nella vita degli sviluppatori. Il primo è quando dobbiamo selezionare dal libro di riferimento della nomenclatura tutti gli elementi nei cui nomi si trova la parola "CUTTER". In questo caso, dobbiamo usare LIKE nelle condizioni di richiesta:

SELECT Nomenclatura.Nome AS Nome FROM Directory.Nomenclatura AS Nomenclatura WHERE Nomenclatura.Nome LIKE "% CUTTING%"

Se rimuoviamo entrambi i simboli "%", la query mostrerà la nomenclatura, il cui nome corrisponde completamente a quello specificato tra virgolette. Se lasciamo il modello "CUT%" o "% CUT", il risultato sarà un elenco di elementi, che terminano o iniziano, rispettivamente, con la combinazione di caratteri specificata.


Analizziamo un problema che può confondere i programmatori alle prime armi che non conoscono la sintassi delle query. Diciamo che devi trovare tutta la nomenclatura, nel cui nome c'è un simbolo "%". Soprattutto per i casi in cui è necessario cercare caratteri riservati, esiste un operatore "carattere speciale". Come carattere speciale, puoi usare #, \, /, ~ e altri caratteri, dopodiché qualsiasi carattere riservato denoterà solo un carattere.

SELECT Nomenclatura.Nome AS Nome FROM Directory.Nomenclatura AS Nomenclatura WHERE Nomenclatura.Nome LIKE "% #%" SIMBOLO SPECIALE "#"

Se è necessario utilizzare un parametro nella ricerca, la variabile nella query con il parametro LIKE viene utilizzata utilizzando l'addizione. Ricorda che il parametro deve essere un tipo stringa o devi tradurlo in una stringa nella query. Si tratta di un'operazione piuttosto complicata ed è bene escluderla preventivamente.

SELECT Nomenclatura.Nome AS Nome FROM Directory.Nomenclatura AS Nomenclatura WHERE Nomenclatura.Nome LIKE "%" + & nome + "%"

La funzione LIKE è applicabile in tutte le versioni della piattaforma, a partire dalla 8, e data la sua applicabilità, gli sviluppatori 1C non vorranno cambiarla. Certo, la ricerca testuale dipende sempre dalla precisione dell'inserimento del nome, ma rimane comunque una delle più diffuse. A questo proposito, gli sviluppatori 1C professionisti devono studiare l'uso di LIKE con tutte le sue sfumature.

LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam