//******************************************************
// Задать код квартиры в соответствии с набором помещений
// выполнять перед расчетом площади квартиры
// v1.0
//******************************************************

int main() {

 cout << "Присвоение квартире кода по набору помещений v 1.0" << "\n";
 cout << "Старт программы" << "\n";

 int ires;
 int icount;

 int ObjectDescrFlat;
 object("create","ac_element_guid",ObjectDescrFlat);

 int index = 0;
 ac_request("store_cur_element_to_descr",ObjectDescrFlat); // считываем сразу текущий элемент, т.к. из него пришло событие
 ac_request("get_flat_rooms", ObjectDescrFlat, 5); // заполнить список элементов №5 элементами комнат (зон) подключенных к маркеру квартиры (как в Солярис)
  
 ires = ac_request("get_loaded_elements_list_count",5);
 icount = ac_getnumvalue();
 cout << "\nвсего помещений в элементе="<<icount<< "\n";

 string zonecatcode;
 int count1001=0;
 int count1007=0;
 int count1008=0;

 int i;
 for(i=0;i<icount;i++)
 {
  ac_request("set_current_element_from_list",5, i);
  ac_request("get_gdlelem_property_value","ZoneCatCode");
  zonecatcode = ac_getstrvalue();
  cout << "Категория зоны =" << zonecatcode << "\n";

  if(zonecatcode=="1001") { count1001++; } //Комнаты
  if(zonecatcode=="1007") { count1007++; } //Кухни-ниши
  if(zonecatcode=="1008") { count1008++; } //Кухни
 }

 string alpha;
 int roomcount;
 string resultFlatCode = "";

 if(count1007==0)
 {
  alpha = "ККК";
  roomcount = count1001;
 }
 else if(count1007 > 0)&&(count1001==1)
 {
  alpha = "Ст";
  roomcount = count1001+count1007-1;
 }
 else if(count1007 > 0)&&(count1001 > 1)
 {
  alpha = "Е";
  roomcount = count1001+count1007-1;
 }


 resultFlatCode = itoa(roomcount) + alpha;
    cout << "Код квартиры = "<< resultFlatCode << "\n";
 
 // записываем в маркер квартиры
 ac_request("set_current_element_from_descr",ObjectDescrFlat);         // установить текущий элемент из guid дескриптора
 ac_request("set_object_property_value","TS_ROOMS", roomcount);        // установить количество комнат
 ac_request("set_object_property_value","TS_AUTOPREFIX", 0);           // отключить автопрефикс
 ac_request("set_object_property_value","TS_PREFIXNUMROOMS", "");      // обнулить префикс в коде квартиры
 ac_request("set_object_property_value","TS_AUTOPOSTFIX", 0);          // отключить автопостфикс
 ac_request("set_object_property_value","TS_POSTFIXNUMROOMS", alpha);  // установить постфикс в коде квартиры
 ac_request("set_object_property_value","TS_AUTOCALCRUMS", 0);         // отключить автоподсчет комнат при расчете площадей

 ac_request("elem_user_property","set","Кв_тип",resultFlatCode);

 object("delete",ObjectDescrFlat);
 cout << "Завершение программы" << "\n";
}