Maison / Gains / 1s uv standard choix de période sqd. Nous créons un rapport avec une fréquence spécifiée sur le système de stockage

1s uv standard choix de période sqd. Nous créons un rapport avec une fréquence spécifiée sur le système de stockage

Créons un rapport avec un ensemble de données de requête :

PRODUITS SÉLECTIONNÉS DANS LES ENTREPÔTS Restant. Entrepôt, GoodsInWarehousesRemains. Nomenclature, Produits dans les Entrepôts Restants. QuantityBalance DU registre d’accumulation. Produits dans les entrepôts. Reste(&MyDate,) AS ProductsInWarehousesRemains

Passons maintenant à l'onglet Paramètres et voyons que le système, en plus de notre paramètre &MyDate, a également créé le paramètre &Period.
Afin de surveiller visuellement les périodes, nous allons créer un formulaire de rapport principal et y placer un champ de tableau contenant des données : Paramètres Composer.Settings.DataParameters

Sauvegardons le rapport et ouvrons-le dans l'entreprise. Dans le champ du tableau avec les paramètres, seul le paramètre &Période est affiché :

Par conséquent, toute modification de ce paramètre ne donnera pas le résultat souhaité.

Pourquoi le paramètre &MyDate n'est-il pas disponible ? Bien sûr, car dans l'onglet paramètres, il a une case cochée Limite de disponibilité.

Décochez la case. Maintenant, nous voyons les deux dans les paramètres disponibles. Ce n'est qu'au moment de la génération du rapport que nous verrons que le rapport réagit au paramètre &Period, et non à &MyDate.

Dans cet exemple, la chose la plus simple à faire est de renommer le paramètre &MyDate dans la requête en &Period et d'obtenir le résultat souhaité. Mais peut-être avez-vous une requête dans laquelle le paramètre &Period a déjà été utilisé, ou vos opinions religieuses ne vous permettent pas d'utiliser ce paramètre, dans tous les cas, vous pouvez résoudre le problème comme ceci :

PRODUITS SÉLECTIONNÉS DANS LES ENTREPÔTS Restant. Entrepôt, GoodsInWarehousesRemains. Nomenclature, Produits dans les Entrepôts Restants. QuantityBalance DU registre d’accumulation. Produits dans les entrepôts. Reste((&MyDate),) AS ProductsInWarehousesRemains

MISE À JOUR de l'utilisateur Huer:

Le principal problème lors de l'utilisation de paramètres « standards » (ajoutés par le système) est que lors de l'utilisation de plusieurs tables virtuelles dans un rapport, si ce paramètre est défini, sa valeur sera utilisée dans tous les autres cas au lieu des « propres ».

Laisse moi te donner un exemple:

SELECT EmployeesSP.Employee, WorkersSP.ReasonChangesConditions, WorkersSP.Period, WorkersSPAnotherDate.Period AS Period2, WorkersSPAnotherDate.ReasonChangesStates AS ReasonChangesCondition2 FROM RegisterInformation.EmployeesOrganizations.SliceLast(&Period , Employee = &Employee ) AS WorkersSP CONNEXION GAUCHE Registre des informations.Employés des organisations.Tranche du dernier(&AutreDate,) AS EmployeesSPAnotherDate BY EmployeesSP.Employee = EmployeesSPAnotherDate.Employee

Dans la deuxième sous-requête, la valeur du paramètre PERIOD « standard » sera utilisée comme paramètre de date de tranche, plutôt que la valeur OtherDate.

Ce « problème » sera observé même si la deuxième sous-requête est sortie vers le deuxième ensemble de données et liée à l'aide d'ACS. L'option utilisant dans la deuxième requête une expression comme « ADDATE(&Period, MONTH, -1) » ne fonctionnera pas non plus, le mois ne sera pas soustrait. Mais renommer le paramètre « Période » dans la requête, par exemple, « FirstDate » résout ce problème.

D'ailleurs, exactement le même problème est observé avec les tableaux virtuels des registres d'accumulation et comptables, utilisés pour obtenir, par exemple, le chiffre d'affaires. Là, le système ajoute les paramètres « Début de période » et « Fin de période ».
Ainsi, dans le cas de demandes d'une complexité même légèrement accrue, il est judicieux de désactiver la disponibilité et l'utilisation des « périodes standards ».

Bonjour, chers lecteurs du site blog ! Dans le dernier article, nous avons appris pourquoi ces rôles sont nécessaires. Et aujourd'hui, dans le deuxième de cette série d'articles, nous examinerons mise en place d'un rôle avec la propriété « Période », et envisagez également des exemples de remplissage de ces rôles. Le reste est calculé à l'aide du champ ayant le rôle « Période ». Tout comme sur le terrain avec le rôle « Dimension », dont nous reparlerons une autre fois. Alors commençons !

Créons un nouveau rapport :

  1. Dans le Configurateur, sélectionnez l'élément de menu « Fichier » - « Nouveau » - « Rapport externe ».
  2. Cliquez sur le bouton « Ouvrir le diagramme de composition des données ». Dans la boîte de dialogue qui s'ouvre, cliquez sur le bouton « Terminer ».
  3. Créons maintenant un qui accède à la table virtuelle « Registres d’accumulation ».
  4. Faites un clic droit sur le nœud « Ensembles de données » et sélectionnez la ligne « Ajouter un ensemble de données - Requête ».
  5. Cliquez maintenant sur le bouton « Query Builder ». Sélectionnons le registre d'accumulation « GoodsInWarehousesRemainsAndTurnover » (configuration USP).
  6. Ouvrons la boîte de dialogue « Paramètres de la table virtuelle » et indiquons que la périodicité « Auto » sera utilisée, c'est-à-dire qu'il sera possible de spécifier plusieurs périodes.

Configurons maintenant les champs de sortie. Soit les champs suivants : « Registraire », « PériodeMois », « Nomenclature », « Qualité » et informations sur les soldes. L'ajout d'un champ se fait en double-cliquant avec le bouton gauche de la souris sur le champ souhaité ou en utilisant le bouton « > ». Après avoir ajouté les champs, cliquez sur le bouton « OK ».

Veuillez noter que pour certains champs, un rôle avec la propriété « Période » est automatiquement configuré.

Regardons ce qui existe paramètres de rôle pour la propriété « Période ». Tout d'abord, le numéro d'ordre de la période est indiqué. La numérotation doit être continue, en commençant par un, de la période la plus basse à la plus haute, c'est-à-dire qu'il y aura d'abord, par exemple, le numéro de ligne, puis « Enregistreur », puis le deuxième, jour, semaine, mois, trimestre, année.

Ainsi, les champs qui apparaissent dans notre demande doivent être numérotés. Notez que nous avons deux champs de période : « Registrar » et « PeriodMonth ». Le champ bas est « Registrar », il en reçoit un, et le champ haut est « PeriodMonth », il en reçoit deux. Nous y reviendrons plus en détail dans le prochain article.

Configurons notre rapport :

  1. Allons dans l'onglet "Ressources" et définissons les ressources de notre rapport.
  2. Cliquez sur le bouton « >> » pour sélectionner tous les champs de ressources.
  3. Passons maintenant à l’onglet « Paramètres » et créons un paramètre sous forme de liste.
  4. Cliquez sur le bouton « Concepteur de paramètres de composition des données » (le bouton en forme de baguette magique).
  5. Type de rapport : "Liste". Cliquez sur le bouton « Suivant ».
  6. Configurons les champs de sortie en cliquant sur le bouton ">>". Organisons-les ainsi : « PériodeMois », « Nomenclature », « Qualité », « Registre ».
  7. Cliquez sur le bouton « Suivant » et configurez le regroupement. Nous établirons le regroupement dans l'ordre suivant : « PériodeMois », « Nomenclature », « Qualité ». Le regroupement « Registraire » sera affiché sous forme de fiches détaillées.
  8. Cliquez sur le bouton « OK ».

Ouvrons notre rapport. Si nous exécutons ce rapport, nous verrons certaines fonctionnalités lors de la réception des soldes. Si vous regardez attentivement le résultat du rapport, vous remarquerez immédiatement plusieurs erreurs. En particulier, pour une raison quelconque, au tout début de la période d'activité de l'entreprise, il existe un premier bilan.

Et cette erreur est liée à la fonctionnalité de réception des soldes du registraire. Pour que ces soldes s'affichent correctement, vous devez ajouter un champ supplémentaire aux champs de sortie de la demande - le champ « PeriodSecond ». Pour ajouter le champ « PeriodSecond », ouvrez le rapport dans le Configurateur et cliquez sur le bouton « Ouvrir le schéma de composition des données ». Cliquez maintenant sur le bouton « Query Builder » et ajoutez « PeriodSecond ». Dans ce cas, le champ « Registrar » restera le premier champ de la période, « PeriodSecond » sera le deuxième et « PeriodMonth » sera le troisième.

A quoi sert une seconde ? Le système de composition des données calcule les bilans par calcul, et pour déterminer sans ambiguïté la position de l'enregistreur sur l'axe du temps, le lien vers l'enregistreur lui-même ne suffit pas, il faut aussi une seconde, c'est-à-dire la date de cet enregistreur, puis le système de tracé pourra obtenir le bon équilibre par calcul. Si nous spécifions l’ordre correct des champs et générons à nouveau le rapport, nous obtiendrons :

Il ne reste désormais plus de solde pour le démarrage des activités sous la nomenclature Plinth. Ensuite, pour la période suivante, cela coïncide avec le bilan final, c'est-à-dire que nous constatons un résultat vraiment correct. Vous pouvez télécharger un exemple de rapport à partir du lien ci-dessous. Avez-vous aimé l'article? Que peut-on changer, que peut-on ajouter ? N'hésitez pas à en parler dans les commentaires !

À la fin de l'article, je souhaite vous en recommander un gratuit d'Anatoly Sotnikov. Il s'agit d'un cours dispensé par un programmeur expérimenté. Il vous montrera séparément comment créer des rapports dans le système de contrôle d'accès. Il vous suffit d'écouter attentivement et de vous souvenir ! Vous recevrez des réponses aux questions suivantes :
  • Comment créer un rapport de liste simple ?
  • A quoi servent les colonnes Champ, Chemin et Titre de l'onglet « Champs » ?
  • Quelles sont les limites des champs de mise en page ?
  • Comment configurer correctement les rôles ?
  • Quels sont les rôles des champs de présentation ?
  • Où puis-je trouver l'onglet de composition des données dans une requête ?
  • Comment configurer les paramètres du système de contrôle d'accès ?
  • Cela devient encore plus intéressant...
Peut-être ne devriez-vous pas essayer de surfer vous-même sur Internet à la recherche des informations nécessaires ? De plus, tout est prêt à l’emploi. Commencez simplement ! Tous les détails sur le contenu des leçons vidéo gratuites

Voici l'une des leçons sur la mise en signet de la composition des données dans une requête :



Lors de la création de rapports sur un système de contrôle d'accès, il est souvent nécessaire d'afficher une sélection de périodes sur le formulaire de rapport, de sorte que vous n'ayez pas besoin de saisir les dates manuellement, mais de sélectionner parmi une liste de périodes standard, telles que : "Année". , « Mois », « Semaine », etc. Pour les paramètres de type Date, vous pouvez uniquement spécifier « Le début de cette année, ce mois, etc. », mais « Fin » n'est pas fourni.

Le fait est que parmi les types de données, seul le type « Date de début standard » est disponible, mais je veux aussi la « Date de fin standard ».

Il existe un moyen de contourner ce problème.

  1. Créons un nouveau paramètre, appelons-le « Période »
  2. Réglez ce paramètre sur le type « Période standard »
  3. Dans le champ « Expression » des paramètres « Début de période » et « Fin de période » utilisés dans la requête, paramétrez les expressions « &Période.StartDate" et " &Période.Date de fin »respectivement.

Mais il y a une légère subtilité. Si nous utilisons des tables virtuelles dans la requête, il est fort probable que le rapport cessera de fonctionner et qu'un message d'erreur du type « Erreur lors du traitement de la vue, incompatibilité de type, numéro de paramètre » s'affichera.

Pour éviter cela, vous devez supprimer tous les paramètres de la table virtuelle.

Et ajoutez-les aux tableaux de l'onglet « Composition des données ».

Pour que les paramètres soient affichés dans les paramètres du rapport rapide, activons l'indicateur correspondant pour les paramètres du rapport.

La sélection de période sur le formulaire de rapport ressemble désormais à ceci.

Quelques fonctionnalités de réglage de la période dans le système de contrôle d'accès.

La plupart des rapports développés à l'aide d'un système de composition de données (DCS) nécessitent que l'utilisateur saisisse la période pour laquelle le rapport sera créé.

En règle générale, dans ACS, la saisie des périodes est organisée à travers des paramètres, en utilisant la construction suivante, voir. Cette méthode de saisie des périodes est considérée comme « classique », elle est décrite dans un article sur ITS et d'autres publications consacrées au développement en 1C, donc prenons-le comme base. Considérons à titre d'exemple une simple demande qui reçoit tous les documents Ventes de biens et services pour une période donnée, voir

Lors de l'utilisation de ce rapport, l'utilisateur définit la période via les paramètres, voir. Tout semble correct..., MAIS il y a un petit problème :

Le fait est que la grande majorité des utilisateurs « comprennent » la période différemment de 1C, exemples :

Du point de vue de l'utilisateur, la période n'est pas précisée, c'est-à-dire ILLIMITÉE, c'est-à-dire que TOUS les documents sans restriction de date doivent être inclus dans le rapport.

"Du point de vue" du système 1C, le paramètre-période est défini et ... ses deux limites sont égales à 01.01.0001 et seuls les documents avec une date vide seront inclus dans le rapport, ce qui signifie en pratique aucun document ne sera inclus.

Du point de vue de l'utilisateur, le rapport doit inclure tous les documents à compter de la date du 28/01/2010.

« Du point de vue » de 1C, la période du 28/01/2010 au 01/01/0001 fera exception.

Vous pouvez bien sûr essayer d'expliquer à l'utilisateur pourquoi le rapport n'affiche pas les documents qu'il s'attend à voir et comment la période est présentée du « point de vue » de 1C, mais c'est une tâche ingrate, et elle est également faux. Un bon programme doit avant tout être convivial, car le programme existe pour l'utilisateur, et non l'inverse, il faudra donc « apprendre » à 1C à comprendre la période telle que l'utilisateur la comprend, à savoir :

1). Début de période et fin de période ne sont pas précisés -> tous les documents.

2). Seul le Début de la Période est précisé -> tous les documents à partir du Début de la Période

3). De plus, nous vérifierons que Fin de période >= Début de période, et si ce n'est pas vrai, alors nous supposerons que Fin de période n'est pas spécifiée, c'est-à-dire 2).

Sur la base de ce qui précède, l'expression du paramètre End Date est :

QUAND &Period.EndDate=DATETIME(1,1,1)

ALORS DATEHEURE(3999,12,31)

QUAND &Période.Date de fin<&Период.ДатаНачала

ALORS DATEHEURE(3999,12,31) DATEHEURE(3999,12,31,23,59,59)

&Période.Date de fin

La forme finale de notre conception de sélection de périodes est présentée dans

Remarque : ce mécanisme de paramétrage est destiné aux anciennes plates-formes 1C 8.1 et 8.2 (et aux configurations exécutées sous leur contrôle) ; les anciennes versions de la plate-forme 1C ont des mécanismes intégrés pour contrôler les paramètres vides et il n'est pas nécessaire de recourir au mécanisme décrit dans cet article, en plus Sur certaines versions de la plateforme 1C, des erreurs et un fonctionnement incorrect sont possibles.

Alors, commençons.

Pour plus de simplicité, et pour comprendre l'exemple, nous nous appuierons sur un simple registre d'accumulation circulant.

Dans mon cas, il s'agit du registre d'accumulation « Comptabilité des travaux en cours ».

Par exemple, nous indiquerons ses paramètres de manière rigide (et non par une imposition douce de paramètres sur le système de contrôle d'accès) :

Veuillez noter que la fréquence de la table virtuelle est « Record ».

Mais, comme indiqué ci-dessus, nous avons besoin de la période en termes de périodicité, je propose donc de calculer le champ « Période » de la manière suivante (pas très sympa, mais je n'ai pas vu de meilleures options) :

Comme le montre la capture d'écran, un paramètre est transmis à la requête, que l'utilisateur précise sur le formulaire : La valeur de l'énumération "Fréquence" - cette énumération se retrouve dans presque toutes les solutions standards.

Nous indiquerons ses types disponibles dans l’onglet « Paramètres » :

Avec ce réglage nous formatons notre période pour que tout soit beau et agréable à l'oeil)

Voici les formats eux-mêmes :

Mois : DF="MMMM aaaa "a.""

Jour : DF = jj.MM.aaaa

Semaine : DF = ""Semaine à partir de "jj.MM.aaaa"

Trimestre : DF = "à "trimestre" aaaa "y.""

Année : DF = "aaaa "y.""

Décennie : DF = ""Décennie avec "jj.MM.aaaa"

Semestre : DF = ""Semestre du" jj.MM.aaaa"

C'est tout. Le résultat est une magnifique image :