Эта расчетная позиция помимо своей позиции расчитывает и другие показатели.

Обратите внимание, что в памяти при этом создаются для каждого другого показателя сразу две переменных.

Число - для суммирования показателя.

Текстовая переменная - для сбора туда уникальных ID (GUID) элементов, которые опрошены в ходе расчета.



#include "tep_items_config.h"

string sProjInfoParameter = "LABPP ТЭП Площадь квартир, м2"; // имя параметра в информации о проекте
string sEdIzm = "м"+ iif(iHighLevelNumbersInEdIzm==1;smallnums("2");"2");
double dCalcResult;
string sCalcResult;
string sListGUID;
string sVersion = "1.01";
//<--
int main()
{
       cout << sProjInfoParameter << " " << sVersion << "\n";
       cout << "Слой маркеров квартир: " << GLOBAL_flat_markers_layer << "\n";

       int iarg1; double darg2; string sarg3;
       run_cpp("get_args", iarg1, darg2, sarg3);

       if (sarg3 == "Get sProjInfoParameter, sEdIzm and Help")
       {
               var_extern_set("sProjInfoParameter", sProjInfoParameter);
               var_extern_set("sEdIzm", sEdIzm);

               string sHelp = "Суммируем свойства из маркеров квартир на слое= \"" + GLOBAL_flat_markers_layer + "\"";

               var_extern_set("sHelp", sHelp);
               return 0;
       }

       if (sarg3 == "Get sCalcResult")
       {
               ac_request_special("load_elements_list", 1, "ObjectType", 2,
                       "", "EP", "Layer", "=", GLOBAL_flat_markers_layer, "", ""
               );
               int i, icount;
               ac_request("get_loaded_elements_list_count", 1);
               icount = ac_getnumvalue();
               coutvar << icount;
               double dvalue = 0;
               string sGUID;
               double s_flat_coeff, s_flat_without_logii, s_flat_living;
               for (i = 0; i < icount; i++)
               {
                       if (ac_process_window("SetPhase", "Площади квартир ТЭП", icount) == true)
                       {
                               ac_process_window("Close");
                               return -1;
                       }

                       ac_request("set_current_element_from_list", 1, i);

                       ac_request("get_object_property_value", GLOBAL_flat_markers_var_COMMONAREA);
                       dvalue = ac_getnumvalue();
                       dCalcResult += tsround(dvalue,1);
                       
                       ac_request("get_object_property_value", GLOBAL_flat_markers_var_COMMONAREACOEF);
                       dvalue = ac_getnumvalue();
                       s_flat_coeff += tsround(dvalue,1);

                       ac_request("get_object_property_value", GLOBAL_flat_markers_var_WITHOUTBALK);
                       dvalue = ac_getnumvalue();
                       s_flat_without_logii += tsround(dvalue,1);
                       
                       ac_request("get_object_property_value", GLOBAL_flat_markers_var_LIVING_AREA);
                       dvalue = ac_getnumvalue();
                       s_flat_living += tsround(dvalue,1);
                       
                       ac_request_special("get_element_value", "EP", "GuidAsText");
                       sGUID = ac_getstrvalue();
                       sListGUID += sGUID + "\n";
               }
               
               var_extern_set("s_flat_coeff", s_flat_coeff);
               var_extern_set("s_flat_without_logii", s_flat_without_logii);
               var_extern_set("s_flat_living", s_flat_living);
               
               sCalcResult = number_to_string_TEP(dCalcResult);
               var_extern_set("dCalcResult", dCalcResult);
               var_extern_set("sCalcResult", sCalcResult);
               var_extern_set("sListGuid", sListGUID);

               return 0;
       }
       return 0;
}

Created with the Personal Edition of HelpNDoc: Make your documentation accessible on any device with HelpNDoc