Le mode de compatibilité des extensions de configuration est plus grand. Extensions de configuration - comment ajouter des fonctionnalités à une configuration standard sans supprimer le support (vidéo de 20 minutes)

Implémenté dans la version 8.3.6.1977.

Nous avons mis en œuvre un mécanisme fondamentalement nouveau pour adapter les solutions d'application à un utilisateur spécifique - le mécanisme d'extension.

A quoi servent les extensions ?

Les extensions offrent une stratégie de modification des configurations standard différente de celle existante. L'utilisation de cette nouvelle stratégie facilitera considérablement la prise en charge des solutions standards que vous souhaitez adapter aux besoins d'une implémentation spécifique ou d'un client spécifique.

À quoi ressemble ce processus maintenant ? Il existe une configuration standard. Il est entièrement pris en charge par le fournisseur. Cela signifie qu'il ne peut pas être modifié. Périodiquement, le fournisseur publie de nouvelles versions (améliorées) de cette configuration. Dans une telle situation, la mise à jour de l’ancienne version de la configuration vers la nouvelle version est totalement automatique. Ceci est pratique et ne nécessite aucune compétence ou connaissance particulière de la part du client.

Mais souvent, le client souhaite ajouter ou modifier quelque chose dans la configuration standard « pour lui-même ». Pour ce faire, le mode de support est modifié, la configuration est supprimée du support complet. Le partenaire de mise en œuvre ou les spécialistes informatiques du client y apportent les modifications nécessaires. A partir de ce moment, une mise à jour entièrement automatique de la configuration standard vers une nouvelle version publiée par le fournisseur devient impossible.

Désormais, la mise à jour de la configuration nécessite la participation d'un spécialiste. De plus, si les modifications apportées à la demande du client étaient importantes, alors le spécialiste effectuant la mise à jour de la configuration peut prendre un temps important. Et souvent, une très bonne connaissance à la fois de la configuration type elle-même et des modifications apportées peut être requise.

La stratégie proposée par les extensions est la suivante. Si vous souhaitez modifier une configuration standard, vous ne touchez pas à la configuration elle-même. Vous effectuez toutes les modifications dans l'extension, qui, en fait, est aussi une configuration.

En mode 1C:Enterprise, vous connectez simplement votre extension à la configuration standard. La plateforme combine automatiquement, en mode 1C:Enterprise, votre extension avec la configuration standard. De ce fait, le client travaille avec une solution standard modifiée selon ses souhaits.

Lorsqu'un fournisseur publie une nouvelle version d'une configuration de référence, une mise à jour automatique se produit car le mode de prise en charge de la configuration de référence n'a pas changé. Elle est restée pleinement prise en charge par le fournisseur. Et lorsque vous lancerez la solution applicative mise à jour, la plateforme fusionnera à nouveau automatiquement la configuration standard modifiée avec votre extension. Et le client continuera à travailler avec la solution standard modifiée, selon ses souhaits.

Quand faut-il utiliser les extensions ?

Le mécanisme d'extension séduit par sa polyvalence. Par conséquent, il est important d'avoir une idée correcte des tâches qu'il est censé résoudre.

Premièrement, les extensions sont indispensables lorsque la solution applicative fonctionne en mode partage de données. Par exemple, dans le modèle de service. L'un des abonnés souhaite disposer de quelques rapports supplémentaires. Tandis que d'autres abonnés souhaitent travailler avec une configuration standard inchangée.

C'est alors pour cet abonné que vous pourrez développer une extension dans laquelle vous pourrez mettre en œuvre tous ses souhaits. L'abonné connectera cette extension et travaillera avec la configuration modifiée. Alors que pour les autres abonnés, aucun changement ne se produira. Parce que toutes les extensions sont connectées et lancées en fonction des valeurs de séparateur actuelles.

Une autre situation est celle où une configuration standard est modifiée pour un client spécifique lors de la mise en œuvre. Ou des modifications de la configuration standard que les informaticiens du client effectuent eux-mêmes. Si toutes ces améliorations sont apportées à l'extension, la configuration standard restera entièrement prise en charge, ce qui simplifiera grandement sa maintenance ultérieure.

Il est tentant d’utiliser des extensions pour créer des solutions d’application produites en série, mais cela ne devrait pas être fait. Premièrement, parce que les extensions n’ont pas été conçues pour de telles tâches. Et deuxièmement, parce que les autres mécanismes de la plateforme, tels que les mécanismes de livraison et de support, ne connaissent rien aux extensions.

Si vous regardez un peu l'histoire de l'apparition des extensions, alors, bien sûr, nous avons vu auparavant, et nous voyons maintenant, que les configurations deviennent plus complexes. Nous voyons qu’un support supplémentaire est nécessaire à différents niveaux de développement : bibliothèque, modulaire et industrie, etc. Nous avons analysé toutes ces tâches et sommes arrivés à la conclusion que la priorité absolue à l'heure actuelle est d'adapter les configurations aux souhaits des utilisateurs lors des implémentations.

C'est pour cette tâche que nous avons créé le mécanisme d'extension. Bien sûr, vous pouvez y remarquer différentes caractéristiques des autres domaines de développement répertoriés. Mais ils ne constituent pas son objectif principal et ne doivent pas vous dérouter.

Que pouvez-vous changer maintenant en utilisant des extensions ?

Jusqu’à présent, il n’y a pas grand-chose qui soit prévu. Le mécanisme va bien sûr évoluer. Mais ce qui a déjà été fait peut être utile dans de nombreux cas lors des implémentations. Maintenant:

  • Peut être changé formulaires gérés, existant dans une configuration standard ;
  • Vous pouvez en ajouter de nouveaux sous-systèmes. Vous pouvez modifier la composition des sous-systèmes disponibles dans une configuration standard ;
  • Peut être changé les rôles configuration standard, en leur ajoutant des objets créés dans l'extension ;
  • Peut être changé interface de commande configuration typique (partition principale, sous-systèmes) ;
  • Vous pouvez en ajouter de nouveaux rapports Et traitement.

À l'avenir, nous prévoyons d'augmenter progressivement les fonctionnalités des extensions et serons heureux de connaître votre avis sur les fonctionnalités les plus demandées dans les implémentations avec des modifications mineures.

Comment fonctionne la prolongation ?

L'extension est très similaire à la configuration standard. Il est également représenté sous la forme d'un arbre d'objets. Pour travailler avec l'extension, les mêmes méthodes de travail sont utilisées qu'avec la configuration habituelle.

Une caractéristique importante de l'extension est la présence objets empruntés. Vous pouvez emprunter n'importe quel objet de configuration standard à l'aide de la commande du menu contextuel :

Les objets empruntés ne sont pas toujours nécessaires. Ceci s’explique mieux à l’aide d’un exemple « quotidien », si l’on fait une analogie avec un déjeuner au restaurant.

La première situation est celle où des objets empruntés sont nécessaires.

Vous avez l'habitude de déjeuner dans le même restaurant. Vous commandez toujours du steak et du thé. Par exemple parce qu’ils sont très bons dans ce restaurant. Ou pour une autre raison. Cela n'a pas d'importance. La seule chose importante est que vous les mangiez, et rien d'autre.

Ensuite, le restaurant est une base d'informations typique. Vous êtes une extension. Le menu du restaurant est une configuration standard extensible. Le steak et le thé sont des objets empruntés. Vous les avez empruntés (vous vous êtes souvenu qu'ils étaient au menu).

Comment l'extension se connecte-t-elle à la configuration et fonctionne-t-elle ? Vous venez dans un restaurant et demandez un menu. Au menu, vous voyez qu'il y a du steak et du thé. C'est-à-dire que vous établissez une correspondance entre les objets empruntés et les objets d'une configuration standard. Naturellement, vous correspondez par votre nom :). Ils vous apportent du steak et du thé, vous les mangez. Autrement dit, l'extension se connecte et fonctionne.

Une semaine plus tard vous venez, mais la carte du restaurant a changé (la configuration standard a été mise à jour). Cependant, le steak et le thé sont toujours au menu. Ils sont exactement ce dont vous avez besoin. Ils vous les apportent, vous les mangez. Autrement dit, l'extension continue de fonctionner avec la configuration standard mise à jour.

Une semaine plus tard, vous arrivez au restaurant et constatez que le steak et le thé ont disparu de la carte. Vous vous levez et partez (message d'erreur de connexion au poste). Parce que c'est ce que tu voulais. Et vous n'avez aucune idée des autres plats (objets). Le développeur ne vous a pas appris à bien manger des escargots ou des homards.

Une autre situation où l'on peut se passer d'objets empruntés.

Vous allez au restaurant, mais la disponibilité de plats spécifiques ne vous intéresse pas. Parce que tu ne vas pas les manger de toute façon. Vous voulez seulement les photographier. Et vous savez photographier n'importe quel plat. Ensuite, vous vous connectez simplement à la configuration et dites : apportez toutes les collations que vous avez au menu (vous obtenez une collection de documents à partir des métadonnées). Je vais les rediriger (prendre des photos).

Si l'on décrit cela dans le langage sec des développeurs, il s'avère qu'il faut emprunter des objets :

  • Lorsqu’ils sont nécessaires à la conception visuelle. Par exemple, vous étendez le formulaire et ajoutez des accessoires de formulaire tels que AnnuaireCurrencies.Link. Alors bien sûr, vous devriez emprunter le livre de référence Devises, afin que lors de la connexion à une configuration standard, vous puissiez être sûr qu'un tel répertoire existe toujours.
  • Quand ils sont nécessaires au fonctionnement du code. Par exemple, dans le code d'extension vous accédez à l'attribut répertoire Nomenclature - Importateur. Ensuite, cet attribut doit également être emprunté afin que lors de la connexion, vous puissiez être sûr que dans la configuration standard, cet attribut existe toujours dans le répertoire Nomenclature.

Connecter une extension

Vous créez une extension dans le configurateur. Une fois qu'il a été débogué et testé, vous pouvez le rejeter en enregistrant l'extension dans un fichier *.cfe.

Vous pouvez envoyer ce fichier au client. Le client le téléchargera indépendamment dans sa base d'informations en mode 1C:Entreprise à l'aide de la fonction standard Gestion des extensions de configuration.

Travailler avec des extensions est disponible à partir du langage intégré. Ainsi, dans la solution d'application, vous pouvez créer votre propre traitement qui chargera les extensions. Pour empêcher tout le monde de jouer avec les extensions, nous avons ajouté un nouveau droit : Administration des extensions de configuration.

Lors du chargement d'une extension à partir d'un fichier, celle-ci est enregistrée dans l'infobase. De plus, il est enregistré dans le contexte des valeurs de séparateur actuelles utilisées dans cette session.

Pour que l'extension fonctionne, la session doit être redémarrée. Au démarrage de la session, juste avant l'appel de l'événement SettingSessionParameters, toutes les extensions stockées dans l'infobase et correspondant aux valeurs de séparateur actuelles pour cette session seront connectées.

Par conséquent, lorsque vous travaillez en mode partage de données, l'extension ne sera appliquée qu'aux utilisateurs de cet abonné spécifique. Et si la séparation des données n'est pas utilisée, l'extension fonctionnera pour tous les utilisateurs de l'infobase.

Lors de la connexion d'une extension, comme nous l'avons déjà dit, on vérifie que les objets empruntés existent dans la configuration standard. Les objets sont mis en correspondance par leur nom.

De plus, un contrôle plus fin est possible. Vous pouvez contrôler non seulement le fait même de l'existence des objets, mais également l'état de leurs propriétés individuelles. Autrement dit, si vous pensez à un restaurant et à un steak, ce qui peut être important pour vous n'est pas seulement la présence d'un steak cuit d'une manière ou d'une autre, mais précisément le fait qu'ici il est cuit saignant, « saignant ».

Pour en revenir à l'extension, par défaut elle ne contrôle pas les propriétés des objets empruntés. Mais si nécessaire, vous pouvez rendre certaines propriétés contrôlables. Par exemple, il est important pour votre algorithme qu'il existe non seulement un répertoire Nomenclature, mais aussi que son code est du type Doubler.

Ensuite, si dans une configuration typique le fournisseur change le type de code de ce répertoire en Nombre, votre extension le détectera au moment de la connexion et signalera une erreur.

Un point intéressant est lié au renommage des objets de configuration standard. Par exemple, vous êtes venu dans un restaurant, et au lieu de Steakécrit Steak. C'est-à-dire que lors de la connexion à la configuration, l'extension n'y trouve pas de répertoire Nomenclature, car le fournisseur l'a renommé Marchandises.

Désormais, cette situation ne vous pose plus de problème. Et vous n’avez pas besoin de « pelleter » tout le code d’extension pour qu’à la place Nomenclatureécrire Marchandises. Cela fonctionne aussi. Il vous suffit donc de changer le nom de l'objet emprunté en Marchandises, et la plateforme effectuera le reste des modifications dans l’extension elle-même. Ou avec votre aide minimale.

Opération d'extension

Vous pouvez parler assez longtemps des caractéristiques de l'extension de divers objets, des caractéristiques du fonctionnement des extensions elles-mêmes. Mais nous sommes limités par la portée de cet article de synthèse, nous n'aborderons donc que les points clés et les plus révélateurs.

La principale « beauté » des extensions n’est bien sûr pas que vous puissiez ajouter quelque chose à une configuration standard qui n’existe pas. Et le fait est que dans l'extension, vous pouvez modifier ce qui est déjà dans la configuration standard. Autrement dit, vous pouvez modifier les propriétés des objets empruntés.

Le concept de base utilisé lorsque la configuration et l'extension fonctionnent ensemble peut être décrit comme suit. Aux endroits où ils ne se croisent pas, l'extension complète la configuration. Aux endroits où ils «se croisent», l'expansion est appliquée.

Cela peut être vu plus en détail en utilisant les formulaires gérés comme exemple. Vous pouvez emprunter un formulaire à la configuration principale et le modifier dans l'extension sans restrictions. Pour la partie visuelle du formulaire et pour son module, deux stratégies de combinaison différentes sont utilisées.

La partie visuelle du formulaire est fixée dans l'extension au moment de son emprunt. Et en mode 1C:Entreprise, pour chaque élément du formulaire, les modifications relatives à cet état sont analysées dans la configuration standard et dans l'extension.

S'il n'y a eu aucune modification ou s'il s'agit uniquement de la configuration standard, la valeur de la configuration standard est appliquée. Dans d'autres cas, la valeur de l'extension est utilisée.

Ainsi, si vous avez ajouté une nouvelle commande au formulaire dans l'extension, vous la verrez avec les autres commandes du formulaire. Et si vous avez modifié le titre d'un groupe existant, alors vous verrez votre titre même si le titre de ce groupe dans la configuration standard est modifié par le fournisseur.

Les modules de formulaire utilisent une approche différente. Pour le formulaire emprunté, l'extension crée son propre module avec ses propres gestionnaires pour tous les événements. En mode 1C:Enterprise, les deux modules de formulaire (de la configuration standard et de l'extension) sont combinés dans un seul contexte. Pour cette raison, chaque extension possède son propre préfixe, qui est ajouté à tous les gestionnaires d'événements du module de formulaire. Pour qu'il n'y ait aucune coïncidence avec les gestionnaires de la configuration standard. Après cela, les gestionnaires d’événements et de commandes sont appelés de manière séquentielle et synchrone. D’abord le gestionnaire de l’extension. Puis à partir de la configuration standard. Vous pouvez modifier cette séquence, ou interdire complètement l'exécution du gestionnaire à partir de la configuration standard.

De manière générale, quant au fonctionnement conjoint de la configuration et de l'extension en mode 1C:Entreprise, ils existent dans un espace de noms commun. Cela s'applique non seulement aux modules individuels, mais également aux arborescences de métadonnées elles-mêmes. Il n'y a donc aucun moyen en mode 1C:Entreprise de déterminer si cet objet est « natif » pour la configuration standard, ou s'il provient d'une extension.

Quant aux autres objets que vous pouvez utiliser dans l’extension, tout semble beaucoup plus simple pour eux.

Dans l'extension, vous pouvez créer vos propres sous-systèmes. À l'aide d'objets empruntés, vous pouvez étendre les sous-systèmes existants : ajoutez-y des objets et des sous-systèmes qui sont déjà dans la configuration standard, ou ceux que vous avez créés dans l'extension. Vous ne pouvez pas supprimer quelque chose d'un sous-système existant.

Vous pouvez développer des rôles uniquement en leur ajoutant des objets créés dans l'extension. Vous ne pouvez pas non plus rien supprimer d'un rôle existant. La même chose s'applique à l'interface de commande.

L'extension est presque une configuration

Nous avons dit au début que l'extension est similaire à la configuration habituelle. Par conséquent, en conclusion, je voudrais dire quelques mots sur la manière dont les extensions sont intégrées aux autres mécanismes de la plateforme.

Une extension (comme une configuration standard) a une configuration principale et une configuration de base de données. Le mécanisme de comparaison et de fusion des configurations fonctionne avec les extensions de la même manière qu'avec les configurations classiques.

Vous pouvez télécharger l'extension dans un fichier (mais avec une extension différente *.cfe) et la charger à partir du fichier. Les extensions peuvent être téléchargées/chargées en XML.

Les mécanismes de recherche globale, de remplacement et d'édition des textes d'interface fonctionnent également avec les extensions.

Il existe de nouveaux paramètres de ligne de commande pour travailler avec des extensions, ainsi que de nouveaux événements dans le journal.

Dans le langage intégré, l'objet principal pour travailler avec des extensions est ExtensionManagerConfiguration.

Dans cet article, je propose de réfléchir à ce qu'est une « extension de configuration », comment ajouter une extension ou la désactiver. À partir de la version 1C 8.3.6.1977, un nouveau mécanisme a été introduit dans la plate-forme : les extensions de configuration. Tout d’abord, un peu de théorie.

Dans 1C, les extensions sont quelque chose comme des configurations parallèles qui sont automatiquement combinées avec la configuration principale du fournisseur. De plus, dans les extensions, vous pouvez ajouter vos propres objets et emprunter des objets de la configuration principale.

A quoi servent les extensions ?

Tout d'abord, des extensions sont créées pour faciliter la modification du programme. Autrement dit, si les utilisateurs demandent à ajouter une fonctionnalité, avant l'apparition des extensions, les programmeurs devaient supprimer la configuration du support complet et modifier la configuration standard.

La suppression du support complet entraîne un certain nombre d'inconvénients :

  • la possibilité de mise à jour automatique disparaît, ce qui entraîne au moins une augmentation du temps nécessaire ;
  • un spécialiste hautement qualifié pour le programme est requis ;
  • si des modifications ont été apportées aux objets standard d'une configuration standard, elles peuvent disparaître lors d'une mise à jour, c'est-à-dire qu'elles peuvent être à nouveau remplacées par des objets standard du fournisseur.

