Modber Сообщество
профессионалов по 1С

Массив с номерами телефонов

Массив с номерами телефонов
  
Сообщений: 3

0
Заменил вывод в макет добавлением сначала в массив для анализа и суммирования повторов:
МассивНомерПрин.Добавить(НомерПрин);
МассивСуммаПрин.Добавить(СуммаПрин);
// Оплата.Параметры.НомерПрин=НомерПрин;
// Оплата.Параметры.СуммаПрин=СуммаПрин;
обвел красным на скриншоте где не выводит значения.
Не пойму что не так делаю и как исправить((
Сообщений: 3

0
Код 1C:
  1. //Проходим по всем строчкам отчета
  2. [align=left] Для Н2 = 0 по МассивНомерАбонента.Количество()-1 Цикл
    НомерПрин="";
  3. НомерНеПрин="";
  4. Оплата.Параметры.НомерПрин="";
  5. Оплата.Параметры.НомерНеПрин ="";
  6. Оплата.Параметры.СуммаПрин="";
  7. Оплата.Параметры.СуммаНеПрин="";
  8. //////////////////////////////////////////////////////////////
  9. //Проверяем последний ли номер в списке номеров и последняя ли строчка с этим номером или по этому номеру будут еще начисления
  10. Если Н2<>0 Тогда
     
    Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2-1] ТогдаВладелецНомера.Параметры.НомерВладельца=МассивНомерАбонента[Н2];
  11. ///Сравниваем номера с ФИО владельца и выводим совпадения
  12. Для НВ = 0 по МассивНВладелец.Количество()-1 Цикл
    Если МассивНомерАбонента[Н2]=МассивНВладелец[НВ]Тогда
     
    Владелец=МассивВладелец[НВ];
  13.  
  14. КонецЕсли;
    КонецЦикла;ВладелецНомера.Параметры.Владелец=Владелец;
  15. Владелец="";
  16. //////////////////////////////////////////////////////////
  17. Табдок.Вывести(ВладелецНомера);
  18.  
  19.  
  20. Иначе
    КонецЕсли;ИначеВладелецНомера.Параметры.НомерВладельца=МассивНомерАбонента[Н2];
  21. ///Сравниваем номера с ФИО владельца и выводим совпадения
  22. Для НВ = 0 по МассивНВладелец.Количество()-1 Цикл
    Если МассивНомерАбонента[Н2]=МассивНВладелец[НВ]Тогда
     
    Владелец=МассивВладелец[НВ];
  23.  
  24. КонецЕсли;
    КонецЦикла;ВладелецНомера.Параметры.Владелец=Владелец;
  25. Владелец="";
  26.  
  27. Табдок.Вывести(ВладелецНомера);
  28.  
  29.  
  30. КонецЕсли;
     
    //Проверяем платный номер или бесплатный
  31. Для Н = 0 по массивбесплатные.Количество()-1 Цикл
     
    Если МассивОписаниедействия[Н2]="Входящие" тогда
  32.  
  33. Если МассивИнициаторЗвонка[Н2]=массивбесплатные[Н] тогда
  34.  
  35. НомерПрин=МассивИнициаторЗвонка[Н2];
  36. СуммаПрин=МассивРазмерНачислений[Н2];
  37. НомерНеПрин="";
  38. СуммаНеПрин=0;
  39. Иначе
    Если НомерПрин="" тогда
  40. НомерНеПрин=МассивИнициаторЗвонка[Н2];
  41. СуммаНеПрин=МассивРазмерНачислений[Н2];
  42. НомерПрин=""; //*
  43. СуммаПрин=0; //*
  44.  
  45. КонецЕсли;
    // Сообщить("Платный");
  46.  
  47. Конецесли;
     
    ИначеЕсли МассивОписаниедействия[Н2]="" ТогдаНомерПрин="Покупка контента";
  48. СуммаПрин=МассивРазмерНачислений[Н2];
  49. НомерНеПрин=""; //*
  50. СуммаНеПрин=0; //*
  51.  
  52.  
  53. Иначе
    Если МассивПринимающийНомер[Н2]=массивбесплатные[Н] тогда
  54.  
  55.  
  56. НомерПрин=МассивПринимающийНомер[Н2];
  57. СуммаПрин=МассивРазмерНачислений[Н2];
  58. НомерНеПрин="";
  59. СуммаНеПрин=0;
  60. Иначе
    Если НомерПрин="" тогда
  61.  
  62. НомерНеПрин=МассивПринимающийНомер[Н2];
  63. СуммаНеПрин=МассивРазмерНачислений[Н2];
  64. НомерПрин="";
  65. СуммаПрин=0;
  66. Конецесли;
     
    // Сообщить("Платный");
  67.  
  68. Конецесли;
     
    КонецЕсли;
     
     
    КонецЦикла;
     
    Если Число(СуммаПрин)<>0 Тогда МассивНомерПрин.Добавить(НомерПрин);
  69. МассивСуммаПрин.Добавить(СуммаПрин);
  70.  
  71.  
  72. // Оплата.Параметры.НомерПрин=НомерПрин;
  73. // Оплата.Параметры.СуммаПрин=СуммаПрин;
  74. КонецЕсли;
    // КонецЕсли;
  75. Если Число(СуммаНеПрин)<>0 Тогда
    МассивНомерНеПрин.Добавить(НомерНеПрин);
  76. МассивСуммаНеПрин.Добавить(СуммаНеПрин);
  77. // Оплата.Параметры.НомерНеПрин=НомерНеПрин;
  78. //Оплата.Параметры.СуммаНеПрин=СуммаНеПрин;
  79. КонецЕсли;
    ////////////////////////////////////////////////////////////////////////
  80. //Группируем значения массива бесплатных номеров по номерам
  81.  
  82. Если Н2<>МассивНомерАбонента.Количество()-1 тогда
  83. Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда
     
    ТекущийИндекс = 0;
  84. ВсегоЭлементов = МассивНомерПрин.Количество();
  85. Пока ТекущийИндекс < ВсегоЭлементовЦикл
    Индекс2 = ТекущийИндекс + 1;
  86. Пока Индекс2 < ВсегоЭлементовЦикл
    Если МассивНомерПрин[Индекс2] = МассивНомерПрин[ТекущийИндекс] Тогда МассивН=Число(МассивСуммаПрин[Индекс2])+Число(МассивСуммаПрин[ТекущийИндекс]);
  87. МассивСуммаПрин[ТекущийИндекс]=МассивН;
  88.  
  89. МассивНомерПрин.Удалить(Индекс2);
  90. МассивСуммаПрин.Удалить(Индекс2);
  91. ВсегоЭлементов = ВсегоЭлементов - 1;
  92. Иначе
    Индекс2 = Индекс2 + 1;
  93. КонецЕсли;
    КонецЦикла; ТекущийИндекс = ТекущийИндекс + 1;
  94. КонецЦикла;
    КонецЕсли;КонецЕсли;
     
    ///////////////////////////////////////////////////////////////////////////////
  95. //Группируем значения массива платных номеров по номерам
  96.  
  97. Если Н2<>МассивНомерАбонента.Количество()-1 тогда
  98. Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда
     
    ТекущийИндекс = 0;
  99. ВсегоЭлементов = МассивНомерНеПрин.Количество();
  100.  
  101. Пока ТекущийИндекс < ВсегоЭлементовЦикл
    Индекс2 = ТекущийИндекс + 1;
  102. Пока Индекс2 < ВсегоЭлементовЦикл
    Если МассивНомерНеПрин[Индекс2] = МассивНомерНеПрин[ТекущийИндекс] Тогда МассивН=Число(МассивСуммаНеПрин[Индекс2])+Число(МассивСуммаНеПрин[ТекущийИндекс]);
  103. МассивСуммаНеПрин[ТекущийИндекс]=МассивН;
  104.  
  105. МассивНомерНеПрин.Удалить(Индекс2);
  106. МассивСуммаНеПрин.Удалить(Индекс2);
  107. ВсегоЭлементов = ВсегоЭлементов - 1;
  108. Иначе
    Индекс2 = Индекс2 + 1;
  109. КонецЕсли;
    КонецЦикла; ТекущийИндекс = ТекущийИндекс + 1;
  110. КонецЦикла;
    КонецЕсли;КонецЕсли;
     
     
    ////////////////////////////////////////////////////////////////////////
  111. Если Н2<>МассивНомерАбонента.Количество()-1 тогда
  112. Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда
     
     
    Для Н10=0 по МассивНомерПрин.Количество()-1 цикл
  113. Если Число(СуммаПрин)<>0 Тогда
     
    Оплата.Параметры.НомерПрин=МассивНомерПрин[Н10];
  114. Оплата.Параметры.СуммаПрин=МассивСуммаПрин[Н10];
  115. //чистка
  116. Оплата.Параметры.НомерНеПрин="";
  117. Оплата.Параметры.СуммаНеПрин=0;
  118. Табдок.Вывести(Оплата);
  119.  
  120. Сообщить(МассивНомерПрин[Н10]);
  121.  
  122.  
  123. КонецЕсли;
     
    конеццикла;
  124. Для Н10=0 по МассивНомерНеПрин.Количество()-1 цикл
  125. Если Число(СуммаНеПрин)<>0 Тогда
     
    Оплата.Параметры.НомерНеПрин=МассивНомерНеПрин[Н10];
  126. Оплата.Параметры.СуммаНеПрин=МассивСуммаНеПрин[Н10];
  127. //чистка
  128. Оплата.Параметры.НомерПрин="";
  129. Оплата.Параметры.СуммаПрин=0;
  130. Табдок.Вывести(Оплата);
  131.  
  132. КонецЕсли;
    конеццикла;
  133.  
  134. МассивНомерПрин.Очистить();
  135. МассивСуммаПрин.Очистить();
  136. МассивНомерНеПрин.Очистить();
  137. МассивСуммаНеПрин.Очистить();
  138. КонецЕсли;
    КонецЕсли;////////////////////////////////////////////////////
  139. Если СуммаПрин<>неопределено Тогда
     
    ИтогоПрин=ИтогоПрин2+СуммаПрин;
  140. ИтогоПрин2=ИтогоПрин;
  141.  
  142. ИтогоПрин4=ИтогоПрин3+СуммаПрин;
  143. ИтогоПрин3=ИтогоПрин4;
  144. КонецЕсли;
    ИтогоНеПрин=ИтогоНеПрин2+СуммаНеПрин;
  145. ИтогоНеПрин2=ИтогоНеПрин;
  146.  
  147. ИтогоНеПрин4=ИтогоНеПрин3+СуммаНеПрин;
  148. ИтогоНеПрин3=ИтогоНеПрин4;
  149.  
  150.  
  151. Если Н2<>0 Тогда
    Если Н2<>МассивНомерАбонента.Количество()-1 тогда
  152. Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2-1] Тогда
     
     
    Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда
     
    ИтогоПрин2=0;
  153. ИтогоНеПрин2=0;
  154. КонецЕсли;
    ИначеЕсли МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда
     
    ИтогоПрин2=0;
  155. ИтогоНеПрин2=0;
  156. КонецЕсли;
     
    КонецЕсли; КонецЕсли;КонецЕсли;
     
    НомерПрин="";
  157. СуммаПрин=0;
  158. НомерНеПрин="";
  159. СуммаНеПрин=0;
  160.  
  161. //////////////////////////////////////////////////////////////////
  162. Если ИтогоПрин<>неопределено Тогда
    Итоги.Параметры.ИтогоПрин=ИтогоПрин;
  163. Итоги.Параметры.ИтогоНеПрин=ИтогоНеПрин;
  164. Итоги.Параметры.НДСПрин=окр(ИтогоПрин/100*18,2);
  165. Итоги.Параметры.НДСНеПрин=окр(ИтогоНеПрин/100*18,2);
  166. Итоги.Параметры.ИтогоСНДСПрин=окр(ИтогоПрин+ИтогоПрин/100*18,2);
  167. Итоги.Параметры.ИтогоСНДСНеПрин=окр(ИтогоНеПрин+ИтогоНеПрин/100*18,2);
  168. КонецЕсли;
    /////////////////////////////////////////////////////////////////////////
  169. //////////////////////////////////////////////////////////////
  170. //Проверяем последний ли номер в списке номеров и последняя ли строчка с этим номером или по этому номеру будут еще начисления
  171. /// И подводит итоги по суммам по каждому номеру
  172. Если Н2<>0 Тогда
    Если Н2<>МассивНомерАбонента.Количество()-1 тогда
  173. Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда
    Табдок.Вывести(Итоги);
  174. Иначе
    КонецЕсли;ИначеТабдок.Вывести(Итоги);
  175.  
  176. КонецЕсли;
    КонецЕсли;КонецЦикла;[/align]
Редактировалось: 1 раз (Последний: 15 августа 2014 в 10:34)
В начало страницы 
|
Перейти на форум: