1s 8 insère une ligne dans le tableau des valeurs. Quelles méthodes existent et comment rechercher plusieurs valeurs simultanément

Afin de comptabiliser l'argent et les biens, divers tableaux sont largement utilisés dans les affaires. Presque tous les documents sont un tableau.

Un tableau répertorie les marchandises à expédier depuis l'entrepôt. Un autre tableau montre les obligations de payer pour ces biens.

Par conséquent, en 1C, le travail avec des tableaux occupe une place prépondérante.

Les tableaux en 1C sont également appelés « parties tabulaires ». Les répertoires, documents et autres en ont.

La requête, une fois exécutée, renvoie une table accessible de deux manières différentes.

La première sélection - plus rapide -, l'obtention de lignes à partir de celle-ci n'est possible que dans l'ordre. La seconde consiste à télécharger le résultat de la requête dans une table de valeurs, puis à y accéder de manière aléatoire.

//Option 1 – accès séquentiel aux résultats de la requête

//récupère le tableau
Sélectionner = Query.Run().Select();
// on parcourt toutes les lignes du résultat de la requête dans l'ordre
Boucle While Select.Next()
Rapport (Sélection.Nom);
Fin du cycle ;

//Option 2 – téléchargement vers une table de valeurs
Requête = Nouvelle requête("SELECT Nom FROM Directory.Nomenclature");
//récupère le tableau
Tableau = Requête.Run().Unload().
//de plus, nous pouvons également parcourir toutes les lignes
Pour chaque ligne du cycle de table
Rapport (String.Name);
Fin du cycle ;
//ou accéder arbitrairement aux chaînes
Row = Table.Find("Pelle", "Nom");

Une caractéristique importante est que dans le tableau obtenu à partir du résultat de la requête, toutes les colonnes seront strictement typées. Cela signifie qu'en demandant le champ Nom au répertoire Nomenclature, vous recevrez une colonne de type String avec une longueur autorisée ne dépassant pas N caractères.

Tableau sur le formulaire (client gros)

L'utilisateur travaille avec le tableau lorsqu'il est placé sur le formulaire.

Nous avons discuté des principes de base du travail avec des formulaires dans la leçon sur et dans la leçon sur

Alors, plaçons le tableau sur le formulaire. Pour ce faire, vous pouvez faire glisser le tableau depuis le panneau Contrôles. De même, vous pouvez sélectionner Contrôle Formulaire/Insertion dans le menu.

Les données peuvent être stockées dans la configuration - vous devez alors sélectionner la partie tabulaire existante (précédemment ajoutée) de l'objet de configuration dont vous modifiez le formulaire.

Cliquez sur le bouton "..." dans la propriété Données. Afin de voir la liste des parties tabulaires, vous devez développer la branche Objet.

Lorsque vous sélectionnez la partie tabulaire, 1C lui-même ajoutera des colonnes au tableau du formulaire. Les lignes saisies par l'utilisateur dans un tel tableau seront automatiquement enregistrées avec l'ouvrage/document de référence.

Dans la même propriété Data, vous pouvez saisir un nom arbitraire et sélectionner le type de table de valeurs.

Cela signifie qu'un tableau de valeurs arbitraire a été sélectionné. Il n'ajoutera pas automatiquement de colonnes ni ne sera automatiquement enregistré, mais vous pouvez en faire ce que vous voulez.

En faisant un clic droit sur le tableau, vous pouvez ajouter une colonne. Dans les propriétés d'une colonne, vous pouvez préciser son nom (pour référence dans le code 1C), l'en-tête de la colonne sur le formulaire, le lien avec l'attribut de la partie tabulaire (cette dernière - si ce n'est pas un tableau arbitraire qui est sélectionné, mais un partie tabulaire).

Dans les propriétés du tableau du formulaire, vous pouvez spécifier si l'utilisateur peut ajouter/supprimer des lignes. Un formulaire plus avancé est la case à cocher Afficher uniquement. Ces propriétés sont pratiques à utiliser pour organiser des tableaux destinés à afficher des informations, mais pas à les éditer.

Pour gérer le tableau, vous devez afficher un panneau de commande sur le formulaire. Sélectionnez l'élément de menu Formulaire/Insérer un contrôle/Barre de commandes.

Dans les propriétés de la barre de commandes, cochez la case Remplissage automatique pour que les boutons du panneau apparaissent automatiquement.

Tableau sur formulaire (client léger/géré)

Sur un formulaire géré, ces actions semblent un peu différentes. Si vous devez placer une partie tabulaire sur le formulaire, développez la branche Objet et faites glisser l'une des parties tabulaires vers la gauche. C'est tout!

Si vous devez placer une table de valeurs, ajoutez un nouvel attribut de formulaire et dans ses propriétés spécifiez le type – table de valeurs.

Pour ajouter des colonnes, utilisez le menu contextuel sur cet attribut de formulaire, sélectionnez Ajouter une colonne d'attribut.

Ensuite, faites également glisser le tableau vers la gauche.

Pour qu'un tableau ait une barre de commandes, dans les propriétés du tableau, sélectionnez les valeurs dans la section Utilisation – Position de la barre de commandes.

Télécharger un tableau vers Excel

N'importe quel tableau 1C situé sur le formulaire peut être imprimé ou téléchargé sur Excel.

Pour ce faire, faites un clic droit sur un espace vide du tableau et sélectionnez Liste.

Dans un client (léger) géré, des actions similaires peuvent être effectuées à l'aide de l'élément de menu Toutes les actions/Afficher la liste.

Rechercher dans le tableau des valeurs 1C

Quelles méthodes existent et comment rechercher plusieurs valeurs simultanément.

Il existe deux méthodes spéciales pour rechercher une table de valeurs :

1. Trouver

TVHorizon = Directories.Nomenclature.FindByName("TVHorizon");
FoundString = TZNomenclature.Find(TVHorizon);
//nous pouvons également spécifier dans quelles colonnes rechercher pour accélérer la recherche
FoundString = TZNomenclature.Find(TVHorizon, "Nomenclature");

Cette méthode renvoie la première ligne trouvée avec la valeur souhaitée, ou Undefined si elle ne la trouve pas. Par conséquent, il est pratique de l’utiliser pour rechercher des valeurs uniques, car sinon, lorsqu'une valeur est trouvée, vous devrez la supprimer du tableau afin de trouver la suivante.

Pour éviter ce problème, il existe la méthode suivante qui vous permet de trouver un tableau de chaînes correspondantes :

2. Rechercher des chaînes


Sélection Structure.Insert("Nomenclature", TVHorizon); // indique d'abord la colonne où chercher, puis quoi rechercher.

Cette méthode renvoie toujours un tableau, mais il peut être vide si rien n'est trouvé. Et cette méthode, comme la précédente, renvoie les lignes du tableau de valeurs elles-mêmes, et non les valeurs elles-mêmes dans un tableau séparé. Par conséquent, en modifiant les valeurs dans la chaîne du tableau ou, comme dans la méthode précédente, pour la chaîne trouvée, vous modifierez la valeur dans le tableau des valeurs traité.

Un autre avantage de cette méthode est qu'elle peut effectuer une recherche dans plusieurs colonnes de la table de valeurs à la fois :


SelectionStructure = Nouvelle structure ;
Sélection Structure.Insert("Nomenclature", TVHorizon);
Structure de sélection.Insert("Quantité", 10);
FoundArray de lignes = TZNomenclature.FindLines(SelectionStructure);

Le seul point négatif, comme vous pouvez le constater, est que vous ne pouvez pas utiliser d’autres types de comparaison que « égal »

Une table de valeurs est un objet universel spécifique conçu pour stocker des données dans une représentation tabulaire. La principale différence entre une table et des objets d'application réside dans l'absence de liaison aux tables de base de données physiques. Le tableau des valeurs n'existe que dans la RAM, ce qui, d'une part, offre des opportunités uniques et, d'autre part, impose certaines restrictions. Néanmoins, les possibilités d'interaction avec la table sont comparables à l'interaction avec des objets qui existent réellement dans la base de données.

Historiquement, le tableau des valeurs dans 1C a un double objectif, étant un analogue virtuel des tableaux existants, mais en même temps c'est aussi un élément de contrôle. Avec le passage à une application gérée, une grande partie de cette fonctionnalité est devenue obsolète, mais elle peut désormais également constituer un élément d'interface utilisateur, mais avec certaines limitations importantes.

Structure d'une table de valeurs en tant qu'objet

Les propriétés d'une table de valeurs sont déterminées par des combinaisons de deux collections prédéfinies : ses colonnes et ses lignes.

Tableau des valeurs Colonnes

Une colonne d'un tableau de valeurs est sa propriété déterminante. C'est l'ensemble des colonnes du tableau qui détermine sa structure. Les colonnes correspondent aux champs de tables physiques ou de colonnes familières de l'interface utilisateur d'une section tabulaire ou d'un journal de documents. Une colonne peut avoir un nom interne, un type de valeur et un titre qui s'affiche lorsque vous travaillez de manière interactive avec la table.

Les colonnes étant une collection d’objets, vous pouvez ajouter, supprimer et modifier des colonnes.

Ligne du tableau de valeurs

Du point de vue de l'interface logicielle, les chaînes constituent une collection distincte intégrée dans une table de valeurs. Ils sont analogues aux enregistrements des tables physiques, c'est-à-dire aux lignes familières à l'utilisateur dans une section tabulaire ou un journal de documents. Chaque ligne individuelle est un objet avec un ensemble de propriétés nommées, dont les noms correspondent aux noms des colonnes du tableau.

Ainsi, interagir avec une chaîne est très similaire à interagir avec d’autres objets. Vous pouvez lire et écrire ses propriétés, notamment en utilisant la fonction prédéfinie « FillPropertyValues() ». Étant donné que les lignes constituent la collection principale de la table de valeurs, la méthode « Clear() » est utilisée pour supprimer toutes les lignes de la table.

Créer un tableau de valeurs

Il existe de nombreuses façons de préparer un tableau de valeurs à l'emploi. Examinons quelques-uns d'entre eux. Chaque exemple sera fourni sous forme de listes de codes avec des commentaires.

Créer une table à l'aide du constructeur

La méthode principale qui vous permet de créer exactement la table dont le développeur a besoin est malheureusement la plus laborieuse, car elle nécessite de spécifier manuellement toutes les propriétés de table nécessaires.

DemoTable = Nouveau ValueTable ; // Tout d'abord, nous initialisons le TK // Ensuite, nous déterminons les paramètres nécessaires pour les nouvelles colonnes et les ajoutons à la collection // Création de la colonne "Nomenclature" Name = "Nomenclature"; ValueType = New TypeDescription("DirectoryLink.Nomenclature"); Titre = « Nomenclature (produit) » ; DemoTable.Columns.Add(Nom, ValueType, En-tête); // Création de la colonne "Quantité" Nom = "Quantité"; ValueType = Nouveau TypeDescription("Nombre"); DemoTable.Columns.Add(Nom, ValueType); // À la suite de ces manipulations, nous avons créé une table vide avec des colonnes typées // Si vous avez besoin d'utiliser un typage plus précis des types primitifs, alors vous devez utiliser la syntaxe étendue du constructeur « Description des types »

Créer un tableau en copiant

Si vous disposez d’une référence avec une structure et/ou une composition adaptée, vous pouvez copier ou télécharger le tableau de valeurs de référence. Si la table de référence est une autre table, alors vous devez utiliser la méthode « Copier les tables de référence ». S'il s'agit d'une partie tabulaire ou d'un ensemble d'enregistrements de registre, vous devez utiliser la méthode « Décharger la table de valeurs ». Si vous n'avez besoin que de la structure, vous pouvez utiliser la méthode « Copier les colonnes ».

// Option avec copie de toutes les lignes de la norme de spécification technique mais en ne conservant que les deux colonnes spécifiées Colonnes de la norme = "Nomenclature, Quantité" ; DemoTable = TableEtalon.Copy(, ColumnsEtalon); // Option de copie des lignes présélectionnées de la norme de spécification technique, tout en préservant les deux colonnes spécifiées. Lignes de la norme = SelectIntoArrayLes lignes dont nous avons besoin dans la table de la norme (); ColumnsStandard = "Nomenclature, Quantité" ; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // Option de copie des lignes de la norme de spécification technique en utilisant le filtre spécifié, en préservant une colonne « Nomenclature » // Toutes les lignes dont la valeur dans la colonne Quantité est 0 seront sélectionnées, seule la colonne Nomenclature Sélection de ligne = Nouvelle Structure(" Quantité" apparaîtra dans le tableau résultant, 0); ColonnesStandard = "Nomenclature" ; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // Option avec copie complète du tableau et suppression ultérieure d'une ligne avec la valeur du champ quantité égale à zéro et suppression de toute la colonne « Quantité » Sélection de ligne = Nouvelle Structure("Quantité", 0); ColonnesStandard = "Nomenclature" ; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); TableRow = DemoTable.Find(0, "Quantité"); DemoTable.Delete(TableRow); DemoTable.Columns.Delete("Quantité"); // Des options similaires et leurs modifications peuvent être appliquées aux parties tabulaires et aux ensembles d'enregistrements de registre

Créer une table avec une requête

Si un modèle de table dont vous avez besoin existe dans la base de données, vous pouvez utiliser une requête pour créer rapidement une table avec la structure souhaitée.

// Un exemple de création d'une table vide basée sur la structure du registre d'accumulation // Il est facile de deviner que de cette manière vous pouvez également obtenir une table remplie Query = New Query("SELECT FIRST 0 * From Accumulation Register. Produits Dans Entrepôt"); RequestResult = Request.Execute(); DemoTable = Résultat de la requête.Unload(); // Un exemple de création d'une table vide en utilisant des types et des noms de champs explicitement spécifiés Query = New Query; Query.Text = "SELECT TOP 0 | Value(Directory.Nomenclature.EmptyLink) AS Nomenclature, | EXPRESS(0 AS NUMBER(15, 3)) AS Quantité"; RequestResult = Request.Execute(); DemoTable = Résultat de la requête.Unload(); // IMPORTANT! N'oubliez pas que les types de valeurs de colonnes obtenues à partir d'une requête contiennent toujours le type Null // Ainsi, le TK créé par la requête a toujours des types de colonnes composites

Conclusion

Dans ce court article, nous avons examiné les propriétés de base et les techniques pratiques pour créer un tableau de valeurs, suffisant pour comprendre et commencer à utiliser. L'objet table de valeurs lui-même est si multiforme qu'une description détaillée de ses capacités nécessite la rédaction d'un article séparé sur les techniques et méthodes de travail.

Voici un petit fait pour commencer - des exemples simples de travail avec une table de valeurs :

1. Créez un tableau de valeurs

ValueTable = Nouveau ValueTable ;


2. Créez des colonnes pour le tableau des valeurs :

ValueTable.Columns.Add("Nom");
Valeur Table.Columns.Add("Last Name");


3. Ajoutez de nouvelles lignes en utilisant les noms de colonnes :


NewLine.Name = "Vasily" ;
NewLine.LastName = "Pupkin";


4. Comment rechercher une valeur dans la table des valeurs :
Il est nécessaire de trouver une ligne de tableau contenant la valeur souhaitée.

FoundRow = ValueTable.Find (SearchValue);


5. Trouver la première occurrence dans certaines colonnes du tableau des valeurs

FoundRow = ValueTable.Find(SearchValue, "Fournisseur, Acheteur");


6. Si vous devez rechercher toutes les occurrences dans le tableau des valeurs :
Nous utilisons la structure de recherche.

SearchStructure = Structure("Employé", SearchValue);
Tableau de FoundRows = ValueTable.FindRows(SearchStructure);


Créons une structure de recherche dont chaque élément contiendra le nom de la colonne comme clé et la valeur souhaitée dans cette colonne comme valeur. Nous transmettons la structure de recherche en tant que paramètre à la méthode FindLines(). En conséquence, nous obtenons des lignes de tableau.
Si vous ajoutez une recherche de la valeur souhaitée à la structure de recherche, par exemple également dans la colonne Responsable, alors en appliquant la méthode FindLines(), nous obtiendrons toutes les lignes où l'employé et le responsable sont égaux au valeur recherchée.

7. Comment parcourir un tableau de valeurs dans un ordre aléatoire

Pour chaque ligne actuelle de la boucle du tableau des valeurs
Rapport (CurrentRow.Name);
Fin du cycle ;

Même chose en utilisant les index :

SeniorIndex = ValueTable.Quantity() - 1 ;
Pour le compte = 0 au cycle SeniorIndex
Rapport (TableValues ​​[Compte]. Nom);
Fin du cycle ;


8. Suppression d'une ligne de tableau de valeurs existante

ValueTable.Delete (Ligne à supprimer);

par index

ValueTable.Delete(0);


9. Suppression d'une colonne existante de la table de valeurs

ValueTable.Columns.Delete(ColumnDeleted);


par index

ValueTable.Columns.Delete(0);

Il faut tenir compte du fait que supprimer une ligne (ou une colonne) « du milieu » du tableau des valeurs entraînera une diminution de un des index des lignes situées « après » la suppression.

10. Comment remplir un tableau de valeurs si les noms de colonnes sont contenus dans des variables ?

NewRow = ValueTable.Add();
NewRow[ColumnName] = Valeur ;


11. Comment remplir toute la colonne du tableau des valeurs avec la valeur souhaitée ?
La colonne Indicateur Comptable Fiscal du tableau de valeurs Table des Valeurs doit être renseignée avec la valeur Faux

Tableau des valeurs Remplissez les valeurs (Faux, "Drapeau de comptabilité fiscale");


Nous utilisons la méthode FillValues() pour la table de valeurs. Le premier paramètre est la valeur à remplir. Le deuxième paramètre est le nom de la colonne à remplir.

12. Comment puis-je remplir la table de valeurs « Receiver Table » avec les données de la table de valeurs « SourceTable » ?

Si la table des destinataires n'existe pas encore au moment de l'opération ou si ses colonnes précédentes n'ont pas besoin d'être sauvegardées, vous pouvez la créer comme une copie complète de l'original.

Table des destinataires = Table source.Copy();


Deuxième option : la table ReceiverTable existe, et il serait dommage de perdre ses colonnes et ses restrictions sur les types de données des colonnes. Mais vous devez renseigner les données des colonnes dont les noms correspondent aux noms de la table source.

Transfert de données partiel pour les colonnes dont les noms correspondent :

Pour chaque ligne du SourceTable du cycle SourceTable
FillPropertyValues(NewRow, SourceTableRow);
Fin du cycle


Pour chaque ligne de la table source, une nouvelle ligne est ajoutée à la table réceptrice et les valeurs sont renseignées dans les colonnes de la nouvelle table dont les noms correspondent aux noms des colonnes de la table source

Si les tables n'ont pas de colonnes portant les mêmes noms, la table de destination finira par contenir autant de lignes avec des valeurs nulles qu'il y avait de lignes dans la table source.
Si pour certaines colonnes du même nom, le type de valeur des données de la table source ne tombe pas dans le tableau des types de colonnes autorisés de la table de destination, nous obtiendrons des valeurs vides dans ces champs.
Considérons le troisième cas. Dans le cas de colonnes de même nom, la colonne de la table destination doit être mise en totale conformité avec la colonne de la table source.

Copie complète des données pour les colonnes avec des noms correspondants

Mêmes colonnes = Nouveau tableau ();

Pour chaque colonne du cycle SourceTable.Columns
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

Si colonne correspondante<>Indéfini alors

// Récupère les propriétés de la colonne.
Nom = Colonne.Nom ;
ValueType = Colonne.ValueType ;
En-tête = Colonne.En-tête ;
Largeur = Colonne.Largeur ;

// Remplace les colonnes dans la table de destination.
Index = TableReceiver.Columns.Index(MatchingColumn);

TableReceiver.Columns.Delete(Index);
ReceiverTable.Columns.Insert (Index, Nom, ValueType, En-tête, Largeur);

// Ajoute le nom suivant des colonnes correspondantes au tableau.
Même Columns.Add(Column.Name);

fin si;

Fin du cycle ;

// Parcourez les lignes de la table source.
Pour chaque ligne du SourceTable du cycle SourceTable

// Ajoute une nouvelle ligne à la table de destination.
NewRow = TableReceiver.Add();

// Remplissez les valeurs dans les cellules correspondantes.
Pour chaque Nom Colonnes À partir de Colonnes du même nom Cycle
NewRow[ColumnName] = SourceTableRow[ColumnName];

Fin du cycle ;

Fin du cycle ;


Nous devrons remplacer la colonne de la table de destination par une nouvelle, dont les propriétés correspondront entièrement à la colonne de la table source.
Par conséquent, si une colonne du même nom est trouvée dans la table des destinataires, nous collectons toutes les propriétés de la nouvelle colonne dans des variables. Ensuite, supprimez l'ancienne et créez une nouvelle colonne. Ensuite, nous parcourons les lignes de la table source.
Dans la boucle, nous ajoutons une nouvelle ligne à la table de réception et ouvrons une boucle sur les noms de colonnes dans le tableau de colonnes correspondantes.
A l'intérieur de cette boucle imbriquée, nous remplissons les cellules de la table de destination avec les données de la cellule de la table source.

13. Comment ajouter des colonnes au tableau de valeurs « ValueTable » avec des restrictions de type ?

Lors de l'ajout d'une colonne, vous pouvez simplement spécifier son nom et laisser le deuxième paramètre de la méthode Add() intact. Dans ce cas, le type de données de la colonne est arbitraire.

Ajouter une colonne sans spécifier de type de données

// Ajoute une colonne sans restrictions de type.
ValueTable.Columns.Add("Objet");


Vous pouvez renseigner la valeur du deuxième paramètre. Là, vous devez transmettre une description du type autorisé pour la colonne. La description elle-même peut être obtenue à l'aide du constructeur, en lui passant en paramètre le nom de chaîne du type (s'il existe plusieurs types, séparés par des virgules) ou un tableau de types valides.

Ajout d'une colonne indiquant le type de données

// Restrictions sur les types de données de colonnes :
// Uniquement les éléments du répertoire "Contreparties".
Tableau des valeurs.Columns.Add("Compte", Nouvelle description des types("DirectoryLink.Accounts"));


Si parmi les types autorisés pour remplir les données de la colonne se trouve une chaîne, vous pouvez limiter sa profondeur de bits (longueur), spécifier l'utilisation d'une longueur variable ou fixe. Tout cela est réalisé en créant un objet à l'aide du constructeur String Qualifiers. Ensuite, cet objet sera utilisé comme l'un des paramètres du constructeur TypeDescription.

Utilisation de qualificatifs pour spécifier le type de données d'une colonne de table de valeurs

// Prépare et définit des restrictions pour les données de type String.
Qualificateurs de chaîne = Nouveaux qualificatifs de chaîne (20, AllowedLength.Variable);
ValidTypes = NewTypeDescription("String", StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Des actions similaires peuvent être effectuées en ce qui concerne les qualificatifs de nombre et de date.
Attention : les descriptions de type peuvent être construites par le constructeur soit « à partir de zéro », soit une description de type existante peut être utilisée comme base.

Utilisation de déclarations de type existantes pour spécifier le type de données d'une colonne de table de valeurs

// Extension de la description de type précédemment utilisée.
QualifiersNumbers = Nouveaux QualifiersNumbers(10, 2, ValidSign.Non-negative);
DateQualifiers = Nouveaux DateQualifiers(DateParts.Date);
ValidTypes étendus = Nouveau TypeDescription (ValidTypes, "Numéro, Date", Qualificateurs de nombre, Qualificateurs de date) ;

ValueTable.Columns.Add("Note", ExtendedAcceptableTypes);

Le tableau de valeurs de la plateforme 1C 8.3 (8.2) est un ensemble universel de valeurs qu'un développeur peut utiliser lors du développement de logiciels pour implémenter ses algorithmes. Essentiellement, une table de valeurs 1C est un ensemble dynamique de valeurs comportant des colonnes et des colonnes.

Articles sur d'autres collections universelles de valeurs en 1C

Apprenez la programmation en 1C dans mon livre « Programmation en 1C en 11 étapes »

  1. Le livre est écrit dans un langage clair et simple – pour un débutant.
  2. Apprenez à comprendre l'architecture 1C ;
  3. Vous commencerez à écrire du code en langage 1C ;
  4. Maîtriser les techniques de programmation de base ;
  5. Consolidez vos connaissances à l'aide d'un cahier de problèmes ;

Un excellent guide pour développer dans une application 1C gérée, aussi bien pour les développeurs novices que pour les programmeurs expérimentés.

  1. Langage de présentation très accessible et compréhensible
  2. Le livre est envoyé par email au format PDF. Peut être ouvert sur n’importe quel appareil !
  3. Comprendre l'idéologie d'une application 1C gérée
  4. Apprenez à développer une application gérée ;
  5. Apprenez à développer des formulaires 1C gérés ;
  6. Vous serez capable de travailler avec les éléments de base et nécessaires des formulaires gérés
  7. La programmation sous une application gérée deviendra claire

Code promo pour une réduction de 15% - 48PVXHeYu


Si cette leçon vous a aidé à résoudre un problème, que vous l'avez aimé ou que vous l'avez trouvée utile, alors vous pouvez soutenir mon projet en faisant un don de n'importe quel montant :

Vous pouvez payer manuellement :

Yandex.Argent - 410012882996301
Argent Web - R955262494655

Rejoignez mes groupes.