Имя: Пароль:
1C
1C 7.7
v7: Форма списка. Движение вверх/вниз программно
0 slicem
 
29.10.13
07:11
Чой-та не найду аналога ТекущаяСтрока() для формы списка справочника.
Задача: двигаться по списку рисованными кнопками.
1 ДенисЧ
 
29.10.13
07:15
АктивизироватьОбъект() ?
2 slicem
 
29.10.13
07:20
(1)
И как понять, какой следующий(Вниз), а какой предыдущий(Вверьх)?
3 ДенисЧ
 
29.10.13
07:21
(2) Отсортировать и выбирать по порядку....
4 slicem
 
29.10.13
07:23
(3) Ну с малым количеством элементов, наверное такой изврат прокатит.. Но это же ужас-ужас.
5 Mikeware
 
29.10.13
07:24
(4) какая задача, такое и решение....
6 ДенисЧ
 
29.10.13
07:28
(4) если руки растут из не того места, то ужас....
7 Повелитель
 
29.10.13
07:35
(0) А нафиг это надо?
У нас тоже люди которые на FoxPro сидели, когда 1 увидели, тоже хотели эти кнопки приделать, ничего хорошего не получилось, да потомучто они и не нужны.
8 Повелитель
 
29.10.13
07:35
*когда 1с увидели
9 slicem
 
29.10.13
07:36
(6) и как должны расти руки, если оперировать справочником позиций так на тысячу? С иерархией?

(7) Сенсорный экран 800*600
10 slicem
 
29.10.13
07:37
(7) большие пальцы юзверей
11 povar
 
29.10.13
07:38
подменяй справочник, своей формой с тз
12 slicem
 
29.10.13
07:39
Как вариант, канеш, рисовать ТаблицуЗначений и выдавать её на поругание - она всё стерпит.
Похоже так и сделаю с большими списками.
13 slicem
 
29.10.13
07:39
(11) одновременно подумали :).
14 1dvd
 
29.10.13
07:42
(12) очень тормознутое решение
15 slicem
 
29.10.13
07:43
(14) какие ваши предложения?
16 1dvd
 
29.10.13
07:46
(15) см (1), (3)
17 1dvd
 
29.10.13
07:47
а вообще. Возможно поможет индексированная таблица. Но, я с ними не работал
18 Mikeware
 
29.10.13
07:50
(15) Варианты:
1.не делать так.
2. зная сортировку, получать следующий/предыдущий прямым запросом
3. ИТЗ
4. эмулировать события от клавиатуры
5. ПоставщикДанных
-----------
хватит?
19 1dvd
 
29.10.13
07:52
(18) во, точно! сендкей самое простое
20 Mikeware
 
29.10.13
07:55
А вообще, конечно, повеселил вопросом....
21 slicem
 
29.10.13
08:02
(18)
4 это довольно красивый вариант - однозначный.
Что видишь с тем и работаешь.
Воспользуюсь.
22 Мимохожий Однако
 
29.10.13
08:06
Достаточно поля поиск и отказаться от движений вверх и вниз кнопками.
23 Mikeware
 
29.10.13
08:08
(21) ширше видеть надо! и глубее!
ты вместо задачи пользователя (то, что нужно решить на самом деле) решаешь задачу "передвижения по экрану".
24 slicem
 
29.10.13
08:37
(23) Задача пользователя выбрать элемент справочника на сенсорном экране с низким разрешением. С даблтапом у пользователя проблемы.
25 slicem
 
29.10.13
08:38
(22) я не хочу рисовать виртуальную клавиатуру ;)
26 slicem
 
29.10.13
08:41
(24) Даже не с даблтапом, а с попаданием пальцем в скроллбанды.
А кнопку можно сделать БОЛЬШОЙ.
27 1dvd
 
29.10.13
08:44
(26) не слушай никого. Делай (21), это реальная задача. И не ты первый её решаешь
28 KishMish
 
29.10.13
08:46
(0) как я понял задачу, вот это поиск следующего элемента
Спр=СоздатьОбъект("Справочник."+Вид());
    Спр.НайтиЭлемент(ТекущийЭлемент());
    Сообщить("Теукщий"+Спр.ТекущийЭлемент());
    Спр.ИспользоватьРодителя(Спр.Родитель);
    Если Сортировка()="Код"
    Тогда Спр.ПорядокКодов();
    ИначеЕсли Сортировка()="Наименование"
    Тогда Спр.ПорядокНаименований();
    Иначе Спр.ПорядокРеквизита(Сортировка());
    КонецЕсли;    
    
    Спр.ВыбратьЭлементы(1);
    Пока Спр.ПолучитьЭлемент()=1 Цикл
        Если Спр.ТекущийЭлемент() = ТекущийЭлемент() Тогда
            Если Спр.ПолучитьЭлемент()=1 Тогда
                Сообщить("Следующий "+Спр.ТекущийЭлемент());
            Иначе
                Сообщить("Неа, это последний");
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;

предыдущий искать подобным образом
29 slicem
 
29.10.13
09:11
(28)у мене малость проще ибо без учета сортировки. Мне сам подход мне не нравитса.

    
Тек1 = СоздатьОбъект("Справочник.Контрагенты");
Предыдущий = ТекущийЭлемент();
Тек1.ВыбратьЭлементы();
Пока Тек1.ПолучитьЭлемент() = 1 Цикл
Если Тек1.ТекущийЭлемент() = ТекущийЭлемент() Тогда
  Если Флаг = 1 Тогда
   Тек1.ПолучитьЭлемент();
  ИначеЕсли Флаг = -1 Тогда
   Тек1.НайтиЭлемент(Предыдущий);
  КонецЕсли;
  Прервать;
КонецЕсли;
Предыдущий = Тек1.ТекущийЭлемент();
КонецЦикла;

АктивизироватьОбъект(Тек1.ТекущийЭлемент());
30 slicem
 
29.10.13
09:24
(21) вылезла трабла - слетает фокус поля списка. А как его поместить назад нипанятна.
Активизировать("МногострочнаяЧасть") Не помогает..
31 slicem
 
29.10.13
09:33
(30) решил - надо на колонку фокус ставить
32 ADirks
 
29.10.13
11:20
SendKeys() - ненадёжно
1000 элементов - фигня. Кэшируй их по мере надобности в ТЗ, а уж имея ТЗ переход к предыдущей/следующей записи элементарен.