Pour ouvrir une demande de liste dynamique 1s 8.3. Méthodes de récupération et de mise en cache des données avec une liste dynamique

Enfin, le rêve de tout enfant de sept ans est devenu réalité. À quelle fréquence les utilisateurs du programme 7.7 ont-ils demandé une sélection normale d'éléments ? Pour que vous puissiez voir les soldes, les prix et définir des filtres. Nous avons dû trouver diverses astuces, notamment l'écriture de composants externes. Dans 1C 8.2, des listes dynamiques sont apparues. Je propose de réfléchir à ce que c'est et à ce qu'ils peuvent nous donner dans 1C 8.3.

Prenons comme base une certaine configuration de test de 1C : « Enterprise Accounting 3.0 ». Nous ne ferons pas de sélection maintenant, nous allons juste ajouter un autre formulaire de sélection dans le répertoire « Nomenclature » et en faire temporairement le principal :

Une fois créé, le système ajoutera par défaut un champ tableau de type « Liste dynamique » au formulaire.

Entrons dans ses propriétés et voyons ce qu'il y a.

Tout d’abord, nous nous intéressons à la case à cocher « Demande personnalisée ». Cela nous révélera tous les avantages d’une liste dynamique. Nous aurons la possibilité de rédiger notre propre requête, avec des paramètres. Cochez la case et cliquez sur le lien « Ouvrir » :

Une fenêtre s'ouvrira avec le code terminé dans . Pour l’instant, tous les champs du répertoire « Nomenclature » y sont simplement répertoriés.

Obtenez 267 leçons vidéo sur 1C gratuitement :

Comme vous pouvez le constater, il y a un bouton d'appel « » et une case à cocher qui permet de modifier dynamiquement le contenu de la liste. Autrement dit, lorsqu'un autre utilisateur modifie quelque chose dans le répertoire, cela changera également dans notre liste. De plus, il existe un onglet « Paramètres », mais nous y reviendrons plus tard.

Requête personnalisée dans la liste dynamique

Tout d’abord, créons la demande dont nous avons besoin avec les soldes et les prix. Comme ça:

Onglet « Paramètres »

Et maintenant la meilleure partie ! Allez dans l'onglet "Paramètres". Et on voit immédiatement que sur le premier onglet on peut faire n'importe quelle sélection pour n'importe quel champ de la requête :

Définition par programme des paramètres de requête dans une liste dynamique 1C 8.3

N'oubliez pas que nous avons deux paramètres dans la demande : « Période » et « Type de prix ». Il faut les passer dans la requête, sinon il y aura une erreur.

Écrivons ces paramètres dans les paramètres du formulaire, et ajoutons les lignes suivantes dans le module formulaire :

Liste &OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing). Possibilités. SetParameterValue("Période" , Paramètres. Date) ; Liste. Possibilités. SetParameterValue("PriceType", Parameters.PriceType) ; Notes d'accueil de EndProcedures de De l'autre côté du miroir

21/04/2014 Réception des données de liste dynamique

Implémenté dans la version 8.3.6.1977.

Nous avons implémenté la possibilité d'obtenir facilement et commodément des données affichées à l'aide d'une liste dynamique.

Vous aurez peut-être besoin de données de liste dynamique afin de les imprimer sous une forme non standard et « spécifique ». Ou afin d'effectuer certaines actions avec eux. Par exemple, envoyez une lettre à tous les entrepreneurs que vous avez sélectionnés dans la liste en fonction de certains critères.

De plus, il existe un certain nombre de tâches dans lesquelles l'utilisateur, en plus de la liste des éléments, souhaite également voir les données récapitulatives associées à cette liste. Par exemple, après avoir sélectionné des produits d'un certain groupe de produits et d'un certain fournisseur, il souhaite immédiatement voir le nombre total de ces produits dans la base de données.

Une liste dynamique à elle seule ne peut pas vous fournir ces informations. Le but d'une liste dynamique est de fournir une visualisation rapide de grandes quantités de données. Par conséquent, il lit les données en morceaux nécessaires pour les afficher sur un ou deux écrans. Et « ne sait rien », par exemple, de la quantité totale de données qu’il doit compter.

En général, afin d'obtenir les informations supplémentaires souhaitées par l'utilisateur, vous devez exécuter une requête de base de données. Exactement le même que celui utilisé dans la liste dynamique.

Avant, tu étais capable de faire ça. Mais cela n'a pas toujours été facile. Après tout, en plus du texte de la requête originale sur laquelle fonctionne la liste dynamique, vous deviez connaître toutes les sélections, tris et autres paramètres que l'utilisateur définit de manière interactive dans le tableau affichant les données.

Ce problème peut désormais être résolu simplement. La table de liste dynamique dispose désormais de deux nouvelles méthodes :

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Ainsi, vous obtenez le schéma de présentation des données lui-même et, surtout, tous ses paramètres, grâce auxquels l'utilisateur voit la liste exactement comme ça. Tout ce que vous avez à faire est de composer la mise en page par programme et de l'afficher dans une collection de valeurs (pour le traitement du programme) ou dans une feuille de calcul (pour l'affichage) :

En conséquence, vous recevrez une structure (ou un rapport) contenant des colonnes et des lignes affichées dans un tableau de liste dynamique.

Le point important est que la mise en page et les paramètres que vous recevez du tableau de liste dynamique prennent en compte, entre autres, la visibilité des colonnes et la recherche appliquée. Les paramètres étant obtenus séparément, vous pouvez modifier la composition des champs à votre guise et obtenir, par exemple, toutes les colonnes de la liste, et pas seulement celles visibles par l'utilisateur.

Lors de la sortie vers une feuille de calcul, il y a un autre moment agréable. En général, l'apparence du rapport correspondra à l'apparence de la table de liste dynamique au moment de la réception du schéma et des paramètres. Y compris la conception conditionnelle de la table. Vous n'aurez besoin de quelques actions supplémentaires que si vous souhaitez transférer la conception conditionnelle du formulaire vers le rapport.

En plus des types de données primitifs que l'on peut trouver dans n'importe quel langage de programmation, il existe des types uniques dans 1C. Chacun d'eux a ses propres propriétés, méthodes, fonctions, objectifs et nuances d'utilisation dans le système. L'un de ces types est une liste dynamique, qui facilite grandement de nombreuses tâches appliquées. C'est pourquoi les développeurs doivent connaître et être capables de manipuler cet outil universel.

Caractéristiques des listes dynamiques dans 1C

Le but de ce type est d'afficher les informations de n'importe quelle table de base de données, quel que soit son type. Le mécanisme a été créé sur la base de SKD et possède des capacités similaires. Mais cela ne signifie pas que vous devrez nécessairement rédiger une demande en langage 1C, même si cette opportunité existe et doit être utilisée. Vous pouvez simplement spécifier la table dont les informations vous intéressent et 1C générera indépendamment une requête simple.

Pour voir comment se forme une liste dynamique et quelles données elle affiche, vous devez ouvrir les formulaires gérés là où elle se trouve dans le configurateur : dans la liste des détails, utilisez le menu contextuel pour ouvrir ses propriétés et faites attention au « Personnalisé Demande ». S'il n'y a pas de case à cocher, alors le paramètre « Table principale » reflète la table de la base de données à partir de laquelle les données sont extraites. Sinon, la liste dynamique reflète les données d'une requête personnalisée, visibles en ouvrant les paramètres de la liste.

Le schéma de requête personnalisé est beaucoup plus couramment utilisé, car il offre une excellente opportunité de combiner et d'afficher une grande variété de données. Le plus souvent, ce mécanisme est utilisé pour refléter les soldes des entrepôts, les prix des articles, les reçus, les dépenses ou les achats. Vous devez l'utiliser avec précaution, car les performances peuvent chuter pour les requêtes complexes.

Une autre propriété utile d'une liste dynamique s'ouvre lorsque vous cliquez sur l'inscription « Paramètres de la liste ». Ce menu vous permet de rendre les informations plus accessibles et compréhensibles pour les utilisateurs finaux, même en utilisant un ensemble standard de champs. Que la demande soit arbitraire ou non, vous verrez l'onglet « Paramètres », où vous pourrez spécifier :

  • Sélection de liste dynamique ;
  • Groupes;
  • Tri;
  • Décor.

L'utilisation de paramètres rend les listes dynamiques universelles et assez flexibles. Vous pouvez également les lier aux détails d'un formulaire géré, et les données changeront en fonction des paramètres sélectionnés par l'utilisateur. L'utilisation de ces mécanismes peut être comprise et appréciée en considérant des exemples de problèmes réels.

À titre d'exemple, considérons la tâche consistant à refléter les restes de la nomenclature sur une forme contrôlée. Dans la pratique réelle, de telles commandes se produisent assez souvent dans diverses configurations, et une liste dynamique est un outil idéal. Pour cette tâche, nous devrons utiliser une requête personnalisée, des paramètres de liste dynamique et ses paramètres.

Pour plus de clarté, créons un traitement externe distinct et plaçons-y une liste dynamique. Pour mettre en œuvre nos plans, le tableau avec la nomenclature ne suffira pas, nous devons donc autoriser une requête arbitraire. Nous y décrirons la connexion gauche du répertoire avec la liste des articles et le registre des soldes et définirons le répertoire comme table principale. Ce schéma permettra aux utilisateurs, travaillant avec une liste dynamique, d'ajouter ou de modifier des éléments.



SELECT NomenclatureList.Name AS Nom, GoodsInWarehousesRemainings.Warehouse AS Warehouse, GoodsInWarehousesRemainings.QuantityRemaining AS QuantityRemaining FROM Directory.Nomenclature AS NomenclatureList CONNEXION GAUCHE RegisterAccumulations.GoodsInWarehouses.Remainings(&CurrentDate,) AS GoodsOnUS TreasurysRemaining logiciel NomenclatureList.Link = ProductsInWarehouses Restes.Nomenclature OÙ

Puisque notre requête utilisait le paramètre « CurrentDate », nous devons définir sa valeur avant d'utiliser le traitement. Pour cela, dans le module formulaire de la procédure « When CreatedOnServer », à l'aide d'une commande standard, attribuez-lui la fonction « CurrentSessionDate ». Nous devons également afficher la liste dynamique sur le formulaire de contrôle et modifier l'ordre des champs pour plus de clarté. Faites glisser l'attribut « Nomenclature restante » dans les éléments du formulaire (partie supérieure gauche) et utilisez les flèches bleues pour modifier l'ordre des champs dans le tableau du formulaire.

&Sur la procédure du serveur Une fois créée sur le serveur (échec, traitement standard), la nomenclature demeure. Paramètres. Set ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


Déjà à ce stade, nous pouvons ouvrir notre traitement externe dans 1C et voir que la liste dynamique fonctionne. Nous pouvons consulter les soldes, créer des articles et des groupes et effectuer des recherches. Souvent, les clients demandent d'ajouter la possibilité de choisir la date à laquelle ils verront les soldes. Dans le cas d'un formulaire avec une liste dynamique, ceci est réalisé grâce à un champ supplémentaire et au paramétrage qui l'utilise.

Ajoutez l'attribut « DateRemaining » de type « Date » et transférez-le aux éléments du formulaire. Dans le champ événements, nous créons l'événement « OnChange » et écrivons le code de paramétrage du paramètre « CurrentDate » utilisé dans la requête dynamique. Pour qu'à l'ouverture du formulaire l'utilisateur comprenne immédiatement à quelle date il voit les soldes, nous apporterons de petites modifications à la procédure « When CreatedOnServer ».



&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)RemainingDate = CurrentSessionDate(); Élément Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); Fin de procédure &Sur la procédure client Remaining DateWhenChanged(Element)Nomenclature Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); Fin de la procédure

En conséquence, notre formulaire de liste dynamique peut refléter les soldes à n'importe quelle date.

Nous n'avons considéré qu'une petite partie des capacités de cette boîte à outils, mais cela suffit déjà pour comprendre la commodité de ce type de liste dynamique. Un mécanisme similaire est utilisé pour de nombreuses tâches, mais on le retrouve le plus souvent dans les configurations typiques des formulaires gérés :

  1. Sélection;
  2. Listes.

Pour recevoir une liste dynamique et sa demande dans des formulaires gérés standards, le développeur doit ouvrir le formulaire souhaité dans le configurateur. Dans la section détails, recherchez les détails avec le type de données « DynamicList » (le plus souvent il est mis en évidence en gras). Ses propriétés contiennent le texte de la demande, les sélections et d'autres paramètres.

services Web est l'un des mécanismes de plateforme utilisés pour intégration avec d'autres systèmes d'information. C'est un moyen de supporter la SOA (Service-Oriented Architecture), une architecture orientée services qui constitue un standard moderne d'intégration d'applications et de systèmes d'information.

Un avantage important de l'architecture orientée services est qu'elle vous permet de développer l'infrastructure de l'entreprise de manière uniforme, sans détruire les solutions existantes. Son utilisation vous permet de minimiser les coûts en intégrant des systèmes hétérogènes et existants dans le paysage d'entreprise moderne. Il vous permet d'implémenter des composants logiciels faiblement couplés afin de maximiser leur réutilisation.

L'architecture orientée services est intensivement développée et prise en charge par les principaux fournisseurs. Elle est construite sur la base de services, autonomes ou gérés en externe. La meilleure manière de les mettre en œuvre consiste à utiliser les services Web. Ils sont indépendants de la plateforme, autonomes et pris en charge partout.

La solution applicative 1C:Enterprise 8 peut être à la fois un fournisseur de services Web et un consommateur de services Web publiés par d'autres fournisseurs.

Les systèmes utilisant des plates-formes matérielles et logicielles arbitraires peuvent agir en tant que consommateurs. La technologie des services Web est indépendante de la plate-forme.


Implémentation technique des web services

Si la solution applicative est un fournisseur de services Web, alors déposer, et en version client-serveur du travail l'interaction entre la solution d'application et les consommateurs de services Web s'effectue via le serveur Web, à l'aide du module d'extension du serveur Web.

De plus, lorsque le consommateur se tourne vers service Web de solution d'application, exécuté module de services Web. Ce module est contenu dans la configuration et contient des procédures qui sont exécutées lors de l'appel de certaines opérations de service Web.

Quand version client-serveur du travail ce module sera exécuté en grappe. Quand version de fichier de l'œuvre- dans le module d'extension du serveur web.

Si la solution applicative est un consommateur d'un fournisseur de services Web tiers, alors dans ce cas, l'interaction entre la solution applicative et le fournisseur de services Web est effectuée