Maison / Travailler sur Internet / Rapports externes et traitement pour 1s entreprise. Ajout d'un traitement externe à la base de données. Quels sont les traitements externes supplémentaires, les rapports et les formulaires d'impression

Rapports externes et traitement pour 1s entreprise. Ajout d'un traitement externe à la base de données. Quels sont les traitements externes supplémentaires, les rapports et les formulaires d'impression

Envisagez de créer un rapport externe en 1s 8 sans utiliser de système de composition de données. Pour créer un rapport externe, nous utiliserons la configuration de Comptabilité 2.0, les données initiales : "Rédigez un rapport sur 62 comptes comptables dans lequel le chiffre d'affaires de la période spécifiée sera affiché dans le Contreparties et Contrats de contreparties.

1. Créer un rapport

Tout d'abord, nous allons créer un fichier de rapport externe, pour cela nous irons à 1s 8 dans le mode Configurateur, allez dans le menu Fichier -> Nouveau ou cliquez sur l'icone nouveau document.

Sélectionnez un élément dans la liste Rapport externe. Après avoir créé un rapport externe, donnez-lui un Nom (par exemple Rapportleplussimple) et enregistrez-le sur le disque. Nous ajouterons également deux accessoires : Début de période et FinPériode taper la date, nous en aurons besoin pour limiter l'intervalle de temps pour l'échantillonnage des données lors de la génération d'un rapport.

2. Créer une mise en page de rapport externe

Pour générer un rapport en 1s 8, vous avez besoin d'une mise en page, il s'agit d'un modèle de sortie de données dans lequel tous les paramètres nécessaires sont définis, des tableaux sont dessinés, etc. Ajoutons une nouvelle mise en page, pour cela, dans l'arborescence des métadonnées du rapport, sélectionnez l'élément Dispositions et appuyez sur le bouton Ajouter, lors de la création, sélectionnez le type de mise en page feuille de calcul.

Notre aménagement comportera 4 zones :

  • En-tête - dans cette zone, nous afficherons le nom du rapport, la période pour laquelle il a été généré et l'en-tête du tableau ;
  • Données de contrepartie - dans cette zone, nous afficherons des données sur la contrepartie dans le tableau ;
  • Données sur l'accord de contrepartie - dans cette zone, nous afficherons les données sur l'accord de contrepartie dans le tableau ;
  • Pied de page - dans cette zone, nous afficherons les valeurs totales pour l'ensemble du rapport pour les champs Revenus et Dépenses.

Commençons à créer des zones de mise en page. Pour créer une zone dans la mise en page, sélectionnez le nombre de lignes requis et cliquez sur Tableau des menus -> Noms -> Attribuer un nom(Ou Ctrl+Maj+N). Vers la zone Chapeauécrivez le nom du rapport : Chiffre d'affaires 62 comptes, dessinez avec l'outil Les frontières en-tête du rapport, ainsi que définir les paramètres Début de période et FinPériode. À l'aide de paramètres, vous pouvez afficher les données nécessaires dans le rapport, nous nous en occuperons lors de la prochaine étape de développement, à savoir lors de l'écriture du code de programme du rapport. Pour créer un paramètre dans la mise en page, sélectionnez la cellule souhaitée, écrivez-y le nom du paramètre (sans espaces), faites un clic droit dessus, sélectionnez l'élément dans le menu qui s'ouvre Propriétés. Dans les propriétés de la cellule de l'onglet Disposition sélectionner le remplissage Paramètre.

Après cela, dans la cellule, le nom du paramètre sera entouré de crochets angulaires ("<>"). En conséquence, la zone Chapeau devrait ressembler à ceci :

Dans la région de DataContractor nous allons créer des paramètres pour afficher le nom de la contrepartie, ainsi que pour les revenus et les dépenses du compte 62, à l'aide de l'outil Les frontières Concevons la zone sous la forme d'une ligne de tableau.

Dans la région de DataAgreementContractor nous allons créer des paramètres pour afficher le nom du contrat, ainsi que pour les revenus et les dépenses du compte 62, à l'aide de l'outil Bordures, nous organiserons la zone sous la forme d'une ligne de tableau. Faisons un petit retrait avant le paramètre Accord de contrepartie(cela peut être fait en divisant et en fusionnant des cellules. Faites un clic droit sur la cellule -> Fusionner ou Casser la cellule), il est nécessaire pour montrer dans le rapport que la ligne de contrat est inférieure dans la hiérarchie à la ligne de contrepartie.

Dans la région de Sous-sol Créons des paramètres pour les totaux des recettes et des dépenses.

En conséquence, nous devrions obtenir une mise en page comme celle-ci :

3. Créer un formulaire de rapport

Pour afficher les données, réglez la période de formation et les boutons Formulaire notre rapport aura besoin d'un formulaire. Pour créer un formulaire, recherchez l'élément dans l'arborescence des métadonnées du rapport externe Formes et appuyez sur le bouton Ajouter. Sur la première page du générateur de formulaires, vous n'avez pas besoin d'apporter de modifications, cliquez simplement sur le bouton Plus loin.

Sur le page suivante constructeur, sélectionnez les deux accessoires disponibles( Début de période, FinPériode) à placer sur le formulaire.

En conséquence, nous obtenons ce formulaire :

Mais sous cette forme cela ne nous convient pas, nous allons y apporter quelques modifications :

  • Faites glisser le bouton Formulaire du panneau inférieur du rapport au panneau supérieur (ce sera plus pratique pour l'utilisateur);
  • Étirez la forme verticalement et horizontalement;
  • Organiser les champs Début de période et FinPériode horizontalement ;
  • Ajouter un contrôle Field au formulaire feuille de calcul(notre rapport y sera affiché), donnez-lui un nom TabDoc;
  • Créons un bouton de sélection de période (lorsqu'il est pressé, une boîte de dialogue s'affiche avec une sélection pratique de la période souhaitée). Nous n'écrirons pas encore le code du programme pour cela, nous placerons donc simplement le bouton à côté des champs de période.

En conséquence, notre formulaire ressemblera à ceci :

4. Programmation

Après avoir créé le formulaire de rapport, commençons la programmation. Pour commencer, créons une procédure pour afficher une boîte de dialogue de sélection de période (nous avons déjà créé un bouton pour cela à l'étape précédente). Faites un clic droit sur le bouton et sélectionnez l'élément de menu Propriétés, dans les propriétés du bouton allez dans l'onglet Développements, où en utilisant le bouton avec l'icône de la loupe, nous allons créer une procédure Bouton1Press dans le module de formulaire.

Vous pouvez basculer entre le formulaire et son module en utilisant les onglets en bas du formulaire

Pour appeler le formulaire de sélection de période, nous utilisons la procédure standard Comptabilité 2.0 de module commun Travailler avec les dialogues - HandlerPeriodSettingPressing, vous devez lui transmettre les détails du rapport en tant que paramètres Début de période et FinPériode.

Procédure Button1Press (élément) Travailler avec Dialogs.HandlerSettingPeriodPress(StartPeriod,EndPeriod); FinProcédure

Passons maintenant à l'écriture du code qui va générer et afficher notre rapport. Il existe déjà une procédure dans le module formulaire BoutonFormulaireAppuyant qui sera exécuté lorsque le bouton sera cliqué Formulaire, puis nous y écrirons notre code. Commençons par initialiser les variables nécessaires. Commençons par créer une variable pour champs de feuille de calcul auquel nous allons sortir des données, ce n'est pas nécessaire, juste l'enregistrement des appels deviendra plus court, ce qui signifie que le code de programme sera plus compréhensible pour la lecture.

TabDoc = FormElements.TabDoc ;

Obtenir la mise en page du rapport externe à l'aide de la fonction GetLayout(<ИмяМакета>) , nous transmettrons le nom de la mise en page au paramètre, et si une telle mise en page existe, la fonction la trouvera.

Mise en page = GetLayout("Mise en page" );

Une fois la mise en page reçue, nous créerons des variables pour chacune de ses zones, nous utiliserons la méthode de mise en page pour cela ObtenirRégion(<ИмяОбласти>) .

AreaHat = Layout.GetArea("Chapeau"); AreaDataAccount = Layout.GetArea( "DataContractor"); AreaDataAgreement = Layout.GetArea("DataAgreement" ); AreaFooter = Layout.GetArea("Basement" );

Effacez le champ de la feuille de calcul. Cela est nécessaire pour qu'à chaque nouvelle génération de rapport, les anciennes données soient supprimées.

TabDoc.Clear();

Maintenant que l'initialisation des variables est terminée, passons au remplissage et à l'affichage des zones de mise en page une par une. Commençons par le chapeau. Si vous vous souvenez, nous avons créé deux paramètres dans cette zone Début de période et FinPériode, on y passera les valeurs de la période de génération du rapport, pour cela on utilisera la propriété Choix zone de mise en page.

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

Plus d'action de portée Chapeau le fabricant n'est pas nécessaire, nous afficherons donc son champ dans un document de feuille de calcul.

TabDoc.Output(RegionHeader);

Ensuite, écrivons une requête à la base de données, à l'aide de laquelle nous prendrons le chiffre d'affaires sur le compte 62 du registre comptable autoportant. Définissons une variable dans laquelle sera localisée notre requête.

Requête = nouvelle requête ;

Avant de commencer à écrire le texte de la requête, nous lui transmettrons les paramètres nécessaires. Puisque nous rédigeons une demande de facture 62 comptabilité, alors tout d'abord nous allons créer un paramètre pour cela

Query.SetParameter("Account62" ,Plans comptables.Self-supporting.FindByCode("62" ));

Il faut aussi passer la période de génération du rapport à la requête. N'oubliez pas que nous avons des détails de rapport spéciaux pour la période de génération, et nous les transmettons en tant que paramètres.

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

Commençons à écrire le texte de la requête, nous le ferons en utilisant le générateur de requête. Dans de nombreux aides à l'enseignement ils écrivent que vous devez être capable d'écrire une requête à la fois manuellement et en utilisant le constructeur, mais en pratique ce n'est pas le cas. Dans les tâches auxquelles un programmeur 1C est constamment confronté, la priorité est l'écriture rapide et de haute qualité du code, et lors de la compilation manuelle d'une requête dans la base de données, cela est presque impossible à réaliser, vous passerez beaucoup de temps précieux à correctement reproduisez toutes les constructions de requêtes, trouvez les fautes de frappe que vous avez faites lors de l'écriture, etc. Alors ne perdez pas votre temps à essayer d'écrire des requêtes manuellement, mais utilisez le constructeur de requête. Cela vous fera gagner du temps et vous permettra d'écrire sans trop d'effort. requêtes complexes. Pour commencer à écrire le texte de la requête, écrivons dans le code :

Requête.Texte = "" ;

Après cela, placez le curseur entre les guillemets, appuyez sur le bouton droit de la souris et sélectionnez l'élément Constructeur demande. La fenêtre du concepteur de requêtes s'ouvrira.

Nous devons maintenant sélectionner la table de base de données 1C 8 dont nous avons besoin. Nous avons besoin d'une table virtuelle Chiffre d'affaires registre comptable autoportant. Trouvez-le sur le côté gauche de la fenêtre du concepteur

Déplaçons-le dans la zone les tables et remplissons les paramètres. Pour toutes les tables virtuelles de la requête, il existe un ensemble spécial de paramètres qui vous permettent de sélectionner les données nécessaires dans la table principale (dans notre cas, la table principale Accounting Register autoportant). Ouvrir la fenêtre des options table virtuelle.

Renseignons les paramètres, la période que nous avons passé à la requête. Pour utiliser un paramètre dans le texte de la requête, vous devez écrire un symbole avant son nom esperluette(&)

Il reste à remplir la condition sur le compte. comptabilité. Pour cela, trouvez la ligne dans les paramètres de la table virtuelle ConditionAccounts et y écrire

Score EN HIÉRARCHIE (&Score62)

Vous pouvez également utiliser le générateur de conditions en cliquant sur le bouton avec trois points.

Plus besoin d'imposer de conditions à la table virtuelle, appuyez donc sur le bouton D'ACCORD dans la fenêtre des options de la table virtuelle. Ensuite, nous devons sélectionner les champs dont nous avons besoin dans le tableau Autoportant.(à savoir: Contrepartie, accord de contrepartie, revenus et dépenses). Pour voir la liste des champs disponibles dans le tableau que nous avons sélectionné, appuyez sur le symbole "+" à côté de son nom. Après cela, nous traînons Champs obligatoiresà la zone la plus à droite du concepteur de requêtes, qui s'appelle : Champs. Si nous ouvrons le plan comptable de la comptabilité, nous verrons que pour le compte 62 analytique par À la contrepartie - c'est Subconto1, et par Contrat de l'entrepreneur — Subconto2.

Par conséquent, parmi les champs de la table virtuelle, sélectionnez Sous-conto1 et Sous-conto2. Comme nous avons besoin de revenus et de dépenses par montant, nous sélectionnons également les champs MontantChiffre d'affairesDt et MontantChiffre d'affairesKt

Renseignons les alias des champs que nous avons choisis, pour cela nous irons dans l'onglet Syndicats/Alias et définissez les noms de champ souhaités.

Étant donné que dans notre rapport, les données seront affichées de manière hiérarchique (la contrepartie est au premier niveau et tous ses contrats sont au second), nous allons configurer la sortie des données dans la hiérarchie à l'aide des résultats. Allons à l'onglet dans le constructeur Résultats. Glisser-déposer dans les champs de regroupement séquentiellement contrepartie et Accord de contrepartie, et en finale À venir et Consommation.

Ceci termine le travail dans le constructeur de requête, cliquez sur le bouton D'ACCORD et nous voyons que le texte de notre requête est apparu dans le code du programme.

Requête.Texte = "SELECT | Chiffres d'affaires autoportants. | Accord de l'entrepreneur Subconto2 AS, | Chiffre d'affaires autoportant.MontantChiffre d'affairesDt AS Incoming, | Chiffre d'affaires autoportant.MontantChiffre d'affairesKt AS Dépense| DEPUIS | InscrireComptabilité.Chiffres.Autoportants(&Début de Période, &Fin de Période, Compte DANS LA HIÉRARCHIE (&Compte62),) ASChiffres Autoportants RÉSULTATS | SOMME(Revenu), | SOMME(Dépense) | ON | contrepartie, | Accord de contrepartie";

Après avoir fini de rédiger la demande, nous commencerons à remplir les zones DataContractor, DataAgreementContractor et Sous-sol. Nous remplirons tous ces champs avec les données reçues lors de l'exécution de la demande. Puisque notre requête contient des groupements( contrepartie et Accord de contrepartie) sélectionnez-y des données comme suit :

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

Ainsi, nous recevrons des enregistrements avec des totaux pour toutes les contreparties.

Avant de contourner les exemples de données à l'aide d'une boucle, nous initialisons les variables destinées au calcul des totaux pour le rapport :

Revenu total = 0 ; DépenseTotale = 0 ;

Pour que les données du rapport soient affichées avec une hiérarchie (et réparties par "+"), définissez le début du regroupement automatique des lignes du document de feuille de calcul :

TabDoc.StartAutogroupRows();

Toutes les préparations sont terminées, commençons maintenant à contourner les résultats de la requête. Le by-pass sera réalisé à l'aide de la boucle Au revoir

While SelectionContractor.Next() Cycle EndCycle ;

Au début de la boucle, réinitialiser les paramètres À venir et Consommation domaines DataContractor. Pourquoi est-ce? Imaginez une situation où la contrepartie Oncle Vasya, revenu 10 et dépense 5, et pour la contrepartie suivante Oncle Petya il n'y a pas de revenu ou de dépense, dans ce cas, si nous ne réinitialisons pas les paramètres À venir et Consommation, puis par dans la ligne par contrepartie Oncle Petya il y aura un revenu de 5 et une dépense de 10.

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

Après cela, remplissez la zone DataContractor exemple de données d'article

Fill inPropertyValues(AreaDataAccount.Parameters, SelectionAccount);

Après avoir rempli les données, vous pouvez afficher la zone dans feuille de calcul, Puisque nous utilisons le regroupement automatique des lignes, nous devons spécifier le niveau de la ligne dans le regroupement (dans notre rapport, il y aura deux niveaux, pour les contreparties le premier pour les contrats le second).

TabDoc.Output(AreaDataAccount,1);

Maintenant pour cette contrepartie nous allons faire une sélection en fonction de ses contrats.

SamplingAccountAgreement = SamplingContractor.Select(BypassingQueryResult.By Groupings);

Le by-pass sera réalisé à l'aide de la boucle Au revoir.

While SelectionAgreementContractor.Next() Cycle EndCycle ;

Dans le cycle des contrats des contreparties, nous réinitialiserons les paramètres À venir et Consommation, remplir la zone DataContract de la sélection et l'afficher dans un document tableur au second niveau d'enregistrements.

AreaDataAgreement.Parameters.Revenu = 0 ; AreaDataAgreement.Parameters.Expense = 0 ; Fill inPropertyValues(AreaDataContract.Parameters, SelectionContractorContract); TabDoc.Output(AreaDataContract,2);

Toujours dans ce cycle, nous ajouterons les valeurs actuelles aux variables pour calculer les valeurs totales des revenus et des dépenses.

TotalIncome = TotalIncome + SelectionAgreementContractor.Income ; TotalExpense = TotalExpense + SelectionContractor's Agreement.Expense ;

Ceci conclut la sortie des données dans la zone DataContractor, DataAgreementContractor terminé, il reste à terminer le regroupement automatique des lignes du document de la feuille de calcul.

TabDoc.EndAutoGroupRows();

Cycles entièrement responsables de la sortie des données dans la zone DataContractor et DataAgreementContractor ressemble à ca:

TabDoc.StartAutogroupRows(); Tandis que SelectionContractor.Next() Boucle AreaDataContractor.Parameters.Incoming = 0 ; AreaDataAccount.Parameters.Expense = 0 ; Fill inPropertyValues(AreaDataAccount.Parameters, SelectionAccount); TabDoc.Output(AreaDataAccount,1 ); SamplingAccountAgreement = SamplingContractor.Select(BypassingQueryResult.By Groupings); Tandis que SelectionAgreementContract.Next() boucle AreaDataAgreement.Parameters.Income = 0 ; AreaDataAgreement.Parameters.Expense = 0 ; Fill inPropertyValues(AreaDataContract.Parameters, SelectionContractorContract); TabDoc.Output(AreaDataAgreement,2 ); TotalIncome = TotalIncome + SelectionAgreementContractor.Income ; TotalExpense = TotalExpense + SelectionContractor's Agreement.Expense ; FinCycle ; FinCycle ; TabDoc.EndAutoGroupRows();

Il reste à afficher les données totales dans la zone Sous-sol et afficher la zone elle-même dans feuille de calcul.

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

Ceci termine le processus de rédaction d'un rapport externe pour 1C 8 sans utiliser ACS. Maintenant, il peut être généré en mode 1C:Enterprise 8 et ajouté au répertoire TraitementExterne Vous pouvez télécharger le fichier de rapport discuté dans l'article par .

Regardez la vidéo sur la création d'un imprimable externe pour une application gérée :

Pour connecter le traitement externe, les rapports, les formulaires d'impression pour la plate-forme 1C: Enterprise 8.2, il a été développé nouvelle normeà exécuter dans une application gérée (standard du sous-système de bibliothèque standard 8.2). Il y avait des "puces" qui n'étaient pas là avant, à savoir :

    Le type de traitement a été élargi : remplissage d'un objet, création d'objets liés. Désormais, dans les documents, vous pouvez ajouter vos propres boutons pour remplir l'intégralité du document, ainsi que vos propres boutons pour entrer sur la base.

    Un traitement peut contenir une liste de plusieurs opérations (commandes) à la fois, c'est-à-dire vous pouvez faire un traitement, où il y aura plusieurs éléments de menu à la fois : impression et bon de livraison, impression d'un ticket de caisse, impression d'une carte de garantie. (Note de l'auteur : auparavant dans l'ancienne norme, pour faire de telles choses, vous deviez tout faire en même temps (même si vous n'en aviez pas besoin) et vous n'aviez pas besoin de le fermer, ni de dessiner votre propre formulaire, qui avait les boutons nécessaires pour sélectionner l'opération nécessaire)

    Vous pouvez entrer sur la base et remplir des objets à la fois en fonction de plusieurs objets, et non d'un seul

    Vous pouvez programmer l'exécution des commandes du serveur (sur le serveur).

    Vous pouvez régler le mode sur "Sécurisé" ou "Non sécurisé", c'est-à-dire commencer le traitement en tenant compte de la restriction des droits ou les ignorer (comme dans le cas des pleins droits)

    Vous pouvez définir le mode d'utilisation : Ne pas utiliser, déboguer, utiliser. "Ne pas utiliser" - pas au travail, "Débogage" - visible uniquement par les administrateurs, "Utiliser au travail".

    Peut inclure une utilisation dans des formulaires d'objet et sous forme de liste

    Vous pouvez lier un traitement ou un rapport à tous les objets à la fois.

    Peut être personnalisé accès rapideà certaines commandes de traitement externe.

    Il est possible de spécifier dans quelles sections de l'interface les traitements et rapports supplémentaires doivent apparaître.

Alors, que peut-on raccorder aux configurations standards ?

Du point de vue de la plateforme, vous pouvez connecter :

  • traitement externe (fichiers avec l'extension « epf ») ;
  • rapports externes (fichiers avec l'extension "erf").

Du point de vue de l'espace applicatif (configuration), vous pouvez connecter les traitements externes et les rapports avec le formulaire * :

  • Traitement supplémentaire
  • Rapport supplémentaire
    • Juste un rapport supplémentaire
  • Remplir un objet
    • Boutons propres pour remplir des objets (document), auparavant il n'y avait que des boutons pour remplir la partie tabulaire.
  • Imprimer le formulaire
  • Signaler
    • Un rapport attaché aux objets (aux répertoires et aux documents).
  • Création d'objets liés
    • Saisie personnelle basée sur (dans l'élément de menu "Saisie basée sur", le bouton "Créer des objets liés ..." est ajouté)

*sur l'exemple de la rédaction « Gestion d'une petite entreprise éd. 1.2"

Voyons comment tout cela fonctionne. Pour connecter le traitement externe et le reporting, il existe une norme qui décrit l'interface d'interaction avec le traitement externe et le reporting, et il existe des exigences générales pour tous les types, et il existe des exigences spécifiques pour chaque type de traitement ou de rapport.

Commençons avec Exigences générales pour tous les types de traitement et de reporting. Afin de créer une connexion traitement externe ou le rapport, il faut déclarer la fonction d'export InformationOnExternalProcessing() dans le module objet, qui doit remplir la structure décrivant le comportement. Un exemple de cette fonction :

Fonction DetailOnExternalProcessing() Exporter
RegistrationData = Nouvelle Structure ;
RegistrationData.Insert("Name", "Exemple d'utilisation du traitement externe 8.2.");
RegistrationData.Insert("SafeMode", True);
RegistrationData.Insert("Version", "1.0");

//Traitement supplémentaire
//Rapport supplémentaire
// Remplissage de l'objet
//Signaler
//ImprimerFormulaire
//Créer des objets associés
RegistrationData.Insert("View", "AdditionalProcessing");

RegistrationData.Insert("Information", "Le traitement est effectué conformément à la nouvelle norme de connexion du traitement externe 8.2. Un exemple de traitement ""Hello Word"" ");

///////////// commandes //////////////////////////
tsCommand = Nouvelle table de valeurs ;
tzCommand.Columns.Add("Identifiant");
tzCommand.Columns.Add("Afficher");
tzCommand.Columns.Add("Modificateur");
tzCommand.Columns.Add("ShowNotification");
tzCommands.Columns.Add("Utiliser");


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

commandstring.Usage = "OpeningForm" ;

CommandString = tzCommand.Add();
stringCommand.Identifier = "2" ;
stringCommand.View = "commande ""Hello Word"" (ClientMethodCall)" ;
chaîneCommand.ShowAlert = true ;
CommandString.Usage = "CallClientMethod" ;

CommandString = tzCommand.Add();
stringCommand.Identifier = "3" ;
stringCommand.View = "commande ""Hello Word"" (Appel ServerMethod)" ;
chaîneCommand.ShowAlert = true ;
Commandstring.Usage = "CallServerMethod" ;

RegistrationData.Insert("Commandes", tzCommandes);

////////////// but (dans quels objets il est utilisé) /////////////////////////
//pour imprimer des formulaires, remplir, entrer des objets connexes
//AssignmentArray = Nouveau tableau ;
//ArrayAssignments.Add("Document.*"); // tous les documents sont affectés
//ArrayAssignment.Add("Document.Advance Report");
//Assignment array.Add("Document.Buyer's order");
//RegistrationData.Insert("Destination", Tableau d'affectations);

Renvoyer les données d'enregistrement ;

EndFunctions

Ainsi, comme vous pouvez le voir, la fonction remplit la structure RegistrationData, qui contient les éléments suivants (paramètres) :

    Nom - nom abrégé du traitement

    Version - informations sur la version de traitement

    Mode sans échec- est responsable de savoir si le traitement doit être effectué en tenant compte des droits de l'utilisateur. S'il est défini sur "False", alors le traitement ou le rapport sera effectué sans tenir compte des restrictions de droits (comme sous les pleins droits). Cette fonctionnalité est apparue dans la version 8.2, où lors de la création de traitements externes et de rapports, le mode est spécifié comme deuxième paramètre.

    Vue – type de traitement ou de rapport. J'ai listé les valeurs possibles au début de l'article, et valeurs possibles pour l'installation dans le code sont indiqués dans le commentaire

  • Commandes - un tableau de valeurs qui répertorie les commandes utilisées. Colonnes du tableau des valeurs :
    • Identifiant - n'importe quelle chaîne (identifiant de commande)
    • Affichage - description de la commande
    • Modificateur - chaîne (utilisée pour les formulaires d'impression supplémentaires)
    • ShowNotification - la fenêtre de notification apparaîtra avant le début et après la fin de l'exécution (pour les commandes client et serveur sans formulaire)
    • Utilisation - mode de démarrage du traitement :
      • Ouverture du formulaire - le formulaire de traitement s'ouvrira
      • CallClientMethod - appeler le formulaire de méthode d'exportation client
      • Appel de ServerMethod - appel d'une méthode d'exportation à partir d'un module de traitement

Selon le type de traitement ou d'état, ainsi que le mode de lancement de la commande "Utiliser", les méthodes définies dans le module formulaire, module objet sont appelées. La liste des paramètres passés est également différente. Des exemples d'appels et d'utilisation de tous les types de traitement sont joints.

Très souvent, lorsqu'au cours d'une consultation, il devient nécessaire de résoudre un problème complexe, je suggère à mes clients de le mettre en œuvre dans le programme 1C en utilisant soit traitement externe, ou plaque d'impression externe. Et il n'est pas rare que je tombe sur le fait qu'une personne n'est tout simplement pas familière avec une telle possibilité de programmes sur la plate-forme 1C Enterprise 8. Parfois, ils me jurent même, croyant que le développement et la mise en œuvre d'un tel traitement dans leur configuration le rendront impossible de mettre à jour automatiquement le programme. Que vous devez payer beaucoup d'argent pour mettre à jour le programme.

Afin de clarifier ces questions, ainsi que de dire ce que fonctionnalités utiles donner des formulaires de traitement externe et d'impression externe, j'ai décidé d'écrire cet article. Dans l'article, je ne considérerai pas l'aspect technique du processus de création du traitement. Cela sera probablement couvert dans un autre article. Ici, je vais essayer d'expliquer l'essence même du mécanisme et de donner des exemples précis de cas où le traitement externe et l'impression de formulaires peuvent bénéficier à l'utilisateur.

L'article discutera des options suivantes pour les objets enfichables externes supplémentaires :

  • Traitement externe supplémentaire des pièces tabulaires ;
  • Formulaires d'impression externes supplémentaires ;
  • Rapports externes supplémentaires ;
  • Traitement externe supplémentaire.

Quels sont les traitements externes supplémentaires, les rapports et les formulaires d'impression




Pour commencer, je voudrais parler en général de quels sont ces traitements externes, rapports et formulaires imprimés. Très souvent, lorsque vous travaillez avec une configuration typique, qu'il s'agisse de 1C ZUP ou de 1C Enterprise Accounting ou d'une autre configuration, il existe un besoin pour un type de fonctionnalité qui n'est pas fourni par les développeurs 1C. Par exemple, vous devrez peut-être formulaire imprimé, qui n'est pas réglementé, mais est utilisé pour les besoins internes de l'organisation. Ou requis d'une certaine manière processus (modifier, corriger) les données disponibles dans la base de données. Par exemple, modifier certains détails dans les documents pour la période requise, ce qui n'est pas pratique à faire manuellement avec de grandes quantités d'informations.

Dans ce cas, il y a deux options. La première, nous pouvons modifier la configuration elle-même, le programme lui-même. Après cela, il cessera d'être typique et le mettra à jour avec ceux assez des moyens simples que j'ai écrit ne fonctionnera pas. La mise à jour d'une configuration non standard est un processus plus long et plus sérieux. Par conséquent, avec cette approche, vous devrez très probablement payer un spécialiste 1C tous les mois pour mettre à jour le programme. Deuxième une option est de développer ou de faire développer un traitement externe ou un formulaire imprimé (rapport). Il s'agit essentiellement d'un module externe, qui est également développé dans le langage de programmation 1C dans le configurateur, mais n'apporte aucune modification à la configuration standard. Il existe indépendamment de la configuration elle-même. Pour leur stockage, des répertoires spéciaux sont utilisés: l'élément de menu principal "Service" -> "Rapports et traitement supplémentaires".

Traitement externe supplémentaire pour le remplissage des parties tabulaires

Séminaire "Life hacks for 1C ZUP 3.1"
Analyse de 15 hacks de la vie comptable en 1s zup 3.1 :

CHECK LIST pour vérifier la paie dans 1C ZUP 3.1
VIDEO - autocontrôle mensuel de la comptabilité :

Paie dans 1C ZUP 3.1
Instruction étape par étape pour les débutants:

Voyons maintenant quelles fonctionnalités chacun des quatre modules externes disponibles nous offrira. Commençons avec traitement externe des parties tabulaires. Il me semble que ces traitements des parties tabulaires des documents illustrent le mieux comment vous pouvez sérieusement modifier le programme sans recourir à l'édition de la configuration typique, mais en utilisant uniquement un traitement externe.

Pour que ce soit plus clair, je vais donner un exemple précis de ma pratique, dans lequel, pour résoudre le problème, j'ai utilisé traitement externe des parties tabulaires. Dans la configuration "1C Salary and HR Management" édition 2.5 il y a un document "Paiement pour les vacances et les week-ends"(ce document est écrit en détail). Dans un formulaire type, ce document offre la possibilité de remplir automatiquement la partie tabulaire par les salariés "Travail les jours fériés".

Le comptable a demandé de mettre en œuvre la possibilité de remplir ce document par les salariés dont les jours de travail, selon l'horaire, tombaient le week-end, c'est-à-dire "Travailler le week-end".

Ce fichier a été téléchargé dans le répertoire "Traitement externe des parties tabulaires"(élément de menu "Outils" -> "Rapports et traitement supplémentaires" -> "Traitement externe supplémentaire des parties tabulaires"). Lors de la création d'un élément de ce répertoire, il a été indiqué à quel document appartient le traitement téléchargé - "Paiement des vacances et week-ends de l'organisation", ainsi qu'à quelle section tabulaire - "Employés". Dans notre exemple partie tabulaire le document en a un, mais dans d'autres documents, il peut y en avoir plusieurs, et il est donc nécessaire d'indiquer spécifiquement à lequel d'entre eux appartient le traitement.

À la suite de l'ajout de ce traitement au répertoire "Traitement externe supplémentaire pour le remplissage des pièces tabulaires" dans le document "Paiement des jours fériés et week-ends" lui-même, le bouton "Remplir" apparaîtra avec une liste déroulante dans laquelle il sera possible de démarrer ce traitement. Dans notre cas, le bouton "Remplir les dimanches" est disponible dans la liste déroulante. L'appui lance l'algorithme contenu dans le traitement. À cet exemple la partie tabulaire sera remplie d'employés dont les jours de travail sont tombés sur un jour de congé. Veuillez noter que ce bouton n'existait pas auparavant (capture d'écran ci-dessus).

Ce mécanisme vous permet de résoudre un très large éventail de problèmes sans affiner la configuration elle-même. Par conséquent, j'utilise assez souvent cette opportunité pour mettre en œuvre des tâches client.

Plaques d'impression externes supplémentaires

Séminaire "Life hacks for 1C ZUP 3.1"
Analyse de 15 hacks de la vie comptable en 1s zup 3.1 :

CHECK LIST pour vérifier la paie dans 1C ZUP 3.1
VIDEO - autocontrôle mensuel de la comptabilité :

Paie dans 1C ZUP 3.1
Instructions étape par étape pour les débutants :

Cette option est très similaire à la précédente. Vous avez probablement vu et savez que presque tous les documents et même certains éléments des répertoires ont des formulaires imprimés. Ils, comme les règles, sont situés dans le coin inférieur droit de l'élément de formulaire du répertoire ou du document. Parfois, les formulaires imprimés standard ne suffisent pas. Par exemple, une organisation peut avoir sa propre forme de contrat de travail. Je vous rappelle que l'imprimé type "Contrat de travail" fait partie du formulaire de l'ouvrage de référence "Salariés".

Vous pouvez ajouter les vôtres à ces formulaires imprimés du répertoire. Pour cela, un formulaire d'impression externe est créé avec l'extension « .epf ». Ensuite, un élément de répertoire est créé pour lui "Formulaires d'impression externes supplémentaires"(élément de menu "Service" -> "Rapports et traitements supplémentaires") et un fichier avec l'extension ".epf" est ajouté à cet élément du répertoire. Il est également nécessaire de préciser pour quel document ou répertoire le traitement est ajouté.

En conséquence, un formulaire de plus apparaîtra dans la composition des formulaires imprimés des éléments du répertoire "Employés" - "Contrat de travail (LLC Alfa)", qui n'y existait pas auparavant. Et elle apparence et le remplissage des données est défini par le programmeur dans le fichier « .epf ».

Cette possibilité d'ajouter les formulaires d'impression nécessaires pour les documents et les répertoires est également très souvent demandée et, à mon avis, est une fonctionnalité plutôt pratique des programmes sur la plate-forme 1C Enterprise.

Rapports externes supplémentaires

Dans ce cas, on peut développer rapport externe. Il s'agit d'un fichier au format ".erf". C'est ce fichier qui déterminera l'apparence du rapport, quelles données de configuration il utilisera et qu'il demandera à l'utilisateur (par exemple, période, sélection par employé ou division). Le fichier est créé dans le configurateur 1C dans le langage de programmation 1C.

Un rapport externe peut être enregistré dans le cadre de la configuration à l'aide du manuel de référence "Rapports externes supplémentaires" (élément de menu "Outils" -> "Rapports et traitements supplémentaires"). Ils ne sont pas liés à un document ou à un répertoire spécifique, ces informations ne sont pas obligatoires.

Avec cette option de stockage, le rapport est lancé depuis le même répertoire (double-clic).

Vous pouvez également exécuter un rapport externe à l'aide de l'élément de menu "Fichier" -> "Ouvrir". Cette option peut être utilisée s'il est plus pratique pour vous de stocker des rapports externes non pas dans le cadre du programme, mais simplement dans des dossiers sur votre ordinateur.

Traitement externe supplémentaire

Traitement externe ont à peu près la même signification que les rapports externes. Mais contrairement aux rapports, qui sont utilisés pour afficher des données base d'informations dans un format convivial, le traitement vise à modifier, éditer ou transformer les données de l'infobase. L'éventail des tâches résolues à l'aide d'un traitement externe est assez large.

Par exemple, traitement de déchargement des bulletins de paie. Malgré la présence dans la ZUP traitement typique(lire à ce sujet), parfois, il peut ne pas convenir à une banque particulière et un traitement externe est en cours de développement qui convertit et télécharge les informations dans le format souhaité.

j'apporterai encore un exemple traitement assez sans prétention, mais assez populaire. Si dans 1C ZUP le document «Transfert de l'impôt sur le revenu des particuliers au budget» n'est pas conservé au cours de l'année, alors lors de la formation de l'impôt sur le revenu des 2 personnes pour l'année, le champ «Répertorié» pour chaque employé sera zéro, ce qui n'est généralement pas vrai. Saisir le document «Transfert de l'impôt sur le revenu des particuliers au budget» pour l'année entière peut être assez fastidieux, compte tenu des particularités du document lui-même. Mais vous pouvez faire un traitement externe, qui dans le 2-NDFL généré remplira simplement le champ "Liste" pour chaque employé, en fonction des valeurs du champ "Calculé". Habituellement, les comptables aiment vraiment cette option.

Le traitement externe a exactement les deux mêmes options de stockage et de lancement : soit utiliser la référence "Traitement externe supplémentaire"(élément de menu "Outils" -> "Rapports et traitements supplémentaires"), ou l'élément de menu principal "Fichier" -> "Ouvrir".

C'est tout pour aujourd'hui!

Pour être le premier informé des nouvelles publications, abonnez-vous aux mises à jour de mon blog :

Attention!
Tout traitement à partir des disques ITS est destiné à des fins d'information et exclusivement aux utilisateurs enregistrés d'ITS.

Sélection et traitement des objets. (Universel)

Recherche des objets dans des documents et des répertoires remplissant certaines conditions. Traite les résultats de la recherche.

Récapitulatif de la base d'informations. (Universel)

Effectue le cumul IB des configurations typiques :

  • SCP 3.1.
  • PB 1.6.
  • UT 10.3.

Enregistrement des modifications pour échange. (Universel)

Edite, en mode applicatif managé, l'enregistrement des modifications des objets d'échange. Vous permet de modifier l'enregistrement actuel sur différents nœuds. Modifie le nombre de messages reçus et envoyés.

Conversion du journal d'activité de l'utilisateur. (Universel)

Convertit en programme, dans le langage intégré, un journal des actions de l'utilisateur.

Recherche plein texte dans les données. (Universel)

Indexation et recherche dans les données.

Trouver et remplacer des valeurs. (Universel)

Recherche et remplace les valeurs de référence dans les objets SI.

Mise en place d'un journal technologique. (Universel)

Crée ou modifie un fichier journal de processus. Il a la capacité de configurer la création d'un vidage sur incident, de configurer les conditions et les événements, à l'occurrence desquels les informations seront écrites dans ce journal.

Console de travail. (Universel)

Surveille le fond et tâches routinières. Supprime, en crée de nouveaux.

Conversion de traitement externe. (Universel)

Modification des informations confidentielles. (Universel)

Changement sélectif ou nettoyage de la sécurité de l'information à partir de certaines informations.

Changement de groupe de détails. (Universel)

Modifie les détails et les parties tabulaires dans les documents et les répertoires.

Déchargement et chargement des utilisateurs. (Universel)

Décharge et charge les utilisateurs IB dans un fichier XML.

Téléchargement de données vers des bases de données externes. (Universel)

Décharge les structures de données vers un SGBD externe à l'aide d'ADO dans deux modes :

  • Tout télécharger
  • Télécharger les modifications (utilisé pour synchroniser les modifications dans l'IB de travail, avec l'IB de réception). Ce mode utilise des mécanismes de plan d'échange.

Prend en charge les SGBD suivants :

  • Microsoft SQL
  • IBMDB2
  • Oracle
  • PostgreSQLName
  • MySQL

Téléchargement et chargement de données XML. (Universel)

Décharge et charge les données dans IB, complètement et partiellement. Il est utilisé pour transférer des données entre des configurations qui sont similaires dans la composition des objets.

Chargement de données à partir d'un document de feuille de calcul. (Universel)

Charge des données dans des répertoires et des parties tabulaires à partir de feuilles de calcul.

Fonctionne dans un client lourd dans un mode d'application normal.

Console de requête. (Universel)

Il est d'une grande aide pour compiler des rapports et créer des requêtes.

Allez dans le menu du haut Service->->.

Le formulaire de liste des répertoires de traitement externe apparaît. Cliquez sur le bouton dans le menu du haut Ajouter.

Le formulaire d'ajout d'un nouvel objet apparaît. Nous appuyons sur le bouton d'ouverture et sélectionnons le fichier avec le traitement souhaité. Après avoir choisi fichier souhaité, si nécessaire, précisez le nom du traitement (champ Nom). Après cela, vous devez cliquer sur OK pour enregistrer vos modifications.

Après cela, la fenêtre de création d'élément de répertoire se ferme, et vous revenez au formulaire de liste, dans lequel le nouveau traitement est déjà présent.

C'est tout! Le processus d'ajout de traitement à la configuration est maintenant terminé. Pour ouvrir ultérieurement ce traitement, rendez-vous dans l'ancien chemin : Service->Rapports et traitement supplémentaires->Traitement externe supplémentaire.

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

Il existe plusieurs types de traitement externe pour 1C : Enterprise 8. Dans ce didacticiel, je vais vous montrer comment attacher une modification en masse et remplir un traitement d'objet spécifique.

Pour le premier cas, ajoutons un traitement pour remplir la référence de la liste des stocks à partir d'Excel.

Accédez à la section appropriée du programme :


Il est nécessaire que le signe d'utilisation de rapports et de traitements supplémentaires soit défini, suivez le lien hypertexte vers la liste des objets externes :

Cliquez sur la liste Créer:


Dans la boîte de dialogue qui s'ouvre, sélectionnez le fichier souhaité avec traitement :


La fiche d'un nouvel objet externe dans le programme a été remplie, il ne reste plus qu'à configurer logement(sections du programme à partir desquelles le traitement sera disponible) :


Comme emplacement, sélectionnez une section arbitraire (ou plusieurs) :


Écrivez et fermez la carte d'objet externe :


Ouvrons maintenant le traitement depuis l'interface :


La liste est vide, cliquez sur Personnaliser la liste:


Nous choisissons notre traitement :


Maintenant, il est disponible pour la sélection. Pour ouvrir le traitement, vous devez cliquer sur Courir:


Voyons maintenant comment le traitement est ajouté pour remplir (modifier) ​​des objets spécifiques. Par exemple, prenons un traitement externe qui attache des analyses à des éléments sélectionnés de répertoires ou de documents système. Le début de l'ajout d'un tel traitement ne diffère pas de la version précédente. La différence est que dans ce cas, le placement est rempli automatiquement (et non par la section programme, mais par les types d'objets de base) :


Si vous le souhaitez, la liste de placement peut être ajustée ( n'ajoutez pas de placement supplémentaire, mais supprimez l'excédent):


Pour accepter la modification, la carte de l'objet externe doit également être enregistrée.

Pour utiliser le traitement, vous devez vous rendre sur un objet spécifique de la base (dans la liste de placement), cliquez sur Remplir dans la barre de commandes et sélectionnez la commande :