Sarpent
Гость
|
|
« : 13-07-2010 10:48 » |
|
задача такая - суммировать (поле сумма в табличной части документов), по документам, то есть подвести итог, в отчете реализовать отчести мне это удалось - через реквизит документа, и проведение я задействую функцию и подсчитываю итогувую сумму по документу и в отчете вывожу коректную сумму по документу, но действует это только при повторной записи, или при записи нового, сама сумма по полю "сумма" в запросе суммирует все, что нужно, но хотелось бы более детальной суммы - только по документу, по каждому документу.
|
|
|
Записан
|
|
|
|
kiser
Участник
Offline
|
|
« Ответ #1 : 14-07-2010 07:33 » |
|
немного не понял что именно нужно уточни пожалуйста, а лучше сбрось пару скринов и поясни где и что не так а что насчет общей суммы по реквизиту табличной части, то незачем ее записывать еще и в реквизит документа. Можно просто для реквизита табличной части поставить опцию "Итог по колонке", а потом при получении значения делать запрос Док.Итог("Сумма"), тогда не будет проблем с перезаписью
|
|
« Последнее редактирование: 14-07-2010 07:38 от kiser »
|
Записан
|
|
|
|
Sarpent
Гость
|
|
« Ответ #2 : 14-07-2010 08:08 » |
|
что я нагородил в запросе во вложении, нужно чтобы была группировака по контрагенту и по дате (но чтоб одинаковые контр. не перекрывали друга друга), и суммирование суммы по доку
|
|
|
Записан
|
|
|
|
AndyG
Постоялец
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
Постоялец
Offline
|
|
« Ответ #6 : 14-07-2010 08:42 » |
|
Sarpent, Не только звучит но и работает:)
|
|
|
Записан
|
|
|
|
Sarpent
Гость
|
|
« Ответ #7 : 14-07-2010 08:45 » |
|
недопонял как это реализуется, еще нужно увязать контрагента и дату
|
|
|
Записан
|
|
|
|
kiser
Участник
Offline
|
|
« Ответ #8 : 14-07-2010 08:53 » |
|
А если сделать выборку документов так: ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("НомерДок","Число",10,0); ТЗ.НоваяКолонка("ДатаДок","Дата"); ТЗ.НоваяКолонка("Контрагент","Строка",10,0); ТЗ.НоваяКолонка("Сумма","Число",10,0); ...
Док = СоздатьОбъект("Документ.ЭтотДокумент"); Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); Пока Док.ПолучитьДокумент()=1 цикл ТЗ.НоваяСтрока(); ТЗ.НомерДок=Док.Работа.НомерДок; ТЗ.ДатаДок=Док.Работа.ДатаДок; ТЗ.Контрагент=Док.Работа.Контрагент; ТЗ.Сумма=Док.Работа.Итог("Сумма"); ... КонецЦикла;
//Чтоб группировать по котрагенту используешь ТЗ.Сортировать("Контрагент");
|
|
|
Записан
|
|
|
|
AndyG
Постоялец
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
Постоялец
Offline
|
|
« Ответ #12 : 14-07-2010 20:07 » |
|
А где Обход группировки по доку? У тебя только 2 группировки, ты получаешь данные по контрагенту и дате.
Пока Запрос.Группировка(3) вот тут данные по документу конеццикла;
Реквизит Табличной части документа "Сумма" должен иметь свойство Итог по колонке;
|
|
« Последнее редактирование: 16-07-2010 04:46 от AndyG »
|
Записан
|
|
|
|
|