Maison / Tutoriels Windows / Exemple de période standard 1s skd. Nous créons un rapport avec une fréquence donnée sur l'entrepôt

Exemple de période standard 1s skd. Nous créons un rapport avec une fréquence donnée sur l'entrepôt

Bonne journée, chers lecteurs du site de blog! Dans le dernier article, nous avons appris à quoi servent ces rôles. Et aujourd'hui, dans le deuxième de cette série d'articles, nous examinerons définir le rôle avec la propriété "Période", et considérez également des exemples de remplissage de ces rôles. Le reste est calculé pour le champ avec le rôle "Période". Idem pour le champ avec le rôle « Dimension », dont nous parlerons 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 schéma de composition des données". Dans la boîte de dialogue qui s'ouvre, cliquez sur le bouton "Terminer".
  3. Créons maintenant , qui fait référence à la table virtuelle "Registres d'accumulation".
  4. Faites un clic droit sur le nœud "Jeux de données" et sélectionnez la ligne "Ajouter un jeu de données - Requête".
  5. Cliquez maintenant sur le bouton "Query Builder". Sélectionnons le registre d'accumulation "Marchandises en Entrepôts Restes et Chiffres d'Affaires" (configuration USP).
  6. Ouvrons la boîte de dialogue "Options de table virtuelle" et indiquons que la fréquence "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 : "Registrar", "PeriodMonth", "Nomenclature", "Quality" et les informations sur les soldes. L'ajout d'un champ s'effectue 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, le rôle avec la propriété "Période" est automatiquement configuré.

Considérons ce que sont paramètres de rôle pour la propriété "Période". Tout d'abord, le numéro de série de la période est indiqué. La numérotation doit être continue, en commençant par un, des périodes les plus jeunes aux plus anciennes, c'est-à-dire qu'elle ira d'abord, par exemple, le numéro de ligne, puis le "Registrar", puis le second, jour, semaine, mois, trimestre, année.

Ainsi, les champs qui apparaissent dans notre requête doivent être numérotés. Notez que nous avons deux champs de période - "Registrar" et "PeriodMonth". Le champ junior est "Registrar", il en est attribué un, et le champ senior est "PeriodMonth", il en est attribué deux. Nous reviendrons plus en détail sur 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 pour les ressources.
  3. Passons maintenant à l'onglet "Paramètres" et créons un paramètre sous forme de liste.
  4. Cliquez sur le bouton "Constructeur des paramètres de composition des données" (bouton en forme de baguette magique).
  5. Type de rapport : "Liste". Appuyons sur le bouton "Suivant".
  6. Configurez les champs de sortie en cliquant sur le bouton ">>". Organisons-les comme ceci : "PériodeMois", "Nomenclature", "Qualité", "Registrar".
  7. Cliquez sur le bouton "Suivant" et configurez le regroupement. Le regroupement sera configuré dans l'ordre suivant : "PériodeMois", "Nomenclature", "Qualité". Le regroupement "Registrar" sera affiché sous forme d'enregistrements détaillés.
  8. Appuyons 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 pouvez immédiatement remarquer plusieurs erreurs. En particulier, pour une raison quelconque, au tout début de la période d'activité de l'entreprise, il existe un solde initial.

Et cette erreur est liée à la particularité de recevoir les soldes par le bureau d'enregistrement. 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 "PériodeSeconde", ouvrez le rapport dans le Configurateur, 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 de données calcule les résidus par calcul, et afin de déterminer sans ambiguïté la position de l'enregistreur sur l'axe du temps, la référence à l'enregistreur lui-même ne suffit pas, une seconde est également nécessaire, c'est-à-dire la date de cet enregistreur , puis le système de composition pourra calculer le résidu correct. Si nous spécifions le bon ordre des champs et générons à nouveau le rapport, nous obtenons :

