Exemple de tableau indexé 1c 7.7. La classe "fournisseur de données". Indexation avec commande supplémentaire

NouvelleColonne

Syntaxe: NouvelleColonne(strColumnName)

Possibilités :
  • Nom du fluxColonnes- tapez : Chaîne. ID de la colonne à créer. Vous pouvez utiliser n'importe quel symbole dans l'identifiant de colonne, mais n'oubliez pas que les symboles "-", "*", "#", "^" et "&" sont utilisés comme modificateurs lors de la construction d'expressions d'index, et un index sera construit sur des colonnes avec de tels symboles est impossible.

Retour: tapez : Nombre. Le numéro de la colonne créée.

Description: Crée une colonne dans un tableau.

RenommerColonne / RenommerColonne

Syntaxe: RenommerColonne(Colonne, strNouveauColonne)

Possibilités :
  • Colonne
  • pageNomColonnes- tapez : Chaîne. Nouvel identifiant de colonne.

Description: Renomme une colonne de table.

Nombre de colonnes / Nombre de colonnes

Syntaxe: Le nombre de colonnes()

Retour: tapez : Nombre. Nombre de colonnes dans le tableau.

Description: Renvoie le nombre de colonnes dans le tableau.

Nom de colonne

Syntaxe: Nom de colonne (Colonne)

Possibilités :
  • Colonne- tapez : Chaîne, Nombre. Identificateur ou numéro de colonne.

Retour: tapez : chaîne. ID de colonne. S'il n'existe pas de colonne de ce type, une exception est levée.

Description: Renvoie l'identifiant de la colonne spécifiée, tel qu'il a été spécifié dans la méthode NewColumn().

Numéro de colonne

Syntaxe: Numéro de colonne (colonne)

Possibilités :
  • Colonne- tapez : Chaîne, Nombre. Identificateur ou numéro de colonne.

Retour: tapez : Nombre. Numéro de colonne.

Description: Renvoie le numéro de la colonne spécifiée.

NouvelleLigne / NouvelleLigne

Syntaxe: Nouvelle ligne()

Retour: tapez : Nombre. Le numéro de la ligne créée.

Description: Crée nouvelle ligne au bout du tableau.

Supprimer les lignes

Syntaxe: Supprimer les lignes ([Index])

Possibilités :
  • Indice Si le paramètre est spécifié et qu'un filtre est défini à cet index, les lignes qui répondent aux conditions de filtre seront supprimées.

Description: Supprime des lignes d'un tableau. Si un index est précisé, alors le filtre appliqué est pris en compte lors de la suppression.

Nombre de lignes / RowCount

Syntaxe: Nombre de lignes ([Index = ""], [flOnlyUnique = 0])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. Si le paramètre est spécifié et qu'un filtre est défini à cet index, seules les lignes qui satisfont aux conditions du filtre sont prises en compte.
  • flOnlyUnique- tapez : Numéro. Indicateur pour prendre en compte uniquement les valeurs d'index uniques.

Retour: tapez : Nombre. nombre de lignes dans le tableau.

Description: Renvoie le nombre de lignes dans le tableau.

Numéro de ligne / Numéro de ligne

Syntaxe: Numéro de ligne (index)

Possibilités :
  • Indice- tapez : Chaîne, Nombre. identifiant ou numéro d’index.

Retour: tapez : Nombre. Le numéro de ligne actuel à l’index spécifié. Si la ligne n'est pas sélectionnée, alors 0.

Description: Renvoie le numéro de ligne actuel dans la sélection à l'index spécifié.

Nettoyer

Syntaxe: Clair()

Description: Débarrassage complet de la table. Tous les index, lignes et colonnes sont supprimés.

AjouterIndex / AjouterIndex

Syntaxe: AddIndex(strIdentifier, strExpression, [hOnlyUniqueValues ​​​​= 0])

Possibilités :
  • ID str- tapez : Chaîne. ID de l'index créé ;
  • pageExpression- tapez : Chaîne. Expression d'index. Une expression d'index consiste en une liste d'identifiants de colonnes séparés par des virgules. Si le nom de la colonne est précédé du symbole "-", alors le tri s'effectue dans ordre inverse. Si le nom de la colonne est précédé du symbole « * », alors le tri est effectué selon la représentation interne de l'objet. Si un nom de colonne est précédé d'un caractère "#", alors les espaces à gauche et à droite sont coupés avant de comparer les chaînes. Si un nom de colonne est précédé d'un caractère "^", les chaînes sont comparées sans tenir compte de la casse. Les modificateurs de tri ("-", "*", "#", "^") peuvent être utilisés dans n'importe quelle combinaison. L'expression d'index peut être une chaîne vide - cela équivaut à un tri par numéro de ligne, ou à aucun tri (un filtre ne peut pas être installé sur un tel index).
  • avecOnlyUniqueValues- tapez : Numéro. Si 1, alors seules les lignes contenant des valeurs d'index uniques seront incluses dans l'index. Les lignes avec des index en double seront ignorées et ne seront pas incluses dans les opérations d'itération de ligne, de sommation, de pliage, de déchargement et de chargement.

Retour: tapez : Nombre. Le numéro de l'index créé.

Description: Ajoute un index à la table.

Nombre d'index / IndexCount

Syntaxe: IndexNuméro()

Retour: tapez : Nombre. Nombre d'index dans la table.

Description: Renvoie le nombre d'index dans la table.

NomIndex/NomIndex

Syntaxe: NomIndex(Index)

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index.
Retour: tapez : chaîne. Nom de l'index. Si l'index n'est pas présent sur la table, une exception est levée.

Description: Renvoie le nom de l'index.

IndexExpr / IndexExpr

Syntaxe: IndexExpression(Index)

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index.
Retour: tapez : chaîne. Expression d'index. Si l'index n'est pas présent sur la table, une exception est levée.

Description: Renvoie l'expression d'index pour l'index donné.

Numéro d'index

Syntaxe: Numéro d'index (index)

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index.
Retour: tapez : Nombre. Numéro d'index. Si l'index n'est pas dans la table, la fonction renvoie 0.

Description: Renvoie le numéro d'index.

Trier

Syntaxe: Trier (strExpression)

Possibilités :
  • pageExpression- tapez : Chaîne. Expression d'index. Une expression d'index consiste en une liste d'identifiants de colonnes séparés par des virgules. Si le nom de la colonne est précédé du symbole "-", alors le tri est effectué dans l'ordre inverse. Si le nom de la colonne est précédé du symbole « * », alors le tri est effectué selon la représentation interne de l'objet. Si l'expression d'index est ligne vide, alors le tri est désactivé (un filtre ne peut pas être installé sur un tel index).

Description: Modifiez le tri dans l'index principal.

IndexEstUnique

Syntaxe: IndexUnique([Index = ""])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index.

Retour: tapez : Nombre. 1 - il n'y a aucune ligne dans le tableau avec des valeurs de clé en double ; 0 - le tableau contient des lignes avec les mêmes valeurs clés.

Description: vérifie si l'index est unique.

UniqueKeyCount

Syntaxe: Nombre de ClésUniques([Index = ""])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index.

Retour: tapez : Nombre. Nombre de clés uniques.

Description: renvoie le nombre de clés uniques par indice spécifié.

Nombre de valeurs clés

Syntaxe: Nombre de valeurs clés ([Index = ""], Clé)

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index.
  • Clé

Retour: tapez : Nombre. Le nombre de lignes avec la clé spécifiée.

Description: renvoie le nombre de lignes pour lesquelles la valeur de la clé est égale au paramètre Key.

TrouverRow / TrouverRow

Syntaxe: FindRow (Index, Clé, [hFindLast = 0], [hPosition = 0])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index.
  • Clé- tapez : n'importe lequel. Si l'index est construit sur une colonne, alors la valeur de recherche. Si l'index est sur plusieurs colonnes, alors il doit s'agir d'une liste de valeurs contenant les valeurs des colonnes clés spécifiées dans la méthode AddIndex().
  • hRechercherDernier- tapez : Numéro. Si 1, alors la dernière ligne avec une valeur de clé correspondante sera trouvée.
  • hPosition

