Réception des données du fichier xls 1c. Quel est le meilleur - "1C" ou "Excel" ? Quelques mots sur les erreurs possibles

Dans 1C, il existe 2 façons de travailler avec des fichiers MS Excel, via un objet COM et des outils 1C intégrés à l'aide d'un objet document de feuille de calcul. Examinons de plus près ces deux méthodes.

1. Travailler via un objet COM.

Pour cette méthode, MS Excel doit être installé, de plus, si vous travaillez avec un fichier sur le serveur, alors MS Excel doit être installé sur le serveur, si sur le client, alors MS Excel est également requis du côté client.

Un exemple (à la fin de l'article peut être consulté sous forme de texte):

Il convient de noter que tous les objets, méthodes et propriétés fournis par l'objet COM "Excel.Application" sont des objets, méthodes et propriétés de VBA, le langage de programmation de MS Office.

Noter:

Parfois, vous devez travailler avec un modèle déjà existant. Ensuite, nous sommes confrontés à la nécessité de stocker ce modèle quelque part afin que tout le monde y ait accès. utilisateurs requis... Cependant, il existe une solution plus simple, enregistrez le modèle en tant que mise en page binaire.

2. Parcourez le document tabulaire 1C.

Le tableur 1C prend en charge le format MS Excel pour l'écriture à partir de la plate-forme 8, mais pour l'ouverture uniquement à partir de la plate-forme 8.3.6. De plus, à l'ouverture, toutes les feuilles sont chargées dans un seul tableur. Depuis la version 8.3.10, lors du chargement, différentes feuilles sont chargées en tant que zones différentes.

L'exemple d'enregistrement est très simple et ne nécessite pas beaucoup d'attention :

Cependant, ici, nous avons un problème. Lors de l'enregistrement à partir de 1C dans un classeur Excel, l'affichage des noms de feuilles est désactivé par défaut.

Ce problème peut être résolu de 2 manières, 1 - dans le livre lui-même, dans les paramètres, activez l'affichage des feuilles (tous les utilisateurs ne seront pas d'accord pour le faire), 2 - pour le faire via un objet COM (nous avons encore besoin de MS Excel installé).

Après ce petit ajout, les raccourcis des feuilles seront visibles dans le fichier MS Excel.

La lecture de MS Excel n'est pas une tâche si facile, car la méthode de lecture n'est disponible que sur le serveur ou le client lourd. Pour ce faire, nous devons transférer le fichier MS Excel sur le serveur.

& sur le client

Procédure Créer un document ()

Exception

Fin des tentatives ;

Livre = Excel.WorkBooks.Add (); // Créer un nouveau classeur MS Excel

Feuille = Book.WorkSheets.Add (); // Ajout d'une feuille

Sheet.Name = "Exemple de 1C"; // Définir le nom de la feuille

Sheet.Cells (1,1) .Value = "(! LANG : Créons une formule";!}

Feuille.Cellules (2,1) .Valeur = 1;

Feuille.Cellules (2,2) .Valeur = 2;

Feuille.Cellules (2,3) .Formule = "= A2 + B2";

Sheet.Cells (3,1) .Value = CurrentDate ();

Book.SaveAs ("C: \ 1 \ Test.xlsx");

Réserver.Fermer ();

Fin de la procédure

&Sur le serveur

Fonction GetLayoutServer ()

Renvoie FormInValue ("Object"). Get Layout ("TemplateOnDownload"); // Voici comment nous obtenons la mise en page traitement externe;

FinFonction

& sur le client

Procédure Travail ()

Excel = Nouveau COMObject ("Excel.Application");

Exception

Rapport ("Tentative infructueuse de connexion du composant Excel. Peut-être programme Excel pas installé sur cet ordinateur!");

Fin des tentatives ;

Layout = Obtenir LayoutServer ();

Layout.Write (TemporaryFileName);

Vous avez une question, besoin de l'aide d'un consultant ?

Livre = Excel.WorkBooks.Open (TemporaryFileName);

TemplateSheet = Book.WorkSheets (1);

Feuille de modèle.Cellules (6,1) .Valeur = "(! LANG : Date :";!}

Feuille de modèle.Cellules (6,2) .Value = CurrentDate ();

Template Sheet.NumberFormat = "jj / mm / aa; @"; // Donnons le format de la date, ce format a été obtenu en enregistrant une macro dans MS Excel

TemplateLeaf.Columns ("B: B"). EntireColumn.AutoFit; // Étire la colonne pour que la date corresponde exactement

Book.SaveAs (FileName);

Réserver.Fermer ();

Fin de la procédure

& sur le client

Fin de la procédure

& sur le client

Procédure WriteTableDocument()

TabularDocument = Nouveau TabularDocument ();

TabularDocument.Object ("R1C1").Text = "Un exemple d'écriture vers MS Excel à partir de 1C" ;

TabularDocument.Write ("C: \ 1 \ Test2.xls", TabularDocumentFileType.XLSX);

Excel = Nouveau COMObject ("Excel.Application");

Excel.WorkBooks.Open ("C: \ 1 \ Test2.xls");

Excel.Visible = 0 ;

Excel.ActiveWindow.DisplayWorkbookTabs = 1 ;

Excel.ActiveWindow.TabRatio = 0,6 ;

Excel.ActiveWorkbook.Save ();

Excel.Application.Quitter ()

Fin de la procédure

BinaryData = New BinaryData ("C: \ 1 \ test2.xlsx");

Adresse = PlaceTemporaryStorage (BinaryData, EtaForm.UniqueIdentifier);

TabularDocument = LoadOnServer (Adresse);

TabularDocument.Show ();

Fin de la procédure

&Sur le serveur

Fonction LoadOnServer (Adresse)

TempFileName = GetTempFileName ("xlsx");

FileData = GetFrom TemporaryStorage (Adresse);

FileData.Write (TemporaryFileName);

TabularDocument = Nouveau TabularDocument ();

Retour de TabularDocument ;

Cette méthode est simple. Son essence réside dans le fait que l'objet Document tabulaire a des méthodes:

  • Écrire (< ИмяФайла>, < ТипФайлаТаблицы >) pour télécharger des données dans un fichier ;
  • Lire (< ИмяФайла>, < СпособЧтенияЗначений >) pour charger les données d'un fichier.

Attention!

La méthode Write() est disponible à la fois sur le client et sur le serveur. La méthode Read() n'est disponible que côté serveur. Souviens-toi de ça
lors de la planification de l'interaction client-serveur.

Prenons un exemple d'épargne feuille de calcul au fichier. Il est nécessaire de créer et de remplir l'objet TabularDocument de quelque manière que ce soit, et déchargement au fichier s'effectue sur une seule ligne :

TabDoc ... Écrire (FilePath, TabularDocumentFileType. XLSX);

Ici TabDoc- un tableur généré, Le chemin d'accès au fichier- le nom du fichier à télécharger, Type de fichier de document tabulaire.XLSX- formater fichier généré... Prise en charge formats suivants Exceller:

  • XLS95 - format Excel 95 ;
  • XLS97 - format Excel 97 ;
  • XLSX - format Excel 2007.

TabDoc = New TabularDocument ;
TabDoc ... Lire (Chemin d'accès au fichier, Comment lire les valeurs de document tabulaires.);

Ici Le chemin d'accès au fichier- le chemin d'accès au fichier Excel téléchargé. Méthode de lecture des valeurs de documents tabulaires. détermine comment interpréter les données lues à partir du document source. Les options sont :

  • Sens;
  • Texte.

Échange sur OLE

L'échange via la technologie d'automatisation OLE est peut-être l'option la plus courante travail programmatique avec des fichiers Excel. Il vous permet d'utiliser toutes les fonctionnalités fournies par Excel, mais est plus lent que les autres méthodes. Pour l'échange via OLE, vous devez installer MS Excel :

  • Sur l'ordinateur de l'utilisateur final, si l'échange a lieu côté client ;
  • Sur le 1C : Ordinateur serveur d'entreprise, si l'échange a lieu côté serveur.

Exemple déchargement:

// Créer un objet COM
Excel = Nouveau COMObject ("Excel.Application");
// Désactiver l'affichage des avertissements et des questions
Exceller ... DisplayAlerts = False ;
// Créer un nouveau livre
Livre = Exceller. Cahiers d'exercices. Ajouter ();
// Positionnement sur la première feuille
Feuille = Livre. Feuilles de travail (1) ;

// Écrire la valeur dans la cellule
Feuille ... Cellules (LineNumber, ColumnNumber). Valeur = valeur de la cellule ;

// Enregistrer le fichier
Livre ... Enregistrer sous (NomFichier) ;


Exceller ... Quitter ();
Excel = 0 ;

Exemples de en train de lire:

// -- OPTION 1 --

// Créer un objet COM
Excel = Nouveau COMObject ("Excel.Application");
// Ouvrir le livre
Livre = Exceller. Cahiers d'exercices. Ouvert ( Le chemin d'accès au fichier );

Feuille = Livre. Feuilles de travail (1) ;

// Ferme le livre
Livre ... Fermer (0) ;

// Fermez Excel et libérez de la mémoire
Exceller ... Quitter ();
Excel = 0 ;

// -- OPTION 2 --

// Ouvrir le livre
Livre = GetCOMObject ( Le chemin d'accès au fichier );
// Positionnement sur la feuille souhaitée
Feuille = Livre. Feuilles de travail (1) ;

// Lit la valeur de la cellule, généralement c'est la boucle pour parcourir les cellules
Valeur de la cellule = feuille. Cellules (LineNumber, ColumnNumber). Valeur;

// Ferme le livre
Livre ... Application. Qui t ();

Pour contourne de toutes les lignes remplies d'une feuille Excel, vous pouvez utiliser les techniques suivantes :

// -- OPTION 1 --
Nombre de lignes = feuille. Cellules (1, 1). Cellules spéciales (11). Ligne;
Pour le numéro de ligne = 1 par boucle de nombre de lignes
Valeur de la cellule = feuille. Cellules (LineNumber, ColumnNumber). Valeur;
Fin de cycle ;

// -- OPTION 2 --
NuméroLigne = 0 ;
Alors que le cycle de vérité
NuméroLigne = NuméroLigne + 1 ;
Valeur de la cellule = feuille. Cellules (LineNumber, ColumnNumber). Valeur;
Si PAS ValueFilled (CellValue) Puis
Avorter;
Fin si;
Fin de cycle ;

Au lieu de parcourir séquentiellement toutes les lignes de la feuille, vous pouvez vider toutes les données dans un tableau et travailler avec lui. Cette approche sera plus rapide lors de la lecture de grandes quantités de données :

Total des colonnes = feuille. Cellules (1, 1). Cellules spéciales (11). Colonne;
Nombre total de lignes = Feuille. Cellules (1, 1). Cellules spéciales (11). Ligne;

Région = Feuille. Plage (Feuille. Cellules (1, 1), Feuille. Cellules (TotalLines, TotalColumns));
Données = Région. Valeur. Décharger();

Le tableau ci-dessous présente les propriétés et les méthodes les plus courantes pour travailler avec Excel via OLE :

action Code Un commentaire
Travailler avec l'application
Paramétrer la visibilité de la fenêtre de l'application Exceller ... Visible= Faux ;
Réglage du mode d'affichage des avertissements (afficher / ne pas afficher) Exceller ... Afficher les alertes= Faux ;
Fermeture de l'application Exceller ... Quitter ();
Travailler avec un livre
Créer un nouveau livre Livre = Exceller. Cahiers d'exercices. Ajouter();
Ouvrir un livre existant Livre = Exceller. Cahiers d'exercices. Ouvrir (Nom de fichier);
Enregistrer un livre Livre ... Enregistrer sous (Nom de fichier);
Fermeture du livre Livre ... Fermer (0) ;
Travailler avec une feuille
Paramétrage de la feuille courante Feuille = Livre. Feuilles de travail (numéro de feuille);
Définir le nom Feuille ... Nom = Nom;
Réglage de la protection Feuille ... Protéger();
Supprimer la protection Feuille ... Déprotéger();
Définition de l'orientation de la page Feuille ... Mise en page. Orientation = 2; 1 - portrait, 2 - paysage
Réglage de la bordure gauche Feuille ... Mise en page. Marge Gauche = Excel. CentimètresVersPoints (Centimètres);
Fixer la limite supérieure Feuille ... Mise en page. TopMargin = Excel. CentimètresVersPoints (Centimètres);
Définir la bonne bordure Feuille ... Mise en page. Marge Droite = Excel. CentimètresVersPoints (Centimètres);
Réglage de la bordure inférieure Feuille ... Mise en page. BottomMargin = Excel. CentimètresVersPoints (Centimètres);
Travailler avec des lignes, des colonnes, des cellules
Réglage de la largeur de colonne Feuille ... Colonnes. Largeur de colonne = largeur;
Supprimer une ligne Feuille ... Lignes. Effacer();
Suppression de colonne Feuille ... Colonnes. Effacer ();
Supprimer une cellule Feuille ... Cellules (LineNumber, ColumnNumber). Effacer();
Réglage de la valeur Feuille ... Cellules (LineNumber, ColumnNumber). Valeur = Valeur;
Fusion de cellules Feuille ... Plage (Feuille. Cellules (RowNumber, ColumnNumber), Sheet.Cells (RowNumber1 ,ColumnNumber1)). Fusionner();
Installation de la police Feuille ... Cellules (LineNumber, ColumnNumber). Police de caractère. Nom = Nom de la police;
Réglage de la taille de la police Feuille ... Cellules (LineNumber, ColumnNumber). Police de caractère. Taille = Taille de la police;
Définir la police en gras Feuille ... Cellules (LineNumber, ColumnNumber). Police de caractère. Gras = 1 ; 1 - gras, 0 - normal
Mettre en italique Feuille ... Cellules (LineNumber, ColumnNumber). Police de caractère. Italique = 1 ; 1 - italique, 0 - normal
Définir la police soulignée Feuille ... Cellules (LineNumber, ColumnNumber). Police de caractère. Souligner = 2 ; 2 - souligné, 1 - non

Pour savoir quelle propriété doit être modifiée ou quelle méthode appeler, vous pouvez utiliser macro Exceller. Si vous enregistrez une macro avec les actions requises, vous pouvez alors consulter le code de programme VBA de la macro enregistrée.

Utilisation de COMSafeArray

Lors du déchargement de grandes quantités de données de 1C vers Excel, vous pouvez utiliser l'objet pour accélérer COMSafeArray... Selon la définition de l'assistant de syntaxe, COMSafeArray est un wrapper d'objet sur un tableau multidimensionnel SafeArray de COM. Vous permet de créer et d'utiliser SafeArray pour échanger des données entre des objets COM. En termes simples, il s'agit d'un tableau de valeurs qui peut être utilisé pour échanger entre les applications utilisant la technologie OLE.

// Créer un tableau COMSafe
ArrayCom = Nouveau COMSafeArray ("VT_Variant", TotalColumns, TotalStrings);
// Remplir le COMSafeArray
Pour Lignes = 0 par total de lignes - 1 cycle
Pour Nombre = 0 colonnes totales - 1 cycle
ArrayCom ... SetValue (nombre, page, valeur);
Fin de cycle ;
Fin de cycle ;
// Attribuer des valeurs du COMSafeArray à la zone de feuille de calcul Excel
Feuille ... Plage (Feuille. Cellules (1, 1), Feuille. Cellules (TotalRows, TotalColumns)). Valeur = ArrayCom;

Échange via ADO

Un fichier Excel échangé via ADO est une base de données accessible à l'aide de requêtes SQL. Il n'est pas nécessaire d'installer MS Excel, mais un pilote ODBC doit être présent, qui sera utilisé pour l'accès. Le pilote ODBC à utiliser est déterminé en spécifiant une chaîne de connexion au fichier. Généralement, le pilote requis est déjà installé sur l'ordinateur.

L'échange via ADO est sensiblement plus rapide que l'échange via OLE, mais lors du déchargement, il n'y a aucun moyen d'utiliser la fonctionnalité Excel pour formater les cellules, baliser les pages, définir des formules, etc.

Exemple déchargement:


Connexion = Nouveau COMObject ("ADODB.Connection");


Composé ... Chaîne de connexion = "

| Source de données = " + Nom de fichier + " ;
;
Composé ... Ouvert (); // Ouvrir la connexion

// Crée un objet COM pour la commande
Commande = Nouveau COMObject ("ADODB.Command");
Commander

// Assignez le texte de la commande pour créer la table
Commander ... CommandText = "CREATE TABLE [Sheet1] (Column1 char (255), Column2 date, Column3 int, Column4 float)";
Commander ... Exécuter (); // Exécuter la commande

// Attribuer le texte de commande pour ajouter une ligne de tableau
Commander ... CommandText = "INSÉRER DANS [Feuille1] (Colonne1, Colonne2, Colonne3, Colonne4) les valeurs (' '' ' ',' 8/11/2017 '", '12345', '12345.6789') ”;
Commande.Exécuter (); // Exécuter la commande

// Supprimer la commande et fermer la connexion
Commande = Non défini ;
Composé ... proche();
Connexion = Non défini;

Pour créer une nouvelle feuille et former sa structure, vous pouvez utiliser les objets ADOX.Catalogue et ADOX.Table... Dans ce cas, le code prendra la forme :

// Créer un objet COM pour travailler avec le livre
Livre = Nouveau COMObject ("ADOX.Catalog");
Livre ... ActiveConnexion = Connexion ;

// Créer un objet COM pour travailler avec la structure de données sur la feuille
Table = Nouveau COMObject ("ADOX.Table");
table ... Nom = "Feuille1" ;
table ... Colonnes. Ajouter ("Colonne1", 202) ;
table ... Colonnes. Ajouter ("Colonne 2", 7);
table ... Colonnes. Ajouter ("Colonne 3", 5);
table ... Colonnes. Ajouter ("Colonne 4", 5);

// Créer une feuille avec la structure décrite dans le livre
Livre ... Les tables. Ajouter (tableau) ;
Tableau = non défini ;
Livre = Non défini ;

Dans l'exemple ci-dessus, dans la méthode

table ... Colonnes. Ajouter("Colonne 1", 202) ;

le deuxième paramètre spécifie le type de la colonne. Le paramètre est facultatif, voici quelques valeurs du type de colonne :

  • 5 - adDouble ;
  • 6 - adCurrency ;
  • 7 - date d'ajout ;
  • 11 - adBooléen ;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

Exemple en train de lire:

// Crée un objet COM pour la connexion
Connexion = Nouveau COMObject ("ADODB.Connection");

// Définit la chaîne de connexion
Composé ... Chaîne de connexion = "
| Fournisseur = Microsoft.ACE.OLEDB.12.0;
| Source de données = " + Nom de fichier + " ;
| Propriétés étendues = "" XML Excel 12.0 ; HDR = OUI ""; ";
Composé ... Ouvert (); // Ouvrir la connexion

// Crée un objet COM pour récupérer la sélection
Selection = New COMObject ("ADODB.Recordset");
Texte de la demande = "SELECT * FROM [Feuille1 $]";

// Exécuter la requête
Échantillon ... Ouvrir (QueryText, Connexion) ;

// Ignore le résultat de la sélection
PAS encore d'échantillonnage. Boucle EOF ()
Valeur de la colonne 1 = échantillon. Des champs. Article ("Colonne 1"). Valeur ; // Référencement par nom de colonne
Colonne2-Valeur = Échantillon. Des champs. Article (0). Valeur; // Se référant à l'index de la colonne
Échantillon ... DéplacerSuivant ();
Fin de cycle ;

Échantillon ... Proche ();
Échantillon = Non défini ;
Composé ... Proche ();
Connexion = Non défini ;

Dans la chaîne de connexion, le paramètre HDR détermine comment la première ligne de la feuille sera perçue. Les options sont :

  • OUI - la première ligne est interprétée comme les noms de colonnes. Les valeurs sont accessibles par nom et index de colonne.
  • NON - la première ligne est traitée comme une donnée. Les valeurs ne sont accessibles que par l'index de colonne.

Dans les exemples fournis, seuls quelques objets ADO ont été traités. Le modèle d'objet ADO se compose des objets suivants :

  • Lien;
  • Commander;
  • Jeu d'enregistrements ;
  • Enregistrer;
  • Des champs;
  • Flux;
  • Les erreurs;
  • Paramètres;
  • Propriétés.

Télécharger sans programmation

Pour sauvegarder les données de 1C vers Excel, il n'est pas toujours conseillé de recourir à la programmation. Si en mode Entreprise l'utilisateur peut afficher les données nécessaires au téléchargement, il est alors possible de les enregistrer dans Excel sans programmation.

Pour enregistrer une feuille de calcul (par exemple, un résultat de rapport), vous pouvez appeler la commande sauvegarder ou Enregistrer sous… menu principal.

Dans la fenêtre qui s'ouvre, vous devez sélectionner le répertoire, le nom et le format du fichier enregistré.

Pour enregistrer des données à partir de listes dynamiques (par exemple, une liste d'articles), vous devez :

  1. Exporter les données dans un tableur à l'aide de la commande Plus ⇒ Afficher la liste ...;
  2. Enregistrez la feuille de calcul au format requis.

  • Lors de la réalisation d'échanges d'informations entre contreparties (listes de prix, états de rapprochement, etc.) ;
  • Pour faciliter le travail des opérateurs dans les cas où la comptabilité principale est effectuée en 1C, et une partie est effectuée en feuilles de calcul Excel;
  • Lors du remplissage initial de la base de données.

Pour effectuer cette opération, vous pouvez utiliser à la fois la fonctionnalité standard disponible avec un abonnement au support informatique (ITS) et le traitement auto-écrit, mis en œuvre via diverses options de connexion. Dans notre article, nous essaierons d'analyser pleinement tous les cas possibles et de répondre à la plupart des questions existantes concernant le chargement de données d'Excel dans 1C.

Mécanisme universel

Sur les disques ITS, ainsi que sur le portail 1C, en allant dans le menu "Support technologique" -> "Rapports et traitements universels", le traitement correspondant se situe dans le dossier "Chargement des données d'un tableur".

Lorsqu'il démarre, un formulaire s'ouvre (Fig. 1) :

Comme vous pouvez le voir sur le formulaire, il vous permet de transférer des informations vers les objets de configuration suivants :

  1. Annuaire;
  2. Partie tabulaire document ou ouvrage de référence ;
  3. Registre des informations.

Le champ de sélection de l'objet change en fonction de la position du commutateur.

Le formulaire de traitement tabulaire est rempli lorsque vous ouvrez le fichier téléchargé.

Le traitement typique prend en charge le déchargement à partir de :

  • Développé par des spécialistes 1C, format de fichiermxl;
  • Lisztxls enregistré au formatExcel 97-2003 ;
  • Fichier texteSMS;
  • les tablesdbf.

Les fichiers Excel de grande taille peuvent prendre beaucoup de temps à charger, donc si l'on suppose que le chargement des données peut s'effectuer en plusieurs étapes ou si vous savez avec certitude que vous devrez ouvrir un fichier existant plusieurs fois pour gagner du temps et des nerfs, il est préférable de sauvegarder les informations de celui-ci au format mxl. Cela peut être fait directement à partir du formulaire de traitement.

Il est important de comprendre que si dans fichier source il existe des regroupements de lignes, des sous-titres et des notes, ils devront être supprimés manuellement.

Passons maintenant à l'onglet « Paramètres » (Fig. 2) :

2

Assez souvent, les tableaux Excel contiennent un en-tête avec toutes sortes de détails et de données (nom du formulaire imprimable, détails de la contrepartie, date et numéro du document entrant, noms de colonnes, etc.), afin d'exclure leur traitement par le programme sur le formulaire, dans l'attribut "Première ligne du tableur" vous devez spécifier la première ligne avec les informations portables

Après avoir sélectionné un objet de métadonnées sur lequel les informations seront enregistrées, la section tabulaire de l'onglet "Paramètres" sera automatiquement remplie avec les noms des attributs, une description de leurs types et d'autres une information important... Une section distincte doit être consacrée à la prise en compte des colonnes de la section tabulaire de l'onglet "Paramètres".

Colonnes "Paramètres"

Coche - en cochant ou décochant une case dans une ligne, il est déterminé si l'attribut correspondant sera renseigné.

Représentation d'attribut - le synonyme (nom) de l'attribut de métadonnées est écrit ici, tel qu'il est spécifié dans le configurateur.

Champ de recherche - si vous cochez cette case, le traitement recherchera les éléments par l'attribut correspondant et, en cas de succès, modifiera les données existantes, fonction supplémentaire de ce champ - protection contre les doublons.

Description des types - affiche le type de données d'un attribut de métadonnées particulier.

Mode de téléchargement - propose trois options au choix (Fig. 3) :

3

  • Recherche - la recherche de l'élément correspondant sera effectuée ; s'il est absent, un nouveau peut être créé ;
  • Définir - une certaine valeur est définie de manière subordonnée ;
  • Calculer - dans ce cas, le résultat du calcul de l'expression spécifiée dans la colonne "Condition de lien / Expression pour la valeur" sera défini dans le champ de l'élément en cours de création.

Dans ce dernier cas, l'activation du champ Expression ouvrira le formulaire (Fig. 4).

4

Le numéro de colonne est un champ utilisé pour indiquer à partir de quelle colonne du tableau Excel les données doivent être extraites pour le remplissage.

Valeur par défaut - très souvent, une situation se présente lorsque le fichier téléchargé ne contient pas toutes les données nécessaires à l'écriture d'un élément, dans ce cas, les informations contenues dans ce champ seront renseignées.

Condition de lien / Expression pour la valeur - nous avons déjà partiellement abordé ce champ lorsque nous avons considéré les champs calculés ; de plus, vous pouvez y spécifier une condition selon laquelle les données sources seront synchronisées.

C'est, en principe, toutes les informations qui sont disponibles dans l'onglet "Paramètres".

Afin de ne pas perdre beaucoup de temps à chaque chargement, écriture de correspondances et d'expressions, les développeurs ont prévu la possibilité d'enregistrer l'option de paramétrage dans un fichier avec l'extension mxlz.

Vous pouvez vérifier l'exactitude des données transférées en cliquant sur le bouton "Contrôler le remplissage" (Fig. 1). Après cela, vous pouvez démarrer le processus de téléchargement. Sur mise en œuvre réussie procédures ou situations inhabituelles, vous serez notifié séparément.

Il existe un mécanisme supplémentaire pour charger les données d'Excel dans les infobases "Gestion et Commerce". Elle est moins polyvalente que la méthode ci-dessus, cependant, elle ne nécessite pas d'abonnement ITS et est incluse dans la livraison standard.

Ce traitement se trouve dans l'onglet "Achats", dans le menu "Service", il s'intitule "Chargement des prix fournisseurs à partir des fichiers" (Fig. 5)

5

Le formulaire de traitement contient :

  1. Champ de sélection de la date, qui indiquera pour quelle heure ce prix est pertinent ;
  2. Champ de sélection de l'entrepreneur qui a envoyé sa liste de prix ;
  3. Un bouton qui vous permet de sélectionner le type de prix à définir ;
  4. Une section tabulaire qui peut être remplie avec des données chargées.

Cette forme est visible sur la figure 6

Figure 6

L'explication en haut du formulaire explique comment utiliser le premier onglet du formulaire.

Après avoir choisi une contrepartie (selon qu'elle agit en tant que fournisseur, commissionnaire ou vendeur), des colonnes supplémentaires pour chaque type de prix deviendront disponibles dans le tableau.

Lorsque vous travaillez via l'interface Web, dans certains navigateurs, il peut être nécessaire d'installer un module complémentaire de navigateur (Fig. 7). Nous devons cliquer sur le bouton "Démarrer l'installation" et redémarrer notre connexion.

7

Après cela, en utilisant le presse-papiers, nous pourrons transférer des informations d'une table à une autre. Lorsque les colonnes dont nous avons besoin ("Article", "Nom", "Prix") sont remplies, nous appuyons sur le bouton "Suivant" et passons à la deuxième page (Fig. 8)

Figure 8

Le programme recherchera automatiquement les correspondances dans la base de données et, si aucune n'est trouvée, il proposera des options pour résoudre l'erreur. Apparence la section tabulaire peut être contrôlée avec un interrupteur. De plus, l'utilisateur peut faire correspondre indépendamment les éléments du fichier téléchargé à ceux de la base de données.

  • Enregistrez tout;
  • N'enregistrez que ceux qui ont changé par rapport à ceux déjà disponibles dans la base de données.

Dans le champ de texte, vous pouvez ajouter un commentaire qui sera inscrit dans le document (Fig. 9) :

9

Après traitement :

  • Une rubrique correspondante sera créée dans l'ouvrage de référence « Nomenclature Fournisseurs » (s'il n'était pas présent) ;
  • L'article du catalogue « Nomenclature » lui sera associé ;
  • Le document « Fixation des prix des articles » sera créé et affiché, indiquant : le fournisseur, le type de prix et la date de fixation des données.

Le traitement "Chargement de marchandises à partir de fichiers externes" fonctionne de la même manière.

Options de gestion de transfert de bricolage

Le principal problème lors de l'extraction de données à partir d'un fichier Excel est que 1C n'a pas de mécanisme intégré sans ambiguïté pour l'ouvrir. Il existe plusieurs options pour connecter Excel à 1C :

  • Via Microsoft ADODB - assez manière rapide, qui, en règle générale, s'applique à la fois aux versions fichier et client-serveur du stockage de base de données ;
  • Grâce à l'utilisation Microsoft Office- une méthode qui échoue parfois lorsque vous travaillez avec des bases de données SQL, en règle générale, fonctionne un peu plus lentement que la première méthode, de plus, elle nécessite bureau installé;
  • Via Libre Office - contrairement à la méthode précédente, il est gratuit, en plus des formats xls et xlsx, il prend également en charge ses propres tableaux, mais nécessite le package LibreOffice installé et une certaine préparation du fichier téléchargé (la première ligne du tableau doit contenir les noms des colonnes).

Considérons plus en détail différentes façons et options.

Via ADODB.Connection

Généralement ADO signifie ActiveX Data Object et sert à accès programmatiqueà diverses bases de données. Le plus gros problème lors de la création d'une connexion à un fichier tiers (y compris Excel) est de composer correctement la chaîne de connexion.

Pour fichiers Excel trois options sont possibles ici :

Paramètres de chaîne de connexion :

  • Fournisseur - le pilote utilisé est défini ici ;
  • Source de données - définit le nom du fichier que nous allons ouvrir ;
  • Propriétés étendues - ici vous pouvez spécifier : si vous avez besoin d'une ligne d'en-tête pour le tableau (HDR = OUI indique que les données seront lues à partir de la première ligne, HDR = NON - celle de la seconde), si le fichier est ouvert en lecture seule (ReadOnly) et quelques autres paramètres facultatifs.

Après avoir créé la chaîne de connexion, nous pouvons nous connecter au fichier téléchargé (Fig. 13)

13

Maintenant, nous pouvons utiliser simple demande(Fig. 14) commencez à récupérer les informations du fichier téléchargé.

Dans ce cas, le paramètre « Feuille » détermine la feuille du livre Excel avec laquelle nous devons travailler.

L'ensemble d'enregistrements stockés dans une feuille peut être lu à l'aide d'un objet Recordset. Dans ce cas, le premier enregistrement de la feuille peut être obtenu avec le paramètre BOF (le début du fichier), et le dernier EOF (la fin du fichier).

Via l'application Excel

La principale différence par rapport à la méthode précédente est qu'en plus des pilotes pour travailler avec les bases de données, Excel doit être installé sur l'ordinateur sur lequel la connexion est établie. Seulement dans ce cas, nous pouvons initialiser l'application pour lire les données de la table (Fig. 16).

Cette objet COM Il existe plusieurs paramètres enfants, mais le principal pour nous, dans les conditions de tâche actuelles, est le paramètre WorkBooks (Fig. 17).

Après avoir initialisé le livre, il est nécessaire de déterminer la feuille à partir de laquelle les données seront lues (Fig. 18).

Après cela, vous pouvez parcourir les lignes et les colonnes du tableau du fichier ouvert à l'intérieur des boucles.

Quelques mots sur les erreurs possibles

La part du lion des erreurs lors de la connexion à un fichier est due au fait que le fichier est déjà occupé par une autre application. C'est bien si vous pouvez voir dans la barre des tâches qu'Excel est en cours d'exécution sur l'ordinateur, mais si vous ou un autre utilisateur l'avez ouvert à partir d'un traitement externe, vous ne pouvez le déterminer visuellement que via le "Gestionnaire des tâches", alors n'oubliez pas de fermer la connexion avant de terminer la procédure de transfert :

En cas de travail via ADO (Fig. 19);

19

  • En cas de travail avec l'application (Fig. 20).

Riz. vingt.

Il est préférable d'organiser la procédure de connexion et de terminaison pour travailler avec des données à l'intérieur de la construction Attempt-Exception-EndTry, provoquant une description d'erreur dans une exception. Bien que cela ralentisse parfois le travail, cela permet de déterminer beaucoup plus facilement la cause de l'erreur et, en fin de compte, comment la corriger.

Introduction.

Beaucoup de gens savent qu'Excel est beaucoup plus ancien que 1C. À mon avis, c'est un produit très réussi, et je n'ai entendu aucune plainte à ce sujet. Excel est simple et polyvalent. Il est capable d'effectuer non seulement des opérations arithmétiques simples, mais également des calculs complexes, des graphiques, etc. Je connais des exemples où des organisations, avant de passer à 1C, faisaient une partie de leur comptabilité dans Excel. Beaucoup de gens utilisent encore deux programmes en parallèle. Dans cet article, nous examinerons les moyens d'échanger des données entre 1C et Excel.

Tableaux 1C et Excel.

Pour plus de commodité, de nombreux utilisateurs enregistrent des tables 1C ( formulaires imprimés) au format Excel (* .xls). Après cela, divers regroupements, tris, calculs, etc. sont effectués dans le fichier résultant. Cela est dû au fait que les tableaux 1C n'ont pas une fonctionnalité aussi énorme que dans les tableaux Excel. Mais dans la version 1C 8.0, il existe des innovations qui rendent le travail avec des tables plus confortable.

Sur le site Web 1C (http://www.1c.ru/), il existe un programme utile qui permet d'ouvrir des tableaux 1C dans Excel et d'enregistrer une feuille Excel en tant que tableau 1C. Ceci est utile si le tableau 1C n'a pas été enregistré au format Excel et que 1C n'est pas installé sur l'ordinateur sur lequel vous devez ouvrir ce tableau. Et il n'y aura pas besoin de se rappeler constamment que vous devez enregistrer le tableau 1C au format Excel.

Toutes les informations sur le programme sont disponibles ici.
Vous pouvez télécharger le programme ici ( archive zip 682 739 octets).

Commenter: Dans Excel, le séparateur décimal est ",". Par conséquent, avant d'enregistrer le tableau 1C au format Excel, remplacez-y un autre séparateur (par exemple ".") Par ",". Sinon, Excel ne pourra pas effectuer de calculs avec ces nombres, ou ils ne seront pas du tout affichés sous forme de nombres. Par exemple, dans le tableau 1C, "15.2" sera affiché dans Excel sous la forme "15 février".

Obtenir des données à partir d'Excel.

L'accès de 1C à Excel s'effectue via OLE. Par exemple le code
Tentative
Exception
Rapport (DescriptionErreurs () +
);
Revenir;
Fin des tentatives ;
nous permettra d'accéder via la variable "Excel" à l'exécution application Excel... Et puis vous pouvez déjà accéder au livre (fichier), à la feuille et à la cellule avec des données. Vous trouverez ci-dessous quelques exemples de code.

Ouvrir un livre (fichier) :
Livre = Excel. Cahiers d'exercices. Ouvrir (chemin d'accès au fichier) ;
FilePath est le chemin d'accès complet au fichier dans le classeur Excel.

Sélection d'une feuille du livre avec laquelle travailler :
ou
Feuille = Livre. Feuilles de travail (SheetName);
SheetNumber est le numéro de la feuille dans le livre, SheetName est le nom de la feuille dans le livre.

Obtenir la valeur d'une cellule de feuille :
Valeur = Feuille. Cellules (LineNumber, ColumnNumber). Valeur;

Important: n'oubliez pas d'ajouter le code Excel dans le champ d'exécution des actions nécessaires. Quitter (); , sinon le processus en cours restera incomplet et occupera la mémoire et le processeur de l'ordinateur.

Sortie des données vers Excel.

Pour sortir (télécharger) des données vers Excel, vous devez soit ouvrir un classeur existant, soit en créer un nouveau et sélectionner une feuille de calcul pour la sortie des données. L'ouverture d'un livre existant est décrite ci-dessus, mais pour créer un nouveau livre, vous devez utiliser le code suivant :
Tentative
Excel = CreateObject ("Excel.Application");
Exception
Rapport (DescriptionErreurs () +
"Excel n'est pas installé sur cet ordinateur!");
Revenir;
Fin des tentatives ;
Livre = Excel. Cahiers d'exercices. Ajouter ();

Étant donné que lorsque vous créez un classeur dans Excel, les feuilles sont automatiquement créées (Outils-> Options-> Général-> Feuilles dans un nouveau classeur), il vous suffit de sélectionner une feuille avec laquelle travailler :
Feuille = Livre. Feuilles de travail (numéro de feuille) ;
ou ajouter une nouvelle feuille au livre, si nécessaire :
Feuille = Livre. Des draps. Ajouter ();
L'étape suivante définira la valeur de la cellule :
Feuille. Cellules (LineNumber, ColumnNumber). Valeur = Valeur ;
RowNumber, ColumnNumber - numéro de ligne et numéro de colonne à l'intersection desquels se trouve la cellule.
Et à la fin, vous devez enregistrer le livre créé :
Tentative
Livre . Enregistrer sous (chemin d'accès au fichier) ;
Exception
Rapport (DescriptionErreurs ()
+ « Fichier non enregistré ! »);
Revenir;
Fin des tentatives ;
FilePath est le chemin d'accès complet au fichier de classeur Excel (y compris le nom).
Important: n'oubliez pas que les noms de fichiers ne doivent pas contenir \/: *? ">< |.

Méthodes fréquemment utilisées pour lire / définir des valeurs dans Excel.

Excel = CreateObject ("Excel.Application"); Accéder à l'application Excel.
Exceller. Visible = Visibilité ; 0 - Excel n'est pas visible, 1 - visible.
Livre = Excel. Cahiers d'exercices. Ajouter (); Créez un nouveau classeur Excel (fichier).
Livre . Enregistrer sous (NomFichier) ; Enregistrez le classeur Excel.
Feuille = Livre. Des feuilles de calcul. Ajouter (); Ajout d'une nouvelle feuille au livre.
Livre = Excel. Cahiers d'exercices. Ouvrir (NomFichier) ; Ouverture d'un classeur Excel existant (fichier).
Feuille = Livre. Feuilles de travail (numéro de feuille) ; Définition d'une feuille en tant qu'ouvrier avec le numéro Numéro de feuille.
Feuille. Nom = Nom de la feuille ; Donnez un nom à une feuille de calcul SheetName
Feuille. Mise en page. Zoom = Échelle ; Définit le paramètre de page "Scale" (de 10 à 400).
Feuille. Mise en page. Orientation = Orientation; Orientation : 1 - portrait, 2 - paysage.
Feuille. Mise en page. Marge Gauche = Excel. CentimètresVersPoints (Centimètres); Réglage de la bordure gauche (en centimètres).
Feuille. Mise en page. TopMargin = Excel. CentimètresVersPoints (Centimètres); Réglage de la limite supérieure (en centimètres).
Feuille. Mise en page. Marge Droite = Excel. CentimètresVersPoints (Centimètres); Réglage de la bordure droite (en centimètres).
Feuille. Mise en page. BottomMargin = Excel. CentimètresVersPoints (Centimètres); Réglage de la borne inférieure (en centimètres).
Feuille. Colonnes. ColumnWidth = Largeur ; Définit la largeur de la colonne.
Feuille. Cellules (LineNumber, ColumnNumber). Valeur = Valeur ; Saisie de données dans une cellule.
Feuille. Cellules (LineNumber, ColumnNumber). Police de caractère. Nom = Nom de la police ; Définition de la police dans la cellule.
Feuille. Cellules (LineNumber, ColumnNumber). Police de caractère. Taille = Taille de la police ; Définit la taille de la police dans la cellule.
Feuille. Cellules (LineNumber, ColumnNumber). Police de caractère. Gras = Gras ; 1 est en gras, 0 est normal.
Feuille. Cellules (LineNumber, ColumnNumber). Police de caractère. Italique = Italique ; 1 est la police italique, 0 est normal.
Feuille. Cellules (LineNumber, ColumnNumber). Police de caractère. Souligné = Souligné ; 2 est souligné, 1 ne l'est pas.
Feuille. Cellules (LineNumber, ColumnNumber). NuméroFormat = Format ; Définit le format des données de la cellule.
Feuille. Cellules (LineNumber, ColumnNumber). Limites. Style de ligne = Type de ligne ; Définir les bordures des cellules. 1 - solide mince.