Connexion COM dans l'application contrôlée. Trois baleines de travail avec les objets COM. Travailler à travers la connexion COM est plus facile que vous ne le pensez. Quel est le cas

) Très bien

Dans le même temps, j'ai vu plus d'une fois quand je viens de sortir des publications qui ne tiraient même pas sur 10 points.
Pourquoi est-ce arrivé? Apparemment parce que quelqu'un ils ont évidemment chuté comme.


Je parle de ça et je dirais que ce serait bien sans lire l'article sur la notation pour comprendre combien vous en avez besoin ou l'évaluer n'est pas si primitive +/-. Quant à l'âme, je voudrais ajuster cela: elle a tellement marqué en raison du fait que les étoiles se sont développées et de nombreuses personnes se sont réunies sur le site et aimaient beaucoup, vous comprenez cette affaire, car Dès que l'article part avec page d'accueil On ne peut déjà être trouvé que sur demande, ainsi que le vote tout en passant. Et maintenir sur la chose principale autant que je sache, permet aux commentaires permanents \u003d promotion de l'article.
C'est pour cela qu'il y ait des boutiques dans les rues passantes - après tout, il est souvent important de ne pas la qualité et la pertinence des marchandises, mais la passabilité de la place, les gens qui marchent souvent achètent ce qu'ils vont jeter le lendemain, juste pour le bien du processus. Il y a depuis longtemps une maladie bien connue - une rafale. Ou simplement augmenter le flux augmente la probabilité de l'acheteur souhaité.

Et des plus et des inconvénients ... est juste une sorte de "merci" pour le temps passé et travailler


Ceux. Moins est également considéré pour "merci"? Je voulais connaître votre attitude à savoir s'il est nécessaire de le mettre dans de tels cas et à quel point les autres sont intéressants? Est-ce que cela est placé lorsque l'article est nocif / mauvais ou quand il est juste inutile pour vous / vide.
À mon avis, l'article ressemble simplement à une augmentation de la notation, car:
1. Le problème avec les types avec les types est généralement ignoré par l'auteur, bien qu'il n'était pas paresseux d'écrire un tas de commentaires.
2. Dans l'article, inexactitude évidente: on dit que vous ne pouvez que

V82 \u003d Nouvelle comback ("v82.Commonnector"); Code \u003d contrepartie.code;


mais je fais calmement avec l'aide du traitement comme ceci:

Rapport (base.pravnikhniki.tragents.nightyponiament ("LLC"). CODE);


et tout va bien! Et je choisis la connexion v82.comConnector
Il est étrange que l'auteur crache absolument sur le fait que son article contient de tels problèmes sur lesquels ils ont indiqué et ne réagissent de quelque manière que ce soit.
3. Mais il y a encore un problème lorsqu'une erreur apparaît "la classe n'existe pas"
4. Et il y a un problème lorsqu'il est installé 8.2, puis installé 8.1 - essayez de vous échanger sur OLE / COM Échange typique Ut-bp!
5. Pourriez-vous spécifier le traitement principal sur le site qui vous permet de vous connecter universellement via OLE / COM de commencer les nouveaux arrivants, vous écrivez pour eux! Au fait, au fait, pour une raison quelconque, il frappe avec vous, pourquoi? Et en conséquence, 2 mots sont essentiellement 6 pour les scènes.

En général, je ne fais pas de boue à l'eau, mais indiquez des lacunes spécifiques, mais zéro réaction. Si c'est l'expérience que vous partagez, c'est une sorte d'erreur erronée et incomplète.
Je veux dire par le fait que l'auteur aurait le désir de collecter tous les problèmes, puis il pourrait au moins d'écouter l'expérience de quelqu'un d'autre et de ne pas griller des commentaires. Il y a aussi une situation lorsque celui qui l'a lu en connaît plus que l'auteur, ils lui disent (parfois incorrectement), et il se battra également. En conséquence, toutes les informations ne sont pas dans l'article, mais dans les commentaires! Drôle! Donc, cela se produit souvent, mais vous n'avez pas besoin de vous échapper de ce que vous vouliez aussi mieux - je montre comment les meilleurs, et d'autres sont montrés! Incluez-le dans l'article et cela en vaudra la peine, pas tous les mêmes intéressants de lire ce navire.

Salut Habravelov!

Dans cet article, je voudrais parler de la manière dont l'intégration avec la plate-forme 1C de mon organisation est établie. M'a incité à faire presque toute une absence complète informations techniques à propos de ce thème. Lire divers articles et rapports sur le sujet des paquets 1c avec tout système d'information, assurez-vous une fois de nouveau qu'ils sont tous marketing, démonstration et jamais - la technique, reflétant le problème et l'essence de sa décision.

J'invie que la méthode en aucun cas l'universalité des revendications. Depuis 1 ° des configurations elles-mêmes, il y a beaucoup, et systèmes d'informationLes langues et les plates-formes sont encore plus, le nombre de combinaisons possibles est énorme. Mon objectif est de démontrer l'une des solutions possibles.


En tant que langue qui sera intégrée à 1C, j'ai choisi Python. Il convient très bien à l'automatisation des processus. Ceci est facilité par la syntaxe minimaliste (le code est visible très rapidement), une riche bibliothèque standard (moins besoin de modules tiers), Plate-forme croisée - avec une probabilité élevée, un code écrit à Linix, gagne avec succès Windows.

Pour commencer, des contours avec lesquels nous allons travailler. Organisation - Société d'approvisionnement en énergie dans la région d'Extrême-Orient - dessert environ 400 000 abonnés, la base 1c sur une configuration auto-écrite. Pour chaque abonné, ses paiements, ses comptes, des systèmes consommés et des systèmes de calcul, des dispositifs comptables, des lectures et de nombreuses autres données sont stockés.

Une fois dans l'organisation, un programme écrit à Delphes et en utilisant MSSQL / Firebird en tant que base de données. Dans ces temps glorieux, il était possible de se connecter à la base de données en utilisant n'importe quelle langue et de faire de nombreuses actions - pour sélectionner des abonnés au débiteur, diffuser le paiement reçu, fixer les lectures des instruments. Il n'est pas surprenant que la collection de scripts qui automatient la routine a constamment augmenté. Les programmeurs pourraient effectuer des actions sans ouvrir le programme lui-même.

Hélas, avec la transition vers des chaises 1C terminées - il n'a pas été possible de se connecter directement à la base. En général, la plate-forme 1C elle-même est indivisible et intègre mal avec d'autres systèmes. Elle, comme on dit, la chose en soi. En chargement des données en 1C, il convient de rappeler qu'il ne sera pas si facile de les supprimer. Mais compte tenu du fait que l'organisation devait mettre en œuvre des systèmes de paiement et zone personnelleIl était nécessaire de trouver une certaine solution.

Les tâches principales qui se trouvaient devant moi sont la possibilité d'une réception rapide des données sur un compte du visage - Nom complet, adresse, appareils de mesure, lectures d'instruments, paiements, accumulations. De plus, la formation de documents est un acte de réconciliation, reçu de paiement. Donc, la possibilité d'une connexion directe de la base de données est manquante - Tous ceux qui ont examiné la base de données 1C sur le serveur SQL, ont vu que, dans la masse de la table du type AAA1, AAA2 est difficile à comprendre. Et la construction de demandes avec de tels noms de tables et de champs est simplement irréelle. De plus, de nombreuses tables 1c (en particulier les tranches de coupe les plus importantes, telles que les dernières, les résidus et les révolutions) sont virtuelles et dispersées par différentes tables physiques, rassemblant plusieurs joyeuses. Cette méthode ne convient pas.

La plate-forme 1C offre la possibilité de se connecter à la connexion COM. Comme de nombreux programmes Windows, lors de l'installation de 1C, deux objets COM sont enregistrés dans le système System - Automation Server et Connector. Vous pouvez travailler avec les deux objets en utilisant la langue dans laquelle la technologie COM est fournie.

L'objet Server Automation est une application 1c, presque non différente de l'application client habituelle. La différence est que, en outre, la possibilité de programmer l'instance d'application de l'application apparaît. Lorsque vous travaillez avec l'objet Connector COM, une version légère de l'application 1C est lancée dans laquelle les formulaires ne sont pas disponibles, ainsi que des fonctions et des méthodes liées à l'interface et aux effets visuels. L'application elle-même commence dans le mode "Union externe". L'initialisation des variables globales (par exemple, la définition de l'utilisateur actuel et de ses paramètres) doit être effectuée dans le module de connexion externe 1C. Si, en mode de connexion externe dans le code, on appelle une fonction non disponible dans ce mode, l'exception sera provoquée (qui sera transférée sur notre script Python). Appeler des fonctions dangereuses doit être encadrée par les conceptions du formulaire

# Si ce n'est pas une connexion externe alors un avertissement ("Salut!"); # Endox

Depuis que travailler avec COM Objects - Technologie exclusivement Windows uniquement, il n'est pas surprenant que dans l'approvisionnement standard de Python, il manque. Vous devrez définir l'extension - un ensemble de modules qui fournissent toutes les fonctionnalités nécessaires à la programmation sous Windows sur Python. Il peut être téléchargé sous forme d'exe-installateur déjà collecté. L'extension elle-même fournit un accès aux registres, services, objets ODBC, COM, etc. Vous pouvez également installer immédiatement la distribution ActiveState Python, dans laquelle l'extension Win32 provient de la boîte.

Depuis quelque temps, j'ai expérimenté une connexion COM dans le développement d'applications Web, en particulier un compte personnel. Les minus suivants ont été révélés:

La connexion COM est lente. Faible productivité - Technologie de moins célèbre de COM.
- Le processus d'installation d'une connexion avec 1C, en fonction de la configuration, peut prendre de 1 à 8 secondes (dans mon cas - 6 secondes). Cela vaut-il la peine de dire que la connexion de la connexion à chaque demande conduira à cela, chaque page sera chargée pendant 8 secondes.
- Étant donné que les applications Web sur Python fonctionnent en tant que serveur indépendant, l'élément précédent peut être compensé en stockant la connexion dans une variable globale et en cas d'erreur de la restaurer. Comment maintenir une connexion à PHP, je, honnêtement, n'a pas encore pensé.
La plate-forme inter-plate-forme de l'application Web est perdue.

Basé sur les éléments ci-dessus, il a été décidé de modifier le principe de l'interaction, de la séparer en 2 parties - la première plate-forme dépendante de la plate-forme (Windows), de déchargement de données 1C à n'importe quel format pratique, et le second, non dépendant de la plate-forme, Ce qui est capable de travailler avec les données, n'est pas conscient d'environ 1 ° CC en principe.

La stratégie d'action est la suivante: le script Python est connecté à partir de 1C, effectue les requêtes souhaitées et décharge les données de la base SQLite. Cette base de données peut être connectée à Python, PHP, Java. La plupart de nos projets travaillent sur Python et que je ne serai pas à l'écart de requêtes SQL crues avec vos mains, alors tous les travaux avec la base SQLite sont effectués via ORM Sqlalchemy. Il n'a été nécessaire que de décrire la structure de données du style déclaratif de base de données:

De sqlalchemy.ext.Declarative importation déclarative_base de SQLalchemy Importer colonne, entier, numérique, DateTime, Unicode, Boolean, GrandBariny, Base Foreigney \u003d déclaratif_base () Classe Abonent (base): __tablename__ \u003d "Abonents" ID \u003d colonne (entier, primaire_key \u003d TRUE) Compte \u003d colonne (Unicode (32), index \u003d true) Code \u003d Colonne (Unicode (32)) Adresse \u003d Colonne (Unicode (512)) Fio \u003d colonne (Unicode (256)) Source \u003d Colonne (Unicode (16) ) PSU \u003d colonne (Unicode (256)) TSO \u003d colonne (Unicode (256)) NP \u003d colonne (Unicode (256)) Street \u003d colonne (Unicode (256)) Maison \u003d colonne (entier) plat \u003d colonne (entier) MRO \u003d Colonne (Unicode (256)) Paiement de la classe: __tablename__ \u003d "Paiements" # et ainsi de suite ...

Il suffit maintenant d'importer ce module dans n'importe quel projet Python et vous pouvez travailler avec les données.

Je prévois ta question - "pourquoi sqlite"? La raison principale - la base n'est nécessaire que pour la lecture, il ne devrait donc pas y avoir de problèmes d'écriture dans SQLite. Deuxièmement, le format de ce SGBD est pratique - il est plus pratique de le visualiser (nous existons de nombreux utilitaires gratuits, y compris une super-extension pour Firefox). Troisièmement, dans certains cas, il était nécessaire d'accéder aux abonnés de ces machines sur lesquelles il n'y a aucune connexion avec le serveur MySQL. Dans ce cas, il suffit de copier le fichier de base de données SQLITE et cette machine accédera à toutes les informations.

Le déchargement se produit une fois par jour la nuit. Le boîtier de données en 1C peut être automatisé de la même manière. Par exemple, vous devez enregistrer le témoignage laissé par les abonnés sur le site de compte personnel. Dans ce cas, connectez-vous à nouveau avec 1C et la méthode logicielle que nous créons et effectue le document "Acte d'enlèvement des indications". Je vais donner le code juste ci-dessous.

Travailler avec les objets COM dans Python est un peu inhabituel. Premièrement, la "pitonité" du code est perdue - les règles de nommer des variables et des fonctions en 1C, de la mettre légèrement, ne correspondent pas à Zen Python. Deuxièmement, tout le monde sait que les objets 1C sont souvent appelés symboles cyrilliques, ce qui entraînera des problèmes lors du développement de Python ... mais ils sont résolus. Je propose de vous familiariser avec le code:

Importation PythonCom Import Win32Com.Client V82_Conn_string \u003d "SRVR \u003d V8_SERVER; REF \u003d V8_DB; USR \u003d nom d'utilisateur; PWD \u003d Megapass;" pythoncom.coinitialiser () v82 \u003d win32com.client.dispatch ("v82.connector"). Connexion (v82_conn_string)

Comme on peut le voir à partir du code, le client est initialisé pour fonctionner avec 1C. La définition de l'objet COM survient par le nom "v82.Connector". Veuillez noter que ce nom est vrai pour la plate-forme V8.2, si vous avez la version 8.1, le nom sera "v81.comConnector".

Sur le client initialisé, nous appelons la méthode de connexion () en lui transmettant une chaîne de connexion. La chaîne est composée du nom du serveur, de la base de données, de l'utilisateur et du mot de passe. L'objet résultant v82 conserve la connexion avec l'application 1C. Il n'a pas de méthode de déconnexion ou quelque chose comme ça. Pour débrancher la base, il suffit de supprimer un objet de la fonction de mémoire del () ou d'attribuer une variable aucune.

Avoir un objet, vous pouvez vous reporter à tous les champs et méthodes du contexte global 1C, fonctionnent avec des volumes universels du type de texte, tableau et TD. Il est important de considérer que lorsque vous travaillez à travers la connexion COM 1c fonctionne en mode "Union externe". Il est indisponible des fonctions de travail interactif, telles que des dialogues sur les fenêtres contextuelles, des notifications et, surtout, des formulaires. Je suis sûr que vous modifiez les développeurs de configuration, qui apportent la fonctionnalité la plus importante dans le bouton Procédure 1 () dans le module de formulaire de document.

Parlons d'une telle vanité que des attributs kiriliques. Malgré le fait que 1C est un milieu bilingue et pour chaque méthode russe, il y a un analogue anglophone, tôt ou tard, il sera nécessaire de contacter l'attribut kirilique. Si dans PHP ou Langues VBScript, cela ne pose aucun problème,

Ensemble Con \u003d CreateObject ("V81.COMNector") SET V8 \u003d CON.CONNECT ("StringClining") Définir la manière comptable \u003d v8.documents. Calendrier .... Set CompteCape \u003d Batterie. .... Recrue de compte ()

Le code sur Python se bloque simplement avec une erreur d'erreur de syntaxe. Que faire? Modifier la configuration? Non, il suffit d'utiliser les méthodes getattr et Seattr. Transmettre l'objet COM et le nom cyrillique de l'attribut à ces fonctions peuvent être obtenus en conséquence et définir des valeurs:

# Codage \u003d CP1251 catalogue \u003d getattr (v82.catalogs, "facial")

Ce qui suit est important: les noms des détails, ainsi que les paramètres des fonctions et des méthodes doivent être transmis dans le codage CP1251. Par conséquent, afin d'éviter les codages avec des codages à l'avance, il est logique de le déclarer au début du fichier: # codage \u003d CP1251. Après cela, vous pouvez transférer des lignes sans vous soucier de leur codage. Mais! Toutes les chaînes obtenues à partir de 1c (les résultats de la fonction des fonctions, des demandes) seront dans l'encodage UTF-8.

Un exemple de code qui fonctionne dans la requête 1C, il éteint le résultat et enregistre la base dans SQLite:

# Coding \u003d cp1251 q \u003d "" "Choisissez une fées de fée. Code comme le code, le visage du visage. Équipement. Naselipart. NaseliPart. Nom +", "+" SmartyAddRESS comme adresse "Nom comme FIO, PSU.Division FACIAL. Nom En tant que PSU, express (caractéristique de la relation de manière significative. Relation comme guide. Organisation substitutionnelle sarrière). Nom comme Tso, facial., Litsevyescheta.divizion.roditel.naimenovanie.roditel.naimenovanie mro à partir de Spravochnik.litsvyescheta Litsevyescheta a laissé rejoindre registranteniy.hakteristikilitsevyescheta.srezposlednih ( , Vidharakteristiki \u003d valeur (Spravochnik.vidyhakteristik.territorialnostevayaOrganizatsiya)) CommentPoslednih Litsevyescheta.ssylka Harakteristikilitsvyeschetasrezposlevyeschetasrezposlednih.Obekt \u003d "" "Query \u003d v82.NewObject ( "Query", q) Sélection \u003d Query.execute (). Choisissez () Conn \u003d dB.Connect () connecty (modèles.Abonent) .Delete () tandis que Sélection.Next (): Abonent \u003d modèles.Abonent () Abonent.account \u003d Selection.Code.strip () Abonent.Code \u003d SELECTION.CODE ABONENT.FIO \u003d SELECTION.FIO ABONENT.ADDRESS \u003d SELECTION.Address Abonent.Psu \u003d Selection.psu Abonent.tso \u003d Sélection.tso Abonent.Source \u003d U "asrn" abonent.np \u003d selection.np Abonent.street \u003d selection.street Abonent.house \u003d Selection.house Abonent.frat \u003d selection.flat.mro \u003d selection.mro conn.add (Abonent) connect.commit ()

Ici Conn est une session de connexion SQLite-Base. Un objet de demande de requête est créé, son texte est rempli. Comme indiqué ci-dessus, le texte de requête doit être au CP1251, pour lequel le codage est déclaré pour la première fois. Après avoir exécuté la demande, tous les abonnés sont supprimés dans la base de données afin de ne pas ajouter de ducky, puis de l'ajouter au cycle et suit la falaise finale.

Lorsque vous travaillez avec des demandes, j'ai révélé les règles suivantes.

Choisir les champs, attribuez-leur les noms du latin, il sera beaucoup plus pratique d'y accéder via le sélecteur (point), au lieu de gagner ().
- Choisissez uniquement les types de données primaires: lignes, chiffres, date et booléen. Ne choisissez jamais des liens vers un objet (document, répertoire)! Dans ce contexte, les références ne sont absolument pas nécessaires et même nocives pour vous, car toute référence aux détails ou méthode du lien entraînera une demande via une connexion COM. Si vous contactez les attributs du lien dans le cycle, il sera extrêmement lent.
- Si vous choisissez un champ de type de champ, il est renvoyé comme objet Pytime. Il s'agit d'un type de données spécial pour transférer la date de date dans la connexion COM. Ce n'est pas aussi pratique de travailler avec lui, comme avec la date d'heure habituelle. Si vous envoyez cet objet à int (), les retours horodatamp, à partir duquel vous pouvez ensuite obtenir une méthode DateTime de Timestamp ().

Examinez maintenant comment les documents d'impression sont formés. Le fait est que le consommateur doit fournir la capacité de télécharger des documents pré-préparés, tels que la réception de paiement ou la loi de réconciliation. Ces documents sont formés en 1C conformément aux exigences établies, leur mise en œuvre sur Python prendra beaucoup de temps. Par conséquent, il est préférable de générer des documents en 1C et de les enregistrer au format Excel.

Ainsi, la loi sur la réconciliation est générée par un spécial traitement externe. Pour ceux qui ne connaissent pas la terminologie 1C: le traitement est un programme autonome qui a un module, des formulaires, des modèles, conçus pour commencer dans le milieu 1C. Il est nécessaire d'initialiser le traitement, de remplir ses détails et d'une fonction qui nous retournera. document tabulaireConçu pour voir 1C. Ce document doit être enregistré sur Excel Format et Copier sur le serveur ou écrire dans la base de données.

Link \u003d getattr (v82.catalogs, "reportsystems"). FindByDescription ("Act Records Elean") NAV_URL \u003d V82.GETURL (link, "rapport") Nom \u003d v82.externalReports.Connect (Nav_url) externalReport \u003d v82.externalreports.Create. (Nom) SETATTR (externeReport, "Facial", référence) Table_doc \u003d externeReCréence.getdoc () Path \u003d v82.gettempfileName ("XLS") Table_doc.write (chemin, v82 .spreadsheetdocumentfileType.xls) Signaler \u003d modèles.Report () Signaler .Account \u003d référence.code.strip () Report.type \u003d U "Act" Report.document \u003d Ouvrir (chemin, "RB"). Lire () Conn.add (rapport)

Le fragment suivant est suivi. Connecte le traitement formant un document. Le traitement peut être intégré à la configuration, stockée sur un disque ou dans une base de données 1C (dans certains guides). Étant donné que la transformation est souvent modifiée, de sorte que chaque fois que vous ne puissiez pas mettre à jour la configuration, le traitement le plus souvent changeant est stocké dans le Guide de rapport, dans un détail du type "Stockage de la valeur" Nommé rapport. Le traitement peut être initialisé en le décharçant de la base de données sur le disque et le chargement, ou par la méthode GetURL (), à laquelle la référence à l'élément de référence et le nom des accessoires. Nous attribuons la valeur des accessoires obtenues par l'objet de traitement, appelez la fonction getdoc (), nous obtenons un document tabulaire stocké dans un fichier Excel temporaire. Le contenu de ce fichier est enregistré dans la base de données SQLite.

La dernière chose reste à considérer - il s'agit d'un logiciel améliorant en 1c. Supposons que vous souhaitiez témoigner des abonnés. Pour ce faire, il suffit de créer et de procéder à un document "Acte d'élimination des indications":

# Codage \u003d CP1251 ACTS \u003d getattr (v82.documents, "Aktsnotchy") Act \u003d actes.CreateDecument () SETATTR (ACT, "Indication", 1024.23) SETATTR (ACT, "ABRÉMOIR", "IVANOV") # Remplissage d'autres détails. .. act.write ()
Maintenant, le boîtier de données automatisé.

Donc, j'ai décrit la méthode basée sur les données de déchargement et de chargement de logiciels à l'aide de la connexion COM. Cette méthode fonctionne avec succès dans mon organisation depuis presque un an. La base formée à partir de 1c sert 3 systèmes de paiement, l'acquisition d'Internet (paiement par cartes via Internet), ainsi qu'un compte personnel. De plus, divers scripts sont connectés à la base de données pour automatiser la routine.

Malgré les inconvénients de la méthode (la vitesse lente du composé com-composé), en général, il fonctionne stable. Nous avons des données sur une forme de plate-forme (SQLite) avec laquelle vous pouvez travailler à partir de n'importe quelle langue. Et la partie principale du code est écrite en python et, par conséquent, de nombreux moyens et techniques sont disponibles, ce qui ne peut même pas rêver de 1c.

C'est l'un des méthodes possibles interaction avec 1c. Je suis sûr qu'il n'est pas nouveau et il a probablement déjà été testé par quelqu'un, optimisé. Cependant, j'ai essayé de définir le maximum des détails du processus pour vous protéger des pièges auxquels il a été supposé.

Je souhaite à tout le monde bonne chance et rappelez-vous que ce n'est pas si terrible pour 1C, comme son petit!

L'une des options d'échange de données entre les bases de données 1C est un échange via la connexion COM.

Avec la connexion COM, vous pouvez vous connecter d'une base de données à une autre et lire ou écrire des données. Vous pouvez utiliser cette méthode à la fois dans les versions client-serveur des bases de données et des bases de fichier. Dans cet article, nous analyserons des exemples de ce type de composés. Les exemples utilisent la plate-forme 8.2.

Vous pouvez créer deux types d'objets COM pour Application 1C. il V82.Application et V82.comConnector. En cas de V82.Application L'instance presque complète de l'application 1C est lancée. En cas d'utilisation V82.comConnector Une petite partie de serveur est lancée.
La vitesse des travaux dans ce cas est plus élevée, mais certaines fonctions peuvent ne pas être disponibles. En particulier, travailler avec des formes et avec modules communs Pour lequel la propriété n'est pas établie avec composés externes. Doit nécessairement utiliser V82.comConnector Et seulement en cas de pénurie de fonctionnalités V82.Application. Surtout fortement la différence de vitesse peut être perceptible aux bases du grand volume.

Donc, procédez

  1. Créer un objet COM
    • pour V82.Application Connexion \u003d nouvel objet COM ("v82.application");
    • pour V82.comConnector Connexion \u003d nouvel objet COM ("v82.connecteur");
  2. Nous formons une connexion plurielle
    • pour la variante du serveur de la connexion de chaîne \u003d "srvr \u003d" "imasorver" "; ref \u003d" "" Nom ";
    • pour la version de fichier de la chaîne Connection \u003d "File \u003d" "Pullbazbaz" "; Usr \u003d nom d'utilisateur; pwd \u003d mot de passe";
  3. Effectuer une connexion à la base de données Tentative de connexion \u003d connexion. Connecter (composé de cordes); Message d'exception \u003d nouveau message utilisateur; Un message. Texte \u003d + description (); Un message. Signaler() ; Célébrations;
  4. Casser la connexion avec la base Composé \u003d indéfini;

    Pour l'objet V82.Application Il est nécessaire de remplir la connexion à la connexion, sinon la session incomplète sera suspendue, qui devra ensuite être supprimée manuellement. En cas de V82.comConnector La connexion est automatiquement déchirée lorsque la procédure est terminée dans laquelle la connexion a été effectuée. Et il y a un autre petit moment.

    Pour l'utilisateur sous lequel la connexion est effectuée, la case à cocher "Programme de fermeture de la demande" doit être désactivée dans ses paramètres.

Maintenant, nous allons collecter tout le code dans un groupe

Connexion \u003d nouvel objet COM ("v82.application"); // connexion \u003d nouvel objet COM ("v82.connector"); Indice d'aviron \u003d "srvr \u003d" "serveur1c" "; ref \u003d" "mybase" "; usr \u003d petya; pwd \u003d 123"; // grosses indion \u003d "fichier \u003d" "c: \\ mybase" "; usr \u003d peter; pwd \u003d 123"; Tentative de connexion \u003d connexion. Connecter (composé de cordes); Message d'exception \u003d nouveau message utilisateur; Un message. Texte \u003d. "Échec de la connexion à la base de données" + Description (); Un message. Signaler() ; Célébrations; Composé \u003d indéfini;

Pour le type de connexion V82.Application La méthode est appliquée à l'objet COM, qui a été créé à l'origine, et pour V82.comConnector La méthode s'applique à la connexion. Ensuite, travailler avec la demande va standard signifie 1c. Dans le code, cela ressemble à ceci:

Demande \u003d connexion. NewObject ("Query"); // pour V82.comConnector Query \u003d connexion. NewObject ("Query"); // pour V82.Application Enquête. Texte \u003d "Sélectionner | Post-organiser. Code, | Organisations de propulateur.name | Est | Répertoire. Allorganizations comme bureau "; Résultat \u003d demande. Effectuer (); Sélection \u003d résultat. Choisir() ; Pendant l'échantillon. Le prochain cycle de l'endackel;

Pour la version 1c: Entreprise 8.3 Tout reste inchangée, sauf que lors de la création de comobecs doit être utilisé. "V83.comConnector" ou alors "V83.Application".