Maintenant, il n'y a plus de solde pour le début des activités dans la nomenclature Plinth. De plus, pour la période suivante, cela coïncide avec le bilan final, c'est-à-dire que nous voyons un résultat vraiment correct. Vous pouvez télécharger un exemple de rapport à partir du lien ci-dessous. Vous avez aimé l'article ? Que peut-on changer, que peut-on ajouter ? N'hésitez pas à le partager dans les commentaires !

À la fin de l'article, je veux vous conseiller gratuitement d'Anatoly Sotnikov. Il s'agit d'un cours d'un programmeur expérimenté. Il est à base séparée vous montrera comment créer des rapports dans SKD. Vous avez juste besoin d'écouter attentivement et de vous souvenir! Vous recevrez des réponses à des questions telles que :
  • Comment créer un rapport de liste simple ?
  • À quoi servent les colonnes Champ, Chemin et Titre de l'onglet Champs ?
  • Quelles sont les restrictions sur les champs de mise en page ?
  • Comment configurer correctement les rôles ?
  • Quels sont les rôles des champs de mise en page ?
  • Où puis-je trouver l'onglet de mise en page des données dans une requête ?
  • Comment configurer les paramètres dans SKD ?
  • 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 tout simplement ! Tous les détails sur ce qui se trouve dans les tutoriels vidéo gratuits

Voici l'une des leçons sur l'onglet de composition des données dans une requête :



Lors de la création de rapports sur l'ACS, il devient souvent nécessaire d'afficher le choix de la période sur le formulaire de rapport, de plus, de sorte que vous n'avez pas besoin de remplir les dates manuellement, mais de sélectionner dans la liste périodes normales, tels que : "Année", "Mois", "Semaine", etc. Pour les paramètres de type Date, vous ne pouvez spécifier que "Début de cette année, 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 souhaite également le type "Date de fin standard".

Il existe un moyen de contourner cela.

  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 "StartPeriod" et "EndPeriod" utilisés dans la requête, définissez les expressions " &Period.StartDate" et " &Period.EndDate" respectivement.

Mais il y a une petite subtilité. Si nous utilisons dans la requête tables virtuelles, alors, très probablement, le rapport cessera de fonctionner et un message d'erreur du type "Afficher l'erreur de traitement, l'incompatibilité de type, le numéro de paramètre ..." sera émis.

Pour éviter cela, vous devez supprimer tous les paramètres des tables virtuelles.

Et ajoutez-les aux tables de l'onglet Composition des données.

Pour que les paramètres soient affichés dans réglages rapides rapport, activez le drapeau correspondant pour les paramètres du rapport.

Maintenant, la sélection de période sur le formulaire de rapport ressemble à ceci.

Certaines fonctionnalités de réglage de la période dans l'ACS.

La plupart des rapports élaborés à l'aide du système de composition des données (DCS) exigent que l'utilisateur saisisse la période pour laquelle le rapport sera généré.

En règle générale, dans ACS, la saisie de la période est organisée à l'aide de paramètres, en utilisant la construction suivante, voir Cette méthode de saisie d'une période est considérée comme "classique", elle est décrite dans un article sur ITS et d'autres ouvrages sur le développement en 1C, alors prenons-le comme base. Considérons, par exemple, une requête simple qui récupère tous les documents Période donnée cm.

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

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

Du point de vue de l'utilisateur, la période n'est pas définie, c'est-à-dire qu'elle n'est PAS LIMITÉE, c'est-à-dire que TOUS les documents sans limite 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.

Du point de vue de l'utilisateur, tous les documents à partir de la date du 28/01/2010 doivent être inclus dans le rapport.

"Du point de vue" période 1C 28/01/2010 - 01/01/0001 provoquera une exception.

Bien sûr, vous pouvez 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 erronée. Bon programme doit être, avant tout, pratique pour l'utilisateur, 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 :

une). StartPeriod et EndPeriod ne sont pas définis -> tous les documents.

2). Seul StartPeriod est défini -> tous les documents à partir de StartPeriod

3). De plus, nous vérifierons que la fin de période >= début de période, et si ce n'est pas vrai, alors nous supposerons que la fin de période n'est pas définie, c'est-à-dire 2).

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

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

ALORS DATEHEURE(3999,12,31)

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

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

&Période.DateFin

La vue finale de notre conception de sélection de période est illustré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 non remplis et il n'est pas nécessaire de recourir au mécanisme décrit dans cet article, en plus sur certaines versions de la plate-forme 1C, des erreurs et des travaux incorrects sont possibles.

Cet article traite de certaines des caractéristiques de la définition de la période lors de l'utilisation du système de composition de données (ACS), des problèmes qui surviennent en raison de la différence de concept de période entre l'utilisateur moyen et le système 1C, et suggère également des moyens de les résoudre. .
La plupart des rapports élaborés à l'aide du système de composition des données (DCS) exigent que l'utilisateur saisisse la période pour laquelle le rapport sera généré. En règle générale, dans ACS, l'entrée de période est organisée à travers des paramètres, en utilisant la construction suivante, voir Fig. Fig. 1 Cette méthode de saisie d'une période est considérée comme "classique", elle est décrite dans un article sur ITS et d'autres littératures consacrées au développement en 1C, nous la prendrons donc comme base. Considérons, à titre d'exemple, une requête simple qui récupère tous les documents de Vente de Biens/Services pour une période donnée (voir Fig. Fig.2 Lors de l'utilisation de ce rapport, l'utilisateur définit la période à travers les paramètres voir. Fig.3 Tout semble être correct... MAIS il y a un petit problème :

Le fait est que la grande majorité des utilisateurs « comprennent » la période différemment que 1C la « comprend », exemples :
une). Envisager Fig.3
Du point de vue de l'utilisateur, la période n'est pas définie, c'est-à-dire qu'elle n'est PAS LIMITÉE, c'est-à-dire que TOUS les documents sans limite 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.
2). Envisager Fig.4
Du point de vue de l'utilisateur, tous les documents à partir de la date du 28/01/2010 doivent être inclus dans le rapport.
"Du point de vue" période 1C 28/01/2010 - 01/01/0001 provoquera une exception.

Bien sûr, vous pouvez 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 erronée. Un bon programme doit avant tout être pratique pour l'utilisateur, 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 :
une). StartPeriod et EndPeriod ne sont pas définis -> tous les documents.
2). Seul StartPeriod est défini -> tous les documents à partir de StartPeriod
3). De plus, nous vérifierons que la fin de période >= début de période, et si ce n'est pas vrai, alors nous supposerons que la fin de période n'est pas définie, c'est-à-dire 2).
Sur la base de ce qui précède, l'expression du paramètre EndDate ressemblera à ceci :

SÉLECTIONNER QUAND &Period.EndDate=DATETIME(1,1,1) PUIS DATETIME(3999,12,31,23,59,59) SINON SÉLECTIONNER QUAND &Period.EndDate<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

La vue finale de notre conception de sélection de période est illustrée dans Fig.5

Alors, commençons.

Par souci de simplicité, pour comprendre l'exemple, nous nous baserons sur un simple registre d'accumulation inverse.

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

Par exemple, nous spécifierons ses paramètres de manière rigide (et non par une imposition douce de paramètres sur l'ACS) :

Notez que la fréquence de la table virtuelle est "Record".

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

Comme vous pouvez le voir sur la capture d'écran, un paramètre est passé à la requête, que l'utilisateur spécifie sur le formulaire : Valeur de l'énumération "Périodicité" - cette énumération est disponible dans presque toutes les solutions standard.

Ses types disponibles sont indiqués dans l'onglet "Paramètres" :

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

Voici les formats réels :

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

Jour : DF = jj.MM.aaaa

Semaine : df = ""Semaine du" jj.MM.aaaa "

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

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

Décennie : DF = ""Décade depuis" jj.MM.aaaa "

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

C'est tout. En conséquence, nous avons une image magnifique: