Имя: Пароль:
1C
1С v8
Как получить данные с учетом отбора из табличного поля?
,
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). Если не делать обход в цикле, то выходит таблица без учета отбора.