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

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

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

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

0
[code=1C] //Проходим по всем строчкам отчета [align=left] Для Н2 = 0 по МассивНомерАбонента.Количество()-1 Цикл НомерПрин=""; НомерНеПрин=""; Оплата.Параметры.НомерПрин=""; Оплата.Параметры.НомерНеПрин =""; Оплата.Параметры.СуммаПрин=""; Оплата.Параметры.СуммаНеПрин=""; ////////////////////////////////////////////////////////////// //Проверяем последний ли номер в списке номеров и последняя ли строчка с этим номером или по этому номеру будут еще начисления Если Н2<>0 Тогда Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2-1] Тогда ВладелецНомера.Параметры.НомерВладельца=МассивНомерАбонента[Н2]; ///Сравниваем номера с ФИО владельца и выводим совпадения Для НВ = 0 по МассивНВладелец.Количество()-1 Цикл Если МассивНомерАбонента[Н2]=МассивНВладелец[НВ]Тогда Владелец=МассивВладелец[НВ]; КонецЕсли; КонецЦикла; ВладелецНомера.Параметры.Владелец=Владелец; Владелец=""; ////////////////////////////////////////////////////////// Табдок.Вывести(ВладелецНомера); Иначе КонецЕсли; Иначе ВладелецНомера.Параметры.НомерВладельца=МассивНомерАбонента[Н2]; ///Сравниваем номера с ФИО владельца и выводим совпадения Для НВ = 0 по МассивНВладелец.Количество()-1 Цикл Если МассивНомерАбонента[Н2]=МассивНВладелец[НВ]Тогда Владелец=МассивВладелец[НВ]; КонецЕсли; КонецЦикла; ВладелецНомера.Параметры.Владелец=Владелец; Владелец=""; Табдок.Вывести(ВладелецНомера); КонецЕсли; //Проверяем платный номер или бесплатный Для Н = 0 по массивбесплатные.Количество()-1 Цикл Если МассивОписаниедействия[Н2]="Входящие" тогда Если МассивИнициаторЗвонка[Н2]=массивбесплатные[Н] тогда НомерПрин=МассивИнициаторЗвонка[Н2]; СуммаПрин=МассивРазмерНачислений[Н2]; НомерНеПрин=""; СуммаНеПрин=0; Иначе Если НомерПрин="" тогда НомерНеПрин=МассивИнициаторЗвонка[Н2]; СуммаНеПрин=МассивРазмерНачислений[Н2]; НомерПрин=""; //* СуммаПрин=0; //* КонецЕсли; // Сообщить("Платный"); Конецесли; ИначеЕсли МассивОписаниедействия[Н2]="" Тогда НомерПрин="Покупка контента"; СуммаПрин=МассивРазмерНачислений[Н2]; НомерНеПрин=""; //* СуммаНеПрин=0; //* Иначе Если МассивПринимающийНомер[Н2]=массивбесплатные[Н] тогда НомерПрин=МассивПринимающийНомер[Н2]; СуммаПрин=МассивРазмерНачислений[Н2]; НомерНеПрин=""; СуммаНеПрин=0; Иначе Если НомерПрин="" тогда НомерНеПрин=МассивПринимающийНомер[Н2]; СуммаНеПрин=МассивРазмерНачислений[Н2]; НомерПрин=""; СуммаПрин=0; Конецесли; // Сообщить("Платный"); Конецесли; КонецЕсли; КонецЦикла; Если Число(СуммаПрин)<>0 Тогда МассивНомерПрин.Добавить(НомерПрин); МассивСуммаПрин.Добавить(СуммаПрин); // Оплата.Параметры.НомерПрин=НомерПрин; // Оплата.Параметры.СуммаПрин=СуммаПрин; КонецЕсли; // КонецЕсли; Если Число(СуммаНеПрин)<>0 Тогда МассивНомерНеПрин.Добавить(НомерНеПрин); МассивСуммаНеПрин.Добавить(СуммаНеПрин); // Оплата.Параметры.НомерНеПрин=НомерНеПрин; //Оплата.Параметры.СуммаНеПрин=СуммаНеПрин; КонецЕсли; //////////////////////////////////////////////////////////////////////// //Группируем значения массива бесплатных номеров по номерам Если Н2<>МассивНомерАбонента.Количество()-1 тогда Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда ТекущийИндекс = 0; ВсегоЭлементов = МассивНомерПрин.Количество(); Пока ТекущийИндекс < ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 < ВсегоЭлементов Цикл Если МассивНомерПрин[Индекс2] = МассивНомерПрин[ТекущийИндекс] Тогда МассивН=Число(МассивСуммаПрин[Индекс2])+Число(МассивСуммаПрин[ТекущийИндекс]); МассивСуммаПрин[ТекущийИндекс]=МассивН; МассивНомерПрин.Удалить(Индекс2); МассивСуммаПрин.Удалить(Индекс2); ВсегоЭлементов = ВсегоЭлементов - 1; Иначе Индекс2 = Индекс2 + 1; КонецЕсли; КонецЦикла; ТекущийИндекс = ТекущийИндекс + 1; КонецЦикла; КонецЕсли; КонецЕсли; /////////////////////////////////////////////////////////////////////////////// //Группируем значения массива платных номеров по номерам Если Н2<>МассивНомерАбонента.Количество()-1 тогда Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда ТекущийИндекс = 0; ВсегоЭлементов = МассивНомерНеПрин.Количество(); Пока ТекущийИндекс < ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 < ВсегоЭлементов Цикл Если МассивНомерНеПрин[Индекс2] = МассивНомерНеПрин[ТекущийИндекс] Тогда МассивН=Число(МассивСуммаНеПрин[Индекс2])+Число(МассивСуммаНеПрин[ТекущийИндекс]); МассивСуммаНеПрин[ТекущийИндекс]=МассивН; МассивНомерНеПрин.Удалить(Индекс2); МассивСуммаНеПрин.Удалить(Индекс2); ВсегоЭлементов = ВсегоЭлементов - 1; Иначе Индекс2 = Индекс2 + 1; КонецЕсли; КонецЦикла; ТекущийИндекс = ТекущийИндекс + 1; КонецЦикла; КонецЕсли; КонецЕсли; //////////////////////////////////////////////////////////////////////// Если Н2<>МассивНомерАбонента.Количество()-1 тогда Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда Для Н10=0 по МассивНомерПрин.Количество()-1 цикл Если Число(СуммаПрин)<>0 Тогда Оплата.Параметры.НомерПрин=МассивНомерПрин[Н10]; Оплата.Параметры.СуммаПрин=МассивСуммаПрин[Н10]; //чистка Оплата.Параметры.НомерНеПрин=""; Оплата.Параметры.СуммаНеПрин=0; Табдок.Вывести(Оплата); Сообщить(МассивНомерПрин[Н10]); КонецЕсли; конеццикла; Для Н10=0 по МассивНомерНеПрин.Количество()-1 цикл Если Число(СуммаНеПрин)<>0 Тогда Оплата.Параметры.НомерНеПрин=МассивНомерНеПрин[Н10]; Оплата.Параметры.СуммаНеПрин=МассивСуммаНеПрин[Н10]; //чистка Оплата.Параметры.НомерПрин=""; Оплата.Параметры.СуммаПрин=0; Табдок.Вывести(Оплата); КонецЕсли; конеццикла; МассивНомерПрин.Очистить(); МассивСуммаПрин.Очистить(); МассивНомерНеПрин.Очистить(); МассивСуммаНеПрин.Очистить(); КонецЕсли; КонецЕсли; //////////////////////////////////////////////////// Если СуммаПрин<>неопределено Тогда ИтогоПрин=ИтогоПрин2+СуммаПрин; ИтогоПрин2=ИтогоПрин; ИтогоПрин4=ИтогоПрин3+СуммаПрин; ИтогоПрин3=ИтогоПрин4; КонецЕсли; ИтогоНеПрин=ИтогоНеПрин2+СуммаНеПрин; ИтогоНеПрин2=ИтогоНеПрин; ИтогоНеПрин4=ИтогоНеПрин3+СуммаНеПрин; ИтогоНеПрин3=ИтогоНеПрин4; Если Н2<>0 Тогда Если Н2<>МассивНомерАбонента.Количество()-1 тогда Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2-1] Тогда Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда ИтогоПрин2=0; ИтогоНеПрин2=0; КонецЕсли; Иначе Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда ИтогоПрин2=0; ИтогоНеПрин2=0; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; НомерПрин=""; СуммаПрин=0; НомерНеПрин=""; СуммаНеПрин=0; ////////////////////////////////////////////////////////////////// Если ИтогоПрин<>неопределено Тогда Итоги.Параметры.ИтогоПрин=ИтогоПрин; Итоги.Параметры.ИтогоНеПрин=ИтогоНеПрин; Итоги.Параметры.НДСПрин=окр(ИтогоПрин/100*18,2); Итоги.Параметры.НДСНеПрин=окр(ИтогоНеПрин/100*18,2); Итоги.Параметры.ИтогоСНДСПрин=окр(ИтогоПрин+ИтогоПрин/100*18,2); Итоги.Параметры.ИтогоСНДСНеПрин=окр(ИтогоНеПрин+ИтогоНеПрин/100*18,2); КонецЕсли; ///////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// //Проверяем последний ли номер в списке номеров и последняя ли строчка с этим номером или по этому номеру будут еще начисления /// И подводит итоги по суммам по каждому номеру Если Н2<>0 Тогда Если Н2<>МассивНомерАбонента.Количество()-1 тогда Если МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1] Тогда Табдок.Вывести(Итоги); Иначе КонецЕсли; Иначе Табдок.Вывести(Итоги); КонецЕсли; КонецЕсли; КонецЦикла;[/align][/code]
Редактировалось: 1 раз (Последний: 15 августа 2014 в 10:34)
В начало страницы 
|
Перейти на форум: