Casa / Skype / 1c relazione esterna aggiuntiva. Aggiunta di elaborazione esterna al database. Elaborazione esterna aggiuntiva

1c relazione esterna aggiuntiva. Aggiunta di elaborazione esterna al database. Elaborazione esterna aggiuntiva

Per collegare elaborazioni esterne, report, moduli di stampa per la piattaforma 1C: Enterprise 8.2, è stato sviluppato nuovo standard da eseguire in un'applicazione gestita (standard dal sottosistema della libreria standard 8.2). C'erano "chip" che prima non c'erano, vale a dire:

    Il tipo di lavorazione è stato ampliato: riempimento di un oggetto, creazione di oggetti correlati. Ora nei documenti puoi aggiungere i tuoi pulsanti per compilare l'intero documento, così come i tuoi pulsanti per entrare in base.

    Un'elaborazione può contenere un elenco di più operazioni (comandi) contemporaneamente, ad es. puoi eseguire un'elaborazione, in cui ci saranno più voci di menu contemporaneamente: stampa e bolla di consegna, stampa di una ricevuta di vendita, stampa di un certificato di garanzia. (Nota dell'autore: prima nel vecchio standard, per fare queste cose, dovevi fare tutto in una volta (anche se non era necessario) e non era necessario chiuderlo o disegnare il proprio modulo, che disponeva dei pulsanti necessari per selezionare l'operazione necessaria)

    Puoi inserire sulla base e riempire gli oggetti contemporaneamente in base a più oggetti e non solo a uno

    È possibile pianificare l'esecuzione dei comandi del server (sul server).

    È possibile impostare la modalità su "Sicura" o "Non sicura", ad es. avviare il trattamento tenendo conto della limitazione dei diritti o ignorarli (come in pieno diritto)

    È possibile impostare la modalità di utilizzo: Non utilizzare, eseguire il debug, utilizzare. "Non usare" - non in lavoro, "Debugging" - visibile solo agli amministratori, "Utilizza in lavoro".

    Può includere l'uso in moduli di oggetti e in forma di elenco

    È possibile associare un'elaborazione o un report a tutti gli oggetti contemporaneamente.

    può essere personalizzato accesso veloce a determinati comandi di elaborazione esterni.

    È possibile specificare in quali sezioni dell'interfaccia devono apparire elaborazioni e report aggiuntivi.

Allora, cosa si può collegare alle configurazioni standard?

Dal punto di vista della piattaforma, puoi connettere:

  • trattamento esterno (file con estensione “epf”);
  • rapporti esterni (file con estensione "erf").

Dal punto di vista dell'area applicativa (configurazione), è possibile collegare elaborazioni e segnalazioni esterne con il form *:

  • Elaborazione aggiuntiva
    • Solo elaborazione extra. È possibile personalizzare
  • Rapporto aggiuntivo
    • Solo un rapporto aggiuntivo
  • Riempimento di un oggetto
    • Pulsanti propri per compilare oggetti (documento), in precedenza c'erano solo pulsanti per riempire la parte tabellare.
  • Stampa modulo
    • Stampabile aggiuntiva (viene aggiunto il pulsante "Stampabili aggiuntive")
  • Rapporto
    • Un rapporto allegato agli oggetti (alle directory e ai documenti).
  • Creazione di oggetti collegati
    • Proprio input basato su (nella voce di menu "Input basato su" viene aggiunto il pulsante "Crea oggetti correlati ...")

*sull'esempio della redazione “Direzione di piccola impresa ed. 1,2"

Diamo un'occhiata a come funziona il tutto. Per collegare l'elaborazione e il reporting esterni, esiste uno standard che descrive l'interfaccia per l'interazione con l'elaborazione e il reporting esterni, sono presenti requisiti generali per tutti i tipi e requisiti specifici per ogni tipo di elaborazione o report.

Iniziamo con Requisiti generali per tutti i tipi di elaborazione e reporting. Per creare una connessione elaborazione esterna o un report, è necessario dichiarare nel modulo oggetto la funzione di esportazione InformationOnExternalProcessing(), che dovrebbe riempire la struttura che descrive il comportamento. Un esempio di questa funzione:

Funzione DetailOnExternalProcessing() Esporta
RegistrationData = Nuova struttura;
RegistrationData.Insert("Nome", "Esempio di utilizzo di elaborazione esterna 8.2.");
RegistrationData.Insert("SafeMode", True);
RegistrationData.Insert("Versione", "1.0");

//Elaborazione aggiuntiva
//Rapporto aggiuntivo
//Riempimento dell'oggetto
//Rapporto
//Stampa modulo
//Crea oggetti associati
RegistrationData.Insert("Visualizza", "Elaborazione aggiuntiva");

RegistrationData.Insert("Informazioni", "L'elaborazione avviene secondo il nuovo standard per la connessione dell'elaborazione esterna 8.2. Un esempio di elaborazione ""Hello Word"" ");

//////////// comandi ///////////////////////////////////////////////
tsCommand = Nuova tabella valori;
tzCommand.Columns.Add("Identificatore");
tzCommand.Columns.Add("Visualizza");
tzCommand.Columns.Add("Modificatore");
tzCommand.Columns.Add("ShowNotification");
tzCommands.Columns.Add("Usa");


stringCommand.Identifier = "1";
stringCommands.View = "comando ""Hello Word"" (OpenForm)";

commandstring.Usage = "OpeningForm";

CommandString = tzCommand.Add();
stringCommand.Identifier = "2";
stringCommand.View = "comando ""Hello Word"" (ClientMethodCall)";
stringCommand.ShowAlert = vero;
CommandString.Usage = "MetodoCallClient";

CommandString = tzCommand.Add();
stringCommand.Identifier = "3";
stringCommand.View = "comando ""Hello Word"" (chiamata ServerMethod)";
stringCommand.ShowAlert = vero;
Commandstring.Usage = "MetodoCallServer";

RegistrationData.Insert("Comandi", tzCommands);

///////////// scopo (in quali oggetti viene utilizzato) ////////////////////////
//per stampare moduli, compilare, inserire oggetti correlati
//AssignmentArray = Nuova matrice;
//ArrayAssignments.Add("Documento.*"); // tutti i documenti sono assegnati
//ArrayAssignment.Add("Document.Advance Report");
//Assegnazione array.Add("Documento.Ordine dell'acquirente");
//RegistrationData.Insert("Destinazione", Array di assegnazioni);

Restituire i dati di registrazione;

Funzioni finali

Quindi, come puoi vedere, la funzione riempie la struttura RegistrationData, che ha i seguenti elementi (parametri):

    Nome - nome breve del trattamento

    Versione - informazioni sulla versione di elaborazione

    Modalità sicura– è responsabile se il trattamento debba essere effettuato tenendo conto dei diritti dell'utente. Se impostato su "Falso", il trattamento o la segnalazione verranno eseguiti senza tener conto delle restrizioni dei diritti (come per i diritti pieni). Questa funzionalità è apparsa in 8.2, dove durante la creazione di elaborazioni e report esterni, la modalità è specificata come secondo parametro.

    Visualizza: tipo di elaborazione o rapporto. Ho elencato i possibili valori all'inizio dell'articolo e valori possibili per l'installazione nel codice sono indicati nel commento

  • Comandi: una tabella di valori che elenca i comandi utilizzati. Colonne della tabella dei valori:
    • Identificatore - qualsiasi stringa (identificatore di comando)
    • Visualizza - descrizione del comando
    • Modificatore - stringa (usata per moduli di stampa aggiuntivi)
    • ShowNotification – la finestra di notifica apparirà prima dell'inizio e dopo la fine dell'esecuzione (per i comandi client e server senza modulo)
    • Utilizzo - modalità di avvio dell'elaborazione:
      • Apertura del modulo - si aprirà il modulo di elaborazione
      • CallClientMethod: chiama il modulo del metodo di esportazione del client
      • Chiamata a ServerMethod: chiama un metodo di esportazione da un modulo di elaborazione

A seconda del tipo di elaborazione o segnalazione, oltre che della modalità di avvio del comando “Usa”, vengono richiamati i metodi definiti nel modulo modulo, modulo oggetto. Anche l'elenco dei parametri passati è diverso. Si allegano esempi di chiamate e utilizzo di tutti i tipi di elaborazione.

Prendi in considerazione la creazione di un report esterno in 1s 8 senza utilizzare un sistema di composizione dei dati. Per creare un report esterno utilizzeremo la configurazione Contabilità 2.0, i dati iniziali: “Scrivi un report sul conto contabile 62 in cui verrà visualizzato il fatturato per il periodo specificato nel contesto Controparti e Contratti di controparti.

1. Crea un rapporto

Prima di tutto, creeremo un file di rapporto esterno, per questo andremo a 1s 8 nella modalità Configuratore, vai al menu File -> Nuovo oppure clicca sull'icona nuovo documento.

Seleziona un elemento dall'elenco Rapporto esterno. Dopo aver creato un report esterno, assegnagli un Nome (ad esempio Rapporto più semplice) e salvarlo su disco. Aggiungeremo anche due puntelli: Inizio periodo e FinePeriodo genere l'appuntamento, avremo bisogno di loro per limitare l'intervallo di tempo per il campionamento dei dati durante la generazione di un rapporto.

2. Creare un layout di report esterno

Per generare un report in 1s 8, è necessario un layout, questo è un modello per l'output dei dati in cui sono impostati tutti i parametri necessari, vengono disegnate le tabelle, ecc. Aggiungiamo un nuovo layout, per questo, nell'albero dei metadati del report, seleziona l'elemento Layout e premere il pulsante Aggiungere, durante la creazione, selezionare il tipo per il layout foglio di calcolo.

Il nostro layout avrà 4 aree:

  • Header - in quest'area visualizzeremo il nome del report, il periodo per il quale è stato generato e l'intestazione della tabella;
  • Dati controparte - in quest'area visualizzeremo i dati sulla controparte nella tabella;
  • Dati dell'accordo di controparte - in quest'area verranno visualizzati i dati sull'accordo di controparte nella tabella;
  • Piè di pagina - in quest'area visualizzeremo i valori totali per l'intero report per i campi Entrate e Spese.

Iniziamo a creare aree di layout. Per creare un'area nel layout, selezionare il numero di righe desiderato e fare clic Menu Tabella -> Nomi -> Assegna nome(O CTRL+MAIUSC+N). Alla zona Cappello scrivi il nome del rapporto: Fatturato 62 conti, disegnare con lo strumento frontiere intestazione del report, nonché impostare i parametri Inizio periodo e FinePeriodo. Con l'aiuto dei parametri, è possibile visualizzare i dati necessari nel report, di cui ci occuperemo nella fase successiva di sviluppo, ovvero quando si scrive il codice del programma del report. Per creare un parametro nel layout, seleziona la cella desiderata, scrivi in ​​essa il nome del parametro (senza spazi), fai clic destro su di esso, seleziona la voce nel menu che si apre Proprietà. Nelle proprietà della cella nella scheda Disposizione seleziona riempimento Parametro.

Successivamente, nella cella, il nome del parametro sarà racchiuso tra parentesi angolari ("<>“). Di conseguenza, la zona Cappello dovrebbe assomigliare a questo:

Nell'area di Data Contractor creeremo parametri per visualizzare il nome della controparte, nonché per entrate e spese per il conto 62, utilizzando lo strumento frontiere Progettiamo l'area sotto forma di una riga di tabella.

Nell'area di DataAgreementContractor creeremo parametri per visualizzare il nome del contratto, nonché per entrate e spese per il conto 62, utilizzando lo strumento Borders, disegneremo l'area sotto forma di una riga di tabella. Facciamo un piccolo rientro prima del parametro Accordo di controparte(questo può essere fatto dividendo e unendo le celle. Fare clic con il tasto destro sulla cella -> Unisci o Rompi la cella), è necessario per mostrare nella segnalazione che la riga del contratto è inferiore nella gerarchia rispetto alla riga della controparte.

Nell'area di Seminterrato Creiamo parametri per i totali di incassi e spese.

Di conseguenza, dovremmo ottenere un layout come questo:

3. Creare un modulo di rapporto

Per visualizzare i dati, impostare il periodo di formazione ei pulsanti Modulo il nostro rapporto avrà bisogno di un modulo. Per creare un modulo, trova l'elemento nell'albero dei metadati del report esterno Le forme e premere il pulsante Aggiungere. Nella prima pagina del generatore di moduli, non è necessario apportare modifiche, basta fare clic sul pulsante Ulteriore.

Sul pagina successiva costruttore, seleziona entrambi gli oggetti di scena disponibili ( Inizio periodo, FinePeriodo) per l'inserimento nel modulo.

Di conseguenza, otteniamo questo modulo:

Ma in questa forma non ci si addice, apporteremo alcune modifiche:

  • Pulsante di trascinamento Modulo dal pannello inferiore del report a quello superiore (questo sarà più conveniente per l'utente);
  • Allunga la forma verticalmente e orizzontalmente;
  • Disporre i campi Inizio periodo e FinePeriodo orizzontalmente;
  • Aggiungi un controllo Field al form foglio di calcolo(il nostro rapporto verrà visualizzato in esso), assegnagli un nome TabDoc;
  • Creiamo un pulsante di selezione del periodo (quando viene premuto, verrà visualizzata una finestra di dialogo con una comoda selezione del periodo desiderato). Non scriveremo ancora il codice del programma, quindi posizioneremo semplicemente il pulsante accanto ai campi del periodo.

Di conseguenza, il nostro modulo sarà simile a questo:

4. Programmazione

Dopo aver creato il form di report, iniziamo a programmare. Per cominciare, creiamo una procedura per visualizzare una finestra di dialogo di selezione del periodo (abbiamo già creato un pulsante per questo nella fase precedente). Fare clic con il pulsante destro del mouse e selezionare la voce di menu Proprietà, nelle proprietà del pulsante vai alla scheda Sviluppi, dove utilizzando il pulsante con l'icona della lente di ingrandimento creeremo una procedura Pulsante1Premere nel modulo modulo.

Puoi passare dal modulo al suo modulo utilizzando le schede nella parte inferiore del modulo

Per chiamare il modulo di selezione del periodo, utilizziamo la procedura standard Contabilità 2.0 da modulo comune Lavorare con le finestre di dialogo - HandlerPeriodSettingPressing, è necessario passargli i dettagli del report come parametri Inizio periodo e FinePeriodo.

Procedura Pulsante1Premere(elemento) Lavorare con Dialogs.HandlerSettingPeriodPress(StartPeriod, EndPeriod); EndProcedura

Passiamo ora alla scrittura del codice che genererà e visualizzerà il nostro report. C'è già una procedura nel modulo modulo PulsanteFormPremendo che verrà eseguito quando si fa clic sul pulsante Modulo, quindi scriveremo il nostro codice lì. Iniziamo inizializzando le variabili necessarie. Per prima cosa, creiamo una variabile per campi del foglio di calcolo a cui forniremo i dati, questo non è necessario, solo la registrazione delle chiamate diventerà più breve, il che significa che il codice del programma sarà più comprensibile per la lettura.

TabDoc = FormElements.TabDoc;

Ottieni il layout del report esterno utilizzando la funzione Ottieni Layout(<ИмяМакета>) , passeremo il nome del layout al parametro e, se tale layout esiste, la funzione lo troverà.

Layout = GetLayout("Layout");

Dopo aver ricevuto il layout, creeremo variabili per ciascuna delle sue aree, utilizzeremo il metodo di layout per questo GetRegion(<ИмяОбласти>) .

AreaHat = Layout.GetArea("Cappello"); AreaDataAccount = Layout.GetArea( "Contraente dati"); AreaDataAgreement = Layout.GetArea("DataAgreement"); AreaFooter = Layout.GetArea("Seminterrato");

Cancella il campo del foglio di calcolo. Ciò è necessario affinché ad ogni nuova generazione di report i vecchi dati vengano eliminati.

TabDoc.Cancella();

Ora che l'inizializzazione delle variabili è completata, passiamo al riempimento e alla visualizzazione delle aree di layout una per una. Cominciamo con il cappello. Se ricordi, abbiamo creato due parametri in quest'area Inizio periodo e FinePeriodo, passeremo lì i valori del periodo di generazione del rapporto, per questo utilizzeremo la proprietà Opzioni area di layout.

Header.Parameters.PeriodStart = PeriodStart; AreaHeader.Parameters.EndPeriod = EndPeriod;

Niente più azioni nell'ambito Cappello il produttore non è necessario, quindi visualizzeremo il suo campo in un foglio di calcolo.

TabDoc.Output (intestazione regione);

Quindi, scriviamo una query nel database, con l'aiuto del quale prenderemo il fatturato sul conto 62 dal registro contabile autoportante. Definiamo una variabile in cui si troverà la nostra richiesta.

Richiesta = nuova Richiesta;

Prima di iniziare a scrivere il testo della richiesta, gli passeremo i parametri necessari. Dal momento che stiamo scrivendo una richiesta di fattura 62 contabilità, quindi prima di tutto creeremo un parametro per esso

Query.SetParameter("Account62" ,Grafici dei conti.Auto-supporto.FindByCode("62" ));

È inoltre necessario far passare alla richiesta il periodo di generazione del report. Non dimenticare che abbiamo dettagli di report speciali per il periodo di generazione e li passiamo come parametri.

Query.SetParameter("StartPeriod",StartPeriod); Query.SetParameter("EndPeriod",EndPeriod);

Iniziamo a scrivere il testo della query, lo faremo utilizzando il generatore di query. In molti aiuti per l'insegnamento scrivono che devi essere in grado di scrivere una query sia manualmente che usando il costruttore, ma in pratica non è così. Nelle attività che vengono costantemente affrontate da un programmatore 1C, la priorità è la scrittura di codice rapida e di alta qualità e, quando si compila manualmente una query sul database, questo è quasi impossibile da ottenere, trascorrerai molto tempo prezioso per eseguire correttamente riprodurre tutte le costruzioni di query, trovare errori di battitura che hai fatto durante la scrittura, ecc. Quindi non perdere tempo a provare a scrivere query manualmente, ma usa il costruttore di query. Ti farà risparmiare tempo e ti permetterà di scrivere senza troppi sforzi. interrogazioni complesse. Per iniziare a scrivere il testo della richiesta, scriviamo nel codice:

Testo.Richiesta = "" ;

Dopodiché, posiziona il cursore tra le virgolette, premi il tasto destro del mouse e seleziona l'elemento Costruttore richiesta. Si aprirà la finestra di progettazione query.

Ora dobbiamo selezionare la tabella del database 1C 8 di cui abbiamo bisogno. Abbiamo bisogno di una tabella virtuale Fatturati registro contabile autoportante. Trovalo sul lato sinistro della finestra del designer

Spostiamola nell'area tavoli e inseriamo i parametri. Per tutte le tabelle virtuali della query è presente uno speciale set di parametri che consente di selezionare i dati necessari dalla tabella principale (nel nostro caso, la tabella principale Registro contabile autoportante). Apri la finestra delle opzioni tavola virtuale.

Compiliamo i parametri, il periodo che abbiamo passato alla richiesta. Per poter utilizzare un parametro nel testo della richiesta, è necessario scrivere un simbolo prima del suo nome e commerciale(&)

Resta da compilare la condizione sull'account. contabilità. Per fare ciò, trova la riga nei parametri della tabella virtuale CondizioneAccount e scrivi lì

Punteggio IN GERARCHIA (&Punteggio62)

Puoi anche utilizzare il generatore di condizioni facendo clic sul pulsante con tre punti.

Non è necessario imporre più condizioni al tavolo virtuale, quindi premi il pulsante OK nella finestra delle opzioni della tabella virtuale. Successivamente, dobbiamo selezionare i campi di cui abbiamo bisogno dalla tabella Autoportante Fatturato(vale a dire: Controparte, Accordo di Controparte, Entrate e Spese). Per vedere l'elenco dei campi disponibili nella tabella che abbiamo selezionato, premi il simbolo “+” accanto al suo nome. Dopo di che trasciniamo campi richiesti nell'area più a destra del Query Designer, che si chiama: Campi. Se apriamo il piano dei conti, lo vedremo per il conto 62 analisi di Per la controparte: questo è Subconto1, e da Contratto appaltatore — Subconto2.

Pertanto, dai campi della tabella virtuale, selezionare Sottoconto1 e Sottoconto2. Poiché abbiamo bisogno di entrate e spese per importo, selezioniamo anche i campi ImportoFatturatoDt e Importo FatturatoKt

Compiliamo gli alias dei campi che abbiamo scelto, per questo andremo alla scheda Unioni/alias e impostare i nomi dei campi desiderati.

Poiché nel nostro report i dati verranno visualizzati gerarchicamente (la Controparte è al primo livello e tutti i suoi contratti sono al secondo), imposteremo l'output dei dati nella gerarchia utilizzando i Risultati. Andiamo alla scheda nel costruttore Risultati. Trascina e rilascia in sequenza i campi di raggruppamento controparte e Accordo di controparte, e in finale In arrivo e Consumo.

Questo completa il lavoro nel costruttore di query, fare clic sul pulsante OK e vediamo che il testo della nostra richiesta è apparso nel codice del programma.

Query.Text = "SELEZIONA | Fatturati autosufficienti Subconto1 AS Controparte, | Fatturati autoportanti Subconto2 AS Contratto di appaltatore, | AutoportanteFatturatoImportoFatturatoDt AS Incoming, | Autoportante Fatturato.ImportoFatturatoKt AS Spesa| DA | RegisterAccounting.Self-supporting.Turnovers(&Inizio del periodo, &Fine del periodo, Conto NELLA GERARCHIA (&Account62),) AS Self-supportingFatturato| RISULTATI | SOMMA(Reddito), | SOMMA(Spese) | ATTIVA | controparte, | Accordo di controparte";

Dopo aver finito di scrivere la richiesta, inizieremo a compilare le aree Data Contractor, DataAgreementContractor e Seminterrato. Riempiremo tutte queste aree con i dati ricevuti durante l'esecuzione della richiesta. Poiché la nostra query contiene raggruppamenti ( controparte e Accordo di controparte) seleziona i dati da esso come segue:

SelectionContractor = Query.Execute().Select(BypassingQueryResult.By Raggruppamenti);

Pertanto, riceveremo registrazioni con i totali per tutte le controparti.

Prima di bypassare i dati di esempio utilizzando un ciclo, inizializziamo le variabili destinate al calcolo dei totali per il report:

Reddito totale = 0; Spesa totale = 0;

Affinché i dati del report vengano visualizzati con una gerarchia (e si diffondono per "+"), impostare l'inizio del raggruppamento automatico delle righe del documento del foglio di calcolo:

TabDoc.StartAutogroupRows();

Tutti i preparativi sono terminati, ora iniziamo a bypassare i risultati della query. Il bypass verrà effettuato utilizzando il loop Ciao

Mentre SelectionContractor.Next() Ciclo EndCycle ;

All'inizio del ciclo, resettare i parametri In arrivo e Consumo le zone Data Contractor. Cosa serve? Immagina una situazione in cui la controparte zio Vasja, reddito 10 e onere 5, e per la controparte successiva zio Petia non ci sono entrate o spese, in questo caso, se non resettiamo i parametri In arrivo e Consumo, quindi nella riga per controparte zio Petia ci sarà un reddito di 5 e una spesa di 10.

AreaDataAccount.Parameters.Incoming = 0; AreaDataAccount.Parameters.Expense = 0;

Successivamente, riempi l'area Data Contractor dati dell'articolo campione

CompilarePropertyValues(AreaDataAccount.Parameters, SelectionAccount);

Dopo aver compilato i dati, è possibile visualizzare l'area in foglio di calcolo, Poiché utilizziamo il raggruppamento automatico delle linee, dobbiamo specificare il livello della linea nel raggruppamento (nel nostro report ci saranno due livelli, per le controparti il ​​primo per i contratti il ​​secondo).

TabDoc.Output(AreaDataAccount,1);

Ora per questa controparte faremo una selezione in base ai suoi contratti.

SelectAgentContract = SelectContractor.Select(BypassingQueryResult.By Raggruppamenti);

Il bypass verrà effettuato utilizzando il loop Ciao.

Mentre SelectionAgreementContractor.Next() Cycle EndCycle ;

Nel ciclo per i contratti delle controparti azzereremo i parametri In arrivo e Consumo, riempi l'area DataContratto dalla selezione e visualizzarlo in un foglio di calcolo al secondo livello di record.

AreaDataAgreement.Parameters.Income = 0; AreaDataAgreement.Parameters.Expense = 0; CompilarePropertyValues(AreaDataContract.Parameters, SelectionContractorContract); TabDoc.Output(AreaDataContract,2);

Anche in questo ciclo, aggiungeremo i valori correnti alle variabili per il calcolo dei valori totali per entrate e uscite.

TotalIncome = TotalIncome + SelectionAgreementContractor.Income; Spesa totale = Spesa totale + Accordo dell'appaltatore di selezione.Spese;

Questo conclude l'output dei dati nell'area Data Contractor, DataAgreementContractor completato, resta da completare il raggruppamento automatico delle righe del documento del foglio di calcolo.

TabDoc.EndAutoGroupRows();

Cicli completamente responsabili dell'output dei dati nell'area Data Contractor e DataAgreementContractor Assomiglia a questo:

TabDoc.StartAutogroupRows(); Mentre SelectionContractor.Next() Loop AreaDataContractor.Parameters.Incoming = 0 ; AreaDataAccount.Parameters.Expense = 0 ; CompilarePropertyValues(AreaDataAccount.Parameters, SelectionAccount); TabDoc.Output(AreaDataAccount,1); SelectAgentContract = SelectContractor.Select(BypassingQueryResult.By Raggruppamenti); Mentre SelectionAgreementContractor.Next() Loop AreaDataAgreement.Parameters.Incoming = 0 ; AreaDataAgreement.Parameters.Expense = 0 ; CompilarePropertyValues(AreaDataContract.Parameters, SelectionContractorContract); TabDoc.Output(AreaDataAgreement,2); TotalIncome = TotalIncome + SelectionAgreementContractor.Income; Spesa totale = Spesa totale + Accordo dell'appaltatore di selezione.Spese; ciclo finale; ciclo finale; TabDoc.EndAutoGroupRows();

Resta da visualizzare i dati totali nell'area Seminterrato e visualizzare l'area stessa foglio di calcolo.

AreaBasement.Parameters.TotalIncome = TotalIncome; AreaBasement.Parameters.TotalExpense = TotalExpense; TabDoc.Output(RegionFooter);

Questo completa il processo di scrittura di un rapporto esterno per 1C 8 senza utilizzare ACS. Ora può essere generato in modalità 1C:Enterprise 8 e aggiunto alla directory Elaborazione esternaÈ possibile scaricare il file del rapporto discusso nell'articolo da .

Guarda il video sulla creazione di un stampabile esterno per un'app gestita:

Vai al menu in alto Servizio->->.

Viene visualizzato il modulo dell'elenco delle directory di elaborazione esterne. Fare clic sul pulsante nel menu in alto Aggiungere.

Apparirà il modulo per aggiungere un nuovo oggetto. Premiamo il pulsante apri e selezioniamo il file con l'elaborazione desiderata. Dopo aver scelto file desiderato, se necessario, specificare il nome dell'elaborazione (campo Nome). Successivamente, è necessario fare clic su OK per salvare le modifiche.

Dopodiché, la finestra di creazione dell'elemento di directory si chiude e si torna al modulo elenco, in cui è già presente la nuova elaborazione.

È tutto! Il processo di aggiunta dell'elaborazione alla configurazione è ora completo. Per aprire successivamente questa elaborazione, vai al vecchio percorso: Servizio->Rapporti ed elaborazioni aggiuntive->Elaborazione esterna aggiuntiva.

Per BP 3.0, ZUP 3.0, UT 11, ERP 2.0.

Esistono diversi tipi di elaborazione esterna per 1C: Enterprise 8. In questo tutorial, ti mostrerò come allegare modifiche in blocco e riempire l'elaborazione di oggetti specifici.

Per il primo caso, aggiungiamo l'elaborazione per la compilazione del riferimento all'elenco di stock da Excel.

Vai alla sezione appropriata del programma:


È necessario che sia impostato il segno di utilizzo di report ed elaborazioni aggiuntive, seguire il collegamento ipertestuale all'elenco di oggetti esterni:

Fare clic sull'elenco Creare:


Nella finestra di dialogo che si apre, seleziona il file desiderato con l'elaborazione:


La scheda di un nuovo oggetto esterno nel programma è stata compilata, resta solo da configurare struttura ricettiva(sezioni del programma da cui sarà disponibile l'elaborazione):


Come posizione, seleziona una sezione arbitraria (o più):


Scrivi e chiudi la scheda oggetto esterno:


Ora apriamo l'elaborazione dall'interfaccia:


L'elenco è vuoto, fare clic Personalizza elenco:


Scegliamo la nostra lavorazione:


Ora è disponibile per la selezione. Per aprire l'elaborazione, è necessario fare clic Correre:


Ora vediamo come viene aggiunta l'elaborazione per riempire (modificare) oggetti specifici. Ad esempio, prendiamo un'elaborazione esterna che allega scansioni a elementi selezionati di directory o documenti di sistema. L'inizio dell'aggiunta di tale elaborazione non differisce dalla versione precedente. La differenza è che in questo caso il posizionamento viene compilato automaticamente (e non dalla sezione del programma, ma dai tipi di oggetti base):


Se lo si desidera, è possibile modificare l'elenco dei posizionamenti ( non aggiungere ulteriore posizionamento, ma rimuovere l'eccesso):


Per accettare la modifica, è necessario registrare anche la scheda oggetto esterno.

Per utilizzare l'elaborazione è necessario recarsi su un oggetto specifico della base (dall'elenco dei posizionamenti), fare clic Riempire nella barra dei comandi e seleziona il comando:

Abbastanza spesso, quando durante una consulenza diventa necessario risolvere un problema complesso, suggerisco ai miei clienti di implementarlo nel programma 1C utilizzando uno dei due elaborazione esterna, o lastra di stampa esterna. E spesso mi imbatto nel fatto che una persona semplicemente non ha familiarità con una tale possibilità di programmi sulla piattaforma 1C Enterprise 8. A volte mi giurano persino, credendo che lo sviluppo e l'implementazione di tale elaborazione nella loro configurazione lo renderanno impossibile per aggiornare automaticamente il programma. Che devi pagare un sacco di soldi per aggiornare il programma.

Per chiarire tali questioni, nonché per raccontare cosa funzioni utili dare elaborazioni esterne e moduli di stampa esterni, ho deciso di scrivere questo articolo. Nell'articolo, non prenderò in considerazione il lato tecnico del processo di creazione dell'elaborazione. Molto probabilmente questo sarà trattato in un altro post. Qui cercherò di spiegare l'essenza stessa del meccanismo e fornire esempi specifici di casi in cui l'elaborazione esterna e la stampa di moduli possono avvantaggiare l'utente.

L'articolo discuterà le seguenti opzioni per ulteriori oggetti collegabili esterni:

  • Elaborazione esterna aggiuntiva di parti tabulari;
  • Moduli di stampa esterni aggiuntivi;
  • Rapporti esterni aggiuntivi;
  • Elaborazione esterna aggiuntiva.

Che cosa sono ulteriori elaborazioni esterne, report e moduli di stampa




Per cominciare, vorrei parlare in generale di quali sono queste elaborazioni esterne, report e moduli stampati. Abbastanza spesso, quando si lavora con una configurazione tipica, che si tratti di 1C ZUP o 1C Enterprise Accounting o qualche altra configurazione, è necessario un qualche tipo di funzionalità che non è fornita dagli sviluppatori 1C. Ad esempio, potresti aver bisogno modulo stampato, che non è regolamentato, ma viene utilizzato per le esigenze interne dell'organizzazione. O richiesto in un certo modo processo (modificare, correggere) i dati disponibili nel database. Ad esempio, la modifica di determinati dettagli nei documenti per il periodo richiesto, operazione scomoda da eseguire manualmente con grandi quantità di informazioni.

In questo caso, ci sono due opzioni. Il primo, possiamo modificare la configurazione stessa, il programma stesso. Dopodiché, cesserà di essere tipico e lo aggiornerà con quelli abbastanza modi semplici di cui ho scritto non funzionerà. L'aggiornamento di una configurazione non standard è un processo più lungo e serio, quindi, con questo approccio, molto probabilmente dovrai pagare mensilmente uno specialista 1C per aggiornare il programma. Secondo un'opzione è sviluppare o chiedere di sviluppare un'elaborazione esterna o un modulo stampato (relazione). Si tratta essenzialmente di un modulo esterno, anch'esso sviluppato nel linguaggio di programmazione 1C nel Configuratore, ma non apporta modifiche alla configurazione standard. Esiste indipendentemente dalla configurazione stessa. Per la loro memorizzazione vengono utilizzate directory speciali: la voce del menu principale "Servizio" -> "Report ed elaborazione aggiuntivi".

Lavorazioni esterne aggiuntive per la compilazione di parti tabulari

Seminario "Trucchi di vita per 1C ZUP 3.1"
Analisi di 15 hack di contabilità in 1s zup 3.1:

ELENCO DI CONTROLLO per il controllo delle buste paga in 1C ZUP 3.1
VIDEO - autoverifica mensile della contabilità:

Libro paga in 1C ZUP 3.1
Istruzioni passo passo per principianti:

Ora diamo un'occhiata a quali funzionalità ci darà ciascuno dei quattro moduli esterni disponibili. Iniziamo con lavorazione esterna di parti tabulari. Mi sembra che queste elaborazioni delle parti tabulari dei documenti illustrino nel modo più completo come si possa modificare seriamente il programma senza ricorrere alla modifica della configurazione tipica, ma utilizzando solo elaborazioni esterne.

Per rendere più chiaro, darò un esempio specifico della mia pratica, in cui, per risolvere il problema, ho utilizzato lavorazione esterna di parti tabulari. Nella configurazione "1C Salary and HR Management" edizione 2.5 è presente un documento "Pagamento per ferie e weekend"(questo documento è scritto in dettaglio). In una forma tipica, questo documento prevede la possibilità di compilare automaticamente la parte tabellare da parte dei dipendenti "Lavorare nei giorni festivi".

Il contabile ha chiesto di implementare la possibilità di compilare questo documento da parte di dipendenti i cui giorni lavorativi, secondo il programma, cadevano nei fine settimana, ad es. "Lavorare nel fine settimana".

Questo file è stato caricato nella directory "Lavorazione esterna di parti tabellari"(voce di menu "Strumenti" -> "Ulteriori rapporti ed elaborazioni" -> "Ulteriori lavorazioni esterne di parti tabellari"). Durante la creazione di un elemento di questa directory, è stato indicato a quale documento appartiene l'elaborazione scaricata - "Pagamento per ferie e fine settimana dell'organizzazione", nonché a quale parte tabellare - "Dipendenti". Nel nostro esempio parte tabellare il documento ne possiede uno, ma in altri documenti possono essercene più, e quindi è necessario indicare specificatamente a quale di essi appartiene il trattamento.

Come risultato dell'aggiunta di questa elaborazione alla directory "Ulteriori lavorazioni esterne per il riempimento di parti tabulari" nello stesso documento “Pagamento per ferie e weekend” comparirà il pulsante “Riempi” con un elenco a tendina in cui sarà possibile avviare tale elaborazione. Nel nostro caso, il pulsante "Riempi domeniche" è disponibile nell'elenco a discesa. Premendolo si avvia l'algoritmo contenuto nell'elaborazione. A questo esempio la parte tabellare sarà riempita con i dipendenti le cui giornate lavorative cadevano in un giorno di riposo. Tieni presente che questo pulsante non esisteva prima (screenshot sopra).

Questo meccanismo consente di risolvere una gamma molto ampia di problematiche senza affinare la configurazione stessa. Pertanto, uso abbastanza spesso questa opportunità per implementare le attività del cliente.

Lastre di stampa esterne aggiuntive

Seminario "Trucchi di vita per 1C ZUP 3.1"
Analisi di 15 hack di contabilità in 1s zup 3.1:

ELENCO DI CONTROLLO per il controllo delle buste paga in 1C ZUP 3.1
VIDEO - autoverifica mensile della contabilità:

Libro paga in 1C ZUP 3.1
Istruzioni passo passo per principianti:

Questa opzione è molto simile alla precedente. Molto probabilmente hai visto e sai che quasi tutti i documenti e persino alcuni elementi delle directory hanno moduli stampati. Loro, poiché le regole si trovano nell'angolo in basso a destra dell'elemento del modulo della directory o del documento. A volte i moduli stampati standard non sono sufficienti. Ad esempio, un'organizzazione può avere una propria forma di contratto di lavoro. Vi ricordo che il modulo cartaceo standard "Contratto di lavoro" fa parte del modulo del libro di consultazione "Dipendenti".

È possibile aggiungere il proprio a questi moduli stampati della directory. A tale scopo viene creato un modulo di stampa esterno con estensione “.epf”. Quindi viene creato un elemento di directory per esso "Ulteriori lastre di stampa esterne"(voce di menu "Servizio" -> "Report ed elaborazione aggiuntivi") e a questo elemento della directory viene aggiunto un file con estensione ".epf". È inoltre necessario specificare per quale documento o directory viene aggiunta l'elaborazione.

Di conseguenza, nella composizione dei moduli stampati degli elementi della directory "Impiegati" apparirà un altro modulo - "Contratto di lavoro (LLC Alfa)", che prima non esisteva. E lei aspetto esteriore e il riempimento dei dati è definito dal programmatore nel file “.epf”.

Questa capacità di aggiungere il desiderato moduli stampati per documenti e directory, è anche molto spesso richiesto e, a mio avviso, è una funzionalità piuttosto conveniente dei programmi sulla piattaforma 1C Enterprise.

Rapporti esterni aggiuntivi

In questo caso, si può sviluppare rapporto esterno. Questo è un file in formato ".erf". È questo file che determinerà l'aspetto del report, quali dati di configurazione utilizzerà e quali richiederà all'utente (ad esempio, periodo, selezione per dipendente o per reparto). Il file viene creato nel configuratore 1C nel linguaggio di programmazione 1C.

Un report esterno può essere memorizzato come parte della configurazione tramite la directory "Report esterni aggiuntivi" (voce di menu "Strumenti" -> "Report ed elaborazione aggiuntivi"). Non sono correlati a un documento o directory specifico, queste informazioni non sono richieste.

Con questa opzione di archiviazione, il report viene avviato dalla stessa directory (doppio clic).

Puoi anche eseguire un report esterno utilizzando la voce di menu "File" -> "Apri". Questa opzione può essere utilizzata se è più conveniente archiviare rapporti esterni non come parte del programma, ma semplicemente in cartelle sul tuo computer.

Elaborazione esterna aggiuntiva

Elaborazione esterna hanno più o meno lo stesso significato dei rapporti esterni. Ma a differenza dei report, che vengono utilizzati per visualizzare i dati base informativa in un formato intuitivo, l'elaborazione ha lo scopo di modificare, modificare o trasformare i dati dell'infobase. La gamma di compiti risolti con l'aiuto di elaborazioni esterne è piuttosto ampia.

Per esempio, elaborazione per lo scarico delle buste paga. Nonostante la presenza nello ZUP tipica lavorazione(leggi a riguardo), a volte potrebbe non essere adatto per una banca particolare ed è in fase di sviluppo un'elaborazione esterna che converte e carica le informazioni nel formato desiderato.

Io porterò un altro esempio elaborazione abbastanza senza pretese, ma abbastanza popolare. Se in 1C ZUP durante l'anno non viene mantenuto il documento "Trasferimento dell'imposta sul reddito delle persone fisiche al bilancio", quando si forma l'imposta sul reddito per 2 persone per l'anno, il campo "Elencato" per ciascun dipendente sarà zero, che di solito è in realtà errato. L'inserimento del documento "Trasferimento dell'imposta sul reddito delle persone fisiche al bilancio" per l'intero anno può essere piuttosto noioso, date le peculiarità del documento stesso. Ma puoi fare un'elaborazione esterna, che nel 2-NDFL generato compilerà semplicemente il campo "Elencato" per ciascun dipendente, in base ai valori nel campo "Calcolato". Di solito ai contabili piace molto questa opzione.

L'elaborazione esterna ha esattamente le stesse due opzioni di archiviazione e avvio: utilizzare il riferimento "Ulteriori trattamenti esterni"(voce di menu "Strumenti" -> "Report ed elaborazione aggiuntivi"), oppure la voce di menu principale "File" -> "Apri".

È tutto per oggi!

Per essere il primo a conoscere le nuove pubblicazioni, iscriviti agli aggiornamenti del mio blog:

Attenzione!
Tutti i trattamenti dai dischi ITS sono destinati a fini informativi ed esclusivamente per gli utenti registrati di ITS.

Selezione ed elaborazione di oggetti. (Universale)

Cerca oggetti in documenti e directory che soddisfano determinate condizioni. Elabora i risultati della ricerca.

Rollup della base di informazioni. (Universale)

Esegue il rollup IB di configurazioni tipiche:

  • SCP 3.1.
  • BP 1.6.
  • UT 10.3.

Registrazione delle modifiche per lo scambio. (Universale)

Modifica, in modalità applicativa gestita, la registrazione delle modifiche per lo scambio di oggetti. Consente di modificare la registrazione corrente su nodi diversi. Modifica il numero di messaggi ricevuti e inviati.

Conversione del registro delle attività dell'utente. (Universale)

Converte in un programma, nel linguaggio integrato, un registro delle azioni dell'utente.

Ricerca full-text nei dati. (Universale)

Indicizzazione e ricerca nei dati.

Trovare e sostituire i valori. (Universale)

Cerca e sostituisce i valori di riferimento negli oggetti IS.

Allestimento di un registro tecnologico. (Universale)

Crea o modifica un file di registro del processo. Ha la capacità di configurare la creazione di un dump di arresto anomalo, configurare condizioni ed eventi, al verificarsi dei quali le informazioni verranno scritte in questo registro.

Console di lavoro. (Universale)

Monitora lo sfondo e compiti di routine. Elimina, ne crea di nuovi.

Conversione dell'elaborazione esterna. (Universale)

Modifica delle informazioni riservate. (Universale)

Modifica selettiva o pulizia della sicurezza delle informazioni da determinate informazioni.

Modifica dei dettagli di gruppo. (Universale)

Modifica i dettagli e le parti tabulari in documenti e directory.

Scaricare e caricare utenti. (Universale)

Scarica e carica gli utenti IB in un file XML.

Caricamento dati su database esterni. (Universale)

Scarica le strutture di dati su DBMS esterni utilizzando ADO in due modalità:

  • Scarica tutto
  • Carica modifiche (usato per sincronizzare le modifiche nell'IB di lavoro, con l'IB ricevitore). Questa modalità utilizza i meccanismi del piano di scambio.

Supporta i seguenti DBMS:

  • Microsoft SQL
  • IBM DB2
  • Oracolo
  • PostgreSQL
  • MySQL

Caricamento e caricamento di dati XML. (Universale)

Scarica e carica i dati in IB, sia completamente che parzialmente. Viene utilizzato per trasferire dati tra configurazioni simili nella composizione degli oggetti.

Caricamento di dati da un foglio di calcolo. (Universale)

Carica i dati in directory e parti tabulari da fogli di calcolo.

Funziona in un thick client in una normale modalità di applicazione.

Console di interrogazione. (Universale)

È di grande aiuto nella compilazione di report e nella creazione di query.