Retour:

Description: Trouvez la chaîne qui correspond exactement à la clé.

FindNearestMore / FindNearestGE

Syntaxe: FindNearestMore (Clé, [Index = ""], [hPosition = 0])

Possibilités :
  • Clé- tapez : n'importe lequel. Si l'index est construit sur une colonne, alors la valeur de recherche. Si l'index est sur plusieurs colonnes, alors il doit s'agir d'une liste de valeurs contenant les valeurs des colonnes clés spécifiées dans la méthode AddIndex().
  • Indice
  • hPosition- tapez : Numéro. Si vaut 1, alors si la recherche réussit, l'index sera positionné sur la ligne trouvée. Si une sélection a été ouverte avant l'exécution de la méthode (à l'aide de la méthode SelectRows), elle est repositionnée à la valeur trouvée. Si la sélection n'a pas été ouverte, elle est ouverte et après une recherche réussie, les méthodes GetRow(), NextRow() et PreviousRow() peuvent être utilisées. L'index principal est également repositionné.

Retour: tapez : Nombre. Le numéro de la ligne trouvée. Si rien n'est trouvé, alors 0.

Description: Recherchez une chaîne égale ou supérieure à une clé.

FindNearestLess / FindNearestLE

Syntaxe: FindNearestLess (Clé, [Index = ""], [hPosition = 0])

Possibilités :
  • Clé- tapez : n'importe lequel. Si l'index est construit sur une colonne, alors la valeur de recherche. Si l'index est sur plusieurs colonnes, alors il doit s'agir d'une liste de valeurs contenant les valeurs des colonnes clés spécifiées dans la méthode AddIndex().
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • hPosition- tapez : Numéro. Si vaut 1, alors si la recherche réussit, l'index sera positionné sur la ligne trouvée. Si une sélection a été ouverte avant l'exécution de la méthode (la méthode SelectRows), alors elle est repositionnée à la valeur trouvée. Si la sélection n'a pas été ouverte, elle est ouverte et après une recherche réussie, les méthodes GetRow(), NextRow() et PreviousRow() peuvent être utilisées. L'index principal est également repositionné.

Retour: tapez : Nombre. Le numéro de la ligne trouvée. Si rien n'est trouvé, alors 0.

Description: Recherchez une chaîne égale ou inférieure à une clé.

Définir le filtre / Définir le filtre

Syntaxe: SetFilter(KeyMin, KeyMax, [Index = ""], [hOnlyUnique = 0], [hInversion = 0])

Possibilités :
  • CléMin- tapez : n'importe lequel. Limite inférieure du filtre. Il est défini de la même manière que dans la méthode FindString().
  • CléMax- tapez : n'importe lequel. Limite supérieure du filtre. Il est défini de la même manière que dans la méthode FindString().
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • UniquementUnique- tapez : Numéro. Si 1, alors seules les lignes avec une valeur de clé unique seront incluses dans la sélection.
  • hInversion- tapez : Numéro. 0 - filtre normal, 1 - filtre inverse.

Si l'index est construit sur une colonne, la valeur de la colonne peut être utilisée comme clé. Si l'index est sur plusieurs colonnes, alors la clé doit être une ValueList contenant les valeurs des colonnes clés spécifiées dans la méthode AddIndex().

L'une des clés peut être omise - dans ce cas, la valeur minimale/maximale possible sera automatiquement utilisée comme valeur omise. Ceux. le filtre aura une bordure ouverte.

Description: installe un filtre dynamique sur la table à l'index spécifié. Le filtre affecte le fonctionnement des méthodes : InStart(), SelectRows(), InEnd(), GetRow(), NextRow(), PreviousRow(), Collapse(), Total(), FillColumn(), Unload(), Load. (), Fusionner().

Sous-ensemble

Syntaxe: Sous-ensemble (swKey, hNumberFixColumns, [Index = ""])

Possibilités :
  • szClé- tapez : Liste de valeurs. Une liste contenant les valeurs des colonnes d'index à corriger.
  • hNombreFixColonnes- tapez : Numéro. Nombre de colonnes à index fixe
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.

Description: définit un filtre, fixant les valeurs des premières colonnes de l'index.

TZ.AddIndex("et1", "k1, k2"); szKey = CreateObject("Liste de valeurs"); szKey.AddValue(5); TZ.Subset(szKey, 1, "and1");

En conséquence, l'échantillon contiendra uniquement les lignes dont la colonne k1 = 5.

Désactiver le filtre / DropFilter

Syntaxe: DésactiverFiltre([Index = ""])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index.

Description: désactive le filtre à l'index spécifié.

DansDébut/PremièreLigne

Syntaxe: BDébut([Index = ""], [flOnlyUnique = 0])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • UniquementUnique

Retour

Description: est positionné avant la première ligne de l'index spécifié, de sorte que la méthode NextRow() soit positionnée sur la première ligne.

Sélectionner des lignes

Syntaxe: SelectRows([Index = ""], [flOnlyUnique = 0])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • UniquementUnique- tapez : Numéro. Indicateur d'échantillonnage basé sur des valeurs uniques. L'indicateur affecte le résultat de tous les appels ultérieurs aux méthodes GetRow(), NextRow() et PreviousRow() pour cette sélection.

Retour tapez : Nombre. 1 - l'opération s'est terminée avec succès, 0 - la sélection est vide.

Description: est positionné avant la première ligne de l'index spécifié, la méthode GetRow() est donc positionnée sur la première ligne.

Dernière rangée

Syntaxe: ATEnd([Index = ""], [flOnlyUnique = 0])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • UniquementUnique- tapez : Numéro. Indicateur d'échantillonnage basé sur des valeurs uniques. L'indicateur affecte le résultat de tous les appels ultérieurs aux méthodes GetRow(), NextRow() et PreviousRow() pour cette sélection.

Retour tapez : Nombre. 1 - l'opération s'est terminée avec succès, 0 - la sélection est vide.

Description: est positionné après la dernière ligne de l'index spécifié, donc la méthode PreviousRow() est positionnée sur la dernière ligne.

Ligne suivante / Suivant

Syntaxe: Ligne Suivante([Index = ""], [hOnlyUnique = 0])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • UniquementUnique

Retour

Description:

Note: le flag de sélection unique défini à 1 dans les méthodes BStart() et BEnd() est prioritaire sur le flag de cette méthode.

ObtenirRow / ObtenirRow

Syntaxe: GetString([Index = ""], [hOnlyUnique = 0])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • UniquementUnique- tapez : Numéro. 1 - la ligne suivante avec une valeur de clé différente sera obtenue, toutes les lignes en double seront ignorées.

Retour tapez : Nombre. 1 - l'opération s'est terminée avec succès, 0 - il n'y a plus de lignes.

Description: passer à la ligne d'index suivante.

Note:

Ligne Précédente / Précédent

Syntaxe: Ligne précédente ([Index = ""], [hOnlyUnique = 0])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • UniquementUnique- tapez : Numéro. 1 - la ligne suivante avec une valeur de clé différente sera obtenue, toutes les lignes en double seront ignorées.

Retour tapez : Nombre. 1 - l'opération s'est terminée avec succès, 0 - il n'y a plus de lignes.

Description: passer à la ligne d'index précédente.

Note: le flag de sélection unique défini à 1 dans les méthodes BStart() et BEnd() est prioritaire sur le flag de cette méthode.

ObtenirValeur

Syntaxe: GetValue([hRow = EmptyValue], Colonne)

Possibilités :
  • hChaîne- tapez : Numéro. Numéro de ligne. Si le numéro de ligne n'est pas spécifié, alors la ligne actuelle est prise.
  • Colonne- tapez : Chaîne, Nombre. Identificateur ou numéro de colonne.

Retour tapez : n’importe lequel. Valeur de cellule du tableau.

Description: renvoie la valeur dans la cellule spécifiée du tableau.

Définir la valeur / Définir la valeur

Syntaxe: SetValue([hRow = EmptyValue], Colonne, Valeur)

Possibilités :
  • hChaîne- tapez : Numéro. Numéro de ligne. Si le numéro de ligne n'est pas spécifié, alors la valeur de la ligne actuelle est définie.
  • Colonne- tapez : Chaîne, Nombre. Identificateur ou numéro de colonne.
  • Signification- tapez : n'importe lequel. Nouvelle valeur de cellule.

Description: définit la valeur de la cellule spécifiée.

Ensemble

Syntaxe: Ensemble (hRow, Colonne, Valeur)

Description: synonyme de la méthode SetValue().

Réduire / GroupBy

Syntaxe: Réduire(strColumnsCollapse, strColumnsSum [, ExistingIndexName = ""])

Possibilités :
  • LignesColonnesConvolution- tapez : Chaîne. Liste des colonnes par lesquelles le cumul sera effectué. Cette ligne est exactement la même que l'expression d'index dans la méthode AddIndex(). Pour un cumul, la table est d'abord indexée par cette expression, puis les lignes avec le même index sont additionnées. Le résultat est toujours placé dans la première ligne par numéro, toutes les autres lignes sont supprimées.
  • MontantLigneColonnes- tapez : Chaîne. Liste des colonnes à additionner. Le séparateur est le caractère ",". Les espaces sont ignorés.
  • NomIndexExistant- tapez : Chaîne, Nombre. Si un nom d'index est spécifié, les colonnes réduites sont ignorées et la réduction est effectuée à l'index spécifié. Seules les lignes incluses dans le filtre participent à la convolution.

Description: réduit le tableau par colonnes<КолонкиСвёртки>, en additionnant les valeurs dans les colonnes<КолонкиСумм>. Colonnes non incluses dans<КолонкиСвёртки>Et<КолонкиСумм>ne sont pas retirés du tableau. La convolution est également possible en utilisant un index existant : aucun temps n'est perdu à créer un index temporaire et une convolution sélective est possible en utilisant le filtre d'index actuel.

Somme totale

Syntaxe: Total(SommeColonne, [Index = ""])

Possibilités :
  • Montants de colonnes
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.

Retour

Description: calcule le montant pour la colonne spécifiée, en tenant compte du filtre d'index.

TotalByRange/SommeByRange

Syntaxe: TotalByRange (Colonne de somme, [Index = ""], KeyMin, KeyMax)

Possibilités :
  • Montants de colonnes- tapez : Chaîne, Nombre. La colonne pour laquelle vous souhaitez obtenir le montant.
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • CléMin- tapez : n'importe lequel. Limite inférieure de la plage. Il est défini de la même manière que dans la méthode FindString().
  • CléMax- tapez : n'importe lequel. Limite supérieure de la plage. Il est défini de la même manière que dans la méthode FindString().

Retour tapez : Nombre. Le montant dans la colonne spécifiée.

Description: calcule le montant dans la colonne spécifiée, en spécifiant la plage de somme. La fonction ne prend pas en compte filtres installés et n'installe pas lui-même de filtres permanents.

TotalByNode/NodeSum

Syntaxe: TotalByNode(SumColumn [, Index])

Possibilités :
  • Montants de colonnes- tapez : Chaîne, Nombre. La colonne pour laquelle vous souhaitez obtenir le montant.
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.

Retour: tapez : Nombre. Le montant dans la colonne spécifiée. Si la sélection n'est pas active (il n'y a pas de nœud courant), elle renvoie 0.

Description: calcule la somme de la colonne spécifiée pour le nœud actuel de l'arborescence d'index. Cela est logique lorsque l'index n'est pas unique et que vous devez calculer le total pour la clé actuelle.

TZ.AddIndex("Nom", "Nom", 0); TZ.FindString("Nom", "Ivanov", 0, 1); //se positionner sur le noeud qui contient toutes les lignes portant le nom Ivanov Sum = TZ.TotalByNode("Sum", "Last Name"); //renvoie 420 (100 + 120 + 200) TK.FindString("Last Name", "Petrov", 0, 1); //se positionner sur le noeud qui contient toutes les lignes portant le nom Petrov Sum = TZ.TotalByNode("Sum", "Last Name"); //renvoie 1100 (500 + 600)

Groupe

Syntaxe: Groupe (strGroups, strColumnsSum, [hDecryptionLastLevel = 0])

Possibilités :
  • groupeGroupes- tapez : Chaîne. Une chaîne décrivant la structure de regroupement souhaitée. Spécifié sous la forme<ИмяИндекса1>: <ИндексноеВыражение1> [; <ИмяИндекса2>: <ИндексноеВыражение2>...]. IndexExpression est une chaîne au même format que pour la méthode AddIndex(), avec un ajout : si le caractère « & » est présent dans la liste des modificateurs de colonne, alors les totaux des groupes de répertoires seront calculés pour cette colonne. Il ne peut y avoir qu'une seule colonne avec un tel modificateur à chaque niveau de regroupement.
  • MontantLigneColonnes- tapez : Chaîne. Une ligne avec des colonnes par lesquelles les montants doivent être calculés.
  • hDécryptage du Dernier Niveau- tapez : Numéro. 1 - dans chaque ligne du dernier niveau de regroupement, il y aura un tableau avec un décryptage, contenant les lignes du tableau d'origine sous une forme intacte. 0 - le dernier niveau sera réduit.

Description: génère un tableau avec une structure arborescente en fonction des regroupements. A chaque niveau de regroupement, seules les valeurs uniques à l'index correspondant restent. Les colonnes de somme contiennent les sommes de toutes les lignes avec une valeur clé correspondante. Les lignes avec des valeurs clés correspondantes sont écrites dans un tableau, qui est placé dans la colonne Descendants - cette colonne est créée lors du processus de regroupement.

Exemple : on a une table en entrée

regroupez-le :

TZ.Group("Nom : Nom ; Prénom : Prénom", "Montant");

et obtenez un tableau comme celui-ci (la colonne TzDescendants affiche le contenu du tableau TzDescendants) :

Lors du regroupement, il est également possible de calculer des montants par groupes de répertoires - pour ce faire, vous devez préciser « & » dans la liste des modificateurs d'index. Si le tableau comporte une colonne nommée "<ИмяКолонкиСправочника>_Parent", alors le parent de l'élément sera extrait de cette colonne - cela réduit le nombre d'appels à la base de données et augmente considérablement les performances. La table finale sera organisée sous la forme d'une arborescence, répétant exactement la structure du répertoire . Le niveau de regroupement suivant est situé dans les feuilles de cet arbre (c'est-à-dire dans les lignes qui ne sont pas des groupes). Pour faciliter le travail avec l'arborescence résultante, la colonne « __ThisGroup__ » est ajoutée au tableau, dans laquelle 1 est écrite pour tous les groupes, et une EmptyValue pour les éléments. Une colonne « __Level__ » est également ajoutée, qui est remplie avec la valeur du niveau des groupes du répertoire (la numérotation commence à 1) Pour les éléments, une EmptyValue est écrite dans le Colonne « __Niveau__ ».

Remplir la ligne

Syntaxe: FillRow([hRowNumber = 0], Source, [hSourceRowNumber = 0], [hColumnNames = 0])

Possibilités :
  • hNuméro de ligne- tapez : Numéro. Numéro de ligne à renseigner. Si<= 0, то заполняется текущая строка.
  • Source- tapez : IndexedTable, Table de valeurs, Liste de valeurs. Source de données pour remplir la ligne.
  • hNuméro de ligne source- tapez : Numéro. Numéro de ligne dans la table source. Par défaut, la ligne actuelle de l'index prédéfini est utilisée. Si la Source est une ValueList, alors ce paramètre est ignoré.
  • hPar noms de colonnes- tapez : Numéro. 0 - les valeurs de la source sont copiées par numéros de colonne ; 1 - les valeurs sont copiées par noms de colonnes. Si le récepteur ne possède pas de colonne portant le même nom, la valeur n'est pas copiée. Si la Source est une ValueList, alors les noms de colonnes sont considérés comme des représentations symboliques des valeurs.

Description: remplit une ligne de tableau à partir d'une ligne d'un autre tableau ou d'une liste de valeurs.

RemplirColonne (option 1)

Syntaxe: FillColumn([Index = ""], Colonne, Source, [SourceIndex = ""], [SourceColumn = ""])

Possibilités :
  • Indice
  • Colonne
  • Source- tapez : Table Indexée. Source de données pour remplir la colonne.
  • Index des sources- tapez : Chaîne, Nombre. L'identifiant ou le numéro d'index par lequel les lignes de la table source sont classées et filtrées. La valeur par défaut est l'index principal.
  • Colonne source- tapez : Chaîne, Nombre. L'identifiant ou le numéro de la colonne à partir de laquelle les valeurs seront extraites. Si le paramètre n'est pas spécifié, alors la colonne source est déterminée par le paramètre Colonne.

Description: remplit une colonne de table à partir d'une colonne d'une autre table indexée.

RemplirColonne (option 2)

Syntaxe: FillColumn([Index = ""], Colonne, Source, [SourceColumn = ""])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. L'identifiant ou le numéro d'index par lequel les lignes de la table en cours de remplissage sont ordonnées et filtrées. La valeur par défaut est l'index principal.
  • Colonne- tapez : Chaîne, Nombre. Identifiant ou numéro de la colonne à remplir.
  • Source- tapez : Table de valeurs, Liste de valeurs. Source de données pour remplir la colonne.
  • Colonne source- numéro ou identifiant de la colonne dans laquelle seront extraites les valeurs. Si le paramètre n'est pas spécifié, alors la colonne source est déterminée par le paramètre Colonne. Pour une liste de valeurs, le paramètre est ignoré.

Description: remplit une colonne de tableau à partir d'une colonne d'un autre tableau (Tableau des valeurs) ou d'une liste de valeurs.

RemplirColonne (option 3)

Syntaxe: FillColumn([Index = ""], Colonne, Valeur)

Possibilités :
  • Indice- tapez : Chaîne, Nombre. L'identifiant ou le numéro d'index par lequel les lignes de la table en cours de remplissage sont ordonnées et filtrées. La valeur par défaut est l'index principal.
  • Colonne- tapez : Chaîne, Nombre. Identifiant ou numéro de la colonne à remplir.
  • Signification- type : n'importe lequel, sauf IndexedTable, ValueTable, ValueList. La valeur avec laquelle la colonne sera remplie.

Description: remplit une colonne de tableau avec la même valeur.

Décharger

Syntaxe: Décharger (Récepteur [, Index = ""] [, Colonnes = ""] [, onlyUnique = 0])

Possibilités :
  • Destinataire- tapez : IndexedTable, Table de valeurs, Document, Liste de valeurs, Non défini. La variable dans laquelle la table sera chargée. S'il s'agit d'un document, sa partie tabulaire est remplie. Si le type est Indéfini, une table de type IndexedTable est créée.
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal.
  • Colonnes- tapez : Chaîne, Nombre. Liste des colonnes séparées par des virgules ou un numéro de colonne à décharger. Si aucune valeur n'est spécifiée ou si une chaîne vide est spécifiée, le paramètre est ignoré.
  • UniquementUnique- tapez : Numéro. Indicateur pour télécharger uniquement des valeurs uniques.

Description: transfère la table actuelle dans une autre table ou dans une nouvelle. Si la table de destination existe, elle est complètement effacée. Les index ne sont pas copiés lors du déchargement. Le déchargement s'effectue en tenant compte de l'index et du filtre.

Charger

Syntaxe: Charger(Source, [Index = ""], [Colonnes = ""])

Possibilités :
  • Source- tapez : IndexedTable, Value Table, Document. La table à partir de laquelle les données seront chargées. Si le type est Document, alors la partie tabulaire du document sera chargée.
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index dans la table source. La valeur par défaut est l'index principal. Si le paramètre Source est de type Document, alors l'Index est interprété comme une chaîne contenant une liste de champs dans la partie tabulaire du document. Si la Source est de type ValueTable, alors ce paramètre est ignoré.
  • Colonnes- tapez : Chaîne, Nombre. Liste des colonnes séparées par des virgules ou un numéro de colonne à charger dans la table source. Définit une liste de colonnes qui seront chargées dans la table. Si aucune valeur n'est spécifiée ou si une chaîne vide est spécifiée, le paramètre est ignoré. Si la source est de type Document, ce paramètre est ignoré (utilisez le paramètre Index).

Description: charge les données de la table spécifiée, en fonction de l'index. La table actuelle est complètement effacée avant le chargement. Les index ne sont pas copiés.

ChargerRequête

Syntaxe: LoadRequest(Demande, [hFlag = 0], [hTotals = 1])

Possibilités :
  • Demande- tapez : Demande. La requête à partir de laquelle les données seront chargées.
  • hDrapeau- tapez : Nombre, Chaîne. 0 - valeurs des groupes et des fonctions (par défaut) ; 1 - valeurs des groupes et des fonctions, variables supplémentaires ; 2 - valeurs des ordres de groupes et de fonctions ; 3 - valeurs des groupes de classement et des fonctions, variables supplémentaires ; Ligne - « Article(1), Article(2), Article, Entrepôt, Revenu, Sortie », où Article(1) est la valeur du premier tri du groupe « Article ».
  • résultats- tapez : Numéro. 0 - ne pas afficher les résultats du regroupement ; 1 - afficher les résultats du regroupement en haut (par défaut) ; 2 - afficher les résultats par regroupements ci-dessous ; 3 - afficher les résultats de regroupement en haut et en bas.

Description: charge les données de la requête spécifiée. La table actuelle est complètement effacée avant le chargement.

Jointure interne

Syntaxe: InnerJoin (strColumnsLeftIT, RightIT, IndexRightIT, strColumnsRightIT)

Possibilités :
  • ligneColonnesGaucheIT
  • C'est vrai
  • IndexRightIT ligneColonnesGaucheIT).
  • pageColonnesDroiteIT <ИмяКолИст>|<ИмяКолИст:ИмяКолНазн> [,...]". <ИмяКолИст> <ИмяКолНазн> <ИмяКолИст> <ИмяКолНазн>.

Description: Jointure interne ligneColonnesGaucheIT pageColonnesDroiteIT. Si une ligne du tableau de gauche n'est pas trouvée dans le tableau de droite, alors la ligne du tableau de gauche est supprimée.

Joint gauche

Syntaxe: LeftConnection(strColumnsLeftIT, RightIT, IndexRightIT, strColumnsRightIT)

Possibilités :
  • ligneColonnesGaucheIT- tapez : Chaîne. Colonnes dont les valeurs serviront à rechercher une ligne dans le tableau de droite.
  • C'est vrai- tapez : Table Indexée. Tableau ci-joint.
  • IndexRightIT- tapez : Chaîne, Nombre. Le nom ou le numéro d'index par lequel les lignes de la table de droite seront recherchées. Le nombre de colonnes d'index doit être égal au nombre de colonnes de recherche (voir paramètre ligneColonnesGaucheIT).
  • pageColonnesDroiteIT- tapez : Chaîne. Liste des colonnes qui seront copiées du tableau de droite vers celui de gauche. La liste est spécifiée au format "<ИмяКолИст>|<ИмяКолИст:ИмяКолНазн> [,...]". <ИмяКолИст>- nom de la colonne dans le tableau de droite ; si une telle colonne n'existe pas dans le tableau de gauche, elle sera créée.<ИмяКолНазн>- si spécifié, alors la valeur de la colonne de la table de droite avec le nom<ИмяКолИст>sera copié dans la colonne du tableau de gauche<ИмяКолНазн>.

Description: Effectue une opération similaire à une commande SQL Joint gauche. Pour chaque ligne du tableau de gauche (le tableau de gauche est l'objet actuel), toutes les lignes du tableau de droite qui correspondent à l'expression clé sont ajoutées. L'expression clé est déterminée par le paramètre ligneColonnesGaucheIT. Les valeurs des colonnes spécifiées dans le paramètre sont transférées du tableau de droite vers celui de gauche pageColonnesDroiteIT restent inchangés.

Rejoindre à droite

Syntaxe: RightConnection (strColumnsLeftIT, RightIT, IndexRightIT, strColumnsRightIT)

Possibilités :
  • ligneColonnesGaucheIT- tapez : Chaîne. Colonnes dont les valeurs serviront à rechercher une ligne dans le tableau de droite.
  • C'est vrai- tapez : Table Indexée. Tableau ci-joint.
  • IndexRightIT- tapez : Chaîne, Nombre. Le nom ou le numéro d'index par lequel les lignes de la table de droite seront recherchées. Le nombre de colonnes d'index doit être égal au nombre de colonnes de recherche (voir paramètre ligneColonnesGaucheIT).
  • pageColonnesDroiteIT- tapez : Chaîne. Liste des colonnes qui seront copiées du tableau de droite vers celui de gauche. La liste est spécifiée au format "<ИмяКолИст>|<ИмяКолИст:ИмяКолНазн> [,...]". <ИмяКолИст>- nom de la colonne dans le tableau de droite ; si une telle colonne n'existe pas dans le tableau de gauche, elle sera créée.<ИмяКолНазн>- si spécifié, alors la valeur de la colonne de la table de droite avec le nom<ИмяКолИст>sera copié dans la colonne du tableau de gauche<ИмяКолНазн>.

Description: Effectue une opération similaire à une commande SQL Rejoindre à droite. Pour chaque ligne du tableau de gauche (le tableau de gauche est l'objet actuel), toutes les lignes du tableau de droite qui correspondent à l'expression clé sont ajoutées. L'expression clé est déterminée par le paramètre ligneColonnesGaucheIT. Les valeurs des colonnes spécifiées dans le paramètre sont transférées du tableau de droite vers celui de gauche pageColonnesDroiteIT. Si une ligne du tableau de gauche n'est pas trouvée dans celui de droite, elle est supprimée. Si la ligne du tableau de droite n'est pas dans celle de gauche, alors elle est ajoutée, ainsi que toutes les colonnes sauf celles spécifiées dans le paramètre pageColonnesDroiteIT

Rejoindre complètement

Syntaxe: FullJoin (strColumnsLeftIT, RightIT, IndexRightIT, strColumnsRightIT)

Possibilités :
  • ligneColonnesGaucheIT- tapez : Chaîne. Colonnes dont les valeurs serviront à rechercher une ligne dans le tableau de droite.
  • C'est vrai- tapez : Table Indexée. Tableau ci-joint.
  • IndexRightIT- tapez : Chaîne, Nombre. Le nom ou le numéro d'index par lequel les lignes de la table de droite seront recherchées. Le nombre de colonnes d'index doit être égal au nombre de colonnes de recherche (voir paramètre ligneColonnesGaucheIT).
  • pageColonnesDroiteIT- tapez : Chaîne. Liste des colonnes qui seront copiées du tableau de droite vers celui de gauche. La liste est spécifiée au format "<ИмяКолИст>|<ИмяКолИст:ИмяКолНазн> [,...]". <ИмяКолИст>- nom de la colonne dans le tableau de droite ; si une telle colonne n'existe pas dans le tableau de gauche, elle sera créée.<ИмяКолНазн>- si spécifié, alors la valeur de la colonne de la table de droite avec le nom<ИмяКолИст>sera copié dans la colonne du tableau de gauche<ИмяКолНазн>.

Description: Effectue une opération similaire à une commande SQL Rejoindre complètement. Pour chaque ligne du tableau de gauche (le tableau de gauche est l'objet actuel), toutes les lignes du tableau de droite qui correspondent à l'expression clé sont ajoutées. L'expression clé est déterminée par le paramètre ligneColonnesGaucheIT. Les valeurs des colonnes spécifiées dans le paramètre sont transférées du tableau de droite vers celui de gauche pageColonnesDroiteIT. Si la ligne du tableau de gauche n'est pas trouvée dans celle de droite, alors les valeurs des colonnes du tableau de gauche restent inchangés. Si la ligne du tableau de droite n'est pas dans celle de gauche, alors elle est ajoutée, ainsi que toutes les colonnes sauf celles spécifiées dans le paramètre pageColonnesDroiteIT sont remplis de valeurs vides.

Fusionner

Syntaxe: Fusionner (TZ [, Index = ""] [, Colonnes = ""])

Possibilités :
  • savoirs traditionnels- tapez : IndexedTable, Table de valeurs. La table à partir de laquelle les données seront chargées.
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index dans la table source. La valeur par défaut est l'index principal. Si les ToR sont de type Table de valeurs, alors ce paramètre est ignoré.
  • Colonnes- tapez : Chaîne, Nombre. Liste des colonnes séparées par des virgules ou un numéro de colonne dans la table source. Définit une liste de colonnes qui participeront au processus de fusion. Si aucune valeur n'est spécifiée ou si une chaîne vide est spécifiée, le paramètre est ignoré.

Description: ajoute des lignes de la table source à la table actuelle. Si la table source comporte des colonnes qui ne figurent pas dans la table actuelle, elles sont créées. La jointure s'effectue en tenant compte de l'index et du filtre de la table source.

Intersection / Conjonction

Possibilités :
  • TZ2- tapez : Table Indexée. La table avec laquelle l'intersection est construite.
  • Index des savoirs traditionnels actuels
  • IndexSecondTK
  • flAjouterLignesTZ2

Description: intersection de deux tables par champs clés. Le résultat de l'intersection est un tableau dans lequel il y a des lignes du TK actuel, qui sont dans le TK2, et des lignes du TK2, qui sont dans le TK actuel (en tenant compte des lignes d'ajout du TK2 fl.). La correspondance des chaînes est déterminée par les indices IndexCurrentTK et IndexTK2. Le nombre de colonnes dans les index doit être le même.

Différence

Possibilités :
  • TZ2- tapez : Table Indexée. Tableau à partir duquel la différence est construite.
  • Index des savoirs traditionnels actuels- tapez : Chaîne, Nombre. Le nom ou le numéro d'index de la table actuelle.
  • IndexSecondTK- tapez : Chaîne, Nombre. Nom ou numéro d'index dans TZ2.
  • flAjouterLignesTZ2- tapez : Numéro. Indicateur pour ajouter des lignes TZ2 au résultat.

Description: différence entre deux tables dans des champs clés. Le résultat est un tableau dans lequel il y a des lignes du TK actuel, qui ne sont pas dans le TK2, et des lignes du TK2, qui ne sont pas dans le TK actuel (en tenant compte de l'ajout de lignes du TK2 fl.). La correspondance des chaînes est déterminée par les indices IndexCurrentTK et IndexTK2. Le nombre de colonnes dans les index doit être le même.

Copie

Syntaxe: Copier([hCopyIndices = 0], [hCopyData = 1])

Possibilités :
  • hCopierIndices- tapez : Numéro. Si 1, alors les index et les filtres seront également copiés.
  • hCopierDonnées- tapez : Numéro. Si 1, alors les données seront copiées ; si 0, alors seule la structure est copiée.

Retour: tapez : Table indexée. Une variable qui est une copie d'un objet.

Description: crée une copie de la table.

VFile / Enregistrer dans un fichier

Syntaxe: VFile(strFileName, [hFormat = 1], [Index = ""], [hColumnNames = 1])

Possibilités :
  • strNomFichier- tapez : Chaîne. Le nom du fichier dans lequel la table doit être écrite. Si le fichier existe déjà, il est écrasé.
  • hFormat
  • Indice
  • hSINomsColonnes- tapez : Numéro. 1 - la première ligne du fichier contiendra les noms des colonnes. Cela n'a de sens que pour les fichiers csv.

Description:écrit la table dans un fichier.

À partir du fichier / LoadFromFile

Syntaxe: FromFile(strFileName, [hFormat = 1], [hColumnNames = 1])

Possibilités :
  • strNomFichier- tapez : Chaîne. Le nom du fichier à partir duquel la table doit être lue.
  • hFormat- tapez : Numéro. Format de fichier. Peut prendre les valeurs suivantes : 1 - enregistrer les valeurs au format interne ; 2 - enregistrer les valeurs dans un format externe ; 3 - fichier csv avec les valeurs au format interne ; 4 - fichier csv avec des valeurs dans un format externe.
  • hSINomsColonnes- tapez : Numéro. 1 - la première ligne du fichier stocke les noms des colonnes. Cela n'a de sens que pour les fichiers csv. Si le paramètre = 0, alors les noms de colonnes sont formés comme __col__<НомерКолонки>.

Retour: tapez : Nombre. 1 - table lue avec succès ; 0 - erreur de lecture.

Description: lit une table à partir d'un fichier.

INString / SaveToString

Syntaxe: INSString([hFormat = 1], [Index = ""])

Possibilités :
  • hFormat- tapez : Numéro. 1 - enregistrement des valeurs au format interne ; 0 - écriture des valeurs dans un format externe.
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal. Le téléchargement vers un fichier s'effectue en tenant compte du tri et du filtrage (le cas échéant) selon l'index spécifié.

Retour: tapez : chaîne. Représentation en lignes du tableau.

Description: Convertit une table en représentation sous forme de chaîne pour la sérialisation. La chaîne résultante peut ensuite être utilisée dans la méthode FromString().

DeString / LoadFromString

Syntaxe: DeChaîne(strReprésentation)

Possibilités :
  • pagePrésentation- tapez : Chaîne. Représentation en lignes du tableau.

Description: charge une table à partir d'une représentation sous forme de chaîne.

Choisir une ligne

Syntaxe: SelectRow([Row = 0], [strWindowTitle = ""], [hTimeout = 0], [Index = ""])

Possibilités :
  • Doubler- tapez : n'importe lequel. La variable où est placée la valeur est le numéro de la ligne sélectionnée. Lorsque vous appelez la méthode ici, vous pouvez transmettre la valeur du numéro de ligne de départ.
  • pageTitreFenêtre- tapez : Chaîne. Titre de la fenêtre de sélection.
  • hDélai d'expiration- tapez : Numéro. Temps pendant lequel le système attend (en secondes) une réponse de l'utilisateur. S'il n'est pas précisé, le temps d'attente est infini.
  • Indice

Retour:

Description:

Montre montre

Syntaxe: Afficher([Index = ""])

Possibilités :
  • Indice- tapez : Chaîne, Nombre. Identifiant ou numéro d'index. La valeur par défaut est l'index principal. Dans la fenêtre de sélection, des lignes apparaîtront en tenant compte du tri et du filtrage (le cas échéant) par l'index spécifié.

Retour: tapez : Nombre. 1 - si la sélection est effectuée (le bouton "OK" est enfoncé) ; 0 - si la sélection n'est pas effectuée (le bouton "ANNULER" est enfoncé).

Description: Ouvre une fenêtre permettant de sélectionner de manière interactive une ligne dans un tableau de valeurs. La méthode est principalement destinée au débogage.

Une utilisation appropriée des index peut accélérer les requêtes non seulement plusieurs fois, mais aussi des centaines, voire des milliers de fois.

Ce type d’accélération ne peut tout simplement pas être obtenu avec du matériel. Ce sujet mérite donc une attention particulière.

Souvent, afin d'accélérer une requête, vous devez créer votre propre index, et il existe plusieurs manières de le faire.

Dans les didacticiels vidéo, nous examinerons plusieurs façons de créer un index. Nous considérerons également une situation dans laquelle un index de la composition requise ne peut pas être créé à l'aide des outils de plate-forme standard et devra être créé dans le SGBD.

Configuration d'index à l'aide des outils de plateforme standard

La leçon montre quels index sont réellement créés pour les objets au niveau du SGBD.
Tout dans ce sujet n'est pas aussi évident qu'il y paraît à première vue. Après tout, pour un certain nombre d'objets, il existe des fonctionnalités de création d'index.
Nous examinerons tous les détails dans cette vidéo.

Indexation avec commande supplémentaire

La vidéo montre la différence entre l'option de construction d'index Indice depuis Index avec supplément commande.
L'exemple montre quel type d'index la plateforme construira lors de l'utilisation d'un tri supplémentaire.

Création d'un index pour les dimensions de registre

L'indexation de la première dimension des registres présente plusieurs nuances.
La vidéo montre quels index sont créés pour les mesures de registre. La situation de l'indexation de la première dimension du registre est également considérée.

Vandalesvq 1114 08.11.14 17:00 Actuellement sur le sujet

() CheBurator, il existe un regroupement de conditions, en version 5+. Mais ce n'est qu'en 1C++ - http://www.1cpp.ru/forum/YaBB.pl?num=1273512019.
Il était prévu de réaliser une conception conditionnelle, ainsi qu'un regroupement, mais hélas. Il n'y a qu'une seule raison à cela : je ne travaille pas avec 7 sur une base commerciale et je ne modifie donc pas ces outils. Il n’y a même rien de basique sur quoi tester. Auparavant, les bases de données SQL étaient également basées sur des fichiers et de différentes configurations en masse. Aujourd’hui, il semble qu’il n’y en ait qu’un seul sur lequel il y a eu du développement et celui-là ait été ouvert il y a très longtemps.

De manière générale, voici les dernières modifications :
5.0.1 du 15/04/12
- Le système de sélection dans les extensions dynamiques (Répertoire, Document, Journal, Registre, Opérations, Publications) a été modifié. Ajout de la possibilité de créer des conditions arbitraires avec une hiérarchie.
- Dans le cadre du changement dans le système de sélection, des modifications ont été apportées aux objets d'extension « Data Provider.Journal », « Data Provider.Transactions », « Data Provider.Documents », « Data Provider.Directory », « Data Provider ». .Operations », « Fournisseur de données.Register ».
- Correction du comportement du bouton « Sélectionner par colonne actuelle ». Lorsque vous appuyez dessus, les sélections restantes ne sont pas désactivées. De plus, si la sélection est activée, elle est désactivée.
- Lorsqu'une colonne est activée, l'affichage du bouton « Sélectionner par colonne courante » change.
- La construction des conditions de sélection basées sur les détails a été optimisée.
- Correction de l'erreur de perte de la ligne actuelle lors du changement de vue hiérarchique de l'objet d'extension « Data Provider.Directory ».
- L'utilisation du paramètre « Display Selection Icon » est désactivée. Ce paramètre est laissé pour des raisons de compatibilité ascendante.
- Les objets « Fournisseur de données.Description des types » et « Fournisseur de données.Types de comparaison » ont été supprimés du fournisseur de données. Au lieu de cela, les objets communs « Description des types » et « Types de comparaison » sont utilisés respectivement. Pour plus d'informations, consultez la documentation des classes "Objects_v8".
- Correction d'un crash 1C lors du changement du type de valeur de l'objet « Fournisseur de données ».

5.0.2 du 24/04/12
- Correction d'un bug lors de la création de listes avec des valeurs de chaîne pour la sélection.
- Correction d'une erreur dans la génération d'une requête pour l'objet d'extension « Data Provider.Register » si le registre a l'attribut « Traitement rapide des mouvements »
- Les erreurs identifiées ont été corrigées.

5.0.3 du 22.05.13
- L'objet « Data Provider.Direct Request » a été mis à jour vers la version 1.8.6 en date du 22 mai 2013.
- toutes les classes sont rassemblées dans une seule archive + exemples

5.0.4 du 25/10/13
- Correction des erreurs identifiées

5.0.5 du 23.05.14
- Correction des erreurs identifiées lors de l'ajout de colonnes de données
- Ajout de la possibilité de construire des arborescences dans les champs disponibles lors de l'ajout de colonnes de données (en fait, vous pouvez désormais utiliser l'objet « Sélection » pour construire des sélections comme SKD en 8, mais vous devez avoir un fichier)

Question : Tableau de valeurs indexé


La question est : est-il possible d'indexer la table de valeurs du formulaire de dialogue et de travailler ensuite avec elle comme avec une table indexée ?
Ou est-il préférable de travailler séparément avec ITZ puis de télécharger les résultats dans le tableau des valeurs visible sur le formulaire ?
Et la deuxième question est de savoir comment s'assurer que lors du téléchargement d'ITZ dans la table des valeurs, le format des colonnes ne se trompe pas ?
Le composant PySy de 1c++ en vaut la peine, si c'est le cas.

Répondre:() après le temps de recharge de Natahauze, vous ne pouvez obtenir le pain d'épice nulle part, à moins bien sûr que ce ne soit juste le sujet d'une blague

Question : Travailler avec une table de valeurs


Bonne journée à vous, chers programmeurs. Je demande de l'aide pour résoudre un problème en 1C, je suis désolé, ce n'est pas boum-boum
J’ai essayé de le faire moi-même, mais je n’étais même pas assez intelligent pour compiler l’exemple.

1. Placez un tableau de valeurs dans le formulaire de dialogue.
2. Dans le module formulaire, décrivez les colonnes du tableau : Produit, Quantité, Prix, Montant.
3. Placez sur le formulaire de dialogue les détails de la boîte de dialogue « Produit », « Prix », « Quantité » et le bouton Ajouter une ligne, qui ajoute une nouvelle ligne au tableau des valeurs et la remplit avec les valeurs du correspondant. détails. Le montant doit être calculé comme le produit du prix et de la quantité.
4. Ajoutez un bouton Supprimer la ligne, qui supprime la ligne actuelle de la table de valeurs. Considérons la situation d'une table de valeurs vide.
5. Ajoutez un bouton Réduire, qui doit résumer le montant et la quantité des produits ; le prix moyen du produit doit être calculé dans la colonne Prix.
6. Ajoutez un bouton Développer, qui restaure l'état de la table de valeurs avant le repli.
7. Ajoutez un bouton Trier pour trier les lignes par produit.

Merci d'avance!

Répondre: plate-forme? Mode guidé ou normal ?
Dans la syntaxe "Tableau des valeurs"

Question : 8.2 - Récupérer les données d'un champ calculé d'une table de valeurs


Je ne sais pas vraiment comment l'expliquer.
Le formulaire comporte un champ de table. Dans la procédure WhenReceiveData(Element, RowDesign) dans un dossier séparé
colonne je calcule la valeur :

Pour chaque ligne de conception du cycle de lignes de conception.... Lignes de conception. Cellules. Expédié. Valeur = Formule ici.... Fin du cycle

C'est donc ainsi que je parcours les lignes de la table de valeurs et récupère les données de cette cellule ?

Répondre:

vous confondez les concepts. un champ de table n'est qu'un champ de table - il n'y a pas de spécification technique ici. tout comme tu calcules la même chose et fais le tour

Question : SKD : Hiérarchie de la table de valeurs


Bonjour!
Dites-moi comment créer une hiérarchie à partir d'un tableau de valeurs comme celui-ci

Chaîne de champ | FieldStringParent
________________________________
Catalogue principal | Catalogue principal
Vassiliev I.A. | Catalogue principal
Location de propriétés | Vassiliev
Documents divers | Vassiliev
Ivanov | Catalogue principal
Location de propriétés | Ivanov
Documents divers | Ivanov

Nous devons d’une manière ou d’une autre en sortir un arbre. Pour l'instant, cela fonctionne par programme, mais je pense qu'une telle arborescence peut être construite dans le système de stockage.

Répondre: Eh bien, par programme, vous créez un objet Value Tree et y placez les handles du propriétaire (nœuds) et des éléments subordonnés (lignes).

Et ces données se présentent uniquement sous la forme d'un tableau de valeurs, et non d'éléments d'un répertoire hiérarchique ? S’il s’agit d’un répertoire hiérarchique, c’est aussi simple que d’éplucher des poires.

Et si vous en avez besoin à partir d'une table de valeurs, en la créant comme bon vous semble, procédez comme ceci :

Vous définissez une table temporaire dans la requête où vous placez vos spécifications techniques.
Ensuite, vous effectuez une sélection dessus et joignez la ligne au parent.

Question : Transférer la Table des Valeurs vers un module commun


Bon après-midi
Nouveau sur 1C. J'étudie la version 3.0 du Thin Client. Il existe un formulaire contrôlé externe. Je souhaite ajouter un tableau de valeurs aux modules communs. Coincé, aidez s'il vous plaît :
1C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 & Sur le serveur Procédure Exécuter la requête sur le serveur () З = Nouvelle requête ; H. Texte = "SÉLECTIONNER | Décodage des paiements des ordres de dépenses, accord de contrepartie, | Ordre de paiement des dépensesDécryptage du paiement. Montant du paiement|DE | Document "Ordre de dépenses - Décryptage du paiement" AS "Ordre de dépenses - Décryptage du paiement"; Tz = Z. Exécuter () . Décharger() ; // Affiche le résultat de la requête dans la table du formulaire TF(Tz) ; Fin de procédure & sur la procédure serveur TF (Tz) Fonctions générales. Remplir le Tableau du Formulaire (TdR) Fin de la Procédure

Module général :

Erreur :(Form.Form.Form(23)) : Erreur lors de l'appel de la méthode contextuelle (FillFormTable)
Fonctions générales. Remplir le tableau du formulaire (ToR)
à cause de:
Incompatibilité de type (numéro de paramètre « 1 ») (Type de paramètre invalide. Seuls les types primitifs, les références et la structure sont autorisés)
Comment transférer les spécifications techniques pour un traitement ultérieur ?

Répondre:

message de Prsvet

Pourquoi le type transmet-il un numéro, mais lors de la transmission de spécifications techniques, il est nécessaire de définir la réutilisation des valeurs de retour à ne pas utiliser ?

Parce que,

message de Prsvet

réutiliser les valeurs de retour

Mis en cache sur le client et la table de valeurs n'est pas sérialisée sur le client

Ajouté après 32 secondes
Vous devez travailler avec ce paramètre avec soin !

Ajouté après 35 secondes
Prsvet, si vous ne savez pas comment fonctionne ce paramètre, alors mieux vaut ne pas l'utiliser !

Question : Tableau des valeurs avec remplissage cyclique des colonnes


Tous mes vœux.
La tâche consiste à afficher un tableau des entrées/dépenses de marchandises pour la période sélectionnée avec une répartition hebdomadaire. J'ai décidé de l'implémenter sous forme de tableau de valeurs (au début, je pensais en faire un rapport, mais je n'ai pas trouvé comment). Le nombre de colonnes étant inconnu à l'avance, le tableau est généré par programme :

//*** description des savoirs traditionnels en tant qu'attribut de formulaire SelectionType array = new array; arrayofSelectionType.Add(type("Table de valeurs")); ChoiceTypedescription = nouveau TypeDescription (tableau ChoiceType); arrayAttributes = nouveau tableau ; tableau d'Attributs.Add (nouvel attribut de formulaire ("TZForm", description de SelectionType, "", "TZForm")); //*** description des types CN = new QualifiersNumbers(10,2); KS = nouveaux qualificatifs de ligne (100) ; mas = nouveau tableau ; masse.Add(type("String")); TypeString = new TypeDescription(mas, ks); masse.Clear(); mas = nouveau tableau ; masse.Add(type("Nombre")); TypeNumber = new DescriptionTypes(mas, CN); masse.Clear(); // *** //créer une table temporaire de valeurs TK = new ValueTable ; TK.Columns.Add("produit", TypeString, "produit"); pour n=1 par cycle de nombre de semaines TK.Columns.Add("arrival" + n, TypeNumber, "arrival" + n); TK.Columns.Add("dépense" + n, TypeNumber, "dépense" + n); Fin du cycle ; pour chaque colonne du tableau cyclique TK.Columns de Attributes.Add (new Form Attributes (column.Name, column.ValueType, "TZForm")); Fin du cycle ; changeDetails(arrayDetails); Table SelectionFields = Elements.Add("TZForm", type("FormTable")); Table SelectionFields.DataPath = "TZForm" ; tableSelectionFields.Display = displayTable.List; pour chaque colonne du cycle ToR.column newElement = elements.Add(column.Name, type("FormField"), table of SelectionFields); newElement.View = FormFieldView.InputField ; newElement.DataPath = "TZForm." + Colonne.Nom ; newElement.Width = 10 ; Fin du cycle ;

Ensuite, la colonne du nom est remplie :

RequestNom = nouvelle demande ; zaprNom.Text = "sélectionnez l'article GoodsInWarehousesTurnover.Nomenclature AS | dans l'accumulation Register.GoodsInWarehouses.Turnover() AS GoodsInWarehousesTurnover"; TZNom = lockNom.Execute().Unload(); pour chaque strnom du cycle TZN strnom = strnom.nomenclature ; //ajoute cet élément au TK temporaire StrTZ = TK.Add(); StrTZ.product = strNom ; Fin du cycle ;

Enfin, nous déchargeons les marchandises du TK temporaire vers le formulaire TK :

ValueВFormAttributes(TZ, "TZForm");

Le problème est le remplissage cyclique des revenus et des dépenses. Si je comprends bien, chaque ligne de ces données est remplie par une boucle imbriquée dans une boucle permettant de remplir la colonne produit. C'est-à-dire qu'à chaque itération de remplissage d'une ligne avec un produit, nous faisons une demande de recettes et de dépenses, à laquelle nous transférons le nom du produit, les dates de début et de fin de la période. Le résultat de la requête est téléchargé dans une table de valeurs, qui comporte finalement une seule ligne. Cela fonctionne lorsque les données sont affichées pour toute la période, c'est-à-dire lorsqu'il y a trois colonnes : produit, reçu, dépense.

Mais dans ce cas, deux colonnes sont nécessaires pour chaque semaine. Laissez les noms de ces colonnes être différents selon le numéro de la semaine, c'est-à-dire revenu1, dépense1, revenu2, dépense2, etc. Il est clair que dans ce cas un cycle est organisé dans lequel dans la demande de revenus et dépenses, au lieu de la fin de la période, est transmise la date qui était au début de l'itération + semaine.

La question se pose lors du transfert des montants des revenus et dépenses de la table de valeurs basée sur les résultats de la requête vers une table temporaire. Comment pouvons-nous décrire qu'à chaque itération, lors du téléchargement des données de la table des résultats de la requête dans le TK temporaire, le nombre dans le nom des colonnes de revenus et de dépenses augmente de 1 ? Après tout, en général, le processus de déchargement ressemble à ceci :

TZInflowConsumption = RequestInflowExpense.Execute().unload(); pour chaque dépense entrante de TZ dans le cycle entrant exp. str TZ.receipt = line inflow outflow.receipt ; strTZ.flow = strInflowConsumptionRev.flow ; strTZ.turnover = strIncomeExp.rev.turnover; Fin du cycle ;

Répondre:

enfin arrivé au code. merci, ça a aidé. ça s'est passé comme ça :

TK = Demande de nomenclature (); pour n=1 par cycle de nombre de semaines TK.columns.add("receipt" + n, typeNumber, "receipt" + n); TZ.columns.add("flux" + n, typeNumber, "flux" + n); Fin du cycle ; pour n = 1 par cycle de nombre de semaines ColumnIn = TZ.columns.find("arrival" + n); ColumnExpense = TK.columns.find("dépense" + n); EndPeriod = startPeriod + semaine ; TZPR = RequestTurnover (BeginPeriod, EndPeriod); MPrich = TZPR.unloadColumn(0); MExp = TZPR.unloadColumn(1); TZ.loadColumn(MPrich, ColumnPrich); TZ.loadColumn(Mexp, ColumnExp); DébutPériode = FinPériode ; Fin du cycle ;

Je ne l'ai pas optimisé (par exemple, concernant une requête en boucle), puisque l'aspect final du tableau n'était initialement pas satisfaisant en termes de clarté, j'ai souhaité une solution différente. Je me suis souvenu de la mise en page et de la feuille de calcul, je l'essaie

Question : Comment puis-je le traiter dans une requête sans connaître la structure de la table de valeurs ?


Bonjour. Il existe un tableau de valeurs. Les noms exacts des colonnes ne sont pas connus. Il est nécessaire de traiter le tableau des valeurs, d'y ajouter une colonne et de la remplir. Le remplissage s'effectue à partir d'une colonne dont le nom est connu.
L'option la plus simple consiste à ajouter une colonne et à traiter la table en boucle. Mais ce n’est pas tout à fait bon.
Est-il possible de faire cela dans une requête ?
Merci.

Répondre:

En première approximation :

Sélectionnez * PLACE VT_ExternalData FROM &Table AS ExternalData

Sélectionnez ExternalData.*, Table.FIELD1 FROM VT_ExternalData AS ExternalData LEFT JOIN<Таблица>AS Table ON ExternalData.Field1 = Table.Field1

Question : Comment puis-je effectuer une sélection par propriétaire lors de la sélection d'une valeur de cellule dans un tableau de valeurs sur l'UV ?


Chers collègues! Il n’y a pas si longtemps, la vie m’a obligé à rencontrer des formes contrôlées, c’est pourquoi je ne les comprends pas encore très bien. Ne pensez pas que la question est stupide et aidez de toutes les manières possibles :) La question est la suivante. Je crée mon propre tableau de valeurs et l'affiche sur le formulaire. La première colonne est un lien vers l'annuaire de la Nomenclature, les colonnes restantes sont des liens vers l'annuaire dont la Nomenclature est Propriétaire. Comment faire en sorte que lorsque je commence à sélectionner une valeur dans une telle colonne, la liste des valeurs contienne déjà une sélection par propriétaire. Jusqu'à présent, je l'ai fait via l'événement Début de sélection, où j'ouvre une liste avec la sélection requise. Mais le problème est que je ne comprends pas où pousser la valeur résultante dans le traitement de sélection ? Et on soupçonne que la sélection par propriétaire peut être définie via la propriété de la colonne Paramètres de sélection. Que dois-je faire? Dire!

Répondre: et voilà je l'ai

&SurClient
Procédure de traitement de sélection (SelectedValue, SelectionSource) Si SelectionSource.FormName = "Directory.ObjectPropertyValues.Form.ListForm" Alors Et je ne sais pas quoi écrire
, pour placer la SelectedValue dans une cellule de tableau modifiable !!!

fin si;
Fin de la procédure

Question : Regroupement et Collapse() sur une table de valeurs


attention, c'est 7.7 :)
Donc le sujet : je télécharge le PM du document dans la table des valeurs.
Le PM du document a la forme
Charge de débit | Client | adresse de livraison.

Je traite la table de valeurs :
selectRows();
while getString() = 1 Boucle tbl.NewString(); tbl.Client = Client ; tbl.DeliveryAddress = DeliveryAddress; tbl.DocNumber = Invoice.DocNumber ; Fin du cycle ;
Le point est le suivant. Dans la mise en page, lors de l'impression, le client, l'adresse de livraison et les numéros de toutes les factures du client doivent apparaître dans une seule cellule, et il peut également y avoir un client, mais des adresses de livraison différentes. Autrement dit, si le client et l'adresse correspondent, affichez une liste de factures basée sur ces paramètres.

Répondre:() Utilisez une demande noire de documents. Regroupements : Client, Adresse de livraison, Ventes (Classés par numéro). Vous utilisez des cycles prenant en compte les regroupements. Dans le tableau d'origine, affichez les lignes du deuxième groupe (Adresse de livraison), mais après le cycle dans le troisième groupe (Ventes), car dans le deuxième groupe vous formerez une ligne avec les numéros de facture.
Numéros de facture = "" ;
Tandis que Request.Grouping(3 ) = 1 Cycle Invoice Numbers = Invoice Numbers + ?(EmptyLine (Invoice Numbers) = 1 , "", ", ") + Request.OrderingValue((TableRow.Data,LineLength)=Que recherchons-nous pour Then Tableau de FoundLines.Add(TableRow ); EndIf ; EndCycle ;