Extensions de configuration - comment ajouter des fonctionnalités à une configuration standard sans supprimer le support (vidéo de 20 minutes). Changer ou désactiver le mode de compatibilité A quoi servent les extensions ?

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 le transfert 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 conserver 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 l'évolution du 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 les 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

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

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

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, le répertoire doit être mis à jour 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 suivante s'est produite : " 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 de 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 !

Les instructions pour intégrer un panneau téléphonique pour 1C à l'aide du mécanisme d'extension se trouvent.

Posez vos questions via le formulaire de commentaires.

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

Une nouvelle version de la plateforme 8.3.11 a été publiée, qui vous permet d'ajouter et de modifier des objets de métadonnées via une extension. Pouvons-nous vraiment maintenant implémenter des améliorations sans supprimer la configuration du support ? Vaut-il la peine de promettre à un client des montagnes d’or sans aucune conséquence ?

Tout d’abord, vous devez être conscient des limites des extensions.

Limitation des objets créés

Pour le moment, vous pouvez créer :

  • Annuaires
  • Documents
  • Registres d'informations
  • Plans d'échange

Vous pouvez ajouter des détails à :

  • Annuaires
  • Documents

On se retrouve avec quoi ? Tous les types d'objets de métadonnées ne peuvent pas être ajoutés. Les plus courants et les plus populaires, mais pas tous. De plus, de nouvelles dimensions et ressources ne peuvent pas être ajoutées aux registres d’informations. Vous ne pouvez créer qu'un tout nouveau registre.

La fonctionnalité des extensions dépend du mode de compatibilité de la configuration à laquelle l'extension est appliquée.

Mode de compatibilité 8.3.8- vous pouvez uniquement modifier les formes des objets et leurs modules, ajouter vos propres rapports et traitements.

Mode de compatibilité 8.3.10- vous pouvez modifier les modules généraux, les modules objet et gestionnaire, les rôles, utiliser les directives « Avant », « Après », « À la place » pour n'importe quel module.

Mode de compatibilité "Ne pas utiliser"- vous pouvez utiliser toutes les fonctionnalités des extensions, y compris l'ajout de nouveaux objets.

Pour le moment, la norme UT 11.3 dispose du mode de compatibilité 8.3.8. Dans UT 11.4, le mode de compatibilité est 8.3.10, c'est-à-dire, par exemple, pour UT, la plupart des fonctionnalités d'extension ne sont pas disponibles, y compris la création d'objets de métadonnées.

Cela semble soulever la question : pourquoi ne pas simplement supprimer le support de la racine, définir le mode de compatibilité sur « Ne pas utiliser » et utiliser tranquillement les extensions ? Lors du changement du mode de compatibilité, le comportement des formulaires et des résultats des requêtes peut changer, c'est-à-dire comportement du système dans son ensemble. Il est fortement recommandé de ne pas changer le mode de compatibilité sans avoir effectué un test préalable. Mais il est évident qu’il semble possible de tester entièrement (ou au moins partiellement les documents utilisés) une solution applicative complète. Vous ne devez donc pas utiliser cette option.

Lors de la connexion d'une extension à une configuration standard et de l'emprunt d'objets standards, l'extension contrôle le mode de compatibilité de la configuration principale ainsi que les types d'objets empruntés et leurs détails. Si les propriétés surveillées ne correspondent pas, l'extension est désactivée et ne fonctionne pas tant que la cause n'est pas éliminée. Autrement dit, avec une mise à jour majeure, il existe une forte probabilité de modifier au moins une des propriétés contrôlées et d'entraîner une perte de fonctionnalité de l'extension.


De plus, si les modifications sont importantes, de nombreuses procédures et fonctions de la configuration standard sont remplacées, il faudra les surveiller attentivement et, si nécessaire, les mettre en conformité avec la configuration standard, en préservant les modifications précédemment apportées.


Dans les cas ci-dessus, vous aurez toujours besoin de l'aide d'un programmeur et, éventuellement, d'un temps de modification important (mais toujours moins que lors de la mise à jour d'une configuration qui a été retirée du support).

Conclusions

  • La nouvelle version de la plateforme a offert de nouvelles opportunités d'utilisation d'extensions, il est devenu possible d'ajouter des objets de métadonnées, mais malgré cela, la fonctionnalité présente certaines limites.
  • Le mode de compatibilité de la configuration à laquelle l'extension est appliquée limite considérablement les capacités de l'extension ; il n'est pas recommandé de modifier le mode de compatibilité.
  • Les mises à jour volumineuses nécessitent toujours l'attention des développeurs, car il existe une forte probabilité de modification des propriétés contrôlées.

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.

Les extensions dans 1C 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 :