Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 07:20

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

Автор Николай, 14 авг 2014, 07:57

0 Пользователей и 1 гость просматривают эту тему.

Николай

В отчет из массива выводятся данные только по одной из колонок, либо принятой либо непринятой сумме и номеру:
       
             Если  МассивНомерАбонента[Н2]<>МассивНомерАбонента[Н2+1]  Тогда
                               Для Н10=0 по МассивНомерПрин.Количество()-1 цикл
                     Если Число(СуммаПрин)<>0  Тогда
                 Оплата.Параметры.НомерПрин=МассивНомерПрин[Н10];
              Оплата.Параметры.СуммаПрин=МассивСуммаПрин[Н10];
             Табдок.Вывести(Оплата);
                         Сообщить(МассивНомерПрин[Н10]);
                         КонецЕсли;
                       конеццикла;
         Для Н10=0 по МассивНомерНеПрин.Количество()-1 цикл
                        Если Число(СуммаНеПрин)<>0  Тогда
                      Оплата.Параметры.НомерНеПрин=МассивНомерНеПрин[Н10];
                            Оплата.Параметры.СуммаНеПрин=МассивСуммаНеПрин[Н10];
                             Табдок.Вывести(Оплата);
                                              КонецЕсли;
                 конеццикла;
                          МассивНомерПрин.Очистить();
                         МассивСуммаПрин.Очистить();
                         МассивНомерНеПрин.Очистить();
                         МассивСуммаНеПрин.Очистить();
              КонецЕсли;
     

Николай

Красным обвел места куда не выводятся почему-то значения. Ссылка на скриншот https://yadi.sk/i/WqU6sjtmZbQkW

LexaK

какая-то корявая у вас программа, но ошибка в следующем, когда готовите строку для вывода, надо заполнять ВСЕ поля!!! даже если они пустые!!! так как там могут остаться данные от предыдущего заполнения, поэтому ваш код надо поправить следующим образом, добавить очистку полей.
пример:

Для Н10=0 по МассивНомерПрин.Количество()-1 цикл
Если Число(СуммаПрин)<>0  Тогда
Оплата.Параметры.НомерПрин=МассивНомерПрин[Н10];
Оплата.Параметры.СуммаПрин=МассивСуммаПрин[Н10];
//чистка
Оплата.Параметры.НомерНеПрин="";
Оплата.Параметры.СуммаНеПрин=0;
Табдок.Вывести(Оплата);
Сообщить(МассивНомерПрин[Н10]);
КонецЕсли;
конеццикла;

Для Н10=0 по МассивНомерНеПрин.Количество()-1 цикл
Если Число(СуммаНеПрин)<>0  Тогда
Оплата.Параметры.НомерНеПрин=МассивНомерНеПрин[Н10];
Оплата.Параметры.СуммаНеПрин=МассивСуммаНеПрин[Н10];
//чистка
Оплата.Параметры.НомерПрин="";
Оплата.Параметры.СуммаПрин=0;
Табдок.Вывести(Оплата);
КонецЕсли;
конеццикла;

Попробуйте должно помочь.
если помогло нажмите: Спасибо!

Николай

Очистку полей я делаю при заполнении массивов значениями из колонок табличного поля. Если делал вывод построчно без массива то все работало нормально. Но массив понадобился для суммирования по одинаковым номерам. Тоесть там где я делал  // Оплата.Параметры.НомерНеПрин=НомерНеПрин;
            //Оплата.Параметры.СуммаНеПрин=СуммаНеПрин;
я поставил              МассивНомерНеПрин.Добавить(НомерНеПрин);
                        МассивСуммаНеПрин.Добавить(СуммаНеПрин); 
теперь же не могу из массива эти записи грамотно вывести, вот в чем проблема... Прикрепил же скриншот, у меня же не пустые значения не выводятся, а суммы, которые в поле "итого". Для первой строки не выводится например 0,55

LexaK

отсортируйте таблицу по телефонам и ни какие массивы не нужны
а Сумму Итог по телефону накапливаете в цикле, как все нормальные люди делают, смотри примеры в стандартной печати документов,
или используйте итоги в запросе, тогда соответственно обход запроса по группировкам без подсчета итоговых сумм.
(если это для вас не слишком сложно)

пример итогового суммирования
...
СуммаПринИтогПоТелефону = СуммаПринИтогПоТелефону + СтрокаТаблицы.СуммаПрин
СуммаНеПринИтогПоТелефону = СуммаНеПринИтогПоТелефону + СтрокаТаблицы.СуммаНеПрин
...

 
если помогло нажмите: Спасибо!

Николай

Во первых СуммаПринИтогПоТелефону = СуммаПринИтогПоТелефону + СтрокаТаблицы.СуммаПрин работать не будет, это вам не С++. Для этих целей нужна промежуточная переменная.
А теперь вернемся к проблеме, таблица из трех колонок, ТелефоныАбонентов, ВходящиеТелефоны и Исходящие телефоны. Так как обход я делаю по первой колонке а выбираю в массивы значения из второй или из третьей в зависимости от: Входящий звонок или Исходящий, то сортировать до отбора я не могу, а могу только после обхода и группировке по ТелефоныАбонентов.
Добавлено: 15 авг 2014, 09:00


Что нет никаких мыслей больше?

TreeDogNight

Цитата: Николай от 14 авг 2014, 14:43
Во первых СуммаПринИтогПоТелефону = СуммаПринИтогПоТелефону + СтрокаТаблицы.СуммаПрин работать не будет, это вам не С++. Для этих целей нужна промежуточная переменная.
Так в чём же проблема создать эту промежуточную переменную?
ПромежуточнаяПеременная = 0;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск