LA CLOCHE

Il y a ceux qui ont lu cette actualité avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam

Lorsque vous travaillez avec des dates 1C, l'ordre typique des parties de date est l'année, le mois, le jour, l'heure, les minutes, les secondes. Dans ce cas, les heures, les minutes, les secondes peuvent être sautées.

Lors de la création d'une date à partir d'une chaîne ("cast to date"), vous pouvez spécifier au format localisé (jour.month.year heures: minutes: secondes), mais uniquement complètement.

Par exemple:
// Travailler avec des dates 1C - convertir une date en 1C à partir de parties - année, mois, jour (plus heure facultative)
Date \u003d Date (2012,10,30); // pas le temps
Date \u003d Date (2012,10,30,12,00,00); //avec le temps

// Travailler avec des dates 1C - convertir une date en 1C à partir d'une chaîne, de différentes manières
Date \u003d Date ("20121030"); // année mois jour
Date \u003d Date ("30/10/2012 12:00:00"); // format localisé, seulement complètement

// Travailler avec des dates 1C - spécifier la valeur de la date sans conversion, directement
Date \u003d "20121030"; // pas le temps
Date \u003d "20121030120000"; //avec le temps

Travailler avec des dates 1C - Date vide 1C

Pour vérifier la date 1C pour la plénitude - il est comparé à la "date vide". S'il y a un attribut avec le type de date dans le livre / document de référence, si l'utilisateur n'a pas rempli ce champ, sa valeur sera également "date vide".

"Date vide" est 01.01.0001 00:00:00.

Par exemple:
EmptyDate \u003d "00010101000000";
Si RequiredDate \u003d "00010101000000" Alors
Rapport ("Vous n'avez pas renseigné une date très nécessaire");
Fin si;

Travailler avec des dates 1C - Date en détails (ouvrages de référence, documents, etc.)

Lors de la spécification du type d'attribut, vous pouvez spécifier l'utilisation de:

  • Date uniquement (l'heure est alors toujours 00:00:00)
  • Heure uniquement (la date est alors toujours 01.01.0001)
  • Date et l'heure

Obtenir la date

Pour obtenir la date et l'heure, utilisez la fonction 1C CurrentDate ().

L'endroit où cette fonction est appelée est très important - sur le client ou sur le serveur. Pour plus de détails, reportez-vous à la rubrique «Performance Mode / Performance». Il arrive souvent que l'heure sur les machines clientes soit légèrement différente, alors ils essaient d'utiliser l'heure du serveur partout - même si elle n'est pas correcte sur le serveur, au moins tous les clients auront la même heure incorrecte.

Afin d'obtenir la date du serveur (la date définie dans le système d'exploitation de l'ordinateur serveur), généralement un module commun est créé dans la configuration avec la case à cocher "Serveur" cochée dans les propriétés, et la fonction y est créée
// la fonction est située dans un module commun, par exemple nommé ServerFunctions
// dans les propriétés du module commun, la case "Serveur" est cochée et la case "Client" n'est pas cochée
Fonction GetServerDate () Export
Return CurrentDate ();
FinFonction

// appeler cette fonction pour une utilisation depuis un autre module ressemble à ceci
DocumentObject.Date \u003d ServerFunctions.GetServerDate (); //ModuleName.FunctionName ()

Toujours dans le client léger, directement à partir des fonctions des modules, il est indiqué où il sera exécuté:

Début et fin de la journée

Pour la date "30/10/2012":

  • la date de début de la journée ressemble à ceci "30/10/2012 00:00:00"
  • la date de fin ressemble à ceci "30/10/2012 23:59:59"

Il est utilisé dans les rapports et les requêtes qui nécessitent des données pour une période - jour, mois, année.

Par exemple, la période du 01/01/2012 00:00:00 au 31/01/2012 00:00:00 est incorrecte, car elle n'inclut pas un jour du mois (mais elle inclut une seconde du dernier jour du mois).

Travailler avec des dates 1C - Comparaison des dates

La date contient la date et l'heure. Lors de la comparaison des dates (hors heure), elles sont généralement ramenées au début de la journée (mois, année).

Par exemple:
Date1 \u003d Date ("30/10/2012 12:00:00");
Si StartDay (Date1) \u003d StartDay (DocumentRef.Date) Alors
Rapport ("Le document a été saisi à la date spécifiée");
Fin si;

Juste au cas où, un exemple de comparaison de dates dans une période:
Si DocumentRef.Date\u003e \u003d StartMonth (CurrentDate ()) et
DocumentRef.Date

Travailler avec des dates 1C - Changement de date

La date est le nombre de secondes. Si nous voulons non seulement savoir si une date est supérieure à une autre, mais aussi combien plus, alors nous obtenons la différence en secondes.

Par exemple:
DayStart \u003d CurrentDate () - DayStart (CurrentDate ());
Rapport ("Depuis le début de la journée" + String (Depuis le début de la journée) + "secondes");
Rapport ("Depuis le début de la journée" + String (Depuis le début de la journée / 60) + "minutes");
Report ("Depuis le début de la journée est passé" + String (Depuis le début de la journée / 60/60) + "heures");

Nous pouvons également changer la date, lors du changement nous ajoutons ou soustrayons le nombre de secondes:
StartThisDay \u003d StartDay (CurrentDate ());

StartPreviousDay \u003d StartDay (StartThisDay - 1); // supprimer le second - faire "hier" et prendre le début de la journée depuis "hier"

StartPreviousDay \u003d StartThisDay - 24 * 60 * 60; // d'une autre manière - nous soustrayons 24 heures - 24 (heures) * 60 (minutes se sont avérées) * 60 (secondes)

Travailler avec des dates 1C - Moment de temps

Un point dans le temps est une représentation de date étendue applicable aux documents (et par conséquent aux registres).

Il est nécessaire de comparer l'heure des documents si la date et l'heure des documents sont identiques. En conséquence, il peut être utilisé lors du filtrage dans les requêtes.

Un moment dans le temps peut être obtenu à partir d'un document des manières suivantes:
// méthode 1
DocumentMomentTime \u003d DocumentRef.MomentTime ();

Vous pouvez également comparer un point dans le temps avec une date / heure:
Moment of TimeStatus \u003d Nouveau moment de temps (Début de la journée (CurrentDate ()));
Si DocumentRef.MomentTime (). Compare (TimeTimeStandard) \u003d -1 Alors
Rapport ("Le document a été présenté plus tôt qu'aujourd'hui");
Fin si;
// Si le document a été saisi à la date d'aujourd'hui à 00:00:00, il a quand même été saisi - aujourd'hui

Utilisation des dates 1C - Mise en forme des dates

Le type "Date" dans 1C est l'un des 4 principaux types de données, avec le nombre, la chaîne et le booléen. Les dates sont omniprésentes dans les configurations - il est impossible d'éviter de travailler avec ce type de données pendant le développement. Par conséquent, il est préférable de commencer à écrire des requêtes, en comprenant déjà comment gérer les dates, quelles sont les possibilités de travailler avec elles, comment elles sont stockées. Regardons des exemples de toutes les nuances des demandes d'écriture avec des dates différentes.

Exemples d'utilisation des dates dans les demandes 1C

Tout d'abord, vous devez obtenir la date dans la demande dans le format requis - avec ou sans heure. Il existe plusieurs façons d'accomplir cette tâche:

  1. Passez par un paramètre. Vous ne pouvez obtenir la date de session actuelle que par cette méthode;
  2. Obtenez la date de la demande dans le champ de sélection;
  3. Conversion à partir de valeurs numériques à l'aide de la fonction DATETIME ().

La tâche la plus courante lorsque vous travaillez avec des documents est de vérifier une date vide dans une demande 1C. Dans ce cas, il est plus simple de comparer une variable ou un champ avec une date vide, obtenue avec la fonction DATE TIME (1,1,1):

DATE HEURE (1, 1, 1)

Une commande similaire peut obtenir une date et une heure arbitraires dans une requête. En même temps, ils peuvent être spécifiés avec une précision d'une seconde en spécifiant 6 nombres comme paramètres. Si seulement 3 chiffres sont utilisés, alors les heures, les minutes et les secondes seront mises à 0 (début de la journée). Par exemple, nous devons sélectionner des documents pour les 10 premiers jours de janvier 2018 dans la demande:

CHOISIR Reçu au compte de règlement Réf. AS Lien FROM Document.Choisir vers Compte de règlement AS Reçu au compte de règlement O Reçu au compte de règlement Date ENTRE DATE HEURE (2018, 1, 1, 0, 0, 0) ET DATE, 1, 10, 23

Dans une requête dans le langage 1C intégré, vous pouvez non seulement sélectionner divers champs et obtenir des paramètres. Il existe de nombreuses fonctions qui facilitent le formatage de la date pour une tâche spécifique. Si vous travaillez souvent avec des dates dans une requête, vous devez connaître ces commandes:

  • DEBUT DE PÉRIODE. En tant que paramètres, la date et l'intervalle de temps sont indiqués, dans le cadre desquels il est nécessaire d'obtenir le début de la date. Utilisé pour convertir une date dans un format intemporel. Pour cela, il est nécessaire de définir le deuxième paramètre - "JOUR";
PÉRIODE DEBUT (,) PÉRIODE DEBUT (& Date, JOUR) période\u003e date\u003e
  • FIN DE PÉRIODE. Une commande similaire qui renvoie la dernière date en termes d'unités spécifiées dans les paramètres;
  • AJOUTÉ. Vous permet d'obtenir une date supérieure à un nombre spécifié d'unités de temps spécifiées. La date, l'unité d'heure et le nombre sont spécifiés comme paramètres de fonction;
ADDEDDATE (,) ADDEDDATE (& Date, DAY, 10) count\u003e type\u003e date\u003e
  • DIFFÉRENCE Obtient la différence entre les dates dans les unités spécifiées;
DATE DIFFERENCE (,) DATE DIFFERENCE (& Date1, & Date2, DAY) type\u003e date2\u003e date1\u003e
  • JOUR DE LA SEMAINE. Renvoie le nombre ordinal de l'un des jours de la semaine.

En appliquant correctement ces fonctions, le développeur peut résoudre des tâches plutôt non triviales. Par exemple, obtenir le nom du jour de la semaine de la date actuelle dans une requête sous forme de chaîne:

SELECT WHEN DAY WEEK (& CurrentDate) \u003d 1 THEN "Monday" WHEN DAY WEEK (& CurrentDate) \u003d 2 THEN "Tuesday" WHEN DAY WEEK (& CurrentDate) \u003d 3 THEN "Wednesday" WHEN DAY WEEK Current (& CurrentDate) \u003d 4 PUIS "DAY" & jeudi \u003d 5 ALORS "Vendredi" WHEN DAY WEEK (& CurrentDate) \u003d 6 ALORS "Samedi" ELSE "Dimanche" FIN

La conversion de types dans une requête 1C d'un nombre ou d'une chaîne à une date est une tâche laborieuse. À partir de nombres, vous pouvez obtenir une date à l'aide de la fonction DATE TIME, à partir d'une chaîne, en combinant la fonction SUBSTRING et la construction SELECT WHEN THEN ELSE. Sur cette base, les développeurs préfèrent obtenir la date d'autres types dans le module et la transmettre à la demande à l'aide d'un paramètre. Malheureusement, ce n'est pas toujours possible, vous devez donc modifier le format de date dans la demande.

Il est possible de spécifier la date dans la requête 1C comme paramètre pour obtenir des données à partir de tables de registres virtuels. Toutes les fonctions ci-dessus peuvent également être utilisées dans ce rôle. Mais ici, il est important de ne pas permettre à la date vide dans la requête 1C d'affecter le résultat final de l'exécution du code, il est donc impératif de vérifier.

Lorsque vous travaillez avec des dates 1C, l'ordre typique des parties de date est l'année, le mois, le jour, l'heure, les minutes, les secondes. Dans ce cas, les heures, les minutes, les secondes peuvent être sautées.

Lors de la création d'une date à partir d'une chaîne ("cast to date"), vous pouvez spécifier au format localisé (jour.month.year heures: minutes: secondes), mais uniquement complètement.

Par exemple:

// Travailler avec des dates 1C - convertir une date en 1C à partir de parties - année, mois, jour (plus heure facultative) Date \u003d Date (2012,10,30); // sans heure Date \u003d Date (2012,10,30,12,00,00); // avec l'heure // Travailler avec les dates 1C - convertir une date en 1C à partir d'une chaîne, de différentes manières Date \u003d Date ("20121030"); // année, mois, jour Date \u003d Date ("30/10/2012 12:00:00"); // format localisé, uniquement complètement // Travailler avec les dates 1C - spécifier la valeur de la date sans transtypage, directement Date \u003d "20121030"; // aucune heure Date \u003d "20121030120000"; //avec le temps

Travailler avec des dates 1C - Date vide 1C

Pour vérifier la date 1C pour la plénitude - il est comparé à la "date vide". S'il y a un attribut avec le type de date dans le livre / document de référence, si l'utilisateur n'a pas rempli ce champ, sa valeur sera également "date vide".

"Date vide" est 01.01.0001 00:00:00.

Par exemple:

EmptyDate \u003d "00010101000000"; If RequiredDate \u003d "00010101000000" Then Report ("Vous n'avez pas renseigné une date très nécessaire"); Fin si;

Travailler avec des dates 1C - Date en détails (ouvrages de référence, documents, etc.)

Lors de la spécification du type d'attribut, vous pouvez spécifier l'utilisation de:

Date uniquement (l'heure est alors toujours 00:00:00)
Heure uniquement (la date est alors toujours 01.01.0001)
Date et l'heure

Obtenir la date

Pour obtenir la date et l'heure, utilisez la fonction 1C CurrentDate ().

L'endroit où cette fonction est appelée est très important - sur le client ou sur le serveur. Pour plus de détails, reportez-vous à la rubrique «Performance Mode / Performance». Il arrive souvent que l'heure sur les machines clientes soit légèrement différente, alors ils essaient d'utiliser l'heure du serveur partout - même si elle n'est pas correcte sur le serveur, au moins tous les clients auront la même heure incorrecte.

Afin d'obtenir la date du serveur (la date définie dans le système d'exploitation de l'ordinateur serveur), un module commun est généralement créé dans la configuration avec la case "Serveur" cochée dans les propriétés, et la fonction y est créée

// la fonction est située dans un module commun, par exemple, avec le nom ServerFunctions // dans les propriétés du module commun la case "Serveur" est cochée et la case "Client" n'est pas cochée Fonction GetServerDate () Export Return CurrentDate (); EndFunction // appeler cette fonction pour une utilisation à partir d'un autre module ressemble à DocumentObject.Date \u003d ServerFunctions.GetServerDate (); //ModuleName.FunctionName ()

Toujours dans le client léger, directement à partir des fonctions des modules, il est indiqué où il sera exécuté:

Début et fin de la journée

Pour la date "30/10/2012":

la date de début de la journée ressemble à ceci "30/10/2012 00:00:00"
la date de fin ressemble à ceci "30/10/2012 23:59:59"

Il est utilisé dans les rapports et les requêtes qui nécessitent des données pour une période - jour, mois, année.

Par exemple, la période du 01/01/2012 00:00:00 au 31/01/2012 00:00:00 est incorrecte, car elle n'inclut pas un jour du mois (mais elle inclut une seconde du dernier jour du mois).

Travailler avec des dates 1C - Comparaison des dates

La date contient la date et l'heure. Lors de la comparaison des dates (hors heure), elles sont généralement ramenées au début de la journée (mois, année).

Par exemple:

Date1 \u003d Date ("30/10/2012 12:00:00"); If StartDay (Date1) \u003d StartDay (DocumentLink.Date) Then Inform ("Document entré à la date spécifiée"); Fin si; Juste au cas où, un exemple de comparaison d'une date dans une période: If DocumentRef.Date\u003e \u003d StartMonth (CurrentDate ()) et DocumentLink.Date<= КонецМесяца(ТекущаяДата()) Тогда Сообщить("Документ введен в текущем месяце"); КонецЕсли;

Travailler avec des dates 1C - Changement de date

La date est le nombre de secondes. Si nous voulons non seulement savoir si une date est supérieure à une autre, mais aussi combien plus, alors nous obtenons la différence en secondes.

Par exemple:

DayStart \u003d CurrentDate () - DayStart (CurrentDate ()); Rapport ("Depuis le début de la journée" + String (Depuis le début de la journée) + "secondes"); Rapport ("Depuis le début de la journée" + String (Depuis le début de la journée / 60) + "minutes"); Report ("Depuis le début de la journée est passé" + String (Depuis le début de la journée / 60/60) + "heures");

On peut aussi changer la date, lors du changement, on ajoute ou soustrait le nombre de secondes:

StartThisDay \u003d StartDay (CurrentDate ()); StartPreviousDay \u003d StartDay (StartThisDay - 1); // supprimer le second - faire "hier" et prendre le début de la journée de "hier" Début du jour précédent \u003d Début de ce jour - 24 * 60 * 60; // d'une autre manière - nous soustrayons 24 heures - 24 (heures) * 60 (minutes se sont avérées) * 60 (secondes)

Travailler avec des dates 1C - Moment de temps

Un point dans le temps est une représentation de date étendue applicable aux documents (et par conséquent aux registres).

Il est nécessaire de comparer l'heure des documents si la date et l'heure des documents sont identiques. En conséquence, il peut être utilisé lors du filtrage dans les requêtes.

Un moment dans le temps peut être obtenu à partir d'un document des manières suivantes:

// méthode 1DocumentMomentTime \u003d DocumentRef.MomentTime (); Vous pouvez également comparer un moment dans le temps avec une date / heure: MomentTimeStandard \u003d NewMomentTime (StartDay (CurrentDate ())); If DocumentLink.MomentTime (). Compare (MomentTimeStandard) \u003d -1 Then Report ("Le document a été saisi plus tôt qu'aujourd'hui"); Fin si; // Si le document a été saisi à la date d'aujourd'hui à 00:00:00, il a quand même été saisi - aujourd'hui

À un moment donné, il est nécessaire de travailler avec des variables de type "Date". Dans cet article, nous examinerons les techniques de base - passer la date actuelle, vérifier une valeur vide, une date arbitraire.

Lors de l'écriture de requêtes, il est souvent nécessaire de comparer les données avec la date actuelle. Le langage 1C intégré a la fonction CurrentDate (). Il vous permet de déterminer l'heure et la date actuelles sur votre ordinateur. Pour effectuer des opérations avec la date actuelle, vous devez transmettre la valeur de cette fonction en tant que paramètre à la requête.

Voici une requête qui sélectionne tous les fichiers joints aux notes de frais avec une date de création à ce jour:

ExampleRequest \u003d Nouvelle demande;
ExampleRequest.Text \u003d "
| CHOISISSEZ
| Fichiers joints au rapport avancé.Lien
| DE
| Reference.AvailableReportAttachedFilesASAAAvailableReportAttachedFiles
| O
| Fichiers joints au rapport anticipé.< &ТекДата»;
ExampleRequest.SetParameter ("CurrentDate", CurrentDate ());

Date personnalisée

La fonction ci-dessus vous permet de comparer et donc de faire une sélection pour n'importe quelle période. Cette méthode vous permet de spécifier une sélection stricte dans la requête sans utiliser de paramètres supplémentaires.

Notez qu'en utilisant cette fonction dans l'exemple ci-dessus, nous n'avons passé que trois nombres (année, mois, jour) comme paramètres d'entrée. Les trois derniers (heure, minute, seconde) sont facultatifs et, s'ils sont absents, sont remplacés par "0", c'est-à-dire le début de la journée.

Pour cet exemple, vous recevrez tous les fichiers joints aux notes de frais jusqu'à la fin de 2016. À cet égard, nous indiquerons l'heure, la minute et la seconde afin de comparer avec le moment «31 décembre 2016 23:59:59».

CHOISIR
Fichiers joints aux rapports avancés.Lien
DE
Directory.AvailableReportAttachedFiles AS AdvanceReportAttachedFiles

Fichiers joints au rapport anticipé.< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Date vide

Le moyen le plus simple de vérifier une variable pour voir si elle contient une date vide est par simple comparaison. Dans cet exemple, à l'aide d'une requête, nous sélectionnerons tous les encaissements vers un compte bancaire pour lequel la date d'entrée n'est pas renseignée.

LA CLOCHE

Il y a ceux qui ont lu cette actualité avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam