Имя: Пароль:
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, скиньте и мне плиз на  inonemo@gmail.com
9 vcv
 
02.12.18
11:37
>> O, скиньте и мне плиз на  inonemo@gmail.com
Всё, что надо и даже больше, на сайте 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) я как-то подымал здесь вопрос как посчитать количество строк страницы ТЗ на форме. там давали код, завязанный тоже на расчет высоты заголовка
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан