Имя: Пароль:
1C
1C 7.7
v7: Как сделать сортировку по нажатию на заголовок столбца справочника?
0 РусскийВедун
 
01.12.18
20:18
сабж. В форме списка справочника.
1 Злопчинский
 
01.12.18
20:28
штатно - никак, а так - ПКМ-Сортировка-ВыбраттПоЧему
2 РусскийВедун
 
01.12.18
20:31
Формексом не получится? Что такое ПКМ?
3 hhhh
 
01.12.18
21:01
4 ДенисЧ
 
01.12.18
21:01
Сортировку с допупорядочиванием включи...
5 РусскийВедун
 
01.12.18
21:35
это понятно но хотят нажимать на название столбца
6 vcv
 
01.12.18
22:04
Вариант раз - формэксом перехватить клик мышкой и определить реквизит по координатам мыша. Не уверен только, что определение реквизита сработает для заголовка колонки табличной части.
Вариант два - использовать 1С++ и класс ПоставщикДанныхСправочник. Полный фарш с сортировками и фильтрами, но поразбираться придётся.
7 mishaPH
 
модератор
01.12.18
22:12
(5) пошли их нафик и е парься.
8 DES
 
02.12.18
00:27
>>>использовать 1С++ и класс ПоставщикДанныхСправочник.
O, скиньте и мне плиз на  [email protected]
9 vcv
 
02.12.18
11:37
>> O, скиньте и мне плиз на  [email protected]
Всё, что надо и даже больше, на сайте http://1cpp.ru/
10 DES
 
02.12.18
17:26
(9)не нашел там ПоставщикДанныхСправочник.
11 РусскийВедун
 
04.12.18
14:09
(8) нету там такого.
12 Масянька
 
04.12.18
14:11
(5) Пусть в Excel'е работают.
Неужели не понятно, что есть некие ограничения и неудобства?
13 АгентБезопасной Нацио
 
04.12.18
14:31
(11) шож вы напраслину-то возводите? прекрасно там все есть. И описание, которое большинству таких проектов даже не снилось...
14 АгентБезопасной Нацио
 
04.12.18
14:32
(10) есть.
15 РусскийВедун
 
04.12.18
14:34
(14) ну а ближе к вопросу можно на заголовок нажать и сделать сортировку? Я отловил нажатие по координатам и по координатам смог получить даже не  колонку, а только многострочнуючасть документа. Отловить заголовок не смог.
16 АгентБезопасной Нацио
 
04.12.18
14:35
(12) а в чем проблема сделать-то?
17 АгентБезопасной Нацио
 
04.12.18
14:35
(15) в ПоставщикДанных.Справочник?
18 РусскийВедун
 
04.12.18
14:36
(17) Это 7.7
19 АгентБезопасной Нацио
 
04.12.18
14:36
и я про то же
20 РусскийВедун
 
04.12.18
14:37
(19) тогда не понимаю. formex не подходит?
21 АгентБезопасной Нацио
 
04.12.18
14:38
(20) формекса маловато будет. хотя щазз гляну..
22 Вафель
 
04.12.18
14:39
что-то делал подобное
http://catalog.mista.ru/public/14243/
23 trdm
 
04.12.18
14:48
(7) > пошли их нафик и е парься.
а хотелка не такая уж и стремная.
24 oslokot
 
04.12.18
14:51
(23) [а хотелка не такая уж и стремная.]
а главное, красивая

Выглядит это так
https://cdn1.savepice.ru/uploads/2018/12/4/eb6acdd20641c92ab7a3fe0a2ce4fa4f-full.png

Можно жмакать прямо по заголовкам табличного поля
25 trdm
 
04.12.18
14:59
(24) это табличное поле.
такое я и сам сделаю.
а вот на классе "browse" такое сделать много труднее.
26 trdm
 
04.12.18
15:00
27 trdm
 
04.12.18
15:02
28 oslokot
 
04.12.18
15:03
(27) Круто!
29 АгентБезопасной Нацио
 
04.12.18
16:36
блин, все проще, чем кажется
30 АгентБезопасной Нацио
 
04.12.18
16:36
Процедура ПриНажатииЛевойКнопки(сост, х , у, ФСО)
    хх=0;
    уу=0;
    ххх=0;
    ууу=0;
    _хх=0;
    _уу=0;
    _ххх=0;
    _ууу=0;
    Атр = ФормаРасш.ПолучитьАтрибутПоКоординатам(х,у);
    Если ТипЗначенияСтр(Атр) = "АтрибутФормы" Тогда
        Если Атр.Заголовок="МногострочнаяЧасть" Тогда
            ФормаРасш.ПолучитьКоординатыТекущейЯчейки("МногострочнаяЧасть",_хх,_уу,_ххх,_ууу,0);
            ФормаРасш.ПолучитьКоординатыЯчейки("МногострочнаяЧасть",0,0,хх,уу,ххх,ууу,0);
            Если (у>0) и (у <хх) Тогда
                Сообщить("Это заголовок");
                ФормаРасш.УстановитьТекущуюЯчейку("МногострочнаяЧасть",х+1,уу+1);
                КолонкаСортировки=Форма.ТекущаяКолонка();
                ФормаРасш.УстановитьТекущуюЯчейку("МногострочнаяЧасть",_хх+1,_уу+1);
                Сообщить("сортирую по "+КолонкаСортировки);
                Конт=глКонтекст(Контекст);
                Спр=Метаданные.Справочник(Конт.Вид());
                Если КолонкаСортировки="Наименование" Тогда
                    Сортировка("Наименование");
                ИначеЕсли КолонкаСортировки="Код" Тогда
                    Сортировка("Код");
                Иначе
                    Если Спр.Реквизит(КолонкаСортировки).Сортировка=0 Тогда
                        Предупреждение("Сортировка по этому реквизиту невозможна");
                    Иначе
                        Сортировка(КолонкаСортировки);
                    КонецЕсли;
                КонецЕсли;
            Иначе
                Сообщить("Не заголовок");
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
31 АгентБезопасной Нацио
 
