Exemple de code du langage de programmation 1C. Boucles utilisant des expressions booléennes

Ce livre est une description du langage intégré du système 1C:Enterprise et est destiné aux spécialistes qui configurent le système pour résoudre un problème spécifique d'automatisation comptable.

1C:Enterprise est un système flexible et personnalisable qui peut être utilisé pour résoudre un large éventail de tâches dans le domaine de l'automatisation des activités de l'entreprise. Des algorithmes de configuration spécifiques sont décrits dans le système 1C:Enterprise à l'aide du composant logiciel Configurateur (ci-après dénommé le configurateur) dans des modules logiciels contenant des textes dans la langue intégrée du système 1C:Enterprise.

Objectif et brève description du langage intégré

Le langage intégré du système 1C:Enterprise est destiné à décrire (au stade du développement de la configuration) des algorithmes pour le fonctionnement d'une tâche appliquée.

Le langage intégré (ci-après dénommé le langage) est un langage de programmation spécifique à un domaine, spécialement conçu en tenant compte de la possibilité de son utilisation non seulement par des programmeurs professionnels. En particulier, tous les opérateurs linguistiques ont des orthographes russe et anglaise, qui peuvent être utilisées simultanément dans le même texte source. La langue principale décrite dans ce livre est le russe, mais pour chaque opérateur linguistique, son synonyme anglais est donné.

Malgré sa relative simplicité, le langage possède certaines capacités orientées objet, par exemple, les règles d'accès aux attributs et méthodes de types de données spécialisés (documents, ouvrages de référence, etc.) sont similaires aux propriétés et méthodes des objets utilisés dans d'autres objets. -langues orientées. Cependant, les types de données spécialisés ne peuvent pas être définis à l'aide du langage lui-même, mais sont spécifiés dans le mode visuel du configurateur.

Le typage des variables dans le langage n'est pas rigide, c'est-à-dire que le type d'une variable est déterminé par sa valeur. Les variables n'ont pas besoin d'être déclarées explicitement. La définition implicite d'une variable est sa première occurrence sur le côté gauche de l'instruction d'affectation. Il est également possible de déclarer explicitement des variables en utilisant l'opérateur approprié. Les tableaux sont autorisés.

Construire un livre

Les éléments du langage dans ce livre sont décrits comme regroupés logiquement en fonction de leur objectif fonctionnel, de sorte que la table des matières de ce livre n'est pas organisée par ordre alphabétique. Généralement, le chapitre commence par le type de données en cours de traitement, suivi de ses attributs, et à la fin par les méthodes exécutables qui utilisent ce type de données.

Format de description des éléments du langage

Chaque élément de langage (construction) mentionné dans ce manuel est imprimé dans cette police. Les informations sur les composants du langage sont fournies sous la forme d'un diagramme syntaxique, Description détaillée et un exemple de texte source.

Conventions et notations adoptées dans les diagrammes syntaxiques

Les symboles suivants sont utilisés dans les diagrammes de syntaxe :

Diagramme de syntaxe pour la description des éléments de langage

Format de description d'élément de langage utilisé dans ce manuel, est illustré par le diagramme de syntaxe ci-dessous.

Élément de langage

Brève description ce que fait un élément de langage donné.

Syntaxe:

ÉlémentLangue(<Параметр1>, <Параметр2>, ...) [AjouterMotClé]

Syntaxe anglaise :(dans le cas de constructions de langage)

Mot-clé(<Параметр1>, <Параметр2>, ...)

Synonyme anglais :(en cas de description des méthodes, fonctions et procédures)

Possibilités:

<Параметр1>brève description<Параметра1>. <Параметр2>brève description<Параметра2>. [AddKeyWord] une brève description d'AddKeyWord.

Valeur de retour:

Type et brève description de la valeur de retour.

Description:

Une description détaillée de ce que LanguageElement implémente.

Exemple:

· Brève description de l'exemple // Texte original exemple

Si vous écrivez en SI
Soyez au moins trois fois boiteux
Ils disent à ce sujet :
"C'est un programmeur sympa !"
(Chansons Fidosh - "Qu'est-ce que Suxxx et Qu'est-ce que Rulezzz")

Préface

La raison pour laquelle j'ai écrit cet article était attitude négative communauté professionnelle à la plate-forme et aux programmeurs spécifiés.

En tant que programmeur ayant choisi 1C, je considère cet avis sans fondement. La plateforme 1C est loin d'être idéale, mais, à mon avis, c'est le meilleur, et surtout, un produit national !

Et plus encore, il est insuffisant de juger des capacités d’un programmeur à l’aune du langage dans lequel il écrit.

Dans cet article, je décrirai les avantages que j'ai trouvés dans le programme. L’article s’avérera presque être une publicité, voici donc un avertissement :

  • Je n'ai aucune relation directe avec la société 1C ;
  • Cet article n’a pas été commandé et a été rédigé uniquement sur une base volontaire ;
  • Dans certains cas, des opinions personnelles sont exprimées, qui peuvent ne pas coïncider... ;
  • L’intégralité de l’article, à l’exception du prologue, est la propriété de l’auteur, toute coïncidence est un accident ;
  • Nous parlerons de la plateforme 1C Enterprise 8.2 (actuellement la version 8.3 est actuelle, mais je ne l'ai pas encore étudiée - il y a beaucoup de travail sur 1C 8.2). Cependant, la plupart de ce qui est dit s'applique à la fois à la plate-forme 8.3 et aux versions antérieures, et une partie s'applique à la version 7.7.
Alors, commençons.

De quoi parle-t-on?

La plateforme 1C Entreprise 8 est :
  • Il fonctionne en deux versions - fichier et serveur (trois liens) - chacune a ses propres avantages et inconvénients ;
  • Un système comptable indépendant, facile à installer et à configurer ;
  • Un écosystème puissant pour les programmeurs avec tous les objets et outils nécessaires ;
  • Belle interface ergonomique ;
  • Solution relativement peu coûteuse pour les entreprises ;
  • Réseau de franchisés, formation initiale ;
  • Une base puissante de développements et de connaissances accumulées au fil des années ;
  • Parfois une plate-forme problématique pour les administrateurs système ;
  • Pas l'exécution la plus rapide des algorithmes (mais pas la plus lente) - c'est un hommage au contenu de l'information (en cas d'erreurs, le numéro de ligne et son contenu sont indiqués) ;
  • Il n'y a pas de classes dans le langage de programmation (héritage, encapsulation, polymorphisme), pas de fonctions anonymes et autres fonctionnalités modernes. Mais pour résoudre la plupart des problèmes, cela n’est pas nécessaire !
Pour organiser la comptabilité, une seule plateforme ne suffit pas. La plateforme est une sorte de « moteur », un lien intermédiaire entre le programme et la base de données. Les programmes pour ce « moteur » sont appelés configurations. La configuration décrit la structure de la base de données sous forme d'objets, de textes de procédures stockés dans des modules séparés (il existe de nombreux modules, chaque objet et le système dans son ensemble en ont, et il existe également des modules communs). La plateforme représente un niveau d'abstraction auquel l'accès direct à la base de données n'est pas requis, et vous permet également d'abstraire système opérateur et le type de base de données.

Base de données de fichiers et de serveurs

La plateforme est composée de plusieurs parties et peut fonctionner en version fichier ou serveur.

Dans la version fichier, l'intégralité de la base de données est contenue dans un seul fichier (avec l'extension « 1cd ») - la plateforme est installée sur chaque ordinateur et lit/écrit directement dans la base de données.

Avantages de l'option fichier - bas prix et facilité de déploiement.

Inconvénients - la structure de fichier "1cd" est fermée, non système unifié, en interaction avec la base de données. En conséquence, il est difficile à utiliser lorsque grand nombre utilisateurs (essayé pour plus de 20 utilisateurs - cela fonctionne). De plus, lorsque la taille de la base de données est d'environ 15 Go (ou plus), les mises à jour dynamiques peuvent échouer. Résoudre de telles pannes est une tâche difficile, et l'utilitaire de réparation de la base de données ne répare pas toujours efficacement, et paralyse parfois même la base de données.

Il existe une solution : il s'agit tout d'abord de mettre en place un Copie de réserve Base de données. De plus, les artisans publient non seulement le format de fichier 1cd, mais ont également développé des utilitaires pour travailler avec de tels fichiers et un certain nombre de méthodes pour résoudre de tels problèmes.

Dans la version serveur, la plateforme de stockage de la base de données utilise un serveur SQL (généralement MS SQL, mais à partir de la version 8.2.14 - vous pouvez en utiliser d'autres, par exemple Firebird PostgreSQL, IBM DB2, Oracle Database), et la plateforme elle-même utilise une architecture à trois niveaux :

Une partie du code est exécutée sur le client, une autre sur le serveur. Dans ce cas, seul le serveur interagit avec la base de données. Parallèlement, à partir de la version 8.2, en plus du mode de fonctionnement standard, appelé mode « client lourd », deux nouveaux modes de fonctionnement sont apparus : « client léger » et « client web » ; est également apparu " formulaires gérés», apparence qui est construit sous la forme d’un arbre abstrait d’éléments. La programmation de formulaires gérés et d'une architecture à trois niveaux est plus difficile, mais cela vous permet de transférer la quasi-totalité de la charge vers le serveur (c'est-à-dire que vous pouvez acheter un serveur puissant et une centaine d'ordinateurs de bureau les moins chers).

Avantages de la plateforme : « trois liens » - répartition de la charge, ouverture de la base de données (officiellement, la société 1C décline toute responsabilité en cas de corruption de données si Base de données SQL des modifications ont été apportées autrement que par le biais de leur plateforme ou de leur serveur, mais cela arrête peu de personnes), manque de restrictions.

Inconvénients - prix : vous devrez acheter des licences client séparément pour chacune ordinateur client, séparément - une licence pour le serveur 1C, séparément une licence pour le serveur SQL, si vous n'utilisez pas la version gratuite. De plus, des difficultés surviennent parfois dans le fonctionnement de la base de données. Ils sont résolus beaucoup plus rapidement grâce à la disponibilité des données et à la disponibilité d'outils externes pour travailler avec la base de données. De plus, dans ce cas, vous devez effectuer une sauvegarde de la base de données.

Un avantage commun est la polyvalence du code de configuration : à quelques exceptions près, une configuration développée pour une base de données de fichiers fonctionnera sur une base de données de serveur, et vice versa. Un exemple d'exception consiste à transmettre une valeur mutable au serveur ou du serveur au client (dans la version fichier, cela ne provoquera pas d'exceptions, mais dans la version client-serveur, cela est interdit).

Autre plus : la plateforme s'installe très simplement, un peu comme ceci : « Suivant-Suivant-Suivant-Ok », pas obligatoire réglage fin et l'installation de tous les composants.

Pour la version serveur, il existe quelques paramètres supplémentaires, mais tout se fait dans la boîte de dialogue d'installation et ne nécessite aucune saisie dans fichiers séparés. L'installation d'un serveur SQL peut être quelque peu difficile, car... dans ce cas, il existe beaucoup plus de paramètres (et pour l'affiner, vous devez étudier des instructions supplémentaires). Mais cela ne s'applique pas aux problèmes de la plateforme 1C. De plus, si vous installez, par exemple, un serveur MS SQL avec tous les paramètres par défaut, alors 1C pourra travailler avec lui.

C'est plus que de la comptabilité

Lorsqu'il s'agit de la plateforme 1C, elle se présente avant tout comme un programme de comptabilité. En effet, il s'agit du domaine d'utilisation le plus populaire de la plateforme 1C. Mais 1C ne vit pas uniquement de la comptabilité !
Ceux qui connaissent la plateforme disent qu'il s'agit d'un système de comptabilité (automatisation comptable). C'est plus proche de la vérité - il existe de nombreuses configurations, provenant à la fois de 1C et de développeurs tiers. Certains ne sont qu’indirectement liés à la comptabilité, d’autres n’y sont pas du tout liés.

En général, il est plus correct d'imaginer la plateforme 1C comme un shell pour la modélisation objet d'une base de données, d'une interface et de programmation en langage 1C. La seule limitation est que pour chaque configuration sa propre base de données est créée, et une seule (cependant, il est possible de se connecter en plus dans le cadre de la configuration sources externes des données, c'est-à-dire autres bases).

Écosystème pour les programmeurs

Considérons maintenant le langage et la plateforme 1C du point de vue d'un développeur :
Modèle objet de base de données. Premièrement, nous ne travaillons pas directement avec des bases de données. Ce n'est pas nécessaire. Pour notre commodité, toutes les données sont présentées sous forme d'objets interconnectés (répertoires, documents, registres d'information, registres d'accumulation, ...), et la plateforme « extrait » automatiquement ces données de la base de données.
Par exemple, à condition que la variable « Elément Nomenclature » contienne une référence à l'élément d'annuaire « Nomenclature », le répertoire « Nomenclature » possède l'attribut « Fournisseur principal », tapez « Répertoire.Contreparties », et le répertoire « Contreparties » possède l'attribut Attribut « Nom complet », puis le code :

Élément de nomenclature Fournisseur principal Nom complet
... amènera la plateforme 1C, à l'aide de mécanismes internes, à trouver un enregistrement dans le tableau correspondant au répertoire « Contreparties » par identifiant du champ « Fournisseur principal » de l'article article et à renvoyer les valeurs du champ correspondant au champ « Nom complet » dans le modèle objet du répertoire « Contreparties ».

Il peut y avoir de nombreux déréférencements de ce type – le système peut les gérer. Le seul bémol est que le système ne sait pas comment optimiser les déréférencements, vous devez donc vous efforcer de les déplacer en dehors de toutes sortes de boucles.

En plus des objets qui décrivent les données, il existe un grand nombre d'objets système - pour une variété de fonctions. Je vais en souligner quelques-uns :

Magasins de valeur
Tableau- un objet qui stocke un ensemble de données, par opposition à l'idée classique des tableaux. Cela pourrait être des données divers types(numéro, chaîne, lien, autre objet). Il a des fonctionnalités minimales et est principalement utilisé comme conteneur temporaire pour transférer des valeurs entre d'autres magasins.

ListeValeurs- un objet principalement destiné à travailler avec l'interface utilisateur. En plus des données, pour chaque élément, il peut également contenir une représentation, un attribut de drapeau et une image (icône). Il dispose également des méthodes « SelectElement() » et « MarkElements() » - lorsqu'il est appelé, l'utilisateur voit une boîte de dialogue d'interface (ce qui est pratique - il n'est pas nécessaire de créer cette boîte de dialogue dans la configuration).

Structure Et Correspondance- stockage des valeurs appariées « KeyIValue ». Dans la structure, « Clé » est une chaîne qui suit les règles de dénomination des variables dans 1C (pas d'espaces, ne commence pas par un chiffre, se compose uniquement de lettres, de chiffres et d'un trait de soulignement). Selon - « Clé » est n'importe quelle valeur. La recherche d'objets la plus rapide est en conformité (plus rapide que dans un tableau et un tableau de valeurs indexé).

Tableau des valeurs- un objet très pratique et assez rapide pour stocker et traiter des données. Les colonnes de la table de valeurs peuvent être ajoutées et supprimées, quel que soit le nombre d'enregistrements. Dans ce cas, les données des lignes ne sont pas perdues (ou seules les données des cellules correspondant aux colonnes supprimées sont supprimées). En outre, il dispose de la méthode « SelectRow() », qui appelle la boîte de dialogue de sélection de ligne. Il existe des index.

Arbre de valeurs- un objet représentant des données hiérarchiques. Contient des colonnes ; l’ensemble de colonnes est le même pour tous les enregistrements à tous les niveaux. Supprimer/ajouter des colonnes dans l’arborescence des valeurs est aussi simple que dans la table des valeurs. En outre, il dispose de la méthode « SelectRow() ».

Objets d'interface et objets pour travailler avec diverses données TextDocument, SpreadsheetDocument, navigateur Web, ReadFile, WriteFile, ReadZIPFile, WriteZIPFile, ReadXML, WriteXML, HTTPRequest et bien d'autres objets, et le configurateur dispose d'une aide intégrée pour tout. La finalité des objets répertoriés ressort clairement de leurs noms et tout cela est immédiatement disponible sur la plateforme.

Par ailleurs, il convient de noter qu'il existe un objet « Métadonnées » - à l'aide duquel, dans un langage de programmation, vous pouvez étudier la structure des données, ainsi que chaque lien ou objet pour un répertoire, un document, un diagramme de comptes, etc il existe une méthode « Metadata() » - fournissant une description de cet ouvrage de référence/document/plan comptable/etc. dans la base de données (quels détails, parties tabulaires sont disponibles, longueur du code/numéro, etc.). C'est souvent très pratique.

Et il faut également mentionner séparément les objets : « Query », « Query Constructor », « Query Builder », « Report Builder », « Data Composition Schema ». Cette famille implémente un ensemble d'objets pour travailler avec le puissant langage de requête 1C.

Langage de requête. Les requêtes dans 1C sont utilisées uniquement pour obtenir un échantillon de données avec une sélection, un tri et un regroupement pratiques. En première approximation, il s'agit de l'opérateur « SELECT » de SQL traduit en russe, cependant, le langage de requête 1C possède également des fonctionnalités qui manquent dans SQL, à savoir :

  • Travailler avec des objets de configuration 1C au lieu de tables SQL ;
  • Travailler avec des liens au lieu de champs d'identifiant SQL ;
  • Prise en charge du déréférencement, similaire à la façon dont cela se fait dans le code ;
  • Sélection par inclusion dans un groupe (pour les annuaires) ;
  • Totaux hiérarchiques ;
  • Tables temporaires et requêtes imbriquées (SELECT * FROM (SELECT ...)));
  • Le générateur de requêtes est un texte de requête pratique, basé sur des objets, qui s'optimise automatiquement pour une lecture rapide, qui peut analyser le texte de la requête (analyser le texte de la requête et créer un modèle objet à partir de celui-ci) ;
  • Le générateur de rapports est un module complémentaire au mécanisme de requête, qui ajoute des fonctionnalités de formatage automatique des résultats, ainsi qu'une configuration flexible de la requête elle-même en mode « Entreprise » (c'est-à-dire par l'utilisateur). En conséquence, un rapport universel est apparu sur les plates-formes 1C standard, dans lesquelles l'utilisateur peut configurer quelles données et dans quel ordre il souhaite voir ce qu'il y a dans les lignes et ce qu'il y a dans les colonnes, et le rapport lui-même génère le tableau de sortie. ;
  • SKD (Data Composition System) est le prochain modèle qui intègre la fonctionnalité rapport universel et l'a complété par quelques fonctions de traitement des résultats.

Langage de programmation
En termes de syntaxe, le langage 1C est similaire au « Pascal russe », mais diffère du « Pascal » par moins de rigueur et l'absence de certaines constructions :

  • Il n'est pas nécessaire de déclarer des variables - vous pouvez les initialiser directement dans le texte du module ;
  • Il n'y a pas de typage strict des variables. Le système possède des types valeur, mais il n’existe pas de règles de typage strictes pour les variables. La variable qui a stocké le lien peut, après quelques lignes de code, déjà stocker un nombre ou une chaîne ;
  • Vous pouvez ajouter des variables avec des valeurs différents types, dans ce cas, le type du résultat sera le même que le type de la première variable, par exemple :
    k = « 25 »+1 ; // k = "251", pas 26
  • Les variables avec des valeurs de types différents peuvent être comparées pour l'égalité ou l'inégalité (mais pas pour plus ou moins, cela provoquera une exception) - naturellement, ces variables ne sont pas égales ;
  • Il existe des fonctions et des procédures, il est permis d'utiliser la récursivité (avec une limitation sur la profondeur de récursivité) ;
  • Lorsqu'on spécifie une fonction ou une procédure sans paramètres, il faut quand même indiquer des parenthèses vides à la fin : comme this();
  • Il existe des modules : chaque répertoire et document en possède plusieurs, en plus, les registres, les rapports et les traitements et chaque formulaire ont des modules, et aussi dans le cadre de la configuration il est possible de créer des modules communs ;
  • Pas de classes, d'héritage, d'encapsulation, de polymorphisme ;
  • Une fonction ne peut pas être passée en référence, il n'y a pas de fonctions anonymes ;
  • Il n'y a pas de boucle inverse (pour i:=5 jusqu'à 1 do), mais c'est vraiment nécessaire lors de la suppression d'enregistrements. Nous nous contentons d’une entrée un peu plus longue dans le cycle « Bye ».

Outils

  • La plate-forme 1C a la capacité de télécharger et de télécharger une configuration, de comparer une configuration avec une autre configuration et de télécharger partiellement les modifications ;
  • Il est possible de télécharger les textes des modules pour leur le traitement par lots et rechargez-le dans la configuration ;
  • Si la configuration est prise en charge (toutes les configurations de 1C sont initialement prises en charge), vous pouvez toujours effectuer une comparaison et voir ce qui a changé développeurs tiers ou des spécialistes locaux ;
  • Il est également possible de télécharger/télécharger la base de données entière (avec les données) ;
  • Pour le travail collectif sur une configuration, un référentiel de configuration est utilisé ;
  • Il existe également un certain nombre de règles pour apporter des modifications aux configurations standards ; il existe même un document de 1C qui décrit les méthodes et les normes de modification configurations typiques(et tous les autres).

Impression générale
Le langage 1C combine la clarté des textes en langage Pascal avec la frivolité du travail avec les variables du langage BASIC. Il lui manque un certain nombre de fonctionnalités inhérentes langues modernes programmation, mais vous pouvez vous en passer. De plus, la plate-forme 1C dispose d'un puissant ramasse-miettes, c'est-à-dire il n'est pas nécessaire, par exemple, d'effacer les tableaux après utilisation ou de les supprimer.

Interface 1C Entreprise 8.2

La société 1C a accordé une attention particulière à l'interface de son programme. Tout d’abord, c’est la palette de couleurs. Elle est magnifique! Les fenêtres du programme sont reconnaissables même de loin, et après de nombreuses années de travail - elles ne provoquent pas de sentiments hostiles, bien au contraire - je veux que tous les programmes soient tout aussi cool.
Dans le même temps, le style de la plateforme est très strict, sans fioritures ou autres fioritures. En même temps, il y a très fonctionnalités utiles, par exemple, mémoriser les tailles des fenêtres (les tailles ne sont mémorisées que lorsqu'elles sont modifiées par l'utilisateur et, en même temps, vous pouvez toujours réinitialiser les paramètres utilisateur aux tailles et positions par défaut en appuyant sur Alt+Maj+R ).
L'interface client Web 8.2 suscite un certain nombre de plaintes, mais il semble que la plate-forme 8.3 apporte avec elle une nouvelle interface repensée - « Taxi ».

Prix, offre et demande, franchise

L'avantage le plus « délicieux » de la plateforme 1C est son prix. Cela est particulièrement vrai aujourd’hui, en période de crise. Après tout, 1C est entièrement notre produit national. Et il est vendu pour nos en bois. De telles solutions proposées par un fabricant étranger coûteront très cher. Et les licences pour 1C sont tout à fait raisonnables.

De plus, 1C a une politique de licence intéressante. Les licences et configurations elles-mêmes sont achetées une seule fois. Parallèlement, des licences sont achetées pour lieu de travail et au serveur, mais pas aux bases de données, ni même aux connexions, c'est-à-dire sous une seule licence, le même utilisateur peut lancer un nombre illimité de sessions 1C, en travaillant avec n'importe quel nombre de bases de données. Il en va de même pour les configurations : en achetant une licence pour une configuration, une organisation peut l'utiliser pour créer un nombre illimité de bases de données ; de plus, il est officiellement autorisé d'utiliser des parties du code et des objets de cette configuration lors du développement de ses propres configurations (dans dans ce cas, leurs propres configurations peuvent être vendues/transférées - avec la stipulation que pour les utiliser, vous devez acheter une configuration auprès de 1C).

Après cet achat unique, il vous suffit de vous abonner aux mises à jour et de payer le renouvellement de l'abonnement une fois par an, ce qu'on appelle. C'EST. À propos, l'abonnement est très bon marché, à peu près comme deux licences client.

Dans l’ensemble, tout cela semble très rentable.

Le deuxième "savoureux", mais avec une mouche dans la pommade, est la présence de configurations assez universelles de 1C lui-même et de partenaires.

À propos de la polyvalence

Le concept de « polyvalence » a été défini par un professeur d'école sur NVP à l'aide de l'exemple des masques à gaz : il en existe des universels qui protègent contre de nombreux facteurs dommageables, mais le degré de protection est moyen ou inférieur à la moyenne, et il existe également des masques à gaz spécialisés. qui protègent contre un seul impact, mais avec un degré de protection élevé. Jusqu'à présent, je n'ai pas trouvé de définition plus précise.
Et les configurations de 1C sont universelles. En pratique, il n’existe aucune tâche où ils pourraient être pleinement utilisés sans modifications. Néanmoins, 1C a réussi à créer un ensemble universel d'outils qui couvrent les besoins de la plupart des secteurs de l'entreprise moderne.


Le troisième avantage (et aussi une mouche dans la pommade) est le réseau de franchisés et de centres de formation, tant pour les utilisateurs que pour les programmeurs et administrateurs novices. Une bonne idée, mais une qualité de mise en œuvre très médiocre. Cependant, la prévalence et le marketing agressif sont l'une des raisons de la popularité généralisée de 1C dans notre pays (et c'est aussi la raison de la négativité, de l'envie et de la haine).

Une cuillère de goudron

Après avoir décrit 1C sous toutes ses couleurs, il serait injuste de ne pas parler de ses défauts, mais ils sont là :

Versions instables- tant dans la plateforme que dans les configurations, il y a un grand nombre d'erreurs et de problèmes. Et c'est dans les versions officielles. Avant de libérer la version officielle, une « version d’évaluation » est en cours de publication. Il existe également des commentaires pour soumettre des descriptions de bogues afin qu'elles soient acceptées pour correction. Cependant, soit les versions d'essai ne sont pas particulièrement populaires, soit la société 1C elle-même n'a pas le temps de traiter toutes les lettres avant la date de sortie, mais c'est un fait. Chaque fois que vous mettez à jour une plateforme ou une configuration, vous pouvez tomber sur les « surprises » les plus inattendues. 1C a déjà été sollicité à plusieurs reprises pour tester ses développements de manière plus approfondie.

Franchisé (ci-après dénommés franchisés). Idéalement, comme prévu, il aurait dû s'agir d'entreprises dotées de spécialistes qualifiés connaissant les principes de base du fonctionnement des configurations et des plates-formes. Ces mêmes entreprises devraient vendre la plate-forme, la configuration et le support, « finir » légèrement les configurations universelles pour répondre aux exigences du client (et parfois ajuster ces exigences), en essayant de modifier au minimum la configuration standard. Afin de ne pas trop compliquer les futures mises à jour. Mais en réalité, c’est le contraire.

Lors de la vente de nouvelles licences à un client, les franchisés perçoivent 50 % de leur coût (moins l'impôt sur le revenu de 13 % de ces 50 %). En même temps, vous n'avez rien à produire vous-même, il vous suffit de remettre les clés de 1C à l'acheteur.

Lorsqu'ils fournissent des services, les franchisés ne paient rien à la société 1C (à l'exception des cotisations), mais ils doivent payer le salaire de l'employé. L'État doit également dépenser de l'argent en impôts - le Fonds de pension et l'impôt sur le revenu.

Il s'avère qu'il est rentable pour 1C et les franchisés de vendre des licences et non rentable pour un support supplémentaire. Dans le même temps, pour qu'un client achète un programme, celui-ci doit d'abord être adapté à ses besoins. Et il faut payer pour le travail. Et ici, pour économiser de l'argent, on fait venir des étudiants, des apprentis, des non-spécialistes, ils peuvent être un peu payés, et parfois pas payés du tout, ils n'ont même pas besoin d'être enregistrés comme personnels (ils travailleront officieusement , heureusement qu'il y a de quoi payer). Le résultat est un grand nombre de ventes de très mauvaise qualité. Les améliorations affectent généralement des mécanismes importants et compliquent les futures mises à jour. Mais au stade de la vente, ni 1C ni le franchisé ne s'y intéressent.

Je constate que ce n'est pas tant la faute des hommes d'affaires français que de la société 1C. En se concentrant sur les ventes, elle ne se souciait pas du tout de l'accompagnement (je ne parle pas des écoles maintenant, mais du fait que l'accompagnement devrait être bénéfique à la fois pour l'entreprise franchisée elle-même et pour 1C).

Soutien technique. Dans la compréhension de la société 1C, le support technique est la fourniture d'un accès à la section « mise à jour » de la plate-forme et des configurations, ainsi qu'à des sections d'informations contenant une description de certains mécanismes et fonctionnalités du fonctionnement de 1C. De plus, lors de votre inscription, vous recevrez un disque avec les matériaux spécifiés. Il existe également un forum (très maigre par rapport aux forums populaires). Il y a aussi la possibilité d'envoyer e-mailà l'entreprise 1C - mais sans même espérer qu'ils y répondront (ou que le robot répondra "La lettre a été envoyée au service de développement". En termes de développement, Yandex.Search et l'aide intégrée au configurateur offrent beaucoup plus soutien.

Épilogue

Je suis passé à 1C en 2008, et avant cela j'ai travaillé dans une entreprise développant son propre programme de comptabilité (Delphi 5, puis Delphi 7). Tout d'abord, j'ai fait connaissance avec la plateforme 1C Enterprise 7.7 et j'ai été frappé par sa facilité de développement de rapports. Dans le même temps, il était clair que les rapports étaient générés beaucoup plus longtemps que dans des mécanismes similaires sur Delphi, mais les comptables ne s'en inquiétaient pas particulièrement. Attendre quelques minutes au lieu de quelques secondes n’est pas un problème. Au contraire, vous pouvez y peindre vos ongles, boire du thé ou discuter des dernières nouvelles sans vous arrêter du travail. Après tout, la grande majorité des comptables sont aujourd’hui des femmes.
Cependant, l'interface 7.7 était très limitée et l'ensemble des objets était très pauvre. Je cherchais des alternatives. Je me suis familiarisé avec les composants externes, mais je n'ai pas pu les utiliser en pratique, car... le patron a décidé qu'il était temps pour nous de passer à la 8.1 (oui, la 8.2 n'existait pas encore), et dans cette plateforme, en tant que programmeur, j'ai trouvé tout ce qui me manquait auparavant.
Actuellement, j'ai de l'autorité parmi mes collègues, ainsi que parmi les clients qui me sont venus des franchisés. Ils ne contacteront probablement plus jamais les Français.


En général, je suis assez satisfait de travailler sur la plateforme 1C Enterprise 8. Il convient pour résoudre la plupart des problèmes de comptabilité et de bases de données.

Balises : ajouter des balises

Langage de programmation intégré 1C:Entreprise- langage de programmation utilisé dans la famille de programmes 1C:Enterprise. Cette langue est un langage spécifique à un domaine de haut niveau précompilé.

L'environnement d'exécution du langage est plateforme logicielle"1C : Entreprise". L'environnement de développement visuel (« Configurateur ») fait partie intégrante du progiciel 1C:Enterprise.

Les dialectes linguistiques pour les plates-formes 1C 7 versions (7.0, 7.5, 7.7) sont compatibles de bas en haut avec des exceptions mineures. Les langages des plates-formes 1C:7x et 1C:8x sont compatibles dans les opérateurs de base, mais diffèrent considérablement dans le travail avec les objets d'application, de sorte que le transfert de code de 1C:7x à 1C:8x n'a pas de sens.

Le langage 1C:8 intégré est très similaire dans sa syntaxe au langage Visual Basic.

La plateforme fournit un ensemble fixe de classes de base orientées solutions tâches typiques champ d'application:

  • Constante,
  • Annuaire,
  • Document,
  • Journal des documents,
  • Transfert,
  • Rapport,
  • Traitement
  • Plan comptable, etc.

Sur la base des classes de base, vous pouvez créer n'importe quel nombre de classes générées à l'aide d'outils de configuration visuelle (il n'est pas possible de définir une nouvelle classe par programme). Un seul niveau explicite d’héritage de classe est autorisé. En règle générale, les objets des classes dérivées représentent des enregistrements (ou certains ensembles d'enregistrements) dans une base de données. Ces classes forment un « arbre de métadonnées ». En termes de langage de programmation 1C intégré, ces classes sont appelées objets de métadonnées.

Les principaux types d'objets de métadonnées sont : Annuaires, Documents, Rapports, Traitements, Plans de types caractéristiques, Plans comptables, Plans de types de calcul, Registres d'informations, Registres d'accumulation, Registres de calcul, Processus métiers, Tâches.

La syntaxe des commandes russe et anglaise est prise en charge.

Les projets dans le langage intégré 1C:Enterprise sont appelés configurations. La distribution (vente) et la mise en œuvre de telles configurations constituent la principale activité commerciale des sociétés partenaires 1C.

Le nom de travail de la langue - « 1Sik » (« odynesik ») - a très vite disparu des sources officielles. Désormais, lorsque vous mentionnez cette langue dans des documents écrits, vous devez écrire Langage de programmation 1C. Désormais, la langue n’a plus de nom pouvant être prononcé oralement. Cependant, ce langage est souvent appelé « langage intégré » dans le contexte des discussions sur 1C:Enterprise.

Dialectes orientés objet

Il existe plusieurs composants supplémentaires qui étendent les classes principales, ils peuvent être librement ajoutés et modifiés ; Leur utilisation n’est pas recommandée par la société de développement. Cela signifie que 1C et ses franchisés refusent tout soutien technique configurations utilisant de tels composants.

De plus, il existe un projet 2C entièrement gratuit qui n'utilise aucun module propriétaire de 1C ou d'autres fabricants. Il s'agit d'un noyau extensible d'un système de type 1C réécrit «à partir de zéro», distribué gratuitement sous licence GPL, dans lequel même les «objets intégrés» de 1C tels que les répertoires et les registres sont des classes redéfinies par le programmeur d'application.

Le langage de la plateforme 2C a été conçu dans le but d'assurer une continuité maximale avec les développements existants pour 1C et constitue une extension du langage de base 1C. En écrivant les classes de base appropriées, le langage 2C peut être rapproché à la fois de 1C 7.7 et de 1C 8.0, bien que 2C:Platform ne puisse pas fournir une portabilité automatique à 100 % des configurations de l'une ou l'autre version de 1C:Enterprise.

1C.Net : Entreprise

Pour faciliter l'utilisation de 1C.Net:Enterprise, de nombreux exemples ont été préparés, couvrant la quasi-totalité du framework .NET, y compris des exemples d'intégration de contrôles .NET natifs dans des formulaires 1C.

Exemple de programme

Un exemple classique de sortie d'une chaîne de texte dans le langage intégré 1C:Enterprise 7.7 :

Rapport("Bonjour tout le monde !");

Un exemple de fonction qui renvoie le carré d'un nombre :

Fonction SquareNumber (nombre)

Renvoie le nombre * le nombre ;

FinFonction

voir également

  • RSL est un langage de programmation intégré à RS-Balance.

Remarques

Liens


Fondation Wikimédia. 2010.

Découvrez ce qu'est « langage de programmation intégré 1C : Enterprise » dans d'autres dictionnaires :

    Langage de programmation intégré 1C:Enterprise Classe de langage : procédural, spécifique au domaine Type d'exécution : précompilé Auteur(s) : 1C Dernière version: 1C:Enterprise 8.2 Saisie de données : typage dynamique De base ... ... Wikipédia

    Un langage de programmation est un système de signes formel conçu pour écrire logiciels d'ordinateur. Un langage de programmation définit un ensemble de règles lexicales, syntaxiques et sémantiques qui définissent l'apparence du programme et des actions, ... ... Wikipedia

    Un langage est un langage de programmation qui, contrairement à la plupart des langages courants, n'utilise pas mots clés, tiré du vocabulaire anglais. Sommaire 1 La prédominance des langages de programmation basés sur l'anglais... Wikipédia

    Langages de programmation non basés sur langue anglaise des langages de programmation qui, contrairement à la plupart des langages courants, n'utilisent pas de mots-clés tirés du vocabulaire anglais. Sommaire 1 Prédominance des langages logiciels... Wikipédia

    Les langages de programmation non basés sur l'anglais sont des langages de programmation qui, contrairement à la plupart des langages courants, n'utilisent pas de mots-clés tirés du vocabulaire anglais. Sommaire 1 Prédominance des langues... ... Wikipédia

    Un langage de programmation est un système de signes formel conçu pour écrire des programmes. Un programme représente généralement un algorithme sous une forme compréhensible pour celui qui l'implémente (par exemple, un ordinateur). Le langage de programmation détermine l'ensemble... ... Wikipédia

    Vérifiez la neutralité. Il devrait y avoir des détails sur la page de discussion... Wikipédia

    - (anglais Mutable type) un type de données complexe en programmation orientée objet, dont les valeurs (généralement des objets) après leur création permettent de modifier leurs propriétés. Table des matières 1 Exemples ... Wikipédia

    Classe de langage : procédural, orienté objet Type d'exécution : interprété Paru dans : 1994 Auteur(s) : Sergey Kubrin Extension de fichier : mac ... Wikipedia

Livres

  • 1C : Entreprise 7.7. Cours de programmation. Manuel d'auto-instruction45, Postovalov Sergey Nikolaevich, Postovalova Anastasia Yuryevna, Décrit l'administration du système 1C:Enterprise 7.7, une introduction à la comptabilité, le langage intégré et les principaux objets de base du système. Les spécificités du travail avec des objets sont prises en compte... Catégorie : Logiciel d'application Série : Manuel d'auto-instruction Éditeur : BHV-Pétersbourg, Fabricant :

Dans cet article, nous considérerons une construction du langage de programmation 1C telle que Cycles.

Il existe trois manières d'organiser les boucles.

  1. Boucles utilisant une expression logique (exécutées tant que l'expression logique est vraie)
  2. Parcourir les collections

Examinons chacune de ces méthodes.

Boucles utilisant une variable de compteur de boucles

Syntaxe:

Pour< Переменная> = < НачальноеЗначение>Par< КонечноеЗначение>CycleFinCycle ;

Avec cette méthode d'organisation des boucles, une variable compteur se voit attribuer un certain valeur initiale et il est exécuté tant que la valeur de la variable compteur est inférieure ou égale à la valeur finale spécifiée.

À chaque itération, la valeur du compteur augmente de un. Voici l’exemple le plus basique d’une telle boucle :

Pour compteur = 0 à 1 000 cycle de fin de cycle ;

Contrairement à de nombreux autres langages de programmation, 1C n'offre pas la possibilité de spécifier une étape d'un cycle. Si nécessaire, cela peut être fait en ajoutant la valeur souhaitée au compteur à l'intérieur de la boucle

Pour compteur = 0 à 1000 Compteur de cycles = Compteur + 10 ; Fin du cycle ;

Boucles utilisant des expressions booléennes

Syntaxe:

Au revoir< ЛогическоеВыражение>CycleFinCycle ;

Refuser = Faux ; GeneratorRandom = NewRandomNumberGenerator(1) ; Jusqu'au cycle de défaillance RandomNumber = GeneratorRank. Numéro aléatoire (0, 10); Si RandomNumber > 5 Then Failure = True ; Fin si ; Fin du cycle ;

Autrement dit, la boucle s'exécutera jusqu'à ce qu'un nombre aléatoire supérieur à cinq soit généré.

Parcourir les collections

Dans le langage de programmation 1C, il existe une collection. C'est un ensemble d'éléments contenus dans un objet.

Nous pouvons inclure des objets tels qu'une collection : un tableau, une table de valeurs, une sélection à partir d'un résultat de requête, des métadonnées, etc. Cette notion est assez conventionnelle, mais elle apparaît à chaque étape de l'assistant syntaxe. Très souvent, nous rencontrons une tâche dans laquelle nous devons parcourir séquentiellement tous les éléments d'une collection afin d'effectuer certaines actions sur eux. C'est pour ça que ça existe construction syntaxique:

Pour chaque< ЭлементКоллекции>Depuis< Коллекция>CycleFinCycle ;

Ici <ЭлементКоллекции> est une variable dans laquelle les éléments de la collection sont placés séquentiellement. Et à l'intérieur de la boucle, il est traité en conséquence.
À titre d'exemple, je vais vous donner une boucle permettant de parcourir les lignes d'un tableau de valeurs. Qu'on l'appelle TableProduits et ressemble à ceci :

Parcourons ce tableau en boucle et pour chaque ligne nous afficherons un message avec le nom et le prix du produit :

Pour chaque ligne du tableau du nom du cycle des produits du tableau = ligne du tableau. Nom; Prix ​​= TableRow. Prix; Message = Nouveau MessageVersUtilisateur ; Message. Texte = "Nom du produit: "

En fait, la même chose peut être faite en utilisant la première option, c'est-à-dire en boucle à l'aide d'un compteur :

Nombre de lignes = TableProducts. Quantité() ; Pour Counter = 0 Par nombre de lignes - 1 Cycle Table Row = TableProducts[ Counter] ; Nom = Ligne du tableau. Nom; Prix ​​= TableRow. Prix; Message = Nouveau MessageVersUtilisateur ; Message. Texte = "Nom du produit: "+ Nom + " ; Prix : " + Prix ; Message. Signaler() ; Fin du cycle ;

Mais comme nous pouvons le voir, utiliser le parcours des éléments de collection est beaucoup plus simple et pratique.

Opérateurs auxiliaires

Il arrive souvent que, pour une raison quelconque, il soit nécessaire d'interrompre l'exécution de la boucle ou de poursuivre prochaine itération.

L'interruption s'effectue à l'aide de l'opérateur Avorter. Dans ce cas, l'exécution de la boucle est interrompue et le contrôle est transféré à la construction de langage qui suit la boucle. Si vous devez passer à l'itération suivante, vous devez utiliser l'opérateur Continuer. Le contrôle est ensuite transféré au début de la boucle. Illustrons avec un petit exemple :

Pour compteur = 0 par cycle de 100 si compteur = 0 alors continuez ; Fin si ; Si Compteur = 4 Alors Abandonner ; Fin si ; Résultat = 1 / Compteur ; Message = Nouveau MessageVersUtilisateur ; Message. Texte = Chaîne (Résultat) ; Message. Signaler() ; Fin du cycle ;

Nous sautons zéro, parce que Vous ne pouvez pas diviser par zéro. Et la boucle sera exécutée cinq fois au total, pour les valeurs de la variable Comptoir de 0 à 4

À tous ceux qui souhaitent se lancer dans la programmation, nous souhaitons expliquer quelques choses simples qui ne sont pas mentionnées dans tous les manuels de programmation, mais ceux qui souhaitent maîtriser la programmation en langage 1C à partir de zéro devraient le savoir.

1. Un langage de programmation est avant tout un Langage.

Avant de commencer à apprendre une langue, préparez-vous mentalement au fait que ce processus n'est pas rapide. Pour que vous puissiez imaginer précisément ce qu'est l'apprentissage d'un langage de programmation, c'est presque la même chose que l'apprentissage d'une langue étrangère. Nous avons tout étudié à l'école une langue étrangère et tout le monde comprend parfaitement que connaître une langue ne suffit pas simplement pour apprendre la traduction des mots d'un dictionnaire d'une langue étrangère vers sa langue maternelle. Par exemple, la phrase « Je connais l'anglais » peut être prononcée par une personne capable de : lire un texte en anglais, traduire, composer une phrase sans erreurs, s'exprimer oralement. Traduction mots étrangers Sans la capacité de composer correctement une phrase (lire la syntaxe d'un langage de programmation) ne signifie certainement pas la connaissance d'une langue étrangère. Par conséquent, la leçon 1 - traitez l'apprentissage d'un langage de programmation de la même manière que vous traiteriez l'apprentissage d'une langue étrangère dans le but de la maîtriser complètement.

2. Entraînez-vous.

Vous avez sûrement entendu dire que certaines personnes connaissant bien une langue étrangère l’ont progressivement oubliée sans avoir l’habitude de l’utiliser. Après avoir étudié les bases de la programmation sur 1C, entraînez-vous quotidiennement à effectuer des tâches simples afin de ne pas perdre les connaissances acquises précédemment et d'aborder progressivement des tâches plus complexes. Améliorez vos compétences.

Toute entreprise évolue mieux si elle est motivée.Pour vous à l'avenir, les compétences en programmation sont une récompense monétaire, bon travail, ascenseur social facile, etc. Ce n'est un secret pour personne que le logiciel 1C Enterprise est très populaire dans l'espace post-soviétique. Sur les dix entreprises, huit utilisent le programme 1C pour enregistrer leurs activités commerciales. En conséquence, ils ont besoin d'un administrateur ou d'un programmeur 1C qui maintiendrait et modifierait le programme. Naturellement, un tel marché a besoin de spécialistes 1C. Parfois, les entreprises sont prêtes à embaucher un employé peu qualifié possédant des compétences en programmation pour un salaire décent, à condition de s'améliorer. Et même si vous ne souhaitez pas travailler pour une entreprise commerciale ou une franchise, un bon programmeur qualifié saura trouver du travail sur des échanges indépendants ou réaliser des projets personnalisés. En général, un programmeur 1C ne sera pas laissé sans travail.

Avec une partie introductive dans bases de la programmation avaient fini. Le reste du matériel sera consacré à la maîtrise des bases du code du langage 1C. Peut-être que certaines parties seront décrites trop brièvement, mais le but de ce matériel n'est pas de plonger complètement le lecteur dans la syntaxe du langage, mais plutôt de familiariser dans un premier temps les spécialistes avec l'architecture du langage 1C afin de former un certain squelette ( base) dans la tête de l'utilisateur sur laquelle toutes les connaissances seront accrochées à l'avenir .