Utilisation des sélections dans SCD. SKD non seulement pour les rapports - mise en œuvre de sélections universelles Sélection SKD

À quoi peut servir SKD ?

L’opinion établie est à des fins de reporting.

En fait Les capacités d'ACS vont au-delà de la création de rapports universels.

Et aujourd'hui, nous allons montrer comment en utilisant le système de contrôle d'accès, l'utilisateur pourra configurer une sélection flexible des données. De plus, cette sélection sera utilisée lors de l'obtention et du traitement des données.

Pour quelles tâches cela sera-t-il utile ?

Donne moi exemples de configurations typiques:

  • Traitement « Mise en ligne des données sur le site »
  • Constitution d'une liste de prix
  • Téléchargement de données vers TSD (terminal de collecte de données)
  • Segmentation des produits, partenaires
  • Formation des commandes (clients, fournisseurs) selon les besoins
  • Planification des réparations dans 1C:ERP.

Autrement dit, l'outil est utile partout où il est nécessaire de fournir à l'utilisateur de larges options de sélection.

Création d'une sélection aléatoire sous une forme contrôlée à l'aide d'ACS

La leçon couvre le travail avec générateur de paramètres schémas de disposition des données :

  • Sortie de sélection de formulaire
  • Connexion logicielle entre le générateur de paramètres et le schéma de configuration
  • Création de sélections par défaut dans le système de contrôle d'accès.

Réception des données de la base de données avec filtrage par sélection ACS

La vidéo montre comment sélectionner des données à l'aide de la sélection précédemment définie dans le générateur de paramètres.

Un objet « effrayant » est utilisé – ProcessorOutputResultCompositionDataIntoValueCollection.

En fait, tout n'est pas si compliqué : en 8 minutes, nous résolvons le problème.

Stockage des sélections SKD dans la base d'informations

Dans la leçon, nous regarderons enregistrement des paramètres du générateur ACS en utilisant le Value Store.

Voyons comment résoudre ce problème dans la configuration « 1C : Manufacturing Enterprise Management 1.3 ».

Bon visionnage ! :)

En général, ACS offre de nombreuses opportunités.

Voici quelques « astuces » que nous n’avons même pas eu le temps de décrire sur la page du cours.

Si vous devez collecter données provenant de différentes sources, il y a trois options.

Vous pouvez essayer de composer une requête « universelle » pour toutes les données (longue), vous pouvez afficher les données de plusieurs requêtes en boucle (structure rigide et inflexible) - ou vous pouvez simplement utiliser ACS et connexion des jeux de données au lieu d'une seule demande.

En même temps, il est important d'obtenir des résultats corrects - cela a ses particularités s'il existe plusieurs sources

Avec l'aide de SKD, vous pouvez simplement obtenir un instantané des dernières nouvelles pour chaque date du rapport.

Ou, pour plus de clarté, - obtenir le prix du produit pour chaque date de vente.

