Création de document impossible/mac OS X10.13

Bonjour à tous
J’ai un drôle de comportement depuis le changement de system d’un de mes mac

Je m’explique, mais c’est compliqué!!

Je crée et lis des documents avec 4d v13 en client serveur, les documents sont créés sur le serveur Mac os x 10.14.6.
avec<code 4D>
$mondoc:=Creer document($cheminprov) // Création d’un document en écrasant celui qui existe déjà

Si (OK=1) // Est-ce que le document a bien été créé ?

ENVOYER PAQUET($mondoc;$dossiertxt)

FERMER DOCUMENT($mondoc)
Fin de si
</code 4D>

et pour les lire>OS : Mac OS X
<code 4D>
C_BLOB($blob1)
DOCUMENT VERS BLOB($cheminprov;$blob1)
dossiertxt:=BLOB vers texte($blob1;6)
</code 4D>

Pour ce faire je monte l’ordinateur du serveur sur l’ordinateur du client
en smb://

le problème est que lorsque un client qui possède un mac osx10.13 ou 14, monte le serveur sur son ordinateur pour créer ou lire le document , les autres ordinateurs mac os 10.12 qui ont aussi monté le serveur sur leur propre ordinateur ne peuvent pas créer le document , car il semble qu’il n’a pas été fermé correctement.

Pourtant tout fonctionnait depuis plus de 10 ans sans rien changer dans le code., bien sur le partage de l’ordinateur serveur est réglé correctement,

Du coup j’essaie avec 4D V17 et là pas de soucis.

De quoi ça peut venir ? , quelqu’un aurait-il déjà ce problème

Avec mes meilleures salutations

Alain Haerri

Merci Manuel
Voilà qui explique cela
bonne journée
alain haerri

La version v13 n’est pas certifiée macos 10.14.6 (MOJAVE), il y a effectivement des incompatibilités. Par exemple, avec la v15(!) je ne peux pas enregistrer des documents 4D View sur le disque du poste en macOS 10.14.6…

La version v17, elle, est bien certifiée macOS 10.14.6 donc c’est normal que cela fonctionne.

Bonjour à tous,
J’espère que toute notre petite communauté se porte bien.

Je reviens avec mon problème de création de document impossible.

J’ai déjà expliqué le soucis que j’ai sur le début de ce fil.

J’ai donc passé mon application en V17 et là plus de soucis, l’ordinateur( qui fait serveur ) est monté sur tous les postes clients( je suis obligé de faire comme ça pour une autre application (non 4d) de radiologie)
Mon application sur les postes clients crée et lit des documents sur le poste serveur qui est monté sur ces dits clients.
Tout fonctionne pas de blocages, alors qu’en V13 si ça ne fonctionnait pas.

Horreur , je viens de faire des tests en V18 et là de nouveau ça ne fonctionne plus.
Lorsqu’un poste client écrit dans un document et le referme, les autres postes ne peuvent pas l’utiliser car il est “verrouillé” par le poste client qui vient de l’utiliser.

Je ne sais plus quoi faire

Merci de votre aide

Alan Haerri

Je ne conseille PAS de travailler des documents sur des volumes réseaux quels qu’ils soient. Vous risquez des erreurs de réseau (coupures, déconnexions, Pb de droits, etc.)

Pour gérer cela, je passe par un blob et par 4D, puis je régénère le doc à l’arrivée. D’autres utilisent un FTP. Mais, je déconseille le montage de volume réseau quel que soit le protocole (SMB, AFP, etc.)

Néanmoins, la v18.1 est certifiée pour macOS 10.13 en deploiement(https://forums.4d.com/Post/FR/34521384/1/34645284#34645284comme l’a rappellé récemment Thomas MAUL>) donc il faudrait peut-être déclarer cela en bug.

Merci Manuel,
Je comprends que ce ne soit pas idéal , mais cela fonctionne depuis plus de 10 ans.
C’est enquiquinant , j’ai cru résoudre mon problème en passant à la V17, ce qui fut le cas, mais la V18 ça ne fonctionne de nouveau plus.
Je vais déclarer ce bug , mais je ne sais pas où le faire.
Merci
Alain Haerri

Si je comprends bien, tu utilises pour 4D un partage qui au départ était là pour un application non 4D. Ça vaut peut être le coup de mettre ce qui est à 4D ailleurs. J’ai pas encore trop testé mais un NAS me semble pas mal : ça partage de toutes les façons possibles, c’est robuste, il y a de la place, peu d’administration… Tu peux d’ores et déjà l’utiliser comme le partage existant ; si ce mode de partage te fait des misères, tu peux en essayer un autre sans déplacer les documents sur le NAS.

Du point de vue expérience personnelle, les volumes qui se montent sur un bureau sont une source inépuisable d’emmerdements, si dans 4D je peux m’en passer…

Bonjour Arnaud,

Je comprends ta proposition mais le serveur et aussi utilisé comme poste client, donc un n’as ne fera pas l’affaire.
C’est comme bizarre cette histoire , non?

Tu peux déclarer un bug sur https://taow.4d.com/Home/home.fr.htmlTAOW> (il faut être partner… :-()

Sinon attention, le SMB a beaucoup varié et peut être la cause de tes problèmes et cela n’est pas le fait de 4D mais d’Apple dans les différentes versions de macOS…

On est 2 à te déconseiller l’utilisation de volumes réseau :roll:

: Alain HAERRI

mais le serveur et aussi utilisé comme poste client
Si je comprends bien, ce poste fait : serveur appli non 4D + serveur 4D + partage + client 4D. Je suppose que vous n’êtes pas 150 à travailler, mais ça ne me tranquilliserait pas quand même. Rien que l’utilisation comme poste client, hop, le fameux problème entre la chaise et le clavier est là. Ça n’empêche pas de déporter le partage sur un NAS (ou autre), il me semble, non ?

: Alain HAERRI

C’est comme bizarre cette histoire , non?
Bof, je suis mithridatisé contre le bizarre avec les partages. De mon coté ça fait des années que des partages windows montés sur des macs me pourrissent l’existence. Récemment, aussi, j’ai vu tous les droits d’un serveur de fichier windows explosés, il a fallu tout refaire. Donc c’est le souk, c’est difficile de savoir d’où ça vient, et moi je ne sais pas gérer ça. Quand je vois qu’une techno n’est pas fiable, je n’ai aucune envie de persister à l’utiliser.

Merci Arnaud , merci Manuel,

En fait pour être plus précis, j’ai un logiciel( non 4d) de radiologie numérique qui vient écrire les radiographies sur mon poste serveur ( c’est histoire d’avoir tout au même endroit) et ce logiciel sur les postes clients doit avoir le serveur monté.

Pour 4D mon logiciel de gestion d’un cabinet dentaire, gère les factures , les traitements etc, et aussi des fiches traitement au format .txt, que je n’ai pas voulu intégrer à 4d,
4D créée ces fiches avec créer document et les lit.
la création et la lecture de ces fiches se faisaient sur le poste serveur avec exécuter sur serveur.
Pas besoin de monté le serveur.
Je crois Arnaud c’est toi qui m’avait conseillé de faire de cette façon.

Plus tard le logiciel de radiologie étant installé (et du coup les serveur monté sur tous les postes clients), je me suis dit que je pourrais directement écrire ces documents txt au travers du serveur monté.
Donc c’est un peu plus rapide que faire des requêtes et exécuter sur serveur( mais pas énormément).
tout est ok en V13 avant d’avoir mojave sur le serveur, en revanche c’est ok avec mojave en v17, mais ça ne l’est plus en V18.
C’est comme si le document était mal fermé par le poste client (qui a le serveur monté)

Donc au pire je modifie légèrement mon appli pour de nouveau utiliser mes requêtes avec exécuter sur serveur
ou effectivement un nas , mais je n’ai jamais utiliser c’est un peu nouveau mais probablement pas insurmontable
merci en tout cas
Alain Haerri

En fait pour être encore plus précis la commande créer document ne peut se faire car j’ai un message qui me dit que le document est veroullié, mais ce verrou disparait au bout d’une minute environ.
C’est donc comme si les postes clients bloquaient un moment seulement ce document sur le serveur avant de laisser la main.
merci
alain haerri

Le pauvre 4D doit faire ce qu’il peut : avec le Finder, je vois très souvent dans les partages des dossiers autorisés passer à l’aspect “sens interdit”, redevenir accessibles un peu plus tard, n’importe où, n’importe quand. On peut par exemple lancer une copie sur un partage autorisé qui décide en cours de copie de ne plus l’être. En accès distant, ça tourne au comique. Je ne sais pas de quel coté (client ou serveur) ça déconne le plus, mais le résultat est assez exceptionnel. Et le pire, c’est que ça tombe en marche suffisamment souvent pour qu’on croit qu’on peut vivre avec !

Merci Arnaud

Oui donc je viens de réactiver mon code qui execute sur le serveur la lecture et l’écriture des documents textes. via des écritures de variables process
<code 4D>
C_ENTIER LONG($readyici)
$readyici:=1
LIRE VARIABLE PROCESS(-1;<>readyserveur;$readyici)
Tant que ($readyici#0) //si <>readyserveur=0 c’est bon on peut faire une requete
LIRE VARIABLE PROCESS(-1;<>readyserveur;$readyici)
Fin tant que

			$readyici:=1
			ÉCRIRE VARIABLE PROCESS(-1;<>readyserveur;$readyici)  //on doit traiter cette requete d'abord

</code 4D>

J’imagine que ce type de fonctionnement est désuet et qu’il y a certainement mieux et plus rapide.

Que me conseillez-vous de faire

merci à vous tous
alain haerri

Oui, tu obtiendras beaucoup mieux et simple avec la propriété de méthode “exécuter sur serveur”. En gros, il te faut 2 méthodes avec cette propriété pour tout piloter depuis le client :
• envoyerDocument = le serveur reçoit en paramètres le document blobé par le client et les “informations de rangement” qui lui permettent de savoir où le déblober
• recevoirDocument = le serveur reçoit en paramètres les “informations de rangement” pour retrouver le document, le blober, et le retourner dans $0

Merci Arnaud,

Oui ça à l’air assez simple, mais avant que je m’y mette, j’ai deux questions

J’ai un tableau d’image à passer en paramètre, est-ce que ça va le faire

Il y a t’il un risque si plusieurs postes clients utilisent en même temps ces méthodes.

merci à toi

belle soirée

alain haerri

: Alain HAERRI

J’ai un tableau d’image à passer en paramètre, est-ce que ça va le
faire
Oui. En dehors du contexte d’exécution “sur serveur”, pour le développeur il est difficile de trouver les différences entre une méthode “normale” et une avec cette propriété.

Bonjour à tous,

Pour corriger mon application dans le sens de la proposition d’Arnaud,
Je créée une méthode qui reçoit deux paramètres et qui retourne via le $0 un tableau de chemin d’accès à des images.

Mais ça ne semble pas fonctionner.

la methode mrecherchecheminaccesimage à la fin est
<code 4D>
$0:=$tableaucheminsaccesimage
</code 4D>

et dans la méthode appelante j’ai

<code 4D>
TABLEAU TEXTE(tabcheminaccesimage;0)

tabcheminaccesimage:=mrecherchecheminaccesimage ([parametre]cheminaccesaudossierphoto+[identite]code)  // est executée sur le serveur (propriété de la methode)

</code 4D>

tabcheminaccesimage ne contient rien du tout

Avez vous une idée, je dois forcément mal m’y prendre

Merci à vous
Alain Haerri

Bonjour,

Une fonction ne peut pas retourner un tableau comme ceci.
Tel que vous l’avez écrit, vous retournez la valeur de l’élément sélectionné du tableau et pas son contenu.
À mon avis, le résultat dans la méthode appelante doit être 0.