Erreur DB ave compte limité

Bonjour à tous,

j’ai une installe en v11.0.4 qui évolue depuis la v6. je viens de faire un essai de limitation d’accès au dossiers des tiers par utilisateur(commerciaux) et je suis confronté à une erreur lors de la création d’une nouvelle pièce commerciale. quand je clique sur créer une nouvelle facture, impossible d’afficher les tiers, à la place j’ai une erreur SQL :
Modules/Applications: user, blockedlog, fckeditor, margin, banque, vatcalculator, ticket, expensereport, import, clicktodial, export, skype, oauth, webservices, workflow, tax, accounting, agenda, barcode, cron, commande, mailing, ecm, facture, fournisseur, holiday, printing, resource, salaries, societe, service, prelevement, projet, notification, cyberoffice, mycyberoffice, stock, product, categorie, supplier_proposal, factory, propal, customtooltip, expedition, contrat, ficheinter
Type gestionnaire de base de données: mysqli
Requête dernier accès en base en erreur: SELECT s.rowid, s.nom as name, s.name_alias, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.address, s.zip, s.town, dictp.code as country_code FROM llx_societe as s, llx_societe_commerciaux as sc LEFT OUTER JOIN llx_c_country as dictp ON dictp.rowid=s.fk_pays WHERE s.entity IN (1) AND (s.fournisseur=1) AND s.rowid = sc.fk_soc AND sc.fk_user = 10 ORDER BY nom ASC
Code retour dernier accès en base en erreur: DB_ERROR_NOSUCHFIELD
Information sur le dernier accès en base en erreur: Unknown column ‹ s.fk_pays › in ‹ on clause ›

si je cré la facture à partir du tiers tout se passe bien. pour info j’ai fais un test sur une nouvelle installe pas de problème.
si l’utilisateur n’a pas de limite -> (Étendre l’accès à tous les tiers (pas seulement ceux dont l’utilisateur est enregistré en tant que commercial), tout fonctionne normalement.

une idée ou je dois me rendre pour corriger cette erreur ?

Merci.

Bonjour,
Peux-tu vérifier que la table llx_societe contient bien la colonne fk_pays ?

Bonjour, oui fk_pays est bien là.

Ah, comme c’est étrange.
Est-ce que cette requête fonctionne depuis phpmyadmin ou autre ?

SELECT s.rowid, s.nom as name, s.name_alias, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.address, s.zip, s.town, dictp.code as country_code FROM llx_societe as s, llx_societe_commerciaux as sc LEFT OUTER JOIN llx_c_country as dictp ON dictp.rowid=s.fk_pays WHERE s.entity IN (1) AND (s.fournisseur=1) AND s.rowid = sc.fk_soc AND sc.fk_user = 10 ORDER BY nom ASC

non, idem
Erreur dans la requête (1054): Unknown column ‹ s.fk_pays › in ‹ on clause ›

je ne comprends pas pourquoi tout fonctionne avec -> Étendre l’accès à tous les tiers (pas seulement ceux dont l’utilisateur est enregistré en tant que commercial).

en même temps la requête ne fonctionne non plus pas sur base ou j’ai pas d’erreurs lors de la création d’une nouvelle pièce commerciale. ???

Sur une base différente, sc.fk_user = 10 peut ne pas exister.
D’ailleurs existe-il dans la base dont on parle ? C’est dans la table llx_societe_commerciaux

Bonjour, oui il y a bien deux 10

de toute façon si ca n’existe pas ca signifie qu’il n’y a pas encore de tiers d’associé à ce commercial mais ca ne doit pas empêcher la création sans erreurs.

si je fais un essai sur une nouvelle base et je passe sc.fk_user = 1 il y a toujours la même erreur.

Bon, j’ai testé la requête chez moi, et en effet, elle est mauvaise.
En voici une qui ne se plante pas :

SELECT s.rowid, s.nom as name, s.name_alias, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.address, s.zip, s.town, dictp.code as country_code FROM llx_societe as s LEFT JOIN llx_c_country as dictp ON dictp.rowid=s.fk_pays Left JOIN llx_societe_commerciaux as sc ON s.rowid = sc.fk_soc WHERE s.entity IN (1) AND (s.fournisseur=1) AND sc.fk_user = 10 ORDER BY nom ASC

Je n’ai pas vérifié la cohérence du résultat.
Donc la requête d’origine est malformée : direction github issues

merci, pour tes efforts. je vais voir ça de mon coté.

Parce que dans ce cas, la requête envoyée n’est pas la même.
Dans ton premier message, il manque l’indication de l’URL qui a créer l’erreur. Si tu n’as pas de compte github, je peux déposer le rapport. Il faudrait dans ce cas aussi me préciser comment tu indiques que tu restreins la base aux commerciaux.

Bonjour,
j’ai exactement le meme message d’erreur , as tu trouver la solution?
merci

Gestionnaire de menu: eldy_menu.php

Modules/Applications: user, cron, commande, facture, fournisseur, printing, resource, paypal, salaries, societe, service, variants, externalsite, propal, ticket, contrat, supplier_proposal, ficheinter, banque, prelevement, margin, product, stock, projet, bookmark, infraspack, tax, emailcollector, comptabilite, agenda, import, categorie, fckeditor, export
Type gestionnaire de base de données: mysqli
Requête dernier accès en base en erreur: SELECT s.rowid, s.nom as name, s.name_alias, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.address, s.zip, s.town, dictp.code as country_code FROM i679_societe as s, i679_societe_commerciaux as sc LEFT OUTER JOIN i679_c_country as dictp ON dictp.rowid=s.fk_pays WHERE s.entity IN (1) AND ((s.client = 1 OR s.client = 2 OR s.client = 3) AND status=1) AND s.rowid = sc.fk_soc AND sc.fk_user = 3 ORDER BY nom ASC
Code retour dernier accès en base en erreur: DB_ERROR_NOSUCHFIELD
Information sur le dernier accès en base en erreur: Unknown column ‹ s.fk_pays › in ‹ on clause ›

Bonjour,
Il est anormal que la table i679_societe n’ait pas la colonne fk_pays.
Vérifie ce point. Ce peut être le signe qu’une migration n’a pas été faite complètement.

Bonjour.
La ligne fk_pays est bien présente dans i679_societe

Bonjour,
Quand je teste la requête dans mariadb, j’obtiens en effet la même erreur.
Il faut reporter ce souci sur https://github.com/Dolibarr/dolibarr/issues . Je n’ai pas trouvé de rapport similaire.
Il faudrait ajouter l’URL qui est en erreur.