Avec l'aide d'ACS, vous pouvez organiser afficher toutes les dates de la période dans le rapport, et pas seulement ceux pour lesquels il y avait des données dans le rapport (ajout de dates sans programmation, uniquement avec les capacités du système de contrôle d'accès)

Grâce à ACS, vous pouvez organiser des regroupements imbriqués avec ajout de périodes (année/trimestre/mois, etc.)

Organisez le rapport comme vous le souhaitez, par exemple, affichez l'en-tête de colonne verticalement et les données de cette colonne horizontalement.

Permettez à l'utilisateur de choisir la fréquence à laquelle les données seront affichées dans le rapport (par année, par trimestre, par mois) - uniquement par paramètres, sans modifier le module de rapport.

Comment combiner plusieurs conditions en utilisant OR dans un rapport ? Cette option, par exemple, n'est pas disponible dans le générateur de rapports, mais est disponible dans l'ACS.

Si vous affichez des données récapitulatives sous forme de graphique, vous devez pouvoir contrôler précisément leur apparence : visibilité des marqueurs d'une série, alternance des couleurs des séries de graphiques, séparation des données passées des données futures sur un graphique par une ligne verticale. , etc.

Bien sûr, il y a des nuances auxquelles il faut prêter attention.

Lors de la création du rapport, le développeur a débogué le texte de la requête, mais lors de l'utilisation de cette requête dans un rapport sur le système de contrôle d'accès, le système produit un résultat incorrect.

Par conséquent, il est important de pouvoir obtenir la requête que le système exécute réellement pour obtenir les données de la base de données et de déboguer une telle requête.

Lors de l'ajout de détails à un document-enregistreur dans un rapport, le système produit parfois des soldes d'ouverture et de clôture « incorrects ».

Par conséquent, il est important de configurer correctement les champs du rapport sur le système de contrôle d'accès afin que les soldes soient affichés correctement avec et sans détail du document.

Le résultat du rapport peut changer en fonction de l'endroit où la sélection par valeur de ressource est configurée - au niveau du rapport et au niveau d'un groupe individuel, vous devez surveiller cela.

Si tu veux maîtriser ACS professionnellement et quotidiennement appliquer dans votre travail, inscrivez-vous au cours :

Soutien - 2 mois. Portée du cours – 34 heures de cours.

Ne retardez pas vos études !

Extension du langage de requête pour le système de composition de données

L'extension du langage de requête pour le système de composition de données est réalisée à l'aide d'instructions syntaxiques spéciales entourées d'accolades et placées directement dans le texte de la requête.

Éléments syntaxiques de l'extension du langage de requête du système de composition de données

CHOISIR

Cette phrase décrit les champs que l'utilisateur pourra sélectionner pour la sortie. Après ce mot-clé, les alias des champs de la liste de sélection de requête principale qui seront disponibles pour la configuration sont répertoriés, séparés par des virgules.

Par exemple:

(SELECT article, entrepôt)

Après l'alias du champ, il peut y avoir une combinaison de caractères « .* », qui indique la possibilité d'utiliser des champs enfants de ce champ.

Par exemple, l'entrée Nomenclature.* indique la possibilité d'utiliser des champs enfants du champ « Nomenclature » (par exemple, le champ « Nomenclature.Code »). L'élément SELECT ne peut apparaître que dans la première requête de jointure.

Les champs sur lesquels l'utilisateur peut appliquer une sélection sont décrits. Cette proposition utilise des champs de table. L'utilisation d'alias de champs de liste de sélection n'est pas autorisée. Chaque partie de l'union peut contenir son propre élément WHERE.

(OÙ Nomenclature.*, Entrepôt)

Un exemple simple

Il faut obtenir les ventes de la période + afficher l'intégralité de l'article, qu'il y ait eu des ventes ou non. C'est-à-dire que vous devez sélectionner les données du tableau de chiffre d'affaires du registre des ventes, les données du répertoire de nomenclature. Laissons de côté la question de savoir pourquoi nous avons besoin de toute la nomenclature.

Pour résoudre le problème, vous pouvez créer une requête qui connecte l'article et la table Chiffre d'affaires avec une jointure gauche, par conséquent, pour l'article qui n'a pas été vendu dans la période sélectionnée, nous obtiendrons les valeurs des champs Contrepartie, Accord, Quantité, Somme= Nul. Cette demande:

SELECT ReferenceNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty, SalesTurnover.Counterparty Agreement, SalesTurnover.QuantityTurnover AS Quantité, SalesTurnover.CostTurnover AS Coût FROM Reference.Nomenclature AS ReferenceNomenclature CONNEXION GAUCHE Registre Accumulations.Sales.Turnover AS SalesTurnover Software SprNomenclature.Link = SalesTurnover. Nomenclature

Voici le résultat :

Contrepartie Accord Nomenclature Quantité Somme
nul nul _Test1 nul nul
SARL "Cornes et Sabots" Accord1 Chaussons 10 1200
"Gazprom" Un contrat sympa Bottes 5 13000
nul nul Galoches nul nul
nul nul Ardoises nul nul

Dans cet exemple, il n'y a eu aucune vente des articles : "Couvre-chaussures" et "Pantoufles".

Et tout irait bien, si nous regroupons l'échantillon par contrepartie, alors tous les articles invendus tomberont dans un groupe distinct, où Contrepartie = Null, mais le client souhaite avoir une sélection aléatoire dans le rapport par champ contrepartie (naturellement, cela désigne la contrepartie du registre des ventes). Que dois-je faire? Après tout, en fait, il suffit de filtrer le tableau Ventes. Si nous utilisons la saisie semi-automatique dans le constructeur ACS, alors les champs de sélection disponibles incluront le champ Contrepartie, tout semble aller bien, mais lors de l'exécution d'un rapport avec sélection par contrepartie, nous perdrons tous les enregistrements de la connexion avec l'élément. Par exemple, définissons la sélection : Contrepartie = SARL "Cornes et Sabots". Le résultat ressemblera à ceci :

Ce n’est pas du tout ce dont nous avons besoin, n’est-ce pas ?

Pour résoudre le problème, vous pouvez bien entendu ajouter un paramètre à la requête, par exemple aux paramètres d'une table virtuelle Chiffre des ventes, mais en même temps, la flexibilité de définition du type de comparaison est perdue.

Il existe une solution : pour cela dans générateur de requêtes sur l'onglet Composition des données => les tables ajouter un champ de condition aux conditions de la table virtuelle Chiffre des ventes et change son pseudo en Sélection des contreparties

Afin de ne pas confondre l'utilisateur avec les champs de sélection, nous désactiverons le champ de condition Contrepartie et changez le titre du champ Sélection des contreparties


Suite à l'exécution de ce schéma avec la sélection activée par le champ contrepartie, la requête résultante prendra la forme :

SELECT Nomenclature de référence.Link AS Nomenclature, SalesTurnover.Counterparty AS Contrepartie, SalesTurnover.Counterparty Agreement AS Accord de contrepartie, SalesTurnover.QuantityTurnover AS >Quantité, SalesTurnover.CostTurnover AS Coût, PRESENTATIONLINK(SalesTurnover.Counterparty Agreement) AS ContractController agentIntroduction, REPRESENTATIONLINK(SalesTurnover. Contrepartie) AS CounterpartyIntroduction, SprNomenclature.Presentation AS NomenclaturePresentation FROM Directory.Nomenclature AS SprNomenclature CONNEXION GAUCHE Registre Accumulations.Sales.Turnover(&P , , , Counterparty = &P3 ) AS SalesTurnover BY SprNomenclature.Link = SalesTurnover.Nomenclature

Et en conséquence le résultat :

Contrepartie Accord Nomenclature Quantité Somme
nul nul _Test1 nul nul
SARL "Cornes et Sabots" Accord1 Chaussons 10 1200
nul nul Bottes nul nul
nul nul Galoches nul nul
nul nul Ardoises nul nul

Test1 est un groupe du répertoire Nomenclature dans lequel tout se trouve

Le schéma XML du rapport utilisé dans la publication est joint à la publication. J'ai créé le circuit dans Integrated Automation, mais je pense que tout fonctionnera bien dans UPP et UT 10

Résumer

Cet exemple montre comment créer vos propres paramètres de sélection dans le système de contrôle d'accès et désactiver ceux créés automatiquement si vous concevez un circuit avec l'indicateur activé. Saisie automatique.

Si vous avez suffisamment d'expérience pour créer des circuits sans utiliser Remplissage automatique- alors ce conseil n'a aucun sens.

Logiciel utilisé

  • Programme de capture d'écranSnimOK !
  • Éditeur de fichiers XML

Pour écrire un traitement, les programmeurs devaient souvent utiliser des requêtes pour obtenir des données, puis les traiter. Les données, à leur tour, ont été obtenues à partir de la demande. Eh bien, une demande sans sélection ni filtre est rare. Parlons des sélections dans de telles requêtes, en utilisant l'exemple de requête :

Afin d'organiser la sélection par contrepartie pour l'utilisateur sous une forme régulière, le programmeur devait placer trois éléments sur le formulaire, qui ressemblaient à ceci :

Combien d'efforts faut-il à un programmeur pour décrire différents types de comparaisons (égales, non égales, dans une liste, dans un groupe...) et, sur la base de ces types de comparaisons, affiner sa demande finale d'obtention de données.

Voyons comment cela peut être réalisé avec ACS. Dans notre traitement, créons une mise en page avec le type Schéma de composition de données et remplissons-la avec notre demande :

Dans l'onglet Paramètres, nous ajouterons un nouveau regroupement sans détail et, dans notre exemple, le champ Compte, puisqu'au final nous mettrons tout dans la table de valeurs :

Et dans l'onglet Sélection, ajoutez la Contrepartie à la sélection :

Commençons maintenant à créer le formulaire. Affichons sur le formulaire du traitement lui-même la Sélection avec laquelle l'utilisateur va travailler. Nous allons afficher un élément de type Table Field sur le formulaire et lui donner le nom Selection avec le type de données Composer.Settings.Selection :

Créons maintenant des gestionnaires d'événements pour le formulaire OnOpen et un gestionnaire pour cliquer sur le bouton Exécuter, le code est présenté ci-dessous :

Disposition Perem ; Procédure ButtonExecutePress(Button) Result.Clear(); LayoutLinker = newDataLayoutLayoutLinker ; Layout Layout = Layout Composer.Execute(Layout, Composer.GetSettings(), Type("DataCompositionLayoutGeneratorForValueCollection")); CompositionProcessor = newDataCompositionProcessor ; LayoutProcessor.Initialize(LayoutLayout); Processeur de sortie = Nouveau processeur de sortie du résultat de la composition des données en une collection de valeurs ; OutputProcessor.SetObject(Résultat); OutputProcessor.Output(CompositionProcessor); Si FormElements.Result.Columns.Quantity() = 0 Alors FormElements.Result.CreateColumns(); fin si; EndProcedure ProcedureOnOpen() Layout = GetLayout("Layout"); SourceAvailableSettings = Nouveau SourceAvailableSettingsDataComposition (Mise en page); Linker.Initialize(SourceAvailableSettings); Linker.LoadSettings(Layout.DefaultSettings); Fin de la procédure

Le traitement est prêt, après l'avoir lancé, vous pouvez immédiatement voir dans notre Sélection la Contrepartie apparue dans notre Sélection, parmi laquelle vous pouvez sélectionner tout type de comparaison, ainsi qu'ajouter des lignes de sélection supplémentaires en utilisant les détails de l'annuaire Contreparties :

C'est tout, j'espère que cet article vous aidera à améliorer la flexibilité des sélections dans votre traitement.

Kononov Sergueï