|
как сделать фильтр в динамическом списке по характеристике (обычные формы) | ☑ | ||
---|---|---|---|---|
0
vde69
модератор
16.06.14
✎
15:31
|
есть документ и есть периодический РС СтатусыДокумента как сделать фильтр "Не закрытые"?
запрос и потом Ссылка в (списокИзЗапроса) не подходит, слишком много обьектов РЛС - не подходит по причине пересечения ролей реквизит делать нельзя, да и реквизит нельзя сделать периодическим какие еще идеи? |
|||
1
Бешеная Нога
16.06.14
✎
15:36
|
это в форме списка документа? и реквизит документу добавить нельзя?
|
|||
2
vde69
модератор
16.06.14
✎
15:39
|
реквизит добавить нельзя, он преодический
|
|||
3
Бешеная Нога
16.06.14
✎
15:42
|
(2) если все-таки "можно" добавить реквизит - то его можно записывать при записи РС, тогда в добавленном реквизите всегда будет актуальное значение, по которому можно отбирать в форме списка. тогда получается - а нафиг РС...
|
|||
4
Бешеная Нога
16.06.14
✎
15:42
|
а обычную форму заменить управляемой тоже никак?
|
|||
5
Timon1405
16.06.14
✎
15:44
|
Левое соединение> тащим текущий статус (максимум по периоду)> результат во вложенный запрос>выбираем все поля
|
|||
6
Бешеная Нога
16.06.14
✎
15:44
|
(5) ты бог!
|
|||
7
vde69
модератор
16.06.14
✎
15:51
|
(5) и где мне это написать?
у меня динамический список обычные формы... |
|||
8
Бешеная Нога
16.06.14
✎
15:55
|
(7) может все таки просто Табличное поле с данными ДокументСписок?
|
|||
9
Timon1405
16.06.14
✎
16:02
|
(7) ПКМ - свойства - галка произвольный запрос. но есть подозрение, что у вас-таки не демонический список
|
|||
10
vde69
модератор
16.06.14
✎
16:11
|
(9) ОБЫЧНЫЕ ФОРМЫ!!!
(8) не пойдет, список на 100к элементов |
|||
11
Бешеная Нога
16.06.14
✎
16:22
|
(7) тогда что я упускаю. динамический список только в управляемых формах же.
|
|||
12
К_Дач
16.06.14
✎
16:23
|
(10) Может РегистрСведенийСписок?
|
|||
13
mikecool
16.06.14
✎
16:24
|
в обычных, имхо, только "запрос и потом Ссылка в (списокИзЗапроса)" или доп. реквизит
|
|||
14
К_Дач
16.06.14
✎
16:35
|
Если все-таки РегистрСведенийСписок, то заполняй его с отбором по периоду, отбор по периоду делай недоступным, при смене даты на форме (неважно что там за форма) - перезаполняй список (меняй отбор). При этом отбор по измерению "Статус" будет у тебя доступен, хочешь вручную устанавливай, хочешь - также программно...
|
|||
15
МоеИмя
16.06.14
✎
16:44
|
Почему реквизит нельзя ?
Реквизит ТекСтатус и при смене статуса дока писать тудысь актуальный статус дока. В РС пускай история храниться. |
|||
16
К_Дач
16.06.14
✎
16:47
|
Омойбог. Форма списка справочника "Валюты" в любой конфе на обычных формах. Открываем и читаем код
|
|||
17
Бешеная Нога
16.06.14
✎
16:49
|
(16) ты бог! отбор тоже сделаешь?
|
|||
18
К_Дач
16.06.14
✎
17:00
|
(17) обработка, на форму кидаем табличное поле с типов РегистрСведенийСписок.КурсыВалют В событие при выводе строки:
Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) СтруктураКурса = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ДатаСреза, Новый Структура("Валюта", ДанныеСтроки.Валюта)); ОформлениеСтроки.Ячейки.Курс.УстановитьТекст(Формат(СтруктураКурса.Курс, "ЧДЦ=4")); КонецПроцедуры Хоть наотбирайся по валюте и курсу (2) и эт... в 8-ке нет периодических реквизитов |
|||
19
Bober
16.06.14
✎
17:34
|
(18) вот жесть то какая
|
|||
20
mikecool
16.06.14
✎
17:35
|
(15) херово только то, что реквизит в док в закрытом периоде писать не особо получится, придется извращаться
|
|||
21
acsent
16.06.14
✎
17:58
|
Переходи на упр формы. Будет гораздо проще (хотя бы в данном конкретном случае)
|
|||
22
Бешеная Нога
16.06.14
✎
18:00
|
(18) ну давай, наложи отбор на колонку Курс, всемогущий ты наш
|
|||
23
К_Дач
16.06.14
✎
20:30
|
(22) я тебе привел код из типовой конфы, CRM рарусовская. Правда там на форме все-таки СправочникСписок.Валюты, для регистра - это будет жесть, конечно же. Отбор там работает.
|
|||
24
vde69
модератор
17.06.14
✎
08:16
|
короче я отказался от фильтра, сделал просто оформление... из-за размера регистра вариант с временой индексируемой таблицей работает в 4-5 раз быстрее чем простое условие, скорость скролинка нормальная при постоянно нажатой клавише PageUp скролинг успевает за кнопкой (нету эффекта кнопку отпустил а программа еще листает).
Если кто подскажет еще более быстрый вариант буду благодарен... //------------------------------------------------------- Процедура ОформитьСписокДокументовПоСтатусу(ОформленияСтрок) Экспорт Если не ПИ.ИспользоватьОформлениеПоСтатусу() Тогда Возврат; КонецЕсли; //мДокументы = Новый СписокЗначений(); //Для Каждого эл из ОформленияСтрок Цикл // мДокументы.Добавить(эл.ДанныеСтроки.Ссылка); //КонецЦикла; //Запрос = Новый Запрос( //"ВЫБРАТЬ //| СтатусыДокументов.Регистратор КАК Документ, //| СтатусыДокументов.Статус //|ИЗ //| РегистрСведений.СтатусыДокументов КАК СтатусыДокументов //|ГДЕ //| СтатусыДокументов.Регистратор В(&Документы)"); //---------------------------- // с ВТ работает примерно в 4 раза быстрее мДокументы = Новый ТаблицаЗначений(); мДокументы.Колонки.Добавить("Документ", Метаданные.РегистрыСведений.СтатусыДокументов.СтандартныеРеквизиты.Регистратор.Тип); Для Каждого эл из ОформленияСтрок Цикл НоваяСтрока = мДокументы.Добавить(); НоваяСтрока.Документ = эл.ДанныеСтроки.Ссылка; КонецЦикла; Запрос = Новый Запрос( "ВЫБРАТЬ РАЗЛИЧНЫЕ | ТабДокументов.Документ КАК Документ |ПОМЕСТИТЬ Документы |ИЗ | &Документы КАК ТабДокументов | |ИНДЕКСИРОВАТЬ ПО | Документ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СтатусыДокументов.Регистратор КАК Документ, | СтатусыДокументов.Статус |ИЗ | Документы КАК Документы | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыДокументов КАК СтатусыДокументов | ПО Документы.Документ = СтатусыДокументов.Регистратор"); Запрос.УстановитьПараметр("Документы", мДокументы); мТЗ = Запрос.Выполнить().Выгрузить(); Для Каждого эл из ОформленияСтрок Цикл мСтр = мТЗ.Найти(эл.ДанныеСтроки.Ссылка, "Документ"); Если мСтр = Неопределено Тогда Эл.Шрифт = ШрифтыСтиля.ШрифтСтатусаСоздан; ИначеЕсли мСтр.Статус = Перечисления.СтатусыЗаявокБюджетирования.Создан Тогда Эл.Шрифт = ШрифтыСтиля.ШрифтСтатусаСоздан; ИначеЕсли мСтр.Статус = Перечисления.СтатусыЗаявокБюджетирования.Исполнен Тогда Эл.Шрифт = ШрифтыСтиля.ШрифтСтатусаИсполнен; ИначеЕсли мСтр.Статус = Перечисления.СтатусыЗаявокБюджетирования.Отказан Тогда Эл.Шрифт = ШрифтыСтиля.ШрифтСтатусаОтказан; Иначе Эл.Шрифт = ШрифтыСтиля.ШрифтСтатусаБП; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
25
Бешеная Нога
17.06.14
✎
08:24
|
(23) ты реально ничего не понимаешь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |