Maison / Tutoriels Windows / Qu'est-ce que le langage de programmation 1c. Diagramme de syntaxe de la description de l'élément de langage

Qu'est-ce que le langage de programmation 1c. Diagramme de syntaxe de la description de l'élément de langage

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

L'environnement d'exécution du langage est la plate-forme logicielle 1C:Enterprise. L'environnement de développement visuel ("Configurator") 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" à quelques exceptions près. Les langages des plates-formes 1C:7x et 1C:8x sont compatibles en termes d'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 ne fonctionne pas. faire sens.

Le langage intégré 1C: 8 est le plus similaire dans sa syntaxe au langage Visual Basic.

La plate-forme fournit un ensemble fixe de classes de base axées sur la résolution de problèmes typiques du domaine d'application :

  • Constante,
  • Annuaire,
  • Document,
  • Journal des documents,
  • énumération,
  • Rapport,
  • Traitement
  • Plan comptable, etc.

Sur la base des classes de base, les outils de configuration visuelle peuvent créer n'importe quel nombre de classes dérivées (il n'y a aucune possibilité de définir une nouvelle classe par programmation). Une seule étape explicite d'héritage de classe est autorisée. En règle générale, les objets des classes dérivées représentent des enregistrements (ou certains ensembles d'enregistrements) dans la base de données. Ces classes forment "l'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 : Répertoires, Documents, Rapports, Traitements, Plans de types de caractéristiques, Plans de comptes, Plans de types de calcul, Registres d'information, Registres d'accumulation, Registres de calcul, Processus métiers, Tâches.

La syntaxe de commande 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 entreprises partenaires 1C.

Le nom de travail de la langue - "1Sik" ("onesik") - a très rapidement disparu des sources officielles. Désormais, lorsque vous mentionnez cette langue dans des documents écrits, vous devez écrire Langage de programmation 1C. Maintenant, la langue n'a pas de nom qui pourrait être prononcé oralement. Cependant, ce langage est souvent appelé "langage embarqué" dans le contexte de la discussion sur 1C:Enterprise.

Dialectes orientés objet

Il existe plusieurs composants supplémentaires qui étendent les classes principales, leur ajout et leur modification gratuits ; ils ne sont pas recommandés pour une utilisation par le développeur. Cela signifie que 1C et ses franchisés refusent tout soutien technique configurations qui utilisent 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 "à partir de zéro" réécrit, distribué librement sous licence GPL, un noyau extensible d'un système de type 1C, dans lequel même des "objets intégrés" 1C tels que des répertoires et des registres sont des classes redéfinies par le programmeur d'application.

Le langage plate-forme 2C a été conçu dans le but d'une continuité maximale avec les développements existants pour 1C, et est 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 1C 8.0, bien que 2C:Platform ne puisse pas fournir un transfert automatique à 100% des configurations depuis 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 en langage intégré 1C:Enterprise 7.7 :

Show("Bonjour le monde !");

Exemple de fonction renvoyant le carré d'un nombre :

Fonction SquareNumber (prNumber)

Retour prNuméro * prNuméro ;

EndFunctions

voir également

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

Remarques

Liens


Fondation Wikimédia. 2010 .

Voyez ce que "Langage de programmation intégré 1C : Entreprise" est dans d'autres dictionnaires :

    Langage de programmation embarqué 1C:Enterprise Classe de langage : procédural, spécifique au domaine Type d'exécution : précompilé Auteur(s) : 1C dernière version: 1C : Entreprise 8.2 Typage des données : typage dynamique Basique ... ... Wikipedia

    langage de programmation un système de caractères formel conçu pour être écrit logiciels d'ordinateur. Un langage de programmation définit un ensemble de règles lexicales, syntaxiques et sémantiques qui définissent apparence programmes et actions, ... ... Wikipédia

    langage sont des langages de programmation qui, contrairement à la plupart des langages courants, n'utilisent pas mots clés tiré du vocabulaire anglais. Table des matières 1 La prévalence des langages de programmation basés sur l'anglais ... Wikipedia

    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 La prédominance des langages logiciels \u200b\u200bWikipedia

    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. Table des matières 1 La prédominance des langues ... ... Wikipedia

    Un langage de programmation est un système de signes formel pour écrire des programmes. Le programme est généralement un algorithme sous une forme compréhensible pour l'exécuteur (par exemple, un ordinateur). Le langage de programmation définit un ensemble ... ... Wikipedia

    Vérifier la neutralité. La page de discussion devrait contenir des détails... Wikipedia

    - (eng. 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 ... Wikipedia

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

Livres

  • 1C : Entreprise 7.7. Cours de programmation. Auto-tuteur45 , Postovalov Sergey Nikolaevich , Postovalova Anastasia Yuryevna , 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 sont décrits. Les spécificités du travail avec des objets sont prises en compte ... Catégorie : Logiciels d'application Série : Tutoriel Éditeur : BHV-Pétersbourg, Fabricant :

Si vous écrivez en SI
Être au moins trois fois lamer
Ils disent à ce sujet :
« C'est un programmeur cool ! »
(Chansons Fidosh - "Qu'est-ce que Suxxx et Qu'est-ce que Rulezzz")

Avant-propos

La raison de la rédaction de cet article était l'attitude négative de la communauté professionnelle envers la plate-forme et les programmeurs spécifiés.

En tant que programmeur ayant choisi 1C, je considère cette opinion déraisonnable. La plate-forme 1C est loin d'être idéale, mais, à mon avis, c'est le meilleur et surtout un produit domestique!

Et plus encore - il est inadéquat de juger les capacités d'un programmeur par la langue dans laquelle il écrit.

Dans cet article, je vais décrire les avantages que j'ai trouvés pour moi-même dans le programme. L'article se révélera être presque une publicité, donc immédiatement un avertissement :

  • Je n'ai aucun lien direct avec la société 1C ;
  • Cet article n'est pas fait sur mesure et est écrit uniquement sur une base volontaire ;
  • Dans certains cas, une opinion personnelle est exprimée, qui peut ne pas coïncider ...;
  • L'intégralité de l'article, à l'exception du prologue, est de l'auteur, toute coïncidence est un accident ;
  • Nous parlerons de la plate-forme 1C Enterprise 8.2 (actuellement la version 8.3 est pertinente, mais je ne l'ai pas encore étudiée - il y a beaucoup de travail sur 1C 8.2). Cependant, une grande partie de ce qui a été dit s'applique à la plate-forme 8.3 et au-delà. premières versions, et certains - et à la version 7.7.
Alors, commençons.

De quoi parle-t-on?

La plate-forme 1C Enterprise 8 est :
  • Il fonctionne en deux versions - fichier et serveur (trois liens) - chacune a ses propres avantages et inconvénients ;
  • Système de comptabilité 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 commerciale relativement peu coûteuse ;
  • Réseau de franchisés, formation initiale ;
  • Une puissante base de développements et de connaissances accumulées au fil des ans;
  • Une plate-forme parfois problématique pour les administrateurs système ;
  • L'exécution la plus rapide des algorithmes (mais pas la plus lente) n'est pas 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), il n'y a pas de fonctions anonymes et autres fonctionnalités modernes. Mais pour la plupart des tâches, ce n'est pas nécessaire !
Pour l'organisation de la comptabilité - une plate-forme 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, les textes des procédures stockées dans des modules séparés (il existe de nombreux modules, à la fois chaque objet et le système dans son ensemble en ont, et il y a aussi modules communs). La plate-forme fournit un niveau d'abstraction qui ne nécessite pas d'accès direct à la base de données et vous permet également d'abstraire de système opérateur et le type de base de données.

Base de données de fichiers et de serveurs

La plateforme se compose de plusieurs parties et peut fonctionner en version fichier ou serveur.

Dans la version fichier, toute la base de données est contenue dans un seul fichier (avec l'extension "1cd") - la plate-forme 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 du fichier "1cd" est fermée, non système unifié en interaction avec la base de données. En conséquence, il est difficile à utiliser avec un grand nombre d'utilisateurs (essayé pour plus de 20 utilisateurs - vous pouvez travailler). De plus, lorsque la taille de la base de données est d'environ 15 Go (ou plus), les mises à jour dynamiques échouent. Résoudre de telles pannes est une tâche difficile, et l'utilitaire de réparation de la base ne répare pas toujours efficacement, et parfois même paralyse la base.

Il y a une solution - c'est d'abord la mise en place d'un journal Réserver une copie 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 plate-forme de stockage de base de données utilise un serveur SQL (généralement, c'est MS SQL, mais à partir de 8.2.14, vous pouvez en utiliser d'autres, par exemple, Firebird PostgreSQL, IBM DB2, Oracle Database), et la plate-forme utilise lui-même une architecture à trois niveaux :

Une partie du code est exécutée sur le client, une partie 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, qui s'appelait le mode "client lourd", deux nouveaux modes de fonctionnement sont apparus - " client léger" et "client web" ; est également apparu formulaires gérés», dont l'apparence est construite sous la forme d'un arbre abstrait d'éléments. La programmation pour les formulaires gérés et une architecture à trois niveaux est plus difficile, mais cela vous permet de transférer la quasi-totalité de la charge sur 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 plate-forme: «trois liens» - répartition de la charge, ouverture de la base de données (officiellement, la société 1C décline toute responsabilité pour tout dommage aux données, si Base de données SQL des modifications ont été apportées sauf par le biais de leur plate-forme ou de leur serveur, mais cela arrête peu de monde), manque de restrictions.

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

Un avantage commun est l'universalité du code de configuration : à quelques exceptions près, une configuration conçue pour une base de données de fichiers fonctionnera sur une base de données de serveur, et vice versa. Un exemple d'exception est le transfert d'une valeur modifiable vers le serveur ou du serveur vers le client (dans la version fichier, cela ne provoquera pas d'exceptions, mais dans la version client-serveur, cela est interdit).

Autre avantage : la plate-forme est très facile à installer, quelque chose comme ceci : "Suivant-Suivant-Suivant-OK", aucun réglage fin ou installation de composants n'est requis.

Pour la version serveur, il y a quelques paramètres supplémentaires, mais tout se fait dans la boîte de dialogue d'installation et ne vous oblige pas à écrire quoi que ce soit dans fichiers séparés. L'installation d'un serveur SQL peut être quelque peu difficile, car dans ce cas, il y a beaucoup plus de paramètres (et pour affiner - vous devez étudier instructions additionnelles). Mais cela ne s'applique pas aux problèmes de la plate-forme 1C. De plus, si vous installez, par exemple, un serveur MS SQL avec tous les paramètres par défaut, 1C pourra alors fonctionner avec.

C'est plus que de la comptabilité

En ce qui concerne la plate-forme 1C, elle apparaît tout d'abord comme un programme de comptabilité. En effet, c'est le domaine d'utilisation le plus populaire de la plateforme 1C. Mais 1C ne vit pas uniquement de 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, à la fois de 1C et de développeurs tiers. Certains ne sont qu'indirectement liés à la comptabilité, d'autres pas du tout.

En général, il est plus correct de représenter la plate-forme 1C comme un shell pour la modélisation, l'interface et la programmation de bases de données d'objets dans le langage 1C. La seule limitation est que chaque configuration a sa propre base de données, et une seule (cependant, il est possible de se connecter en plus sources externes données, c'est-à-dire autres fonds).

Écosystème pour les programmeurs

Considérons maintenant le langage et la plate-forme 1C du point de vue du développeur :
Le modèle objet de la 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 interdépendants (répertoires, documents, registres d'informations, registres d'accumulation, ...) et la plateforme « extrait » automatiquement ces données de la base de données.
Par exemple, à condition que la variable « Nomenclature Element » contienne une référence à la rubrique du répertoire « Nomenclature », le répertoire « Nomenclature » possède l'attribut « MainSupplier », de type « Directory.Contractors », et le « Contractors » répertoire a l'attribut "FullName", puis code :

Nomenclature Element.MainSupplier.FullName
... va amener la plateforme 1C, par des mécanismes internes, à rechercher un enregistrement dans la table correspondant au répertoire "Contreparties" par l'identifiant du champ "Fournisseur principal" de l'article de la nomenclature et retourner les valeurs de le champ correspondant au champ « FullName » dans le modèle objet du répertoire « Counterparties ».

Il peut y avoir de nombreux déréférencements de ce type - le système s'en sortira. La seule mise en garde est que le système n'est pas en mesure d'optimiser les déréférencements, vous devez donc vous efforcer de les sortir 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. J'en soulignerai quelques-uns :

Magasins de valeur
tableau- un objet qui stocke un ensemble de données, contrairement à la représentation classique des tableaux. Il peut s'agir de données divers types(nombre, chaîne, référence, autre objet). Il a des fonctionnalités minimales et est principalement utilisé comme conteneur temporaire pour transférer des valeurs entre d'autres stockages.

Liste de valeurs- un objet, principalement pour travailler avec l'interface utilisateur. En plus des données, chaque élément peut également contenir une vue, un drapeau et une image (pictogramme). Il possède également les méthodes "SelectElement()" et "MarkElements()" - lorsqu'il est appelé, une boîte de dialogue d'interface est affichée à l'utilisateur (ce qui est pratique - cette boîte de dialogue n'a pas besoin d'être créée dans la configuration).

Structure Et Correspondance- stockage des valeurs appariées "Key&Value". Dans la structure "Clé", il s'agit d'une chaîne qui obéit aux règles de nommage des variables en 1C (pas d'espaces, ne commence pas par un chiffre, se compose uniquement de lettres, de chiffres et d'un trait de soulignement). Selon - "Key" est n'importe quelle valeur. La recherche d'objets la plus rapide est conforme (plus rapide que dans un tableau et une table de valeurs indexées).

Tableau des valeurs- un objet très pratique et assez rapide pour stocker et traiter des données. Des colonnes dans le tableau des valeurs peuvent être ajoutées et supprimées, quel que soit le nombre d'entrées. Dans ce cas, les données des lignes ne sont pas perdues (ou seules les données des cellules correspondant aux colonnes en cours de suppression sont supprimées). En outre, il possède la méthode "Select String ()", qui appelle la boîte de dialogue de sélection de chaîne. Il y a des index.

Arbre de valeur- 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 une arborescence de valeurs est aussi simple que dans une table de valeurs. De plus, il a une méthode "SelectRow()".

Objets d'interface et objets pour travailler avec diverses données TextDocument, SpreadsheetDocument, Web Browser, ReadFile, WriteFile, ReadZIPFile, WriteZIPFile, ReadXML, WriteXML, HTTPRequest et bien d'autres objets, et pour tous il y a une aide intégrée dans le configurateur. Le but des objets répertoriés peut être vu à partir de leurs noms, et tout cela est immédiatement disponible dans la plateforme.

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

Et nous devons également mentionner séparément les objets: "Request", "Request Constructor", "Request Builder", "Report Builder", "Data Composition Scheme". 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 en 1C sont utilisées uniquement pour obtenir une sélection 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" traduit en russe à partir de SQL, cependant, le langage de requête 1C possède également des fonctionnalités qui ne sont pas disponibles en 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 ;
  • Echantillonnage par saisie d'un groupe (pour les annuaires) ;
  • Totaux hiérarchiques ;
  • Tables temporaires et requêtes imbriquées (SELECT * FROM (SELECT ...)) );
  • Générateur de requêtes - pratique, orienté objet, optimisant automatiquement le texte de la requête 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 d'objet à partir de celui-ci) ;
  • Le générateur de rapports est un module complémentaire au mécanisme de requête, qui ajoute la fonctionnalité de formatage automatique des résultats, ainsi qu'une personnalisation 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 lequel l'utilisateur peut configurer quelles données et dans quel ordre il souhaite voir ce qui se trouve dans les lignes, ce qui se trouve dans les colonnes, et le rapport lui-même génère un tableau de sortie ;
  • SKD (Data Composition System) est le prochain modèle qui intègre la fonctionnalité d'un rapport universel et le complète avec certaines fonctions de traitement des résultats.

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

  • Il n'est pas nécessaire de déclarer des variables - vous pouvez initialiser directement dans le texte du module ;
  • Pas de saisie difficile des variables. Le système a des types de valeur, mais il n'y a pas de règles de typage strictes pour les variables. Une variable qui stocke une référence peut déjà stocker un nombre ou une chaîne dans quelques lignes de code ;
  • Vous pouvez ajouter des variables avec des valeurs différents types, tandis que le type du résultat sera le même que le type de la première variable, par exemple :
    k \u003d "25" + 1; // k = "251", pas 26
  • Des 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 limite sur la profondeur de la récursivité);
  • Lorsque vous spécifiez une fonction ou une procédure sans paramètres - tout de même, assurez-vous d'inclure des crochets vides à la fin : here_so();
  • Il y a des modules : chaque répertoire et document en possède plusieurs, de plus, les registres, rapports et traitements ont des modules, et chaque formulaire, et aussi dans le cadre de la configuration, il est possible de créer des modules communs ;
  • Pas de classes, héritage, encapsulation, polymorphisme ;
  • Une fonction ne peut pas être passée comme 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 gérons avec une entrée légèrement plus longue à travers la boucle "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 des modifications ;
  • Il est possible de décharger les textes des modules pour leur traitement par lots et de les recharger dans la configuration ;
  • Si la configuration est prise en charge (toutes les configurations de 1C sont initialement prises en charge), vous pouvez toujours comparer et voir ce qui a été modifié par des développeurs tiers ou des spécialistes locaux ;
  • Il est également possible de charger/télécharger l'intégralité de la base de données (y compris les données) ;
  • Pour un 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 standard, il existe même un document de 1C qui décrit les méthodes et les normes pour modifier les configurations typiques (et toutes 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 certaines fonctionnalités langues modernes programmation, mais sans eux, il est tout à fait possible de le faire. De plus, la plate-forme 1C dispose d'un puissant ramasse-miettes, c'est-à-dire il n'est pas nécessaire, par exemple, de nettoyer les tables 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 - ceci palette de couleurs. Elle est magnifique! Les fenêtres du programme sont reconnaissables même de loin, alors que pendant de nombreuses années de travail, elles ne provoquent pas de sensations hostiles, au contraire - je veux que tous les programmes soient tout aussi cool.
Dans le même temps, le style de la plate-forme est très strict, sans volants ni autres excès. En même temps, il y a très fonctionnalités utiles, par exemple, se souvenir des tailles de fenêtre (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 de l'utilisateur - aux tailles et positions par défaut en appuyant sur Alt + Maj + R).
L'interface client Web 8.2 soulève 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

Le plus "savoureux" de la plate-forme 1C est son prix. C'est particulièrement vrai maintenant, pendant la crise. Après tout, 1C est entièrement notre produit national. Et il est vendu pour nos bois. De telles solutions d'un fabricant étranger coûteront très cher. Et les licences pour 1C sont tout à fait acceptables.

De plus, 1C a une politique de licence intéressante. Les licences et les configurations elles-mêmes sont achetées une seule fois. Dans le même temps, 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 exécuter 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é à utiliser des parties du code et des objets de cette configuration lors du développement de leurs propres configurations (à en même temps, vous pouvez vendre/transférer vos propres configurations - stipulant que pour les utiliser, vous devez acheter une configuration chez 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, le soi-disant. C'EST. Soit dit en passant, l'abonnement est très bon marché, à peu près comme deux licences client.

En général, tout cela semble très rentable.

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

À propos de la polyvalence

Le concept d'"universalité" a été défini par un enseignant dans le domaine des NVP en prenant comme exemple les masques à gaz : il en existe des universels qui protègent contre de nombreux facteurs préjudiciables, 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 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'y a pas de tâches où ils pourraient être pleinement utilisés sans modifications. Néanmoins, 1C a réussi à créer un ensemble universel d'outils qui couvre les besoins de la plupart des industries de l'entreprise moderne.


Le troisième plus (et aussi avec une mouche dans la pommade) est un réseau de franchisés et de centres de formation, tant pour les utilisateurs que pour les programmeurs et administrateurs novices. Bonne idée, mais qualité très médiocre de sa réalisation. Néanmoins, 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

Ayant peint 1C de toutes les couleurs, il serait injuste de ne pas parler de ses défauts, et ils existent déjà :

Versions instables- à la fois dans la plate-forme et dans les configurations, il existe un grand nombre d'erreurs et de problèmes. Et c'est dans les versions officielles. Avant la sortie la version officielle, une "version de révision" est en cours de publication. Il y a aussi Retour pour envoyer des descriptions d'erreurs à accepter pour correction. Cependant, soit les versions à examiner ne sont pas particulièrement populaires, soit la société 1C elle-même n'a pas le temps de traiter toutes les lettres à la date de sortie, mais le fait est. Chaque fois que vous mettez à jour la plate-forme ou la configuration, vous pouvez tomber sur les "surprises" les plus inattendues. 1C a é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 composé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, légèrement "finir" 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 qui est vrai.

Lorsque de nouvelles licences sont vendues à un client, les franchises reçoivent 50% de leur valeur (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 transférer les clés de 1C à l'acheteur.

Lors de la prestation de services, les franchisés ne paient rien à la société 1C (à l'exception des frais d'adhésion), mais ils doivent payer le salaire de l'employé. Vous devez également dépenser de l'argent en impôts à l'État - PFR et impôt sur le revenu.

Il s'avère qu'il est rentable pour 1C et les franchises de vendre des licences et qu'il n'est pas rentable de fournir un soutien supplémentaire. En même temps, pour qu'un client achète un programme, il doit d'abord être adapté à ses besoins. Et vous devez payer les travaux. Et ici, pour économiser de l'argent, il s'agit d'étudiants, d'élèves, de non-spécialistes, qui peuvent être un peu payés, et parfois pas payés du tout, ils peuvent même ne pas être inscrits dans l'État (ils travailleront officieusement, car il y a est quelque chose à payer avec). Le résultat est un grand nombre de ventes avec une qualité très faible. Les améliorations, en règle générale, affectent des mécanismes importants et compliquent les futures mises à jour. Mais au stade de la vente, ni 1C ni le franchisé ne sont intéressés.

Je constate que ce n'est pas tant la faute des hommes d'affaires issus de la franchise que de 1C. 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 doit être bénéfique à la fois pour le franchisé lui-même et pour 1C).

Soutien technique. Au sens de 1C, le support technique est la fourniture d'un accès à la section "mise à jour" de la plate-forme et des configurations, ainsi qu'aux sections d'information contenant une description de certains mécanismes et fonctionnalités de 1C. De plus, lors de l'abonnement, un disque avec les matériaux spécifiés est fourni. Il y a aussi un forum (très pauvre en comparaison avec le folk). Il est toujours possible d'envoyer un e-mail à 1C - mais sans même espérer qu'ils y répondront (ou 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 construite dans le configurateur offrent beaucoup plus de support.

Épilogue

Je suis passé à 1C en 2008, et avant cela j'ai travaillé dans une entreprise développant son propre programme comptable (Delphi 5, puis Delphi 7). Tout d'abord, je me suis familiarisé avec la plate-forme 1C Enterprise 7.7 et j'ai été frappé par la facilité d'y développer des 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 Delphi similaires, mais les comptables n'étaient pas particulièrement inquiets à ce sujet. Attendre quelques minutes au lieu de quelques secondes n'est pas un problème. Au contraire, vous pouvez vous y peindre les ongles, prendre une tasse de thé ou discuter dernières nouvelles sans s'arrêter de travailler. La grande majorité des comptables de nos jours sont des femmes.
Cependant, l'interface 7.7 était très limitée et l'ensemble d'objets était très pauvre. J'ai cherché des alternatives. rencontré composants externes, mais ils n'ont pas atteint l'application pratique, tk. le patron a décidé qu'il était temps pour nous de passer au 8.1 (oui, le 8.2 n'existait pas alors), et dans cette plateforme, en tant que programmeur, j'ai trouvé tout ce qui me manquait auparavant.
Actuellement, j'ai de l'autorité auprès de mes collègues, ainsi que des clients qui me sont venus de la franchise. Ils ne traiteront probablement plus jamais avec les Français.


En général, je suis assez satisfait du travail sur la plate-forme 1C Enterprise 8. Il convient à la résolution de la plupart des tâches comptables et des tâches utilisant une base de données.

Mots clés:

  • langages de programmation en russe
  • 1C
  • Programmation 1C
Ajouter des balises

Le langage de programmation 1C est un système de signes formel conçu pour écrire des programmes informatiques. Un langage de programmation définit un ensemble de règles lexicales, syntaxiques et sémantiques qui définissent l'apparence du programme et les actions que l'exécuteur (ordinateur) effectuera sous son contrôle.

La plate-forme 1C Enterprise 8 dispose de fonctionnalités complètes pour développer vos propres solutions pour le développeur. Le principal outil de développement est le langage de programmation intégré 1C 8.3.

La création de nouvelles classes par programmation dans le langage 1C 8.3 est interdite. La plateforme 1C Enterprise étant spécialisée pour les tâches comptables, la composition des classes est prédéterminée :

  • etc.

Sur la base de classes typiques, vous pouvez créer n'importe quel nombre de sous-classes qui ont leurs propres ensembles. À l'aide de modules de gestion, vous pouvez étendre légèrement les fonctionnalités d'une sous-classe.

Le langage de programmation 1C est-il difficile ?

La question est plutôt controversée et relative. Si on le considère par rapport à d'autres langues, cela peut sembler un peu plus simple. Cependant, en plus de la programmation elle-même, vous devrez étudier le domaine - comptabilité, production, comptabilité fiscale, etc., ce qui rend le langage de programmation 1C dans son ensemble pas aussi simple qu'il n'y paraît à première vue.

Si vous aviez une solide expérience dans d'autres langages de programmation spécifiques à un domaine avant de vous familiariser avec 1C, il ne vous sera pas difficile de comprendre les subtilités de 8.2, l'essentiel est le désir. Tout ce dont vous avez besoin est de trouver un bon tutoriel sur le langage de programmation 1C.

Syntaxe russe du langage 1C

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

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

  1. Boucles utilisant une expression booléenne (s'exécutent tant que l'expression booléenne est vraie)
  2. Parcourir les collections en boucle

Considérons chacune de ces méthodes.

Boucles utilisant une variable - compteur de boucles

Syntaxe:

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

Avec cette méthode d'organisation des cycles, une variable de compteur se voit attribuer une valeur initiale et elle est exécutée jusqu'à ce que la valeur de la variable de compteur soit inférieure ou égale à la valeur finale spécifiée.

A chaque itération, la valeur du compteur augmente de un. Voici l'exemple le plus élémentaire d'une telle boucle :

Pour Compteur = 0 à 1000 Cycle Fin de cycle ;

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

For Counter = 0 By 1000 Loop Counter = Counter + 10 ; FinCycle ;

Boucles utilisant une expression booléenne

Syntaxe:

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

Rejeter = Faux ; GeneratorSch = Nouveau générateur de nombres aléatoires(1 ) ; Jusqu'à l'échec Loop RandomNumber = GeneratorSch. NuméroAléatoire(0 , 10 ) ; Si RandomNumber > 5 Alors Rejet = Vrai ; Fin si ; FinCycle ;

C'est-à-dire que la boucle sera exécutée jusqu'à ce qu'un nombre aléatoire supérieur à cinq soit généré.

Parcourir les collections en boucle

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

Nous pouvons faire référence à une collection d'objets tels que : un tableau, une table de valeurs, une sélection à partir du résultat d'une requête, des métadonnées, etc. Ce concept est plutôt conditionnel, mais dans l'assistant de syntaxe, il apparaît à chaque étape. Très souvent, il y a une tâche où nous devons itérer séquentiellement sur tous les éléments de la collection afin d'effectuer certaines actions sur eux. Il existe une syntaxe pour cela :

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.
A titre d'exemple, je vais donner un contournement dans la boucle des lignes du tableau des valeurs. Qu'on l'appelle TableProduits et ressemble à ceci :

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

Pour chaque nom de boucle RowTableFrom TableProducts = RowTable. Nom; Prix ​​= TableString. 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 dans une boucle en utilisant un compteur :

Nombre de lignes = TableProducts. Quantité() ; For Counter = 0 By Number of Rows - 1 Loop RowTable = TableProducts[Counter] ; Nom = StringTable. Nom; Prix ​​= TableString. Prix; Message = Nouveau MessageVersUtilisateur ; Message. Texte = "Nom du produit: "+ Nom + "; Prix : " + Prix ; Message. Signaler() ; FinCycle ;

Mais comme on peut le voir, il est beaucoup plus simple et pratique d'utiliser le parcours des éléments de la collection.

Opérateurs auxiliaires

Souvent, il y a une situation où, selon certains, il est nécessaire d'interrompre l'exécution de la boucle, ou de passer à l'itération suivante.

L'interruption est effectuée à 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 du langage suivant la boucle. Si vous devez passer à l'itération suivante, vous devez utiliser l'opérateur Continuer. Ensuite, le contrôle est transféré au début de la boucle. Illustrons par un petit exemple :

For Count = 0 By 100 Loop If Count = 0 Then Continue ; Fin si ; Si Compteur = 4 Alors Abandonner ; Fin si ; Résultat = 1 / Compteur ; Message = Nouveau MessageVersUtilisateur ; Message. Texte = Chaîne(Résultat) ; Message. Signaler() ; FinCycle ;

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

Si vous écrivez en SI
Être au moins trois fois lamer
Ils disent à ce sujet :
« C'est un programmeur cool ! »
(Chansons Fidosh - "Qu'est-ce que Suxxx et Qu'est-ce que Rulezzz")

Avant-propos

La raison de la rédaction de cet article était l'attitude négative de la communauté professionnelle envers la plate-forme et les programmeurs spécifiés.

En tant que programmeur ayant choisi 1C, je considère cette opinion déraisonnable. La plate-forme 1C est loin d'être idéale, mais, à mon avis, c'est le meilleur et surtout un produit domestique!

Et plus encore - il est inadéquat de juger les capacités d'un programmeur par la langue dans laquelle il écrit.

Dans cet article, je vais décrire les avantages que j'ai trouvés pour moi-même dans le programme. L'article se révélera être presque une publicité, donc immédiatement un avertissement :

  • Je n'ai aucun lien direct avec la société 1C ;
  • Cet article n'est pas fait sur mesure et est écrit uniquement sur une base volontaire ;
  • Dans certains cas, une opinion personnelle est exprimée, qui peut ne pas coïncider ...;
  • L'intégralité de l'article, à l'exception du prologue, est de l'auteur, toute coïncidence est un accident ;
  • Nous parlerons de la plate-forme 1C Enterprise 8.2 (actuellement la version 8.3 est pertinente, 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 a été dit s'applique à la fois à la plate-forme 8.3 et aux versions antérieures, et une partie s'applique également à la version 7.7.
Alors, commençons.

De quoi parle-t-on?

La plate-forme 1C Enterprise 8 est :
  • Il fonctionne en deux versions - fichier et serveur (trois liens) - chacune a ses propres avantages et inconvénients ;
  • Système de comptabilité 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 commerciale relativement peu coûteuse ;
  • Réseau de franchisés, formation initiale ;
  • Une puissante base de développements et de connaissances accumulées au fil des ans;
  • Une plate-forme parfois problématique pour les administrateurs système ;
  • L'exécution la plus rapide des algorithmes (mais pas la plus lente) n'est pas 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), il n'y a pas de fonctions anonymes et autres fonctionnalités modernes. Mais pour la plupart des tâches, ce n'est pas nécessaire !
Pour l'organisation de la comptabilité - une plate-forme 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, les textes des procédures stockées 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 plate-forme fournit un niveau d'abstraction qui ne nécessite pas d'accès direct à la base de données et vous permet également d'abstraire du système d'exploitation et du type de base de données.

Base de données de fichiers et de serveurs

La plateforme se compose de plusieurs parties et peut fonctionner en version fichier ou serveur.

Dans la version fichier, toute la base de données est contenue dans un seul fichier (avec l'extension "1cd") - la plate-forme est installée sur chaque ordinateur et lit / écrit directement dans la base de données.

Les avantages de l'option de fichier sont le faible coût et la facilité de déploiement.

Inconvénients - la structure du fichier "1cd" est fermée, il n'y a pas de système unique qui interagit avec la base de données. En conséquence, il est difficile à utiliser avec un grand nombre d'utilisateurs (essayé pour plus de 20 utilisateurs - vous pouvez travailler). De plus, lorsque la taille de la base de données est d'environ 15 Go (ou plus), les mises à jour dynamiques échouent. Résoudre de telles pannes est une tâche difficile, et l'utilitaire de réparation de la base ne répare pas toujours efficacement, et parfois même paralyse la base.

Il existe une solution - c'est tout d'abord la mise en place d'une sauvegarde quotidienne de la 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 plate-forme de stockage de base de données utilise un serveur SQL (généralement, c'est MS SQL, mais à partir de 8.2.14, vous pouvez en utiliser d'autres, par exemple, Firebird PostgreSQL, IBM DB2, Oracle Database), et la plate-forme utilise lui-même une architecture à trois niveaux :

Une partie du code est exécutée sur le client, une partie 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" ; Des "formulaires gérés" sont également apparus, dont l'apparence est construite sous la forme d'un arbre abstrait d'éléments. La programmation pour les formulaires gérés et une architecture à trois niveaux est plus difficile, mais cela vous permet de transférer la quasi-totalité de la charge sur 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 plate-forme : "trois liens" - répartition de la charge, ouverture de la base de données (officiellement, la société 1C décline toute responsabilité pour tout dommage aux données si des modifications ont été apportées à la base de données SQL, sauf par le biais de leur plate-forme ou de leur serveur, mais cela s'arrête peu de monde), manque de restrictions.

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

Un avantage commun est l'universalité du code de configuration : à quelques exceptions près, une configuration conçue pour une base de données de fichiers fonctionnera sur une base de données de serveur, et vice versa. Un exemple d'exception est le transfert d'une valeur modifiable vers le serveur ou du serveur vers le client (dans la version fichier, cela ne provoquera pas d'exceptions, mais dans la version client-serveur, cela est interdit).

Autre avantage : la plate-forme est très facile à installer, quelque chose comme ceci : "Suivant-Suivant-Suivant-OK", aucun réglage fin ou installation de composants n'est requis.

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

C'est plus que de la comptabilité

En ce qui concerne la plate-forme 1C, elle apparaît tout d'abord comme un programme de comptabilité. En effet, c'est le domaine d'utilisation le plus populaire de la plateforme 1C. Mais 1C ne vit pas uniquement de 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, à la fois de 1C et de développeurs tiers. Certains ne sont qu'indirectement liés à la comptabilité, d'autres pas du tout.

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

Écosystème pour les programmeurs

Considérons maintenant le langage et la plate-forme 1C du point de vue du développeur :
Le modèle objet de la 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 interdépendants (répertoires, documents, registres d'informations, registres d'accumulation, ...) et la plateforme « extrait » automatiquement ces données de la base de données.
Par exemple, à condition que la variable « Nomenclature Element » contienne une référence à la rubrique du répertoire « Nomenclature », le répertoire « Nomenclature » possède l'attribut « MainSupplier », de type « Directory.Contractors », et le « Contractors » répertoire a l'attribut "FullName", puis code :

Nomenclature Element.MainSupplier.FullName
... va amener la plateforme 1C, par des mécanismes internes, à rechercher un enregistrement dans la table correspondant au répertoire "Contreparties" par l'identifiant du champ "Fournisseur principal" de l'article de la nomenclature et retourner les valeurs de le champ correspondant au champ « FullName » dans le modèle objet du répertoire « Counterparties ».

Il peut y avoir de nombreux déréférencements de ce type - le système s'en sortira. La seule mise en garde est que le système n'est pas en mesure d'optimiser les déréférencements, vous devez donc vous efforcer de les sortir 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. J'en soulignerai quelques-uns :

Magasins de valeur
tableau- un objet qui stocke un ensemble de données, contrairement à la représentation classique des tableaux. Il peut s'agir de données de différents 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 stockages.

Liste de valeurs- un objet, principalement pour travailler avec l'interface utilisateur. En plus des données, chaque élément peut également contenir une vue, un drapeau et une image (pictogramme). Il possède également les méthodes "SelectElement()" et "MarkElements()" - lorsqu'il est appelé, une boîte de dialogue d'interface est affichée à l'utilisateur (ce qui est pratique - cette boîte de dialogue n'a pas besoin d'être créée dans la configuration).

Structure Et Correspondance- stockage des valeurs appariées "Key&Value". Dans la structure "Clé", il s'agit d'une chaîne qui obéit aux règles de nommage des variables en 1C (pas d'espaces, ne commence pas par un chiffre, se compose uniquement de lettres, de chiffres et d'un trait de soulignement). Selon - "Key" est n'importe quelle valeur. La recherche d'objets la plus rapide est conforme (plus rapide que dans un tableau et une table de valeurs indexées).

Tableau des valeurs- un objet très pratique et assez rapide pour stocker et traiter des données. Des colonnes dans le tableau des valeurs peuvent être ajoutées et supprimées, quel que soit le nombre d'entrées. Dans ce cas, les données des lignes ne sont pas perdues (ou seules les données des cellules correspondant aux colonnes en cours de suppression sont supprimées). En outre, il possède la méthode "Select String ()", qui appelle la boîte de dialogue de sélection de chaîne. Il y a des index.

Arbre de valeur- 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 une arborescence de valeurs est aussi simple que dans une table de valeurs. De plus, il a une méthode "SelectRow()".

Objets d'interface et objets pour travailler avec diverses données TextDocument, SpreadsheetDocument, Web Browser, ReadFile, WriteFile, ReadZIPFile, WriteZIPFile, ReadXML, WriteXML, HTTPRequest et bien d'autres objets, et pour tous il y a une aide intégrée dans le configurateur. Le but des objets répertoriés peut être vu à partir de leurs noms, et tout cela est immédiatement disponible dans la plateforme.

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

Et nous devons également mentionner séparément les objets: "Request", "Request Constructor", "Request Builder", "Report Builder", "Data Composition Scheme". 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 en 1C sont utilisées uniquement pour obtenir une sélection 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" traduit en russe à partir de SQL, cependant, le langage de requête 1C possède également des fonctionnalités qui ne sont pas disponibles en 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 ;
  • Echantillonnage par saisie d'un groupe (pour les annuaires) ;
  • Totaux hiérarchiques ;
  • Tables temporaires et requêtes imbriquées (SELECT * FROM (SELECT ...)) );
  • Générateur de requêtes - pratique, orienté objet, optimisant automatiquement le texte de la requête 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 d'objet à partir de celui-ci) ;
  • Le générateur de rapports est un module complémentaire au mécanisme de requête, qui ajoute la fonctionnalité de formatage automatique des résultats, ainsi qu'une personnalisation 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 lequel l'utilisateur peut configurer quelles données et dans quel ordre il souhaite voir ce qui se trouve dans les lignes, ce qui se trouve dans les colonnes, et le rapport lui-même génère un tableau de sortie ;
  • SKD (Data Composition System) est le prochain modèle qui intègre la fonctionnalité d'un rapport universel et le complète avec certaines fonctions de traitement des résultats.

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

  • Il n'est pas nécessaire de déclarer des variables - vous pouvez initialiser directement dans le texte du module ;
  • Pas de saisie difficile des variables. Le système a des types de valeur, mais il n'y a pas de règles de typage strictes pour les variables. Une variable qui stocke une référence peut déjà stocker un nombre ou une chaîne dans quelques lignes de code ;
  • Vous pouvez ajouter des variables avec des valeurs de types différents, tandis que le type de résultat sera le même que le type de la première variable, par exemple :
    k \u003d "25" + 1; // k = "251", pas 26
  • Des 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 limite sur la profondeur de la récursivité);
  • Lorsque vous spécifiez une fonction ou une procédure sans paramètres - tout de même, assurez-vous d'inclure des crochets vides à la fin : here_so();
  • Il y a des modules : chaque répertoire et document en possède plusieurs, de plus, les registres, rapports et traitements ont des modules, et chaque formulaire, et aussi dans le cadre de la configuration, il est possible de créer des modules communs ;
  • Pas de classes, héritage, encapsulation, polymorphisme ;
  • Une fonction ne peut pas être passée comme 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 gérons avec une entrée légèrement plus longue à travers la boucle "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 des modifications ;
  • Il est possible de décharger les textes des modules pour leur traitement par lots et de les recharger dans la configuration ;
  • Si la configuration est prise en charge (toutes les configurations de 1C sont initialement prises en charge), vous pouvez toujours comparer et voir ce qui a été modifié par des développeurs tiers ou des spécialistes locaux ;
  • Il est également possible de charger/télécharger l'intégralité de la base de données (y compris les données) ;
  • Pour un 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 standard, il existe même un document de 1C qui décrit les méthodes et les normes pour modifier les configurations typiques (et toutes 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 aux langages de programmation modernes, mais il est tout à fait possible de s'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, de nettoyer les tables 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. Le premier est la palette de couleurs. Elle est magnifique! Les fenêtres du programme sont reconnaissables même de loin, alors que pendant de nombreuses années de travail, elles ne provoquent pas de sensations hostiles, au contraire - je veux que tous les programmes soient tout aussi cool.
Dans le même temps, le style de la plate-forme est très strict, sans volants ni autres excès. Dans le même temps, il existe des fonctions très utiles, par exemple, la mémorisation des 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 de l'utilisateur - au tailles et positions par défaut en appuyant sur Alt + Maj + R).
L'interface client Web 8.2 soulève 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

Le plus "savoureux" de la plate-forme 1C est son prix. C'est particulièrement vrai maintenant, pendant la crise. Après tout, 1C est entièrement notre produit national. Et il est vendu pour nos bois. De telles solutions d'un fabricant étranger coûteront très cher. Et les licences pour 1C sont tout à fait acceptables.

De plus, 1C a une politique de licence intéressante. Les licences et les configurations elles-mêmes sont achetées une seule fois. Dans le même temps, des licences sont achetées pour un lieu de travail et un serveur, mais pas pour les bases de données, ni même pour les connexions, c'est-à-dire. sous une seule licence, le même utilisateur peut exécuter 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é à utiliser des parties du code et des objets de cette configuration lors du développement de leurs propres configurations (à en même temps, vous pouvez vendre/transférer vos propres configurations - stipulant que pour les utiliser, vous devez acheter une configuration chez 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, le soi-disant. C'EST. Soit dit en passant, l'abonnement est très bon marché, à peu près comme deux licences client.

En général, tout cela semble très rentable.

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

À propos de la polyvalence

Le concept d '"universalité" a été défini par un enseignant dans le domaine des NVP en utilisant des masques à gaz comme exemple: il existe des masques universels qui protègent contre de nombreux facteurs dommageables, mais le degré de protection est moyen ou inférieur à la moyenne, et il y a aussi masques à gaz spécialisés qui protègent contre un impact, mais avec un haut degré de protection. Jusqu'à présent, je n'ai pas vu de définition plus précise.
Et les configurations de 1C sont universelles. En pratique, il n'y a pas de tâches où ils pourraient être pleinement utilisés sans modifications. Néanmoins, 1C a réussi à créer un ensemble universel d'outils qui couvre les besoins de la plupart des industries de l'entreprise moderne.


Le troisième plus (et aussi avec une mouche dans la pommade) est un réseau de franchisés et de centres de formation, tant pour les utilisateurs que pour les programmeurs et administrateurs novices. Bonne idée, mais qualité très médiocre de sa réalisation. Néanmoins, 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

Ayant peint 1C de toutes les couleurs, il serait injuste de ne pas parler de ses défauts, et ils existent déjà :

Versions instables- à la fois dans la plate-forme et dans les configurations, il existe un grand nombre d'erreurs et de problèmes. Et c'est dans les versions officielles. Avant la sortie de la version officielle, une "Review Version" est publiée. Il existe également des commentaires pour soumettre des descriptions de bogues à accepter pour correction. Cependant, soit les versions à examiner ne sont pas particulièrement populaires, soit la société 1C elle-même n'a pas le temps de traiter toutes les lettres à la date de sortie, mais le fait est. Chaque fois que vous mettez à jour la plate-forme ou la configuration, vous pouvez tomber sur les "surprises" les plus inattendues. 1C a é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 composé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, légèrement "finir" 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 qui est vrai.

Lorsque de nouvelles licences sont vendues à un client, les franchises reçoivent 50% de leur valeur (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 transférer les clés de 1C à l'acheteur.

Lors de la prestation de services, les franchisés ne paient rien à la société 1C (à l'exception des frais d'adhésion), mais ils doivent payer le salaire de l'employé. Vous devez également dépenser de l'argent en impôts à l'État - PFR et impôt sur le revenu.

Il s'avère qu'il est rentable pour 1C et les franchises de vendre des licences et qu'il n'est pas rentable de fournir un soutien supplémentaire. En même temps, pour qu'un client achète un programme, il doit d'abord être adapté à ses besoins. Et vous devez payer les travaux. Et ici, pour économiser de l'argent, il s'agit d'étudiants, d'élèves, de non-spécialistes, qui peuvent être un peu payés, et parfois pas payés du tout, ils peuvent même ne pas être inscrits dans l'État (ils travailleront officieusement, car il y a est quelque chose à payer avec). Le résultat est un grand nombre de ventes avec une qualité très faible. Les améliorations, en règle générale, affectent des mécanismes importants et compliquent les futures mises à jour. Mais au stade de la vente, ni 1C ni le franchisé ne sont intéressés.

Je constate que ce n'est pas tant la faute des hommes d'affaires issus de la franchise que de 1C. 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 doit être bénéfique à la fois pour le franchisé lui-même et pour 1C).

Soutien technique. Au sens de 1C, le support technique est la fourniture d'un accès à la section "mise à jour" de la plate-forme et des configurations, ainsi qu'aux sections d'information contenant une description de certains mécanismes et fonctionnalités de 1C. De plus, lors de l'abonnement, un disque avec les matériaux spécifiés est fourni. Il y a aussi un forum (très pauvre en comparaison avec le folk). Il est toujours possible d'envoyer un e-mail à 1C - mais sans même espérer qu'ils y répondront (ou 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 construite dans le configurateur offrent beaucoup plus de support.

Épilogue

Je suis passé à 1C en 2008, et avant cela j'ai travaillé dans une entreprise développant son propre programme comptable (Delphi 5, puis Delphi 7). Tout d'abord, je me suis familiarisé avec la plate-forme 1C Enterprise 7.7 et j'ai été frappé par la facilité d'y développer des 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 Delphi similaires, mais les comptables n'étaient pas particulièrement inquiets à ce sujet. Attendre quelques minutes au lieu de quelques secondes n'est pas un problème. Au contraire, vous pouvez vous y peindre les ongles, prendre une tasse de thé ou discuter des dernières nouvelles sans lever les yeux du travail. La grande majorité des comptables de nos jours sont des femmes.
Cependant, l'interface 7.7 était très limitée et l'ensemble d'objets était très pauvre. J'ai cherché des alternatives. Je me suis familiarisé avec les composants externes, mais ils n'ont pas eu d'application pratique, tk. le patron a décidé qu'il était temps pour nous de passer au 8.1 (oui, le 8.2 n'existait pas alors), et dans cette plateforme, en tant que programmeur, j'ai trouvé tout ce qui me manquait auparavant.
Actuellement, j'ai de l'autorité auprès de mes collègues, ainsi que des clients qui me sont venus de la franchise. Ils ne traiteront probablement plus jamais avec les Français.


En général, je suis assez satisfait du travail sur la plate-forme 1C Enterprise 8. Il convient à la résolution de la plupart des tâches comptables et des tâches utilisant une base de données.

Balises : Ajouter des balises