Maison / Skype / 1c traitement externe mis en mode sans échec. Mode de fonctionnement sécurisé. Démarrage du traitement externe en mode application normal

1c traitement externe mis en mode sans échec. Mode de fonctionnement sécurisé. Démarrage du traitement externe en mode application normal

Imprimer (Ctrl+P)

Objets de configuration

S'il est nécessaire d'utiliser un code de programme "non fiable" sur le serveur : traitement externe ou code de programme saisi par l'utilisateur pour une utilisation dans les méthodes Execute() et Calculate(), vous pouvez utiliser le mode de fonctionnement sans échec.

En mode sans échec :

  • Mode privilégié annulé.
  • Passage en mode privilégié ignoré.
  • Interdit opérations qui conduisent à l'utilisation d'outils externes en relation avec la plateforme 1C:Enterprise (y compris les analogues non bloquants des méthodes ci-dessus) :
  • Mécanismes COM :
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Chargement des composants externes :
    • ChargerComposantExterne();
    • ConnectExternalComponent().
  • Accès au système de fichiers :
    • valeurVersFichier();
    • Copier un fichier();
    • FusionnerFichiers();
    • DéplaceFichier();
    • Diviser le fichier();
    • Créer le répertoire();
    • Supprimer les fichiers();
    • Nouveau fichier;
    • Nouvelle xBase ;
    • WriteHTML.OpenFile();
    • LectureHTML.OpenFile();
    • LectureXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadFastInfoset.OpenFile();
    • WriteFastInfoset.OpenFile();
    • CanonicalWriterXML.OpenFile();
    • Transformation XSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadZipFile.Open();
    • NewTextReader() si le premier argument est une chaîne ;
    • ReadText.Open() si le premier paramètre est une chaîne ;
    • New TextWrite() si le premier paramètre est une chaîne ;
    • WriteText.Open() si le premier paramètre est une chaîne ;
    • Nouveau ExtractText();
    • modification de la propriété ExtractText.FileName ;
    • ExtractText.Write();
    • New Image() si le premier paramètre est une chaîne ;
    • Image.Record();
    • NouvelleDonnéeBinaire();
    • BinaryData.Write();
    • New DataWrite() si le premier paramètre est une chaîne ;
    • New DataRead(), le premier paramètre est une chaîne ;
    • toutes les méthodes de l'objet FileStreamManager ;
    • Nouveau FileStream();
    • FormattedDocument.Write();
    • SchémaGéographique.Lire();
    • GeographicScheme.Write();
    • GeographicScheme.Print();
    • TableurDocument.Lire();
    • TableurDocument.Write();
    • TableurDocument.Print(); GraphicScheme.Read();
    • GraphicScheme.Write();
    • GraphicScheme.Print();
    • TextDocument.Read();
    • TextDocument.Write().
  • Accès Internet:
    • Nouvelle connexion Internet,
    • Nouvelle messagerie Internet,
    • Nouveau proxy Internet,
    • Nouvelle connexion HTTP,
    • Nouvelle connexion FTP.

ATTENTION! Lève une exception lors de l'exécution d'opérations interdites lors de l'exécution.

Note. Les états et traitements externes, ouverts à l'aide du menu Fichier - Ouvrir, sont exécutés en mode sans échec si l'utilisateur ne dispose pas des droits d'accès administrateur.

Le nombre d'activations du mode sans échec doit correspondre au nombre d'arrêts. Cependant, si dans une procédure ou une fonction, le mode sans échec a été activé (une ou plusieurs fois), mais qu'il n'a pas été désactivé, le système s'arrêtera automatiquement autant de fois qu'il y aura d'activations en attente dans la procédure ou la fonction abandonnée.

Si, dans une procédure ou une fonction, la méthode appelle SetSafeMode(Faux) fait plus que des appels de méthode SetSafeMode (vrai), une exception sera levée.

L'installation par programmation du mode sans échec peut être requise lorsque le développeur de la configuration suppose l'utilisation d'un code de programme tiers (en relation avec la configuration), dont la fiabilité ne peut pas être garantie par le développeur. Un exemple d'un tel code est l'exécution des méthodes Execute() et Calculate() dans les cas où le code exécutable est reçu du monde extérieur. Dans ce cas, il est recommandé de définir le mode sans échec avant d'exécuter ces méthodes :

// Le code du programme est généré pour être exécuté // Il est possible que le code soit chargé depuis sources externes// ou saisi manuellement ExecutableCode = GetExecutableCodeFrom OutsideWorld(); // Activer le mode sans échec SetSafeMode(True); // Exécute un code potentiellement dangereux Execute(ExecutableCode); // Désactiver le mode sans échec SetSafeMode(False);

Dans certains cas, les paramètres du mode sans échec peuvent entrer en conflit avec les paramètres du mode privilégié. Un exemple d'un tel conflit est la publication d'un document dont la propriété Mode privilégié sur la publication est définie à partir d'un code 1D qui s'exécute en mode sans échec. Dans ce cas, le mode privilégié est désactivé et les tentatives d'activation sont ignorées. En conséquence, le code 1C:Enterprise qui "s'appuie" sur le mode privilégié activé "entre en collision" avec son absence, ce qui entraîne des erreurs avec des raisons non évidentes d'apparition. Pour éviter une telle situation, 1C:Enterprise désactive automatiquement le mode sans échec pour les gestionnaires d'événements disponibles dans un module objet ou un module gestionnaire, à condition que le code exécutable dans le langage 1C:Enterprise ne se trouve pas dans l'extension de configuration. Ces gestionnaires sont marqués dans l'assistant de syntaxe d'une manière spéciale.

Il offre également la possibilité de désactiver le mode sans échec à partir de la 1ère langue (si le code à partir duquel la désactivation est tentée n'est pas dans une extension de configuration). Méthode pour désactiver le mode sans échec SetDisableSafeMode(). Vérifiez que le mode sans échec est activé ce moment désactivé (automatiquement ou avec un appel de méthode), vous pouvez utiliser la méthode GetDisableSafeMode().

Dans une seule méthode 1C:1, il ne peut y avoir plus d'un niveau d'imbrication de définition du mode sans échec (en appelant la méthode SetSafeMode()) et de définition de la désactivation du mode sans échec (automatiquement au moment de l'exécution des gestionnaires d'événements d'objet de métadonnées ou en appelant la méthode méthode SetSafeModeDisable()). Lorsque vous essayez d'augmenter l'imbrication, une exception est levée :

// Procédure d'utilisation correcte ProcedureName() SetSafeModeDisable(True); SetSafeMode(True); SetSafeMode(Faux); SetSafeModeDisable(Faux); EndProcedure // Utilisation incorrecte Procedure ProcedureName() SetSafeModeDisable(True); SetSafeMode(True); SetSafeModeDisable(Faux); // Exception EndProcedure ProcedureProcedureName() SetSafeMode(True); SetSafeModeDisable(Faux); // Procédure de fin d'exception

Le fait est que lors de l'utilisation de la version client-serveur de 1C, les traitements / rapports externes sont ouverts en mode sans échec, dans lequel l'utilisation du mode privilégié est interdite. Et le mode privilégié est très souvent utilisé dans des configurations typiques : formation d'imprimés, chèques-services divers (enregistrement des échanges), etc. Par conséquent, même en utilisant un rapport régulier sur ACS sans formulaire (par défaut, le formulaire général "ReportForm" est utilisé) et en enregistrant les paramètres utilisateur du rapport (dans le répertoire correspondant), vous recevrez une erreur d'accès insuffisant droits sur diverses constantes et paramètres de session utilisés à des fins officielles après la ligne SetPrivilegedMode(True) ;

La "bonne" solution serait de connecter le traitement externe et le reporting via les mécanismes BSP " Rapports supplémentaires et traitement" en désactivant le mode sans échec ou en ajoutant des autorisations (à mon avis, à partir de la version 2.2.2.1 de BSP). Mais si pour une raison quelconque, il est nécessaire d'utiliser fichiers externes rapports/traitement, vous pouvez configurer le profil de sécurité du cluster utilisé comme profil de sécurité en mode sans échec pour un base d'informations.

Je voudrais tout de suite noter que cette option n'est pas préférée, mais en raison de diverses circonstances, elle peut être utilisée sous une forme aussi simplifiée. Par exemple, j'ai plusieurs bases dans différentes villes, un local commun assis avec dur droits limités, USB fermé, etc., la comptabilité 2.0 est utilisée quelque part, et quelque part 3.0, je fais presque tous les rapports en utilisant ACS sans formulaires, de sorte qu'ils s'ouvrent dans les deux versions. Servir tous ces rapports pour différentes versions et différentes bases est une entreprise chronophage et peu prometteuse, car il est prévu de passer à une seule configuration et base...

Nous créons un profil.
Dans la console du cluster, créez un profil de sécurité dans lequel nous définissons les drapeaux "Peut être utilisé comme profil de sécurité en mode sans échec" et " sous "Accès complet autorisé :" "en mode privilégié".

Dans de nombreux cas d'utilisation de rapports et de traitement simple, cette méthode sera applicable. Pour des situations plus complexes, cela n'a aucun sens de décrire le processus, car. il est décrit dans la documentation (possibilité de configurer des profils de sécurité pour des fichiers externes spécifiques en précisant sa somme de hachage, etc.).

PS Je pensais que les profils de sécurité ne fonctionnaient que lors de l'utilisation de licences pour la plate-forme et le serveur du niveau CORP, mais cette fonctionnalité fonctionne également sur la plate-forme 1C:Enterprise 8.3 (on peut conditionnellement appeler PROF par analogie avec les configurations standard Basic / PROF / CORP)

En utilisant l'exemple de Trade Management 11.3, considérons un processus simple de connexion d'un formulaire d'impression externe. Nous examinerons également les caractéristiques du nouveau système de sécurité.

Passage rapide

Actions préliminaires

Pour commencer, vous devriez activer la fonctionnalité ou vérifier la disponibilité

1. Nous allons sous tous les droits à l'infobase.

2. Allez dans le menu « NSI et administration » / Bloc « Administration » / Commande » Formulaires d'impression, rapports et traitement".

Addenda

Dans la section ouverte :

On ajoute le traitement par le bouton "Créer" (c'est important) ou "Mettre à jour !" existant:

  • Sélectionnez-la dans la liste (si elle n'est pas sélectionnée ou vide, la commande ne fonctionnera pas, mais elle ne dira rien).
  • Cliquez sur le bouton "Charger à partir du fichier".

Après l'apparition de 1C dans le traitement externe, des contrôles de sécurité sont apparus dans de nouvelles configurations.

Vous ne devez installer que les traitements créés indépendamment ou reçus via des canaux de communication connus (pas par courrier, uniquement à partir d'un site avec un certificat valide, ou fourni par les employés du développeur, confirmé par lui par téléphone).

Si tout est écrit dans le traitement par le développeur, alors "Placement" sera défini - les objets dans lesquels le traitement sera impliqué, la ou les commandes apparaîtront.
Pour travailler, il suffira de cliquer sur "Enregistrer et fermer".

Examen

Immédiatement après, selon le type de traitement :

  • Le formulaire d'impression devient disponible à l'ouverture d'un document ou à partir de sa liste (pour un document déjà ouvert à la réouverture) en cliquant sur le bouton "Imprimer".
  • Les soins sont disponibles dans les rubriques " Traitement supplémentaire» dans chaque sous-système
  • Traitement du remplissage par le bouton "Remplir" de la liste ou du panneau de commande principal de la fiche objet.

Pour le traitement ci-dessus, le lancement ressemblera à ceci :

Si le document est nouveau, il doit être enregistré, le mécanisme de traitement externe vous en avertira :

En outre, le comportement dépend de la fonctionnalité inhérente : il est possible d'ouvrir un formulaire ou un simple traitement de données.

Avertissements de sécurité en 1C

Dans les nouvelles versions de la plateforme et des configurations, la protection contre le lancement de programmes malveillants a été renforcée.

Le traitement peut entraîner le démarrage d'Excel, auquel cas le nouveau sous-système de sécurité vous avertira également :

Dans ce cas, le code du gestionnaire est interrompu.

Si vous cliquez sur "Oui", le système vous demandera d'appeler à nouveau la commande :

Il est possible pour un utilisateur de l'infobase de désactiver la protection contre les actions dangereuses via le Configurateur :

Depuis le mode "Entreprise", cela ne peut pas être modifié, peut-être que cela a été fait exprès, cela peut apparaître après la mise à jour.

Il faut également noter que si le traitement utilise Excel, il doit démarrer en mode non sécurisé (c'était le cas avant la mise en place du nouveau système, cela fonctionne en parallèle) :

"Impossible de charger MS EXCEL !!!" "Le mode sans échec est activé. L'exploitation est interdite"

En traitement externe, cela ressemble à ceci :

Le développeur doit le mettre à "False" dans la description du traitement interne, alors tout ira bien :

ExternalProcessingDetails() ExportRegistrationParameters = Nouvelle structure ; RegistrationParameters.Insert("SafeMode", False);

Lors de la mise à jour de la configuration, il y avait également un texte d'avertissement sur la source à partir de laquelle le fichier de configuration a été obtenu :

Lorsque vous exécutez le programme de téléchargement de documents en tant qu'utilisateur normal, une erreur se produit "Le mode sans échec est défini. L'opération est interdite."

Cette difficulté vient du fait il n'y a pas assez de droits pour démarrer le traitement externe. Pour définir les droits d'accès, accédez à la base de données en mode 1C Enterprise au nom de administrateur et aller à la rubrique Paramètres d'utilisateur et de droits / Profils de groupe d'accès, Cliquez sur Pour créer un groupe.

Entrez le nom du groupe et cochez les cases à la disposition des utilisateurs ce groupe de rôles -

  • Ouverture interactive des rapports externes et traitement
  • Utilisation de rapports et traitement supplémentaires

Cliquez sur Ecrire et fermer


Retournez au menu Utilisateurs et sélectionnez un employé dans la liste qui travaillera avec le programme de téléchargement de documents. Cliquez sur Autorisations. Dans la liste des profils, marquez le profil créé précédemment. Cliquez sur brûler.


Pour que les utilisateurs puissent commencer le traitement, il est recommandé d'ajouter le téléchargement de documents à la liste des traitements externes. Pour ce faire, le menu Administration / Impression des formulaires et traitement / Rapports et traitement supplémentaires créer un nouveau traitement. Spécifiez le chemin d'accès au fichier "DocumentUpload.epf" et donnez-lui un nom. Spécifiez l'emplacement du traitement dans le menu, à partir duquel l'utilisateur peut le démarrer à l'avenir, par exemple, sélectionnez le menu Livres de référence

Cliquer sur un élément Accès rapide vous spécifiez pour quel utilisateur le traitement est disponible :


Après le réglage, cliquez sur Ecrire et fermer. Pour démarrer le traitement, les utilisateurs n'auront qu'à entrer de nouveau dans la base de données et l'ouvrir à partir du menu d'accès (dans l'exemple - Répertoires) et cliquer sur Courir.


ouvrir Menu - Toutes les fonctions... et recherchez l'option "Utiliser des profils de sécurité" dans la liste.


Il suffit de décocher l'option "Les profils de sécurité sont utilisés".


Après cela, le programme fonctionnera avec succès.