Lors de l'utilisation d'extensions, lors des modifications, le programmeur ne touchera pas à la configuration standard. Toutes les modifications seront apportées à l'aide d'extensions qui (comme je l'ai écrit ci-dessus) sont également des configurations. De cette façon, la configuration principale restera entièrement prise en charge.

Après la mise à jour de la configuration principale, si dans la nouvelle version des modifications sont apportées à un objet précédemment modifié par l'extension, les modifications seront toujours prises en compte dans l'extension. Autrement dit, les extensions ont une priorité plus élevée que la configuration principale.

Vidéo - extensions en 1C en 45 minutes

Obtenez 267 leçons vidéo sur 1C gratuitement :

Un exemple d'ajout d'une extension à 1C

Pour montrer ce qu'est une extension, mieux vaut donner un exemple de sa création dans le configurateur 1C.

Dans le configurateur, allez dans le menu « Configuration » et sélectionnez « Extensions de configuration ». Une fenêtre s'ouvrira avec une liste d'extensions (le cas échéant). Cliquez sur le bouton « Ajouter » et ajoutez une nouvelle extension. Vous pouvez maintenant ouvrir la configuration de l'extension :

Comme vous pouvez le constater, la configuration d’extension a exactement la même structure que la configuration principale. Seulement, il est initialement complètement propre, sans objets.

J'ai récemment écrit un article sur la façon de le fabriquer vous-même. En utilisant son exemple, je souhaite le rendre intégré à l'aide d'une extension.

En traitement j'ai un champ avec un lien vers le répertoire « Organisations ». C'est pourquoi j'ai besoin de ce guide. Mais nous ne créerons pas de nouveau répertoire « Organisations », d’autant plus que la plateforme ne le permettra pas. Il est impossible qu'une configuration d'extension contienne des objets du même nom que les objets de la configuration principale.

Nous emprunterons donc l'ouvrage de référence à la configuration principale :

Maintenant, faites un clic droit sur « Traitements » et sélectionnez « Insérer un traitement externe, rapport... » Ainsi, nous ajouterons un nouveau traitement à la configuration de l'extension. Si vous utilisez mon traitement, renommez-le immédiatement, car la configuration principale possède déjà un traitement du même nom.

Eh bien, la touche finale. Je souhaite que mon traitement soit reflété dans le menu Administration. Pour ce faire, nous emprunterons le sous-système du même nom à la configuration principale. N'oubliez pas d'indiquer dans le traitement qu'il appartient à ce sous-système.

Voici la structure que j'ai imaginée :

Voyons ce que nous avons. Nous mettons à jour la configuration de la base de données et lançons le programme en 1C : mode Entreprise, et allons dans le menu « Administration ». Oui, j'ai failli oublier, la configuration de l'extension doit être fermée, sinon le programme ne démarrera pas :

Nous avons publié une nouvelle version du panneau de téléphonie pour 1C.

  • version 1.2.24.10 Pour ordinaire applications
  • version 1.4.26.17 Pour géré applications

Dans la version finale d'une application gérée, il est devenu possible d'embarquer un panneau de téléphonie avec modifications minimes configuration de base utilisant mécanisme d'expansion configurations.

Avantages de l'utilisation de l'extension

L'extension est très similaire à la configuration standard. Pour travailler avec, les mêmes techniques de travail sont utilisées qu'avec la configuration habituelle. Les extensions sont créées principalement pour faciliter la modification du programme. Vous n’avez plus besoin d’insérer des « morceaux de code » dans certains modules et d’ajouter de nouveaux objets de métadonnées, il vous suffit d’ajouter une extension à la configuration.

Un énorme avantage de l’utilisation d’extensions est mise à jour automatique configuration principale. Il n'est désormais plus nécessaire de modifier les paramètres de prise en charge pour une configuration typique.

Caractéristiques de l'intégration d'un panneau de téléphonie pour 1C

De telles fonctionnalités sont devenues disponibles pour les extensions de la plateforme à partir de la version 8.3.9.1818 . Alors pour en profiter, nous avons désactivé le mode de compatibilité pour l'extension depuis la version 8.3.9 pas encore pris en charge. En conséquence, il devient nécessaire de désactiver le mode de compatibilité pour la configuration principale, sinon une erreur apparaîtra : " Le mode de compatibilité de l'extension de configuration est supérieur au mode de compatibilité de la configuration principale".

2) On ajoute un rôle à la configuration principale MIKO_Softphone, pour lequel nous retirons tous les droits.

Lors de l'ajout d'un nouvel objet de métadonnées, en l'occurrence un rôle, il est nécessaire de mettre à jour le répertoire Identifiants d'objet de métadonnées. Lorsque nous avons ajouté ce rôle à l'extension, les configurations standards l'ont ignoré, c'est-à-dire que lors de la mise à jour du répertoire MetadataObjectIdentifiers, le rôle n'y figurait pas. Pour cette raison, le mécanisme de profil des paramètres du panneau de téléphonie n'a pas fonctionné correctement et l'erreur est apparue : " L'identifiant de l'objet de métadonnées pour le rôle MIKO_Softphone n'a pas été trouvé".

De plus, cette situation ne s'est pas produite dans toutes les configurations, mais dans "Gestion commerciale, 11.2.3.218" Et "Automatisation complexe, 2.0.3.222" Il n'y a eu aucun problème avec le rôle lorsqu'il a été ajouté à l'extension elle-même. Pour apporter une certaine polyvalence à notre solution et garantir un fonctionnement sans problème dans la plupart des configurations que nous prenons en charge, nous avons décidé d'ajouter le rôle MIKO_softphone dans la configuration principale et empruntez-le dans l'extension, puis implémentez les paramètres pour ce rôle dans l'extension.

Une caractéristique très importante est le fait que si, après avoir installé notre extension, vous souhaitez intégrer le panneau selon nos anciennes instructions, vous devez désactiver l'extension et supprimer le rôle MIKO_softphone. Si vous souhaitez réutiliser l'extension, vous devez d'abord ajouter le rôle, puis ajouter l'extension.

Résumons

Même en incluant la possibilité de modifier la configuration de base et d'apporter des modifications minimes à la configuration, nous avons facilité le processus d'intégration d'un panneau téléphonique. Désormais, vous n'avez plus besoin d'apporter de modifications aux modules de l'application gérée, d'ajouter des traitements et des sous-systèmes à la configuration ou de configurer des rôles. L'extension fera tout cela pour vous ! Nous continuerons d'améliorer le processus d'intégration d'un panneau de téléphonie pour 1C !

Des instructions pour intégrer un panneau téléphonique pour 1C à l'aide du mécanisme d'extension peuvent être trouvées.

Posez vos questions via le formulaire de commentaires.

© 2019. MIKO LLC Tous droits réservés.

Coût du travail et options de traduction à partir de différentes versions

Traduction 8.1 → 8.2.13 Traduction 8.2.13 → 8.2.16 Traduction 8.2.16 → 8.3.10
prix, frotter. * 54 000 ₽ 12 000 ₽ 76 800 RUR

Une liste de toutes les modifications apportées aux différentes versions de la plateforme est disponible sur les liens suivants :
Pour la plateforme 8.2 :
http://downloads.v8.1c.ru/content/Platform/8_2_19_106/1cv8upd.htm

Avant de commencer à travailler sur la traduction vers la version 8.3, vous avez besoin de :

Vérifiez le mode de blocage contrôlé. Si « Automatique » est utilisé, lors de la migration vers 8.3, des coûts supplémentaires peuvent être nécessaires pour passer au mode de verrouillage géré.
Si vous utilisez le mode de compatibilité avec 8.2.16 et supérieur, vous devez vérifier si les tables ont été restructurées
Déterminer quels types de clients sont utilisés (client léger, lourd, Web)
Déterminer s'il existe des machines qui exécutent Linux

Traduction de la configuration 8.1 → 8.2.13

Coût des travaux : 54 000 roubles.

Traduction de la configuration 8.2.13 → 8.2.16 (y compris restructuration)

Changements clés :
Le mode de stockage des constantes et des paramètres des registres d'accumulation a été modifié. Chaque objet possède sa propre table de base de données
L'implémentation du mécanisme de verrouillage géré a été retravaillée.
Pour l'événement de journal technologique "TLOCK", la propriété "Txt" est écrite uniquement en mode compatibilité avec la version 8.2.13
L'influence du mode débogage sur la vitesse de fonctionnement en mode 1C:Entreprise pour le client léger, le client lourd, le serveur et la connexion externe a été réduite.
L'exécution d'une requête de la forme « ValueType(Field1) = ValueType(Field2) » a été optimisée si « Field1 » et « Field2 » contiennent des valeurs d'un type référence.
Pour les champs de formulaire gérés qui affichent des attributs d'un type complexe, l'ouverture de la liste de sélection rapide a été accélérée dans les cas où le type complexe inclut des types de référence avec des paramètres de sélection rapide différents.
Pour le nouveau registre d'informations indépendant et non périodique, l'index des dimensions est clusterisé

Modifications nécessitant des modifications de configuration :

Lorsque le mode de compatibilité est désactivé, le paramètre « Période » de la méthode du gestionnaire de registre d'informations périodiques « Get() » est requis. En mode compatibilité avec la version 8.2.13 et la version 8.1, le comportement est inchangé (la méthode peut être utilisée sans préciser de paramètre, mais le résultat n'est pas défini).
Lors de l'utilisation simultanée des méthodes « SetValue() » et « UseFromDataSource() » de l'objet « DataLockElement », une exception est levée. En mode compatibilité avec la version 8.2.13, le comportement n'a pas changé (la valeur fixée par la méthode « UseFromDataSource() » est prioritaire).
Il n'est pas pris en charge pour stocker des valeurs de données qui ne prennent pas en charge la sérialisation. En mode compatibilité, le comportement n'a pas changé.
Si la base de données est basée sur des fichiers, l'infobase doit être convertie. Une fois la conversion commencée, il ne sera plus possible de travailler avec cette base d'informations avec les versions précédentes de la plateforme 1C:Enterprise 8. Si le développement est réalisé à l'aide d'un référentiel de configuration, vous devez faire une copie du référentiel avant de convertir l'infobase

IMPORTANT. Pour obtenir l'effet du changement de mode de compatibilité, vous devez effectuer une restructuration via le configurateur : « Administration → Test et correction → Restructuration des tables de l'infobase ».

Il faut au préalable effectuer une restructuration sur une base de tests et mesurer le temps d'exécution de cette opération.
Si vous utilisez une version du serveur 1C antérieure à 8.2.19, par exemple la version 8.3, les erreurs suivantes peuvent survenir lors de la restructuration :

Dans ce cas, vous devez procéder comme suit :
Installez un serveur 1C distinct version 8.2.19 et déployez dessus la base de données faisant l'objet d'une enquête
Ouvrez la base de données dans le configurateur sur le serveur 1C version 8.2.19, changez le mode de compatibilité en « Ne pas utiliser »
Restructurer les tables de la base d'informations
Une fois la restructuration terminée, déplacez la base d'informations vers la version 8.3 du serveur 1C d'origine

Le coût du transfert de la configuration du mode de compatibilité 8.2.13 vers le mode 8.2.16 (mode non compatible lors de l'utilisation de la plateforme 8.2.16, 8.2.19 et mode de compatibilité 8.2.16 lors de l'utilisation de la plateforme 8.3) est de 12 000 roubles.

Un modèle de contrat de travail peut être téléchargé.

Traduction de la configuration 8.2.16 → 8.3.10

Le travail de traduction de configuration comprend les modifications de configuration suivantes :

1. Éliminez les conflits de noms de propriété. Modification des noms de variables pour qu'ils correspondent aux nouvelles propriétés apparues dans 1C:Enterprise 8.3.
2. Éliminez les noms d'images contradictoires. Renommer les noms des images avec des noms qui correspondent aux noms de la bibliothèque d'images.
3. Raffinement du code lors de la modification des propriétés de la structure fixe. Remplacer l'indication des propriétés d'une structure fixe par la recréation d'une structure fixe ou remplacer son utilisation par un type « Structure » similaire.
4. Remplacement du placement des valeurs non sérialisables dans le stockage temporaire par du code pris en charge dans 1C:Enterprise 8.3.
5. Remplacement de l'utilisation de l'appel de la méthode « Show » pour les détails du formulaire géré par l'utilisation des propriétés « CurrentElement », « CurrentPage » et de la méthode « Activate »
6. Remplacez les noms d'objets de métadonnées de plus de 80 caractères par des noms de 80 caractères ou moins pour les objets de métadonnées
7. Renommer les méthodes et propriétés, selon la méthodologie de migration vers la version 8.3.
8. Amélioration des mécanismes de travail avec les sélections, le formatage conditionnel, les regroupements et l'ordre dans les listes dynamiques.
9. Affinement du code pour les requêtes avec le mot-clé « RÉSULTATS GÉNÉRAUX », déchargé dans le
"Contourner le résultat de la requête. Par regroupement", afin de préserver la logique de travail précédente.
10. Modifications des noms de classes d'objets COM. Remplacement des noms "V82.COMConnector" par "V83.COMConnector" et "V82.Application" par "V83.Application".
11. Refus dans le code programme de l'événement « Début de sélection sur liste » pour les champs de saisie en mode sélection sur liste
12. Refus dans le code du programme de la propriété « ChoiceList Button » pour les champs de saisie en définissant la propriété « Dropdown List Button ».
13. Modification du code pour prendre en compte le changement de type de valeur renvoyé par la méthode contextuelle globale « SafeMode() »
14. Modification du code pour prendre en compte un changement de résultat d'une requête de constantes (lors de l'accès au champ « Valeur » de la table des constantes, si la constante stocke une valeur de type « Value Storage », « UniqueIdentifier » ou « Référence de table source de données externe ».
15. Remplacement de la propriété de configuration « MainRole » par « MainRoles »
16. Refus des propriétés "User" et "Password" pour l'objet "InternetProxy" et remplacement par les méthodes "Set()", "User()", "Password()".
17. Affinement du code pour supporter la commande « Afficher dans la liste », selon la méthode de passage à la version 8.3.
18. Raffinement du code pour conserver la logique précédente de fonctionnement du système lorsque la valeur de retour de la propriété SystemInformation.OSVersion a changé,
19. Raffinement du code pour conserver la logique précédente du système en cas de refus d'utiliser l'énumération système OptionOpenWindow, qui n'est plus disponible dans la version 8.3.
20. Raffinement du code prenant en compte le refus d'utiliser des fenêtres modales.
21. Amélioration du code pour supporter le client web, à savoir refus des appels serveur et ouverture des fenêtres en « Avant Fermeture », refus des appels serveur en « Lors de la Fermeture ».
22. Amélioration du code pour permettre d'utiliser correctement la fonction RoleAvailable() lors du passage de la fonction en paramètre à un rôle manquant.
23. Pour une application gérée : à partir de la version 8.3.8 dans les gestionnaires d'événements d'une application gérée BeforeSystemShutdown, WhenSystemShutdown, ainsi que dans les gestionnaires d'événements d'un formulaire géré en mode fermeture, BeforeClosing, WhenClosing, Il est interdit d'ouvrir les fenêtres et de faire des appels au serveur. La configuration doit être améliorée afin que les formulaires puissent être fermés correctement - sans appels au serveur.
24. Conflit de nom de variable : vous ne pouvez pas utiliser le nom de variable FormParameters dans un module de formulaire. Il est donc nécessaire de modifier tous les modules de formulaires gérés qui utilisent des variables nommées FormParameters en renommant ces variables.

Le prix de ces travaux est préliminaire et valable pour la plupart des configurations. Avant de commencer les travaux lors de la conclusion d'un contrat, nous vérifions la configuration et Après vérification, nous confirmons le prix et les conditions de travail. Une vérification est nécessaire car les configurations peuvent être très différentes, voire fortement réécrites.

Coût des travaux : 76 800 roubles.

Un modèle de contrat de travail peut être téléchargé.

Le coût du transfert de la configuration en mode de compatibilité avec 8.3.10 peut être augmenté, Si:
La configuration utilise des formulaires gérés
Il faut abandonner l'utilisation de la modalité
Il est nécessaire de maintenir la fonctionnalité de la configuration sous Linux OS

Chers collègues, bonjour à tous.

L'autre jour, un test Enterprise Accounting a été publié avec le mode de compatibilité pour la plate-forme 8.3.6 désactivé.
Cela signifie que cette version utilise un nouveau moteur qui restitue les formulaires d'une nouvelle manière.
Vous pouvez lire à ce sujet dans De l’autre côté du miroir.

En plus des extensions standard, vous devez également convertir vos propres extensions vers la nouvelle plate-forme.
Pendant le processus de traduction, j'ai créé une petite liste de contrôle ou un rappel pour moi-même sur ce qui doit être fait.

Note:


1. Transférez l'extension vers une nouvelle plateforme

Pour ce faire, changez le mode de compatibilité des extensions en mode de compatibilité de configuration.
La version Enterprise Accounting possède les propriétés suivantes :

Dans l'extension, vous pouvez définir exactement les mêmes propriétés ou décocher toutes les cases.
Aucune case à cocher signifie que l'extension ne vérifiera pas ces propriétés lors de la connexion.
Ensuite, si ces propriétés changent dans la configuration principale, l'extension démarrera quand même :


2. Résoudre les problèmes de connexion

Pour cela, on lance la configuration en mode entreprise et on voit si elle décolle ou pas.
Les erreurs à cause desquelles l'extension n'a pas pu être connectée peuvent être consultées dans le journal
(Administration – Support et Maintenance – Carnet de bord)
Nous sommes intéressés par les événements - « Session. Erreur lors de l'application de l'extension de configuration » :

Le plus souvent, le problème de connexion est résolu en supprimant les détails ou objets inutiles.

La principale difficulté est que l'extension n'affiche pas toutes les erreurs à la fois (d'ailleurs, ce problème a été résolu dans la version 8.3.9).
Par conséquent, il est nécessaire d’exécuter les configurations séquentiellement après avoir corrigé chaque erreur.
Pour faciliter le lancement du journal de bord, ajoutez-le à vos favoris :



3. Mettre à jour les formulaires dans l'extension

Pour cela, dans chaque formulaire modifié, cliquez sur « Mettre à jour l'extension du formulaire »
À l'aide de cette commande, nous rechargeons le formulaire de configuration principal dans l'extension.

En principe, cela fonctionnera sans cela, mais cela est nécessaire pour que dans l'extension le formulaire soit le même que dans la configuration principale.
Dans la version 3.0.44, presque tous les formulaires ont subi des modifications, il serait donc bien d'inclure ces modifications dans l'extension.


4. Nous adaptons le formulaire aux règles du nouveau moteur.

Je vous recommande de lire l'article - Recommandations pour adapter les formulaires au 8.3.7.
Il examine les fonctionnalités du nouveau moteur et donne des recommandations spécifiques sur la manière de garantir que tout fonctionne bien sur la nouvelle plateforme.

J'ai trouvé la procédure suivante :

  • Nous supprimons toutes les décorations, qui ont été utilisés pour l'indentation.
    Les groupes sont désormais utilisés à la place.
  • Voyons si tout semble bon.
    Si quelque chose ne va pas, consultez l'article.
    Si tout va bien, alors nous passons à autre chose.
  • Vérification des propriétés de la nouvelle plateforme« Combiné », « AutomaximumWidth » et « AutomaximumHeight ».
    Vérifiez simplement que ces propriétés sont définies sur les valeurs par défaut de la plate-forme et que le formulaire ne se sépare pas pour cette raison.
mob_info