04.12.18
16:38
а, ну еще ФСО обнулять, если сортируем
32 Злопчинский
 
04.12.18
16:46
шаман, однако
33 АгентБезопасной Нацио
 
04.12.18
16:48
(32) просто в клюшках отдыхаю. от этого ёб***ного RLS. от этих ср@ных СКД...
34 АгентБезопасной Нацио
 
04.12.18
16:49
ну а по хорошему - нужно брать или ПоставщикДанных, или вообще Садовниковский класс (там и RLS можно приделать, и все, что угодно).
35 АгентБезопасной Нацио
 
04.12.18
17:03
О, и АЛльФ на огонек заглянул. Алексей, критика (30) горячо приветсвуется!
36 DES
 
04.12.18
23:48
(22) а можно примерчик использования ?
37 ADirks
 
05.12.18
08:43
(30) к сожалению, ПолучитьКоординатыЯчейки("МногострочнаяЧасть", 0, 0) фигню показывает, цифры каждый раз разные, даже если в одну ячейку тыкаешь
2.0.5.109, 2.0.5.124, 2.0.5.129
38 АгентБезопасной Нацио
 
05.12.18
08:44
(36) там же в комплекте 2 примера!
Но мой совет - используй ПоставщикДанных. Там в т.ч. реализуется и это.
39 АгентБезопасной Нацио
 
05.12.18
08:47
(37) 2.0.5.108 - работает
У тебя переменная ФормаРасш объявлена, в модуле формы определена, форма привязана?
40 ADirks
 
05.12.18
08:54
(39) уже всяко попробовал, и 108 попробовал
170  -  5  -  219
Это заголовок
170  -  5  -  159
Не заголовок
170  -  5  -  159
Не заголовок
170  -  5  -  159
Не заголовок

Это я тыкал в одну ячейку, не в заголовок
цыферки
у - ВерхМнЧ - хх
41 АгентБезопасной Нацио
 
05.12.18
08:54
(37) не, и правда фигня какая-то. то на первой строке срабатывает, то на заголовке
42 РусскийВедун
 
05.12.18
09:32
(30) у меня по коду и наименованию работает сортировка, ошибка только в Если Спр.Реквизит(КолонкаСортировки).Сортировка=0 Тогда Поле агрегатного объекта не обнаружено (Реквизит)
43 РусскийВедун
 
05.12.18
09:33
(41) и такое бывает
44 АгентБезопасной Нацио
 
05.12.18
09:38
(42) значит, нет такого реквизита? текстовые колонки в справочнике?
45 АгентБезопасной Нацио
 
05.12.18
09:53
(42) погоди, у текущего справочника вообще реквизитов нет, чтоль?
обойти-то легко, обернув в попытку. но мне интересно стало
46 АгентБезопасной Нацио
 
05.12.18
09:57
а по работе ФормаРасш.ПолучитьКоординатыЯчейки("МногострочнаяЧасть",0,0,хх,уу,ххх,ууу,0);
- это вопрос к АЛьФ'у...
на крайняк, можно получать координаты многострочной части
Если Атр.Заголовок="МногострочнаяЧасть" Тогда
        Атр.ПолучитьКоординаты(хх,уу, ш, в);
и сравнивать мышиную позицию с уу и  уу+(высота заголовка)
47 ADirks
 
05.12.18
10:00
(46) Так то да, но высота заголовка м.б. разная, тоже надо как-то исхитряться добывать.
Можно через WinAPI (Dynawrap), но лень.
48 АгентБезопасной Нацио
 
05.12.18
10:12
(47) может. Но вроде для конкретнного разрешения экрана и настроек у типовых элементов она одинакова.
я, собственно, и пытался добыть высоту заголовка разницей между верхней координатой
Подождем АЛьФа, может, что посоветует
49 trdm
 
05.12.18
10:37
(48) Охота ему себе на шею работу вешать.
Мы как-то забываем что многие компоненты родились для удовлетворения нужд их разработчиков. На что они тратили время и это время оплачивалось их работодателем.
Хотите выполнения сложной задачи - закажите и оплатите.
А эта задачка нетривиальная.
50 VladZ
 
05.12.18
10:38
(0) Перевести на 8.х
51 АгентБезопасной Нацио
 
05.12.18
10:49
(49) да вроде на этой основе были первые опыты по "редактированию ячейки прямо в ТЗ"... Т.е. вроде как работало.
52 АгентБезопасной Нацио
 
05.12.18
10:50
(50) "из-за миски холодца - всю свинью колоть?"©
53 ADirks
 
05.12.18
11:07
(51) там ПолучитьКоординатыТекущейЯчейки() используется, и этот метод работает

На самом деле проще и правильнее переделать форму списка на ТП. И там уже можно всё что хочешь мочить.
54 АгентБезопасной Нацио
 
05.12.18
11:22
(53) угу.
но для начала им надо найти на указанном сайте 1спп указанный класс ПоставщикДанных... а у них не получается...
имхо, у АЛьФа просто ошибка вкралась небольшая. там логика некоторая наблюдается в значениях, сейчас некогда особо ковырять... Помог бы кто с РЛС - я б это поковырял :-(
55 Злопчинский
 
05.12.18
23:41
(48) я как-то подымал здесь вопрос как посчитать количество строк страницы ТЗ на форме. там давали код, завязанный тоже на расчет высоты заголовка