Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: проблема с суммированием  (Прочитано 13989 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sarpent
Гость
« : 13-07-2010 10:48 » 

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

by
Offline Offline

« Ответ #1 : 14-07-2010 07:33 » 

немного не понял что именно нужно
уточни пожалуйста, а лучше сбрось пару скринов и поясни где и что не так
а что насчет общей суммы по реквизиту табличной части, то незачем ее записывать еще и в реквизит документа. Можно просто для реквизита табличной части поставить опцию "Итог по колонке", а потом при получении значения делать запрос Док.Итог("Сумма"), тогда не будет проблем с перезаписью
« Последнее редактирование: 14-07-2010 07:38 от kiser » Записан
Sarpent
Гость
« Ответ #2 : 14-07-2010 08:08 » 

что я нагородил в запросе во вложении,
нужно чтобы была группировака по контрагенту и по дате (но чтоб одинаковые контр. не перекрывали друга друга), и суммирование суммы по доку

* 123456.bmp (400.66 Кб - загружено 873 раз.)
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #3 : 14-07-2010 08:13 » 

Sarpent,
А обход группировки Док делаешь?
Где вообще Группировка ДОК??
Док=Документ.Работа.ТекущийДокумент;
....
Группировка Док;

« Последнее редактирование: 14-07-2010 08:24 от AndyG » Записан
Sarpent
Гость
« Ответ #4 : 14-07-2010 08:38 » 

да, но уже исправился
Записан
Sarpent
Гость
« Ответ #5 : 14-07-2010 08:40 » 

немного не понял что именно нужно
уточни пожалуйста, а лучше сбрось пару скринов и поясни где и что не так
а что насчет общей суммы по реквизиту табличной части, то незачем ее записывать еще и в реквизит документа. Можно просто для реквизита табличной части поставить опцию "Итог по колонке", а потом при получении значения делать запрос Док.Итог("Сумма"), тогда не будет проблем с перезаписью
насчет Док.Итог("Сумма"), звечит не плохо
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #6 : 14-07-2010 08:42 » 

Sarpent,
Не только звучит но и работает:)
Записан
Sarpent
Гость
« Ответ #7 : 14-07-2010 08:45 » 

недопонял как это реализуется, еще нужно увязать контрагента и дату
Записан
kiser
Участник

by
Offline Offline

« Ответ #8 : 14-07-2010 08:53 » 

А если сделать выборку документов так:
Код:
ТЗ  = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("НомерДок","Число",10,0);
ТЗ.НоваяКолонка("ДатаДок","Дата");
ТЗ.НоваяКолонка("Контрагент","Строка",10,0);
ТЗ.НоваяКолонка("Сумма","Число",10,0);
...

Док    = СоздатьОбъект("Документ.ЭтотДокумент");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
Пока Док.ПолучитьДокумент()=1 цикл
        ТЗ.НоваяСтрока();
ТЗ.НомерДок=Док.Работа.НомерДок;
ТЗ.ДатаДок=Док.Работа.ДатаДок;
        ТЗ.Контрагент=Док.Работа.Контрагент;
        ТЗ.Сумма=Док.Работа.Итог("Сумма");
        ...
КонецЦикла;

//Чтоб группировать по котрагенту используешь
ТЗ.Сортировать("Контрагент");
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #9 : 14-07-2010 09:02 » 

Не мудрите ребята
Sarpent,

Группировка Конр
Группировка День
Группировка Док

Не забудь обход по группировкам:)

Твоя функция СС должна сработать, а вот Итог("Сумма") тут не подходит, самому придется подсчитывать по группировкам
« Последнее редактирование: 14-07-2010 09:22 от AndyG » Записан
Sarpent
Гость
« Ответ #10 : 14-07-2010 09:28 » 

Код:
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос

Расшифровка = СоздатьОбъект("СписокЗначений");
    Расшифровка.Установить("ВыбИсполнитель", "ВыбИсполнитель");

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|Исполнитель = Документ.Работа.Исполнитель;
|Док=Документ.Работа.ТекущийДокумент;
|Конт = Документ.Работа.Контрагент;
|Сумма = Документ.Работа.Сумма;
|Итог = Документ.Работа.ИтогСумма;
|Закрыта = Документ.Работа.Закрыта;
|Косяк = Документ.Работа.Косяк;
|Функция СС = Сумма(Сумма);
|Условие(Закрыта = 1);
|Группировка Конт;
|Группировка День;
|Группировка Док;
|Условие(Исполнитель = ВыбИсполнитель);
|"//}}ЗАПРОС
;
//|Группировка Контрагент упорядочить по Контрагент.Наименование;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
    Таб.ВывестиСекцию("ДатаРаботы");
КонецЦикла;
// Заполнение полей Исполнитель
Таб.ВывестиСекцию("РаботыИсполнителя");
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
Дату не отображает корректно.
Записан
Sarpent
Гость
« Ответ #11 : 14-07-2010 11:23 » 

с датой разобрался, со всем разобрался, кроме суммы по доку, выводит только сумму одной позиции в табличной части, а итог нет
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #12 : 14-07-2010 20:07 » 

А где Обход группировки по доку?
У тебя только 2 группировки, ты получаешь данные по контрагенту и дате.

Пока Запрос.Группировка(3)
     вот тут данные по документу
конеццикла;

Реквизит Табличной части документа "Сумма" должен иметь свойство Итог по колонке;
« Последнее редактирование: 16-07-2010 04:46 от AndyG » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines