|
v7: Выбор строк в ТЗ | ☑ | ||
---|---|---|---|---|
0
rain65
14.07.15
✎
14:18
|
Имеется заполненная таблица значений. Одна из колонок - сотрудники. Причем количество строк порядка 5000, сотрудники часто повторяются. Как организовать отбор, чтобы спозиционировав курсор, например на Петрова Сергея Викторовича, вызвать процедуру и Все Петровы Сергеи Викторовичи сгруппировались в видимой части таблицы. Метод сортировка работает быстро, но после сортировки приходится опять скакать по таблице, т.е. отсортированные элементы попадают либо вниз , либо вверх таблицы . Мне же нужно, чтобы все они сразу были видны. Метод удаления строк, не удовлетворяющих условиям отбора, работает слишком медленно.
|
|||
1
Дмитрий
14.07.15
✎
14:20
|
(0) Сделать еще одну таблицу, где сотрудники не повторяются, ходить по ней, а в связанную таблицу выводить только строки по текущему сотруднику
|
|||
2
palpetrovich
14.07.15
✎
14:21
|
спозиционироваться гршь :)
текСотр = получитьЗначение(текстр) сортировать( стр = 0 найтиЗначение(текстр, стр, "сотр") текущаяСтрока(стр) |
|||
3
rain65
14.07.15
✎
14:56
|
(2) Спасибо за отзывчивость, Петрович:)
Только можно чуть подробнее, для деревянных? ) |
|||
4
HawkEye
14.07.15
✎
15:13
|
(3) вешаешь на формочку кнопку, на нее процедуру с кодом из (2)
встаешь курсором в ТЗ на нужную фамилию жмешь кнопку.. профит. второй вариант: рядом с первой ТЗ, помещаешь вторую ТЗ свернутую по сотрудникам. ставишь курсорсор во второй ТЗ на нужного сотрудника - первая сортируется по этому сотруднику - код примерно такой-же как и в первом случае... 3-4 вариант то-же самое, только не сортируешь а показываешь только те строчки где есть выбранный сотрудник... для этого - еще одну таблицу в памяти, и не удаляешь записи а добавляешь... третий вариант: |
|||
5
palpetrovich
14.07.15
✎
15:18
|
(3) чуть подробнее:
Сотрудник = ТЗ.ПолучитьЗначение(ТЗ.ТекущаяСтрока(), "Сотрудник"); ТЗ.Сортировать(Сотрудник); стр = 0; ТЗ.НайтиЗначение(Сотрудник, стр, "Сотрудник"); ТЗ.ТекущаяСтрока(стр); |
|||
6
palpetrovich
14.07.15
✎
15:21
|
+(5) ТЗ.Сортировать(Сотрудник); читать как ТЗ.Сортировать("Сотрудник");
ну и формулу в ТЗ на форме КликПоТЗ() в модуле: Процедура КликПоТЗ() Сотрудник = ТЗ.ПолучитьЗначение(ТЗ.ТекущаяСтрока(), "Сотрудник"); ТЗ.Сортировать("Сотрудник"); стр = 0; ТЗ.НайтиЗначение(Сотрудник, стр, "Сотрудник"); ТЗ.ТекущаяСтрока(стр); КонецПроцедуры |
|||
7
rain65
14.07.15
✎
15:31
|
Всем большое спасибо. Вроде получается.
|
|||
8
rain65
17.07.15
✎
16:17
|
Петрович, попробовал тебе на почту сообщение послать - адрес не корректный.
|
|||
9
Garykom
гуру
17.07.15
✎
16:20
|
а если сделать шо ТЗ со всеми данными "невидимо" и показывать на форме только то шо надо... наверно будет лучше?
|
|||
10
rain65
17.07.15
✎
16:22
|
Не...не будет лучше. Специфика задачи....
|
|||
11
Garykom
гуру
17.07.15
✎
16:28
|
(10) вообще то говорил именно про реализацию "Все Петровы Сергеи Викторовичи сгруппировались в видимой части таблицы"
а все остальные остались в невидимой |
|||
12
Garykom
гуру
17.07.15
✎
16:29
|
(11) удаление строк очень медленно (особенно неправильное) в отличие от переноса/копирования
и да... если много записей делаются с фТЗ на форме, то сначала сделать ее невидимой... потом крутить/вертеть/добавлять/удалять и потом обратно сделать видимой |
|||
13
rain65
17.07.15
✎
16:30
|
А...если так, тогда интересно. И каким образом это можно провернуть?
|
|||
14
palpetrovich
17.07.15
✎
16:38
|
(8) ага, там старый был, ломаный. поправил
|
|||
15
Garykom
гуру
17.07.15
✎
16:40
|
(13) объяснил же уже... свои 5 тыщ держишь в "Перем гтзДанные;"
кнопочки "показать всех" и "показать тока похожих" "показать всех" переносит все из гтзДанные в фТЗ на форму "показать тока похожих" берет фио из тек строки, отбирает похожих из гтзДанные, чистит фТЗ на форме и выводит туда тока похожих |
|||
16
rain65
17.07.15
✎
16:45
|
Да я понял, просто не увидел предыдущего поста.
|
|||
17
Serginio1
17.07.15
✎
16:57
|
||||
18
Serginio1
17.07.15
✎
17:03
|
||||
19
rain65
20.07.15
✎
11:50
|
(14) Петрович, глянь пож-ста почту.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |