PDA

Просмотр полной версии : Массив с номерами телефонов



sonik25
15.08.2014, 11:07
Заменил вывод в макет добавлением сначала в массив для анализа и суммирования повторов:
МассивНомерПрин.Добавить(Н омерПрин);
МассивСуммаПрин.Добавить(С уммаПрин);
// Оплата.Параметры.НомерПрин =НомерПрин;
// Оплата.Параметры.СуммаПрин =СуммаПрин;

//Проходим по всем строчкам отчета
Для Н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] ТогдаТабдок.Вывести(Итоги);
Иначе
КонецЕсли;ИначеТабдок.Выве сти(Итоги);

КонецЕсли;
КонецЕсли;КонецЦикла;

sonik25
15.08.2014, 11:13
И выводит теперь не все значения, в чем загвоздка не знаю(( когда построчный вывод делал, все нормально было1341