| 
			| 
					
						| 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 » |  Записан | 
 |  |  | 
	|  |