|
Как бы вывести КоличествоРазличных в подвал? | ☑ | ||
---|---|---|---|---|
0
Lenka_Boo
23.08.12
✎
11:33
|
Что-то не могу сообразить как этому подступиться...
Дано: Табличное поле в документе на обычной форме. Есть подвал с итогами (естественно только по числовым колонка). Нужно: Чтоб в итоге колонки, где данные подбираются из справочника, показывалось КоличествоРазличных. Дополнительная сложность: В табличном поле есть возможность использования фильтра, т.е. отбора и сортировки строк, который не влияет на ТабличнуюЧасть документа. Нужно, чтоб КоличествоРазличных считалось с учетом этих отборов. |
|||
1
Lenka_Boo
24.08.12
✎
07:23
|
Вообще никаких идей нет?
|
|||
2
ZloyProger
24.08.12
✎
07:40
|
(1) Почему нет? В процедуру ПриОбновленииОтображения() засунуть запрос с учетом отбора в списке и все.
|
|||
3
ZloyProger
24.08.12
✎
07:40
|
+(2) Хотя не айс, тормозить будет..
|
|||
4
ZloyProger
24.08.12
✎
07:42
|
Мдя.. (2) и (3) удалить, невнимательно прочитал( Сорри.. Ща покумекаю, мб чего и подскажу дельного, решал нечто подобное.
|
|||
5
Lenka_Boo
24.08.12
✎
07:43
|
(2) Как перехватить какой отбор использовали?
Мне пока еще перебор в цикле предложили... :\ |
|||
6
ZloyProger
24.08.12
✎
07:44
|
(5) Какой тип у табличного поля? Что в нем?
|
|||
7
Lenka_Boo
24.08.12
✎
07:47
|
(6) Справочник
|
|||
8
ZloyProger
24.08.12
✎
07:47
|
(7) Справочник.Список мб?)
|
|||
9
Lenka_Boo
24.08.12
✎
07:49
|
(7) Тьфу.
Колонка Тип данных справочник. Табличное поле - табличная часть документа. |
|||
10
Lenka_Boo
24.08.12
✎
07:51
|
+(9) Отборы, соответственно, на данные не влияют. Это сделано чтобы проще было ориентироваться на простыне в 400-500 строк.
|
|||
11
Zmich
24.08.12
✎
07:51
|
Запросом можно:
ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ...) |
|||
12
ZloyProger
24.08.12
✎
07:53
|
(10) А.. А то я уже голову сломал) А как фильтры накладываются?
|
|||
13
kn
24.08.12
✎
07:53
|
Вот пример для ТЧ Номенклатура и ТЗ Номенклатура
Процедура НоменклатураПриПолученииДанных(Элемент, ОформленияСтрок) КолвоСтрокВОтборе = 0; Для Каждого Стр Из Номенклатура Цикл Если ЭлементыФормы.Номенклатура.ПроверитьСтроку(Стр) Тогда КолвоСтрокВОтборе = КолвоСтрокВОтборе + 1; КонецЕсли; КонецЦикла; ЭлементыФормы.Надпись3.Заголовок = Строка(КолвоСтрокВОтборе); КонецПроцедуры |
|||
14
kn
24.08.12
✎
07:55
|
вот только не различных это а всего
|
|||
15
Lenka_Boo
24.08.12
✎
07:56
|
(12) На командной панели типовые кнопочки. Действие: "Установить отбор и сортировку списка", "Отбор по значению" и т.д.
|
|||
16
Лоботряс
24.08.12
✎
08:02
|
сделать как в (13), только из каждой строки ссоответсвующей отбору сохранять значение нужного реквизита в массив, потом сделать запрос к этому массиву и посчитать в нем количестово Различные.
|
|||
17
Lenka_Boo
24.08.12
✎
08:04
|
Я пока не нашла способа выгрузить строки отбора куда-либо...
|
|||
18
ZloyProger
24.08.12
✎
08:07
|
(17) Только циклом перебирать имхо и проверять на Использование, если истина - исходя из ВидаСравнения добавляешь условие к запросу.
|
|||
19
Лоботряс
24.08.12
✎
08:08
|
А выгружать и не надо, ты циклом обходишь всю таб цасть построчно и методом ПроверитьСтроку() проверяешь соответсвует ли она отбору. если да то значение реквизита добавляешь в массив
|
|||
20
tdm
24.08.12
✎
08:08
|
(17) в ответ (13)
метод - ПроверитьСтроку() |
|||
21
Лоботряс
24.08.12
✎
08:08
|
(19)+значение колонки строки
|
|||
22
Lenka_Boo
24.08.12
✎
08:09
|
Хотелось бы менее громоздкий способ. Хотя бы перехватить условия отбора, а потом запросом по ТЧ.
|
|||
23
kn
24.08.12
✎
08:12
|
(17)не надо никуда выгружать, надо заменить
Для Каждого Стр Из Номенклатура Цикл на Для Каждого Стр Из ЗдесьИмяТабличнойЧастиДок Цикл , а Если ЭлементыФормы.Номенклатура.ПроверитьСтроку(Стр) Тогда на Если ЭлементыФормы.ЗдесьимяТабличногоПоля.ПроверитьСтроку(Стр) Тогда Внутри цикла можно складывать нужную колону в какую нибудь доп ТЗ, после ее свернуть и получить кол-во строк. Вот это ЭлементыФормы.ЗдесьимяТабличногоПоля.ПроверитьСтроку(Стр) проверяет принадлежность отбору. |
|||
24
tdm
24.08.12
✎
08:13
|
(22) событие НоменклатураПриПолученииДанных() и так птимальнее ПриОбновленииОтображения() или ПриВыводеСтроки() всё норм должно быть
|
|||
25
Лоботряс
24.08.12
✎
08:19
|
(22)Это очень простой способ. Ну в принципе можно и условия отбора обходить и запоминать,а потом ТабличнаяЧасть.НайтиСтроки(ПараметрыОтбора) сделать, но так будет работать только если в отборе все условия на равенство установлены.
|
|||
26
Лоботряс
24.08.12
✎
08:23
|
(25)+или запрос конструируемый делать. Все равно первый - самый оптимальный способ на мой взгляд.
|
|||
27
Lenka_Boo
24.08.12
✎
15:45
|
Сделала так:
Процедура ОбработатьИзменениеОтбора() ПостроительОтчета = Новый ПостроительОтчета; ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ЭлементыФормы.МояТабличка.Значение.Выгрузить()); ПостроительОтчета.ИсточникДанных.Колонки.НомерСтроки.Итог = "Количество(НомерСтроки)"; ПостроительОтчета.ИсточникДанных.Колонки.МояКолонка.Итог = "Количество (Различные МояКолонка)"; ЗаполнитьЗначенияСвойств(ПостроительОтчета.Отбор, ЭлементыФормы.МояТабличка.ОтборСтрок); ПостроительОтчета.ЗаполнитьНастройки(); ПостроительОтчета.Выполнить(); Дерево = ПостроительОтчета.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); ЭлементыФормы.МояТабличка.Колонки.НомерСтроки.ТекстПодвала = Дерево.Строки[0].НомерСтроки; ЭлементыФормы.МояТабличка.Колонки.МояКолонка.ТекстПодвала = Дерево.Строки[0].МояКолонка; КонецПроцедуры Куда бы это еще запихнуть, чтоб работало только при изменении количества строк? в ПриОбновленииОтображения() и ОбновлениеОтображения() работают на каждый поворот колеса мышки. |
|||
28
ptiz
24.08.12
✎
15:48
|
в ПриПолученииДанных
|
|||
29
ptiz
24.08.12
✎
15:50
|
да, еще в ПриАктивизацииСтроки, но вставить проверку на последний сделанный отбор:
ТекущийОтбор = ЗначениеВСтрокуВнутр(Элемент.ОтборСтрок); Если мПоследнийОтборСтрокТоваров = Неопределено ИЛИ мПоследнийОтборСтрокТоваров <> ТекущийОтбор Тогда .....заново считаем что надо мПоследнийОтборСтрокТоваров = ТекущийОтбор; |
|||
30
Lenka_Boo
24.08.12
✎
16:07
|
Ок. Спасибо! Сообразила. :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |