Substitution automatique des données d'un document 1C. Comment définir l'organisation principale de substitution dans les documents. Saisir des données dans la base de données

/
Comptabilité pour l'Ukraine /
Travailler avec des documents, des ouvrages de référence et des rapports

Comment définir l'organisation principale de substitution dans les documents

Cette section décrit comment configurer une organisation principale pour la substitution automatique dans les nouveaux documents.

Installation à partir du répertoire

Dans l'annuaire des organisations (menu "Entreprise" - "Organisations") l'organisation principale est mise en évidence en gras. Cela signifie que lors de la création de nouveaux documents, il sera inséré automatiquement.

Pour faire d'une autre organisation la principale, vous devez sélectionner cette organisation dans la liste et cliquer sur le bouton Définir principal dans le panneau de commande.

Connectez Code Preoix Nom l w 00000001 à Dobro 000000001 DB Do5ro5ut 00000006 DU Do st eka et installation 00000005 NF National S0000001 nsho Notre organisation" width="757" height="216" border="0">

NOTE
L'organisation principale est enregistrée dans les paramètres utilisateur. Pour chaque utilisateur, l'organisation principale est indiquée individuellement.

Sélection de documents par organisation principale

Dans les paramètres utilisateur (menu "Service" - "Paramètres utilisateur"), vous pouvez définir le mode de sélection automatique des documents pour l'organisation principale. Cela signifie que tous les journaux et listes de documents afficheront uniquement les documents de l'organisation principale.

La sélection des documents dans les journaux est contrôlée par le drapeau Comptabilité pour toutes les organisations. Lorsqu'il est installé, les journaux affichent les documents de toutes les organisations. Lorsque le drapeau est effacé, seuls les documents de l'organisation principale sont affichés dans les journaux.

Si nécessaire, l'organisation principale peut être modifiée directement dans les paramètres utilisateur dans le groupe "Valeurs de base pour la substitution dans les documents et répertoires".

Question : Remplacement du code dans le champ 1c


Bonjour, dites-moi s'il vous plaît dans quel champ je dois insérer une procédure qui compte le nombre de jours entre les dates, j'ai trouvé la procédure elle-même, mais la réponse à cette question est non

Il y a des champs - date d'arrivée, date de départ et un champ de quantité, où devrait tomber la différence entre les deux premières valeurs
À quel événement devez-vous ajouter la procédure ?

Répondre: Dans l'événement "OnChange" du champ Date de départ :

Question : La substitution automatique des données ne fonctionne pas

Répondre:

Merci à tous pour vos réponses:
1) 1C:Enterprise 8.3 (8.3.4.437), Comptabilité pour l'Ukraine : version 2.0.4.3.
2) En particulier pour nsk1C: « Vous avez toujours cette habitude de chercher là où vous n'avez pas besoin de le faire, dans ma question il n'y a pas un seul mot sur le taux de TVA de base - c'est, premièrement, deuxièmement, lire attentivement le décret interdisant les produits 1C en Ukraine, et alors écrivez déjà vos pensées.."

Merci pour votre réponse, mais j'aimerais savoir plus précisément où cela est défini dans le code.

Question : Champ de saisie et Entrée à la fin


Formulaires gérés, travaillant dans un client Web.
Situation : programmé le scanner sur F7 + code barre + entrée. J'ai essayé de nombreuses options, mais le code ne peut pas être lu via « ShowValueInput ». J'ai abandonné cette option.
2. Création d'un formulaire avec un champ de saisie. A l'aide de F7, le formulaire s'ouvre, le code apparaît dans le champ de saisie, saisissez, puis appuyez dessus également (coché dans le champ du document texte). J'essaie d'attraper l'événement Fin de saisie de texte, mais cela ne fonctionne pas parce que... cela fonctionne lorsque vous appuyez physiquement sur Entrée sur le clavier. L'événement AutoFit n'est pas la meilleure option pour moi, car... Le code-barres peut être saisi manuellement et je dois ensuite trouver une sorte de béquille pour contourner le petit délai entre les clics.
Dites-moi, s'il vous plaît, existe-t-il des options plus simples ?

Répondre:() le formulaire s'ouvre, le code est transmis - les événements ne sont pas traités

Question : rapport ACS et champ de table


Je crée un rapport en utilisant ACS. Comment afficher le résultat dans un champ de table ? Pas dans un champ d'une feuille de calcul, mais dans un champ de tableau.

Répondre: Un champ de document de feuille de calcul est un élément de formulaire (les données y sont affichées) qui appartient à l'attribut du document de feuille de calcul (formulaire).
Vous écrivez une valeur dans une feuille de calcul et le champ du document de feuille de calcul affiche cette valeur pour vous.
Comment puis-je y écrire la valeur ?

Question : La concentration sur le terrain fonctionne étrangement


Configuration auto-écrite sur 1C (8.3.8.2088), formulaires gérés, interface taxi.

J'attache l'événement OnChange au Field avec le code suivant :

1C
1 2 3 4 StandardProcessing = Faux ; SelectionData = NouvelleListeValeur ; Données de sélection. Add(Object.Number) ;

Je mets un code à la fin de la saisie de texte

Tout fonctionne, mais d'une manière ou d'une autre, c'est tordu.

L'élément reçoit le focus, mais d'une manière ou d'une autre seulement de moitié, comme on peut le voir sur l'image :

C'est devenu après le code :

Autrement dit, le cadre jaune et le design du champ ont disparu. Ça marche, mais ce n’est pas joli, ça attire le regard.

Répondre: Eh bien, en bref, lorsque le numéro change, un formulaire de lettrage apparaît, où la personne remplit la raison du changement, si la personne ferme simplement le formulaire, alors l'ancienne valeur est renvoyée et le focus reste sur le champ. Y a-t-il d'autres idées sur la meilleure façon de procéder ?

Question : Champ de la table de formulaire


Bonne journée.
Il existe un formulaire standard de sélection d'article (ut11), qui n'affiche pas le nom, seulement le numéro d'article !

J'ai essayé de renvoyer les paramètres standard du formulaire - en vain, le champ/la colonne ne s'affiche pas.

Configurateur :

Les champs ont du vacarme. La liste est définie sur « Toujours utiliser ».
Même le débogage de OnFormCreate() ainsi que de OnOpen() montre que

Elements.ListAdvancedSearchNomenclature.SubordonnéeElements

disponible, tout est en mode visibilité et accessibilité, il n'y a pas d'options fonctionnelles !

J'ai essayé d'ajouter mon propre champ avec le même chemin d'accès aux données - il n'apparaît pas non plus !
Une heure s'est écoulée, mais le champ n'apparaît pas. S'il vous plaît, aidez

Répondre:

alors oh ! J'ai juste réussi à faire glisser le champ du nom vers un autre groupe et il n'est pas devenu visible,
et sur le premier bouton Il n'a pas encore été restauré, j'étais sûr que cela vous aiderait.

Question : Comment afficher le code plutôt que le nom lors de la sélection d'un élément de répertoire ?


il y a un onglet. partie, il contient un champ de type directorylink. Comment afficher le code de l'attribut plutôt que le nom lors de la sélection d'un élément dans ce champ ? (formulaires gérés)

Répondre: Tklwegsd,))) Oui, c'est exactement la question

message de polaire

Ne pouvez-vous pas simplement ajouter le champ Code au tableau ?

Question : Champ de sélection de sélection dans le rapport SKD


Bonjour les gars, j'ai une question. Je souhaite afficher le champ de sélection de sélection dans l'état, mais quelque chose m'en empêche, j'ai besoin de votre avis...

Pour le champ, les contreparties ont saisi le code suivant, cela fait une sélection interne, mais comment afficher la Vue Comparative du champ de gauche et le lier aux Utilisateurs ?

1C
1 2 3 4 5 6 7 8 9 10 11 Procédure UsersOnChange(Element) Paramètre d'exportation = ComposerSettings. Paramètres. Paramètres de données. Rechercher ParameterValue(NewDataCompositionParameter("Users") ) ; Paramètre. Valeur = Utilisateurs ; Paramètre. Utilisation = Vrai ; Élément de sélection = Compositeur de paramètres. Paramètres. Sélection. Éléments. Ajouter(Type( "Élément de sélection de la composition des données") ) ; Élément de sélection. ComparisonView = DataCompositionComparisonView. Équivaut à; Élément de sélection. LeftValue = NewDataCompositionField ( "Responsable deResponsiveRequest") ; Élément de sélection. RightValue = Utilisateurs ; Fin de la procédure

Répondre: Dethmont, je retire le code, il n'y a que le système de contrôle d'accès et le champ de sélection sur le formulaire - un rapport vide...

Ajouté après 1 heure 50 minutes
Dethmont, j'ai compris pourquoi il y avait un rapport vide lors de la sélection d'un système de contrôle d'accès, il y avait une condition dans la demande du système de contrôle d'accès pour les utilisateurs - je l'ai supprimé et tout a fonctionné. Merci pour les conseils)

Question : Est-il possible de modifier la composition des champs dans une liste dynamique sans code ?


Bonne journée tout le monde. J'ai un formulaire propre, sur lequel se trouve une liste dynamique avec une requête personnalisée, où se trouve une table (un répertoire, également la table DS principale), un champ Link et des caractéristiques.

Les champs avec des caractéristiques peuvent être immédiatement utilisés dans les sélections, le tri, la conception et sélectionnés pour le regroupement. Tout fonctionne. Mais il est impossible de simplement le sélectionner comme champ supplémentaire (pour qu'il apparaisse à côté du lien dans une colonne séparée). Il est clair que d'une manière ou d'une autre, tout cela se fait à l'aide de code, mais cela ne peut-il vraiment pas être fait sans code ?
De nombreux éléments de présentation de données personnalisés peuvent être placés sur le formulaire, mais il n'existe aucun moyen d'ajouter simplement un champ ? Ou est-ce que je fais quelque chose de mal ?

Répondre: En général, peu importe la façon dont j'ai tourné les colonnes via le compositeur de données, je n'ai pas pu les ajouter (sans code). Très probablement, cela est impossible, car ce n'est pas l'attribut ds form qui est responsable des colonnes, mais l'élément form, qui est logique. L'éditeur de liens contrôle les données - l'élément de formulaire - l'affichage (colonnes incluses).
Autrement dit, sans augmenter par programmation les éléments subordonnés de l’élément de formulaire, vous ne pourrez pas les modifier.
Merci à tous.

Question : La saisie basée sur le champ de message dans PM n'est pas renseignée


Aide des collègues Ce n'est pas une saisie typique basée sur le document dans ZUP 2.5, message - le champ du PM n'est pas rempli, bien qu'il soit rempli - tapez Date. Code dans le traitement de remplissage.
Si vous entrez les détails via le formulaire, il effectue...

Répondre: OMG, il a juré sur un autre champ - c'est juste que cette colonne était masquée) lorsqu'elle est remplie dans l'interface, elle est copiée à partir du champ de date de début

Notre tâche est la suivante. Nous stockons désormais le prix d'un article dans un registre d'informations séparé. Lorsque nous créons ou modifions un document de Prestation de Service et ajoutons un article à la partie tabulaire, nous souhaitons que le prix actuel de cet article, obtenu à partir du registre d'information et correspondant à la date du document, soit immédiatement inséré dans le document.

Pour ce faire, nous devons faire deux choses.

Tout d'abord, écrivez une certaine fonction qui renverra le prix actuel de l'article, puis appelez cette fonction au moment où l'article est ajouté au document, et remplacez le prix de l'article que cette fonction renverra dans le document.

Étant donné que nous aurons probablement besoin d'un tel "service" non seulement dans ce document, mais également dans d'autres documents contenant une nomenclature dans la partie tabulaire, nous placerons la fonction dans un endroit "accessible au public" - dans un module commun.

En mode Configurateur

Fonction renvoyant le prix d'un article

Tout d’abord, nous allons créer la fonction RetailPrice(), qui nous renverra le prix de vente actuel de l’article, et le placerons dans le module de configuration générale.

Ouvrons le configurateur, dans la branche Général Général modules, ajoutons un nouvel objet de configuration Module et appelons-le WorkWithDirectories.

Nous voyons que le module a la case Serveur cochée par défaut. Cela signifie que les instances de ce module ne seront compilées que côté serveur.

Cochons la case Appeler le serveur pour que les procédures d'exportation et les fonctions de ce module puissent être appelées depuis le client (Fig. 9.9).

Insérons-y le texte suivant (extrait 9.1).

Expliquons cette fonction.

Pour obtenir le prix public, nous passerons deux paramètres à la fonction :

CurrentDate est un paramètre de type Date qui définit le point sur l'axe du temps auquel nous nous intéressons à la valeur du prix de détail.

Dans le corps de la fonction, nous créons d’abord un objet d’assistance à la sélection.

Il s'agit d'une structure contenant une sélection par dimensions de registre. Avec son aide, nous déterminons que nous serons intéressés par les entrées de registre dans lesquelles la dimension du registre Nomenclature est égale à la référence à l'élément d'annuaire passé à la fonction.

Le nom de la clé de structure ("Nomenclature") doit correspondre au nom de la dimension du registre spécifié dans le configurateur, et la valeur de l'élément de structure (Nomenclature Element) précise la valeur sélectionnée pour cette dimension.

Dans la deuxième ligne, nous contactons le gestionnaire du registre d'informations sur les prix (Information Registers.Prices) et exécutons la méthode GetLast(), qui nous renvoie les valeurs de ressources du dernier enregistrement du registre correspondant à la date passée à la fonction ( CurrentDate) et les valeurs des dimensions du registre (Sélection).

La méthode GetLast renvoie une structure contenant des valeurs de ressources, qui est stockée dans la variable ResourceValues. De manière générale, un registre peut avoir plusieurs ressources. Il n'y a qu'une seule ressource dans notre registre, mais une structure contenant un seul élément sera toujours renvoyée.

Par conséquent, dans la ligne suivante, nous obtenons le prix de détail que nous recherchons en spécifiant simplement le nom de la ressource de registre dont nous avons besoin via un point (ResourceValues.Price) et en le renvoyant lorsque la fonction est exécutée.

Cette fonction doit désormais être appelée à un moment donné de l'exécution du document.

Appeler une fonction lors de la sélection d'un article et renseigner le prix dans le document

La tâche qui nous attend est donc la suivante. Lors de la modification du document Prestation de service, nous devons nous assurer que le champ Prix est automatiquement rempli une fois que l'utilisateur a sélectionné un service. De plus, le prix de la prestation doit être déterminé en fonction de la date de création du document.


Trouvons le document Prestation de service dans le configurateur et ouvrons son formulaire Formulaire de document.

Double-cliquez sur l'élément de formulaire List of ItemsNomenclature ou cliquez avec le bouton droit pour ouvrir la palette de propriétés correspondante (élément de menu contextuel Propriétés). En faisant défiler jusqu'à la fin de la liste, nous trouvons l'événement OnChange, qui se produit après la modification d'une valeur de champ.

Cliquez sur le bouton d'ouverture B avec l'icône en forme de loupe dans le champ de saisie.

Le système créera un modèle pour la procédure de gestion de cet événement dans notre module de formulaire et ouvrira l'onglet Module éditeur de formulaire.

Ajoutons-y le texte suivant (extrait 9.2).

Commentons le contenu du gestionnaire.

La première ligne du gestionnaire vous est déjà familière grâce aux procédures Liste des articles Quantité en cas de modification et Liste des articles Prix en cas de modification. Tout d'abord, nous obtenons la ligne actuelle de la partie tabulaire du document, car nous en aurons besoin plus tard, et nous l'enregistrons dans la variable TabularPart Row.

Ensuite, nous appelons notre fonction RetailPrice() depuis le module général Working With Directories.

Comme premier paramètre, on passe à cette fonction la date du document pour lequel on a besoin d'obtenir le prix. Nous obtenons la date du document à partir de l'attribut principal du formulaire - Object.Date.



La fonction renvoie la dernière valeur de prix, et nous attribuons cette valeur au champ Prix dans la ligne actuelle de la partie tabulaire du document (TabularPartRow.Price).

Notez que la procédure Item List NomenclatureOnChange() elle-même commence à fonctionner dans le module de formulaire côté client, puisqu'il s'agit d'un gestionnaire pour l'événement interactif du formulaire. Lors de la création d'un modèle pour cette procédure, la plateforme a automatiquement placé la directive de compilation &OnClient avant la description de la procédure.

Ensuite, la fonction RetailPrice() est appelée. Étant donné que cette fonction ne sera pas trouvée côté client, l'exécution sera transférée au module commun Travailler avec les répertoires, qui s'exécute sur le serveur. Une fois la fonction terminée, le code du programme continuera à s'exécuter sur le client.

Pourquoi une telle « astuce » a-t-elle été utilisée dans ce cas ? Pourquoi était-il nécessaire de transférer l’exécution du code sur le serveur ?

Le fait est que tout travail avec la base de données (lecture de données, écriture) n'est possible que sur le serveur. Dans ce cas, nous devions lire les dernières données du registre d'informations pour un élément.

De telles actions ne peuvent être effectuées que sur le serveur, et si vous recherchez dans l'assistant de syntaxe la description de la méthode GetLast() du registre d'informations, vous remarquerez que cette méthode n'est disponible que sur le serveur, dans le client lourd et dans la connexion externe.

Le client lourd et la connexion externe sont des applications client de plate-forme héritées qui existent pour être compatibles avec les solutions d'applications héritées.

Nous développons une toute nouvelle solution applicative qui fonctionne dans un client léger ou un client web. Par conséquent, dans notre cas, pour obtenir des données de la base de données, nous devons transférer l'exécution du code vers le serveur, y recevoir les données nécessaires et renvoyer ces données au client. C'est ce que nous avons fait.

En mode 1C : Entreprise

Vérifions maintenant comment fonctionne notre document.

Lançons 1C:Enterprise en mode débogage et ouvrons le registre d'informations sur les prix.

Pour le transistor Philips, ajoutons un nouveau prix avec un numéro différent (Fig. 9.10).

Ouvrons maintenant le document Fourniture de service n°1. Comme vous vous en souvenez, avec ce document, nous venons d'« épuiser » un de ces transistors.

Laissons la date du document inchangée et répétons la sélection du transistor dans la colonne Nomenclature de la partie tabulaire du document. Le prix du transistor sera automatiquement fixé au 01/07/2009. Il s'agit de la dernière valeur de prix à la date du document (Fig. 9.11).

Changeons maintenant la date du document au 13/07/2009 et répétons à nouveau la sélection du transistor. Une nouvelle valeur de prix sera fixée, la plus tardive pour cette date (Fig. 9.12).

Ainsi, le prix de la prestation en vigueur au moment de la création du document apparaît dans le document.


Questions de contrôle

1. Quel est l'objectif de l'objet de configuration du registre d'informations ?

2. Quelles sont les fonctionnalités de l'objet de configuration Registre d'informations ?

3. Quelles sont les principales différences entre le registre d'information et le registre d'accumulation.

4. Quels champs déterminent la clé d'unicité du registre d'accumulation.

5. Qu'est-ce qu'un registre périodique d'informations et qu'est-ce qu'un registre indépendant d'informations.

6. Comment créer un registre périodique d'informations.

7. Quelle est la dimension principale d'un registre.

8. Comment obtenir les valeurs de ressources des entrées de registre les plus récentes à l'aide du langage intégré.

Tâche 1. Création d'une liste déroulante

1. Ouvrez le fichier Ex03_1.xlsx.

2. Sur une feuille Prix Il y a un tableau des produits avec les prix.

3. Donnez des noms aux gammes avec le nom du produit ( Produit) et tableau des prix ( Tableau) (Image 1). Les noms de plages sont spécifiés pour leur utilisation ultérieure dans les formules et pour faciliter le travail avec les plages. Le nom de la plage peut être défini via le champ du nom de cellule ou sélectionner la commande dans le menu contextuel Attribuer un nom(bien entendu, dans un cas ou un autre, une plage de cellules doit être préalablement sélectionnée, comme le montre la figure 1).

Image 1

4. Sur la fiche de vente dans la colonne Nom du produit créez une liste déroulante et remplissez-la avec des données.

Pour créer une liste déroulante, vous devez sélectionner les cellules (vous pouvez en avoir plusieurs à la fois) dans lesquelles vous souhaitez obtenir une liste déroulante et sélectionner dans l'onglet Données bouton Vérification des données (Figure 2).

Figure 2

Sur le premier onglet Possibilités dans la liste déroulante Type de données choisir une option Liste et entrez dans la ligne Source= et le nom de la plage avec les données requises (c'est-à-dire =Produit) (Figure 3). Cliquez sur D'ACCORD.

Le résultat de la création d'une liste déroulante est présenté dans la figure 4.

Si l'ensemble des valeurs dans la source peut changer, il est préférable d'insérer ou de supprimer des données au milieu de la liste.

figure 3

Figure 4

Présentation des fonctions MATCH et INDEX

Les fonctions MATCH et INDEX sont principalement utilisées pour substituer automatiquement des données dans un tableau à partir d'une plage donnée.

Syntaxe de la fonction

MATCH(lookup_value, tableau, match_type)

Tableau est un bloc composé d'une colonne ou d'une ligne.

Type de match est le nombre -1, 0 ou 1.

Si Type de match est égal à 1, alors la fonction RECHERCHE trouve la plus grande valeur inférieure à valeur_recherche ou égal à celui-ci. Vu tableau doivent être classés par ordre croissant.

Si Type de matchéquivaut à 0, Que Fonction MATCH trouve la première valeur qui est exactement égale à l'argument valeur_recherche. Vu tableau peut être désordonné.

Si Type de match est égal à -1, alors la fonction RECHERCHE trouve la plus petite valeur supérieure à valeur_de recherche, ou égal à celui-ci. View_array doivent être classés par ordre décroissant.

Si Type de match est omis, il est supposé égal à 1 .

Fonction RECHERCHE renvoie la position de la valeur recherchée dans le tableau, pas la valeur elle-même.

Fonction INDICE a deux formes. Nous n’en considérerons qu’un seul.

INDEX(table; numéro_ligne; numéro_colonne)

Cette fonction sélectionne dans un bloc rectangulaire (table) un élément spécifié par des numéros de ligne et de colonne, et ces nombres sont comptés à partir de l'élément supérieur gauche du bloc.

Examinons le fonctionnement de ces fonctions à l'aide d'exemples spécifiques.

Tâche 2. Introduction à la fonction MATCH

A l'aide de la fonction MATCH(), déterminez la position du produit portant le nom « Yaourt » dans la gamme Produit. Pour ça:

1. dans un livre électronique Ex03_1.xlsx aller à la feuille Prix et placez le curseur de la feuille dans n'importe quelle cellule libre ;

2. entrez la formule =MATCH("Yogurt";Product;0) dans cette cellule, c'est-à-dire Nous indiquons à l'aide de cette fonction qu'il faut trouver l'élément « Yaourt » (la valeur du texte dans les fonctions est toujours indiquée entre guillemets) dans la plage Produit, type de correspondance 0 – correspondance exacte ;

3. Appuyez sur Entrée. En conséquence, vous devriez obtenir le chiffre 7 (Figure 5).

Figure 5

En effet, si l'on regarde la gamme Produit, alors la position du yaourt correspond à ce chiffre. Il convient de rappeler que la position de la valeur dans le tableau, c'est-à-dire dans une plage donnée, comptée depuis le début de la plage. Il s'avère que si nous ajoutons une nouvelle ligne au début du tableau de données, la valeur « Yaourt » passera à la ligne numéro 8, mais la plage Produit commence par la valeur « Lait », donc dès le début de la plage, la position du yaourt correspondra dans tous les cas au chiffre 7 (Figure 6).

Figure 6

Veuillez noter que la valeur de la fonction MATCH() peut être spécifiée soit la valeur elle-même, soit le nom de la cellule dans laquelle se trouve cette valeur. Par exemple, l'entrée =MATCH(A7;Product;0) fournira le même résultat que lors de l'utilisation de l'entrée =MATCH("Yogurt";Product;0).

Tâche 3. Introduction à la fonction INDEX

Rappelons que la fonction INDEX() sélectionne dans un bloc rectangulaire (table) un élément spécifié par les numéros de ligne et de colonne, et ces nombres sont comptés à partir de l'élément supérieur gauche du bloc.

Utilisez la fonction INDEX() pour rechercher dans une plage Produitélément situé en cinquième position. Pour ça:

1. dans un livre électronique Ex03_1.xlsx sur une feuille Prix placez le curseur de la feuille dans n'importe quelle cellule libre ;

2. Entrez la fonction suivante dans cette cellule =INDEX(Product;5). Appuyez sur Entrée. Le résultat est présenté dans la figure 7.

Figure 7

Notez que nous avons uniquement spécifié les valeurs de plage et le numéro de ligne pour la fonction INDEX. Nous n'avons pas indiqué le numéro de colonne. Ce paramètre est facultatif si nous recherchons une valeur dans un tableau (plage) composé d'une colonne. Si nous avons besoin de trouver une valeur dans un tableau (plage) composé de plusieurs colonnes, alors dans la formule, pour une recherche plus précise de la valeur, il est nécessaire d'indiquer le numéro de colonne.

Dans la nouvelle cellule, entrez la formule =INDEX(Table;8;2). En conséquence, vous trouverez le coût du jambon (Figure 8).

Figure 8

Substitution automatique des données

Lorsque vous travaillez avec une liste déroulante, vous pouvez automatiser la saisie des données dans le tableau. Par exemple, il existe une liste de prix contenant les noms des produits et leurs prix. Vous pouvez organiser la sélection du nom du produit dans la liste et la substitution automatique du prix du produit dans le tableau final.

La substitution automatique des données d'une table de recherche est basée sur l'utilisation combinée des fonctions INDEX et MATCH.

Tâche 4. Combiner les fonctions MATCH et INDEX

Dans le livre électronique Ex03_1.xlsx sur une feuille Ventes dans une chronique Prix, à l'aide des fonctions MS Excel, permet une substitution automatique du coût des marchandises à partir de la feuille Prix, en fonction de la valeur sélectionnée dans la liste déroulante de la feuille Ventes.

1. Placez le curseur de la feuille de calcul dans la cellule C2 et entrez-y la formule suivante :

2. Appuyez sur Entrée. De ce fait, vous recevrez dans la cellule C2 le coût du produit dont le nom est indiqué dans la colonne adjacente (Figure 9). Lorsque vous sélectionnez un autre nom de produit dans la liste déroulante, la valeur du prix changera en conséquence.

Figure 9

3. À l'aide du marqueur de saisie semi-automatique, dupliquez cette formule jusqu'à la fin du tableau (Figure 10).

Figure 10

Décryptons cette formule. Cette formule commence par la fonction MATCH, qui nous permet de trouver la position de la valeur de la cellule B2 sur la feuille de calcul Ventes dans le périmètre Produit de vue Prix, et type de précision 0. Par exemple, si vous utilisez la liste des produits, qui est présentée dans la figure 10, alors la fonction RECHERCHE recherche la position du pain dont le nom est indiqué dans la cellule B2 de la colonne Nom du produit dans le périmètre Produit sur une feuille Prix. Cette position sera égale à 3. Par conséquent, dans la mémoire de l'ordinateur, la formule que nous avons saisie est

=INDEX(Tableau, MATCH(B2, Produit, 0), 2)

prendra la forme

=INDEX(Tableau,3,2)

Le paramètre « 3 » est le résultat de la fonction SEARCH.

Ensuite, la fonction INDEX entre en jeu, qui recherchera dans la plage Tableau sur une feuille Prix la valeur située à l'intersection de la troisième ligne et de la deuxième colonne. (N'oubliez pas que la plage Tableau se compose de deux colonnes). Cette valeur sera le coût du produit, dans ce cas pain = 27.

Tâche 5. Conception du tableau final

Sur une feuille Ventes dans une chronique Quantité entrez des valeurs arbitraires. Calculer les valeurs dans une colonne Total.

Tâche 6. Tâche indépendante

Ouvrir le fichier Cadres.xls . Il est nécessaire d'automatiser les changements de salaires sur une feuille Personnel .

Par exemple, il est nécessaire de transférer certains managers et de transférer des cadres supérieurs ou des consultants vers des chargeurs. Vous devez effectuer cette opération pour quatre salariés. Parallèlement au poste, le salaire devrait également changer.

Créez une nouvelle feuille et nommez-la État .

Copier vers la feuille État Colonnes Titre d'emploi Et Salaire.

Supprimez les employés en double. Pour ça:

1. Sélectionnez les colonnes poste et salaire.

2. Sur l'onglet Données cliquez sur le bouton Supprimer les doublons .

3. Supprimez la coche de la colonne Salaire.

4. Cliquez sur le bouton D'accord.

Afin de pouvoir changer de position, sur la feuille Personnel Dans la colonne Position, créez une liste déroulante. Dans ce cas, vous devrez également modifier le salaire officiel ; pour ce faire, nous automatiserons ce processus afin que lorsque vous changez de poste, Excel modifie lui-même le salaire. Pour ce faire, nous utilisons les fonctions : RECHERCHE et INDEX.

Des lignes directrices

1. Sélectionnez sur la feuille État gamme de postes. Donnez un nom à la plage sélectionnée titre d'emploi.

2. Sélectionnez sur la feuille Étatéchelle salariale. Donnez un nom à la plage sélectionnée salaire.

3. Sur une feuille Employés en colonne Salaire entrez la formule que vous chercheriez sur la feuille de calcul État dans le périmètre titre d'emploi poste correspondant au poste du salarié, puis de la gamme salaire feuille État inséré un salaire correspondant au poste trouvé.

4. Après avoir saisi la formule, assurez-vous que le salaire obtenu correspond bien au salaire du poste du salarié indiqué sur la feuille. État.

5. Changer le salaire du Ch. comptable sur feuille État. Vérifiez si le salaire correspondant a changé sur la feuille Employés.

Résolvons le problème suivant. Il est nécessaire que lors de la création ou de la modification d'un document de Prestation de Service et lors de l'ajout de toute gamme de services à la partie tabulaire, le prix actuel obtenu à partir du registre d'information et correspondant à la date du document soit immédiatement inséré.

Pour ce faire, vous avez besoin de :

    écrivez une fonction RetailPrice qui renverra le prix actuel ;

    appeler la fonction lorsqu'un nouvel élément est ajouté au document.

Puisqu'une telle fonction pourrait être nécessaire à l'avenir, nous l'écrirons dans un endroit « accessible au public » - dans un module commun.

1. Créez une fonction Prix ​​en détail dans la branche Général – Modules généraux avec le nom Travailler avec des répertoires. Définir le drapeau Appel au serveur(afin que les procédures d'exportation et les fonctions de ce module puissent être appelées depuis le client) (Fig. 71a).

Riz. 71a. Propriétés communes des modules

2. Placez le texte suivant dans le module.

Fonction RetailPrice (CurrentDate, ServiceNomenclatureElement) Exporter

//Créer un objet auxiliaire Sélection

Sélection = Nouvelle Structure("Nomenclature des Services",Élément de la Nomenclature des Services);

//Obtenir les valeurs actuelles des ressources de registre

ResourceValues=InformationRegisters.Prices.GetLast(CurrentDate, Selection);

ReturnResourceValue.Price ;

FinFonction

Expliquons la fonction.

Pour obtenir le prix public, vous devez transmettre deux paramètres à la fonction :

    Date actuelle– un paramètre de type Date, définit le point sur l’axe des temps auquel on s’intéresse à la valeur du prix public.

Cette structure contient Sélection selon les mesures du registre. Avec son aide, la dimension requise du registre de la Nomenclature des Services est déterminée, qui est égale à la référence à l'élément d'annuaire transmis à la fonction.

Nom de clé de structure ("H Nomenclature des Prestations") doit correspondre au nom de la dimension du registre spécifié dans le configurateur et à la valeur de l'élément de structure ( Elément de Nomenclature des Services) spécifie la valeur sélectionnée pour cette dimension.

La deuxième ligne contient un appel au gestionnaire du registre d'information Prix ( Registres d'information et prix) et exécution de la méthode ExécuterDernier(), qui renvoie la valeur de ressource de l'entrée de registre la plus récente correspondant à la date passée à la fonction ( Date actuelle) et enregistrer les valeurs de mesure Sélection.

Méthode Obtenir le dernier renvoie une structure contenant des valeurs de ressources, qui est stockée dans une variable Valeurs des ressources.

Dans la ligne suivante, nous obtenons le prix de vente requis en indiquant le nom de la ressource de registre requise séparé par un point ( ValueResources.Prix) et le renvoie lorsque la fonction est exécutée.

Que. cette fonction peut être appelée à un moment donné.

Il faut ouvrir Formulaire de document Exécution des services(il a été créé plus tôt). DANS Module de formulaire nécessaire ajouter une procédure lors du changement.

Pour ce faire, double-cliquez sur l'élément de formulaire Liste des articles et services (Fig. 71b).

Riz. 71b. Éléments du document de performance du service

Dans la fenêtre des propriétés de l'événement Quand ça change créez un gestionnaire d'événements avec le texte suivant :

&SurClient

Procédure Liste des Nomenclatures Service en cas de changement (Élément)

//Obtenir la ligne suivante de la section tableau

TabularPart Row = Elements.List de Nomenclature.CurrentData ;

//Fixer le prix

TabularPart Row.Price = Utilisation de Directories.RetailPrice(Object.Date, TabularPartLine.Service);

Fin de la procédure

Expliquons la fonction.

La première ligne est déjà connue : on obtient d'abord la ligne courante de la partie tabulaire du document, car nous en aurons besoin plus tard et le sauvegarderons dans une variable RowTabularPart.

Ensuite, nous appelons la fonction Prix ​​en détail()à partir d'un module commun Travailler avec des répertoires.

Le premier paramètre de la fonction transmet la date du document pour lequel vous devez obtenir le prix. Nous obtenons la date du document à partir des principaux détails du formulaire - Objet.Date.

La fonction renvoie la dernière valeur de prix, et cette valeur est affectée au champ Prix dans la ligne actuelle de la partie tabulaire du document ( RowTabularPart.Price).

Veuillez noter que la procédure Liste des nomenclaturesServiceWhenChanged() commence à travailler dans le module de formulaire côté client, car Il s'agit du gestionnaire d'événements interactif du formulaire. Lors de la création d'un modèle pour cette procédure, la plateforme placera automatiquement une directive de compilation avant la description de la procédure &SurClient.

Ensuite, nous appelons la fonction Prix ​​en détail(). Parce que cette fonction ne sera pas trouvée côté client, alors l'exécution sera transférée vers le module général Travailler avec des répertoires, qui s'exécute sur le serveur. Une fois la fonction terminée, le code du programme continuera à s'exécuter sur le client.

Vérifions les étapes ci-dessus et lançons l'application en 1C : mode Entreprise. Travaillons avec la configuration développée.

SAISIE DE DONNÉES DANS LA BD

1. Saisissez au moins 8 documents Prestation de services dans l'application.

gastrogourou 2017