{"id":3814,"date":"2017-08-21T15:42:56","date_gmt":"2017-08-21T15:42:56","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/how-to-create-running-totals-in-netsuite-saved-searches-and-reports-2\/"},"modified":"2026-07-28T18:26:09","modified_gmt":"2026-07-28T18:26:09","slug":"comment-creer-des-totaux-cumules-dans-les-recherches-enregistrees-et-les-rapports-netsuite","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/comment-creer-des-totaux-cumules-dans-les-recherches-enregistrees-et-les-rapports-netsuite\/","title":{"rendered":"Comment cr\u00e9er des totaux cumul\u00e9s dans les recherches enregistr\u00e9es et les rapports NetSuite"},"content":{"rendered":"","protected":false},"template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","ga_subtitle":"NetSuite propose des fonctionnalit\u00e9s int\u00e9gr\u00e9es permettant de calculer des soldes cumul\u00e9s dans les rapports, ainsi que des fonctions analytiques SQL avanc\u00e9es pour calculer des totaux cumul\u00e9s dans les recherches enregistr\u00e9es.","ga_short_answer":"Les rapports NetSuite peuvent inclure des soldes cumul\u00e9s gr\u00e2ce \u00e0 une option d\u00e9di\u00e9e lors de la personnalisation. Pour les recherches enregistr\u00e9es, les totaux cumul\u00e9s peuvent \u00eatre calcul\u00e9s \u00e0 l\u2019aide de fonctions analytiques SQL telles que SUM() et OVER(), directement dans les champs de formule. Alors que les anciennes m\u00e9thodes faisaient appel \u00e0 SuiteScript, les fonctionnalit\u00e9s actuelles offrent une approche plus directe aux administrateurs.","ga_scenario":"Les utilisateurs ont souvent besoin d\u2019afficher une somme cumul\u00e9e ou un solde courant pour les donn\u00e9es financi\u00e8res ou de stock dans NetSuite. Cette fonctionnalit\u00e9 est essentielle pour suivre les totaux progressifs sur une s\u00e9rie de transactions ou d\u2019enregistrements, mais il peut s\u2019av\u00e9rer difficile de trouver une m\u00e9thode simple, tant pour les rapports standard que pour les recherches personnalis\u00e9es enregistr\u00e9es.","ga_solution":"Solde cumul\u00e9 dans les rapports NetSuite : NetSuite propose une option permettant d\u2019ajouter directement une colonne de solde cumul\u00e9 lors de la personnalisation des rapports. Cette fonctionnalit\u00e9 est disponible pour certaines colonnes par d\u00e9faut et pour toutes les colonnes ajout\u00e9es \u00e0 un rapport. En cochant l\u2019option \u00ab Solde cumul\u00e9 \u00bb pour une colonne de votre choix, une nouvelle colonne affichant le solde cumul\u00e9 sera ajout\u00e9e \u00e0 sa droite.Totaux cumul\u00e9s dans les recherches enregistr\u00e9es de NetSuite : pour les recherches enregistr\u00e9es, les totaux cumul\u00e9s peuvent \u00eatre obtenus \u00e0 l\u2019aide de fonctions analytiques SQL directement dans un champ de formule. La fonctionnalit\u00e9 de recherche enregistr\u00e9e de NetSuite prend en charge des expressions telles que SUM() OVER() pour calculer des valeurs cumul\u00e9es. Par exemple, pour obtenir un total cumul\u00e9 d\u2019un champ \u00ab montant \u00bb, une formule similaire \u00e0 SUM({amount}) OVER (ORDER BY {date_field}) pourrait \u00eatre utilis\u00e9e, o\u00f9 {amount} est le champ \u00e0 totaliser et {date_field} d\u00e9finit l\u2019ordre de cumul.Approche SuiteScript h\u00e9rit\u00e9e (SuiteScript 1.0) : par le pass\u00e9, le calcul de totaux cumul\u00e9s dans les recherches enregistr\u00e9es n\u00e9cessitait parfois l\u2019utilisation de code SuiteScript personnalis\u00e9. L\u2019exemple suivant illustre un mod\u00e8le SuiteScript 1.0 permettant de traiter les r\u00e9sultats de recherche et de remplir une sous-liste. Il est important de noter que SuiteScript 1.0 est d\u00e9sormais consid\u00e9r\u00e9 comme obsol\u00e8te et que SuiteScript 2.x constitue la norme actuelle pour les nouveaux d\u00e9veloppements. Cette approche n\u00e9cessite g\u00e9n\u00e9ralement des connaissances avanc\u00e9es en script.\n\n```\njavascript\/\/ assumes you setup the search and results which \/\/ include anypreprocessing to add running totals if ( searchresults.length > 0 )    {        \/\/ first, add the columns to the sublist based on the columnsin the results        var result  searchresults[0];        var column_list  result.getAllColumns();        var col_len  column_list.length;        for (i0; i<col_len; i++)        {            var col  column_list[i];            var col_name  col.getName();            var col_label col.getLabel();            var col_form  col.getFormula();            var col_func  col.getFunction();            nlapiLogExecution('DEBUG', 'column name, label, formula,function', col_name + '|'+ col_label + '|'+ col_form + '|'+ col_func);            \/\/ if there is no label, use the field name            if (!col_label)            {                col_label  col_name;            }            var fld_name  'custpage_fld_' + i;        }        \/\/ now, show the results; loop through each result        var rlen searchresults.length;        for (ctr0;ctr<rlen;ctr++)        {            var result  searchresults[ctr];            \/\/ for each result, loop the columns            for (i0; i<col_len; i++)            {                var col  column_list[i];                var col_name  col.getName();                var col_label col.getLabel();                \/\/ if there is no label, use the field name                if (!col_label)                {                    col_label  col_name;                }                var fld_name  'custpage_fld_' + i;                var value  result.getText(col);                if (!value)                {                    value  \"\";                }                if (value.length  0)                {                    value  result.getValue(col);                }                var lin  parseInt(ctr) + parseInt(1);                if (value)                {                    YOURLIST.setLineItemValue(fld_name, lin, value);                }            }        }    }\n```","ga_source_author":"","ga_source_author_email":"","ga_date_original":"2017-08-21T11:42:56-04:00","ga_date_verified":"2026-07-05","ga_source_subject":"Saved Search with Running Total Column","ga_ans_id":"ANS-0155","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"spot_check","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The claim that a script is necessary for running totals in NetSuite saved searches is outdated, as current NetSuite functionality allows for the use of SQL analytic functions (e.g., SUM() OVER()) directly within saved search formula fields to achieve running totals.; The provided SuiteScript example uses SuiteScript 1.0 functions (e.g., nlapiLogExecution, result.getAllColumns(), col.getName(), col.getLabel(), result.getText(col), result.getValue(col)), which are considered legacy and are not recommended for new development in NetSuite. SuiteScript 2.x is the current standard.","ga_final_category":"Saved Searches & Formulas","footnotes":""},"ga_category":[91,3,91],"ga_audience":[10],"ga_difficulty":[94],"class_list":["post-3814","qa_entry","type-qa_entry","status-publish","hentry","ga_category-recherches-enregistrees-et-formules","ga_category-saved-searches-formulas","ga_audience-developer-suitescript","ga_difficulty-avance"],"taxonomy_info":{"ga_category":[{"value":91,"label":"Recherches enregistr\u00e9es et formules"},{"value":3,"label":"Saved Searches & Formulas"},{"value":91,"label":"Recherches enregistr\u00e9es et formules"}],"ga_audience":[{"value":10,"label":"Developer\/SuiteScript"}],"ga_difficulty":[{"value":94,"label":"Avanc\u00e9"}]},"featured_image_src_large":[],"author_info":[],"comment_info":"","_links":{"self":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry"}],"about":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/types\/qa_entry"}],"version-history":[{"count":1,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3814\/revisions"}],"predecessor-version":[{"id":5735,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3814\/revisions\/5735"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=3814"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=3814"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=3814"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=3814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}