|
Как получить данные с учетом отбора из табличного поля? |
☑ |
0
sanches2
24.11.11
✎
15:29
|
Привет. 8.1. Есть табличное поле. Источником данных для него слкжит табличная часть обработки. В табличную часть выгружаются документы и их суммы. У меня на форме есть текстовое поле, где по определенному алгоритму (зависящему от состава строк табличной части) идет расчет суммы. Все хорошо до момента когда делают отбор прямо в табличном поле. Моя сумма при этом не пересчитывается. Как получить из табличного поля все данные о документах с четом отбора?
Вот я нашел процедуру ПриПолученииДанных, в ней есть мое табличное поле, данные об его отборе, а как получить сумму документов исходя из отбора? Думал уже находить строки в табличной части исходя из отбора табличного поля, но там что угодно может быть указано (интервал между...), а строки в табличной части ищутся вроде как по равенству.
И еще, у меня есть в подвале табличного поля вывод общей суммы документов. Значение в нем я проставляю через ЭлементыФормы... В свойствах колонки не нашел что-то чтобы автоматом считался итог, есть такая возможность?
|
|
1
aleks-id
24.11.11
✎
15:33
|
|
|
2
ptiz
24.11.11
✎
15:33
|
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабПоле.Значение);
Для каждого ЭлементОтбора Из ТабПоле.ОтборСтрок Цикл
Если ЭлементОтбора.Использование Тогда
НовыйЭлемент = Построитель.Отбор.Добавить(ЭлементОтбора.ПутьКДанным, ЭлементОтбора.Имя, ЭлементОтбора.Представление);
НовыйЭлемент.ВидСравнения = ЭлементОтбора.ВидСравнения;
НовыйЭлемент.Значение = ЭлементОтбора.Значение;
НовыйЭлемент.ЗначениеС = ЭлементОтбора.ЗначениеС;
НовыйЭлемент.ЗначениеПо = ЭлементОтбора.ЗначениеПо;
НовыйЭлемент.Использование = Истина;
КонецЕсли;
КонецЦикла;
РезультатЗапроса = Построитель.Результат;
ТЗ = РезультатЗапроса.Выгрузить();
ТЗ.ВыбратьСтроку();
|
|
3
sanches2
24.11.11
✎
15:33
|
Спасибо
|
|
4
aleks-id
24.11.11
✎
16:22
|
(2) а зачем ты в цикле отбор обходишь то?
|
|
5
ptiz
24.11.11
✎
16:29
|
(4) А как иначе?
|
|
6
sanches2
24.11.11
✎
19:11
|
(6)
Вот из (1). Правда я сам пока слабо понимаю как это работает :)
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый
ОписаниеИсточникаДанных(ДокументСписокРеализацияТоваров);
Результат = Построитель.Результат; //отобранные строки типа РезультатЗапроса
тзБуф = Результат.Выгрузить();
|
|
7
Живой Ископаемый
24.11.11
✎
19:44
|
2(6) так у тебя ТЗ или Список? если список то отбор сразу идет довескомв источник данных. А с тЗ - не помню
|
|
8
sanches2
24.11.11
✎
22:00
|
Источником данных для табличного поля является Табличная часть обработки.
|
|
9
Живой Ископаемый
24.11.11
✎
22:20
|
пробовать нужно или читать СП... :) на память только <зачеркнуто>задроты</зачеркнуто> профессионалы знают...
|
|
10
sanches2
24.11.11
✎
22:25
|
Ага, попробую. Не успел проверить еще.
|
|
11
sanches2
25.11.11
✎
10:29
|
В итоге подошел вариант (2). Если не делать обход в цикле, то выходит таблица без учета отбора.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший