Champs analytiques custom et leurs valeurs

Liste les champs analytiques custom de l'entreprise et leurs valeurs possibles via get_analytical_fields. Permet d'utiliser les dimensions analytiques spécifiques à chaque client.

↓ Télécharger le skill (.md)
87/100·🔍 Ponctuel·ExpertControllerFinance Analyst
ParamétrageAnalyse des dépensesget_analytical_fieldsget_analytical_field_values

🎯 But du skill

Liste les champs analytiques custom de l'entreprise et leurs valeurs possibles via get_analytical_fields. Permet d'utiliser les dimensions analytiques spécifiques à chaque client.

📊 Ce que ça produit

Champs analytiques custom avec leur label, valeurs possibles et clés d'utilisation dans les filtres.

⚡ Bénéfice

Avant

Champs analytiques inconnus — impossible à utiliser sans documentation interne ou accès admin.

Après

Référentiel complet des dimensions analytiques client, prêt à utiliser dans les requêtes.



# Champs analytiques custom et leurs valeurs

## Contexte

Les champs analytiques sont des dimensions personnalisées définies par chaque entreprise (ex: projet, BU, code événement) — distincts des cost centers natifs Spendesk. Ils permettent de taguer les payables avec des valeurs personnalisées.

Ces valeurs sont utilisées comme filtre dans `spendesk_analyze_spend(analyticalCodes=[id])`.

## Workflow en 2 étapes

### Étape 1 — Lister les champs analytiques

```json
{
  "tool": "get_analytical_fields",
  "params": {
    "companyId": "<companyId>"
  }
}
```

Pour chaque champ, noter :
- `id` : identifiant à passer à `get_analytical_field_values(fieldId)`
- `name` : libellé du champ (ex: "Analytic codes", "Projects", "Clients")
- `type` : `"list"` (valeurs énumérées) ou `"boolean"` (case à cocher)
- `archivedAt` : `null` si le champ est actif, sinon date d'archivage (champ décommissionné)
- `isSplittable` : si true, un payable peut avoir plusieurs valeurs de ce champ

### Étape 2 — Obtenir les valeurs d'un champ

```json
{
  "tool": "get_analytical_field_values",
  "params": {
    "companyId": "<companyId>",
    "fieldId": "<id du champ>"
  }
}
```

Retourne les valeurs du champ : `{ id, value, isDefault, archivedAt, createdAt, updatedAt }` — actives et archivées (`archivedAt` = null signifie active), avec pagination par curseur.

## Piège : les champs archivés sont toujours retournés (aucun filtre serveur)

Sur ce compte, `get_analytical_fields()` sans paramètre retourne **21 champs dont 16 avec `isArchived: true`**, malgré `includeArchived` par défaut = false. C'est le comportement documenté : champs actifs et archivés sont retournés, sans paramètre `includeArchived` ; l'état se lit dans `archivedAt`.

→ Toujours filtrer côté client sur `archivedAt: null` pour n'obtenir que les champs actifs.

Sur ce compte : 5 champs actifs sur 21 :

| ID | Nom | Type | Splittable |
|----|-----|------|-----------|
| `S1zHTdxe-` | Analytic codes | list | ✅ oui |
| `kdpholncfz8sdw` | Analytic codes 2021 | list | non |
| `ol-yyb9yal5frj` | B. Start Date (invoice) | list | non |
| `k9__lhhu9gki64` | C. End Date (invoice) | list | non |
| `e3ty_iz-69hgq9` | D. Schedule | list | non |

## Découverte critique : les valeurs analytiques = les expense categories

Les IDs des valeurs retournées par `get_analytical_field_values(fieldId="S1zHTdxe-")` sont **identiques** aux IDs retournés par `get_expense_categories`.

Exemple :
- `get_expense_categories` → "ABM" : `id = r96xprmx87jiso`
- `get_analytical_field_values("S1zHTdxe-")` → "ABM" : `id = r96xprmx87jiso` (idem)

→ Attention : `get_analytical_fields` exclut désormais le champ des catégories de dépenses, et `get_analytical_field_values` renvoie une erreur sur ce champ (utiliser `get_expense_categories`). Ne pas supposer que les IDs de catégories de dépenses fonctionnent dans `filters.analyticalCodes` : utiliser les IDs renvoyés par `get_analytical_field_values`. Les IDs de `get_expense_categories` peuvent être directement utilisés dans `spendesk_analyze_spend(analyticalCodes=[...])` sans passer par `get_analytical_field_values`.

## Utilisation dans spendesk_analyze_spend

```json
{
  "tool": "spendesk_analyze_spend",
  "params": {
    "companyId": "<companyId>",
    "fromDate": "2026-01-01",
    "toDate": "2026-06-30",
    "groupBy": ["analyticalCode"],
    "filters": { "analyticalCodes": ["r96xprmx87jiso", "lq0vse74ak0q_n"] }
  }
}
```

Les IDs à passer = IDs des valeurs retournées par `get_analytical_field_values`.

## Champs `boolean` — pas de values à fetch

Les champs `type: "boolean"` (ex: "Approved", "Hardware") n'ont pas de valeurs listables. Ils ne sont pas utilisables comme filtre dans `spendesk_analyze_spend`. `get_analytical_field_values` retournerait un tableau vide pour ces champs.

## Exemples de prompts utilisateur

- "Quels sont les codes analytiques disponibles pour filtrer les dépenses ?"
- "Donne-moi toutes les valeurs du champ analytique 'Analytic codes'"
- "Analyse les dépenses par code analytique sur H1 2026"

Comment installer ce skill

/
  1. 1
    Télécharger le fichier s37-analytical-fields-values.md via le bouton ci-dessus.
  2. 2
    Placer le fichier dans le répertoire .claude/ de votre projet (ou ~/.claude/ pour une installation globale).
    cp s37-analytical-fields-values.md .claude/s37-analytical-fields-values.md
  3. 3
    Utiliser dans Claude Code — le skill est automatiquement découvert. Décrivez votre besoin en langage naturel et Claude appliquera les instructions du skill.
💡 Assurez-vous que le MCP Spendesk est configuré dans votre .claude/settings.json avec les outils get_analytical_fields, get_analytical_field_values.

Skills similaires

★ Top
95/100·🔍 Ponctuel·Expert

Auditer la couverture du MCP

Sonde tous les outils MCP disponibles, re-évalue la couverture des 50 cas d'usages persona, détecte les nouveaux champs ou outils, et régénère le rapport d'analyse des gaps.

CFOControllerAP Manager
90/100·📅 Hebdo·Débutant

Demandes de carte via get_requests

Explique comment utiliser get_requests pour les demandes de carte et pourquoi les remboursements de frais n'y apparaissent pas. Évite une source de confusion fréquente entre deux workflows distincts.

ControllerFinance Analyst
90/100·🔍 Ponctuel·Intermédiaire

Cost centers actifs vs archivés

Distingue les centres de coût actifs des archivés via le bon usage de get_cost_centers. Évite le piège de la convention de nommage isArchived vs isActive qui est contre-intuitive.

ControllerFinance Analyst

Interested in AI Agent services or Custom Integrations?