Показано с 1 по 2 из 2
-
15.08.2014, 12:07 #1
- Регистрация
- 15.08.2014
- Сообщений
- 2
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Массив с номерами телефонов
Заменил вывод в макет добавлением сначала в массив для анализа и суммирования повторов:
МассивНомерПрин.Добавить(Н омерПрин);
МассивСуммаПрин.Добавить(С уммаПрин);
// Оплата.Параметры.НомерПрин =НомерПрин;
// Оплата.Параметры.СуммаПрин =СуммаПрин;
Код://Проходим по всем строчкам отчета [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]
-
15.08.2014, 12:13 #2
- Регистрация
- 15.08.2014
- Сообщений
- 2
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
И выводит теперь не все значения, в чем загвоздка не знаю(( когда построчный вывод делал, все нормально былоОтчет3.JPG
Социальные закладки