|
v7: Быстрый выбор строкового значения из тч документа | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
25.01.13
✎
12:12
|
Здравствуйте. В тч документа есть строковый реквизит, в свойствах указано - имеет кнопку выбора. В процедуре "ПриНачалеВыбораЗначения" написан спец. обработчик (значение может быть либо наименованием элемента справочника - и тогда я пользуюсь методом "Выбрать", пользователь выбирает элемент из справочника и его наименование я подставляю в реквизит тч, либо вбиваться вручную). Как при вводе новой строки вызвать этот обработчик, когда ячейка тч в фокусе?
Пробовал все процедуры для работ со строками документа, ничего не выходит. |
|||
1
Ёпрст
25.01.13
✎
12:17
|
автовыбо воткнуть в свойство ячейки вестимо
|
|||
2
Zhuravlik
25.01.13
✎
12:19
|
(1) Нет там такого свойства... Реквизит строковый - не справочник. А я хочу, чтобы по-умолчанию работала моя подстановка, пользователь может отказаться от выбора и ввести вручную.
|
|||
3
Zhuravlik
25.01.13
✎
12:27
|
В голову приходит только воткнуть табличное поле вместо стандартной тч, не хотелось бы так возиться из-за такой ерунды(
|
|||
4
monsterZE
25.01.13
✎
12:40
|
а почему не сделать отдельный диалог и из него добавлять новый элемент в справочник и выбирать?
|
|||
5
Zhuravlik
25.01.13
✎
13:16
|
(4) "добавлять новый элемент в справочник" - если пользователь вводит значение вручную, в справочнике не создается новый элемент. Просто иногда услуга оказывается сторонними силами, чтобы не загаживать справочники я ввел в тч строковый реквизит. В основном - там будут наименования из справочника, но если потребуется можно вбить и другое.
|
|||
6
oslokot
25.01.13
✎
13:18
|
(5) у меня та же песня есть, как у тебя. Не задумывался об автовыборе.
Хм, значит надо сначала отловить событие когда ячейка получает фокус. Думаю формекс поможет. |
|||
7
Ёпрст
25.01.13
✎
13:19
|
в ПриНачалеРедактированиястроки делай че хочешь или в ПриРедактированииНовойСтроки
|
|||
8
Ёпрст
25.01.13
✎
13:20
|
там всё без формекса делается
|
|||
9
oslokot
25.01.13
✎
13:23
|
(0) Неясно, когда разворачивать список. При начале ввода строки, или при обходе ячеек, когда нужная получает фокус?
|
|||
10
Zhuravlik
25.01.13
✎
13:29
|
(7) Я пробовал сначала "ПриНачалеРедактированияСтроки()", если Форма.ТекущаяКолонка = МояКолонка тогда выбор. Ноль реакции. Потом В ПриВводеСтроки сразу открываю свой выбор, запоминаю переменную, и в ПриНачалеРедактирования подставляю, тоже не сработало.
(9) При обходе ячеек, в новой строке) |
|||
11
Aleksey
25.01.13
✎
13:30
|
(10) Список значений
|
|||
12
Zhuravlik
25.01.13
✎
13:30
|
+ "Ноль реакции" - в смысле когда ячейка получала фокус выбор не срабатывал. Только если нажать, может опять ентер проэмулировать...
|
|||
13
Aleksey
25.01.13
✎
13:31
|
ВыбратьЗначение(<?>,,,,)
Синтаксис: ВыбратьЗначение(<Значение>,<Заголовок>>,<Позиция>,<Таймаут>,<СпособВыбора>) Назначение: Открыть окно для интерактивного выбора значения из списка. <СпособВыбора> - необязательный параметр. Число, значение которого задает способ выбора значения. 0 - в виде диалога; 1 - выбор производится в виде меню, которое подстраивается по месту текущего элемента диалога или ячейки таблицы; 2 - выбор маленьким списком (список похож на выбор значения перечисления), также привязанным к позиции элемента диалога |
|||
14
oslokot
25.01.13
✎
13:32
|
(10) ясно, врят-ли штатно получится
|
|||
15
oslokot
25.01.13
✎
13:33
|
(11) (13) при чем тут это? у него и так список подстроен. Просто не вываливается при активизации этой ячейки для новой строки
|
|||
16
Zhuravlik
25.01.13
✎
13:40
|
(14) Я не допру, как формекс может помочь? Если я даже имя колонки не могу получить... Все в принципе-то в это и утыкается. Как получить имя колонки ТЧ при вводе новой строки, если она НЕ первая?
Вот такой код: Процедура ПриРедактированииНовойСтроки() Сообщить(Форма.ТекущаяКолонка()); КонецПроцедуры // ПриРедактированииНовойСтроки Сообшает только имя первой колонки (НомерСтроки), т.е если мне мое поле туда поставить должно сработать. Попробую сейчас... |
|||
17
oslokot
25.01.13
✎
13:44
|
(16) формекс поможет эмулировать "F4" когда дойдешь до своей ячейки
|
|||
18
Zhuravlik
25.01.13
✎
13:45
|
(17) А как мне понять, что я до нее дошел?
|
|||
19
oslokot
25.01.13
✎
13:45
|
(18) незнаю, сам думаю )))
|
|||
20
Zhuravlik
25.01.13
✎
13:48
|
(19) )
+ Сейчас попробовал так: Убрал из тч поле НомерСтроки, сделал первым поле строкового реквизита, в ПриРедактированииНовойСтроки() прописал выбор из справочника - работает. Но: - Нет колокни НомерСтроки (если вставляю текстовик с формулой - при вводе все останавливается на нем, если вставить реквизит "НомерСтроки" - то выбор не происходит, хотя в "НомерСтроки" стоит галка - пропускать при вводе) - Это не единственной поле, в котором мне надо сделать такую шнягу. Может текст на форму повесить, с формулой? |
|||
21
oslokot
25.01.13
✎
13:54
|
(18)
Процедура ПриНажатииЛевойКнопки(сост, х, у) Сообщить(Форма.ТекущаяКолонка()); КонецПроцедуры Процедура ПриНажатииКнопкиКлавиатуры(конт, код, _а, _ш, _к) Сообщить(Форма.ТекущаяКолонка()); КонецПроцедуры Вот мы и получили имя колонки. Можно эмулировать F4 |
|||
22
Zhuravlik
25.01.13
✎
15:33
|
(21) Извините, отвлекся
Точно) Только надо флаг новой строки держать в форме. В ПриНачалеРедактированияНовойСтроки() ставить его в 1, в ПриОкончании... - в 0, и в ПриНажатииКнопки... смотреть, если он - 1 - значит пользователь подтвердил выбор текущей колонки, и фокус передался на следующую. Позже попробую, спасибо) |
|||
23
oslokot
25.01.13
✎
15:35
|
(22) пробуй, у меня получилось
|
|||
24
Zhuravlik
25.01.13
✎
18:04
|
(23) Получилось))))
|
|||
25
Zhuravlik
28.01.13
✎
18:40
|
(23) Поюзал вот, криво как-то работает, через раз. Делаю так:
Перем флНоваяСтрока; //====================================================================== Процедура ПриОтжатииКнопкиКлавиатуры(Код, Альт, Шифт, Кнтрл, Сим, ФСО) Если (флНоваяСтрока = 1) Тогда Кол = Форма.ТекущаяКолонка(); Если (Кол = "МоеЗначение") и (Код = 13) Тогда Если ПустоеЗначение(МоеЗначение) = 1 Тогда гСервис.ЭмулироватьКлавиатуру("{F4}"); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатиКнопкиКлавиатуры //====================================================================== Процедура ПриРедактированииНовойСтроки() флНоваяСтрока = 1; КонецПроцедуры //====================================================================== Процедура ПриОкончанииРедактированияСтроки(НовСтр) флНоваяСтрока = 0; КонецПроцедуры // ПриОкончанииРедактированияСтроки У вас сбоев не наблюдалось? |
|||
26
Zhuravlik
28.01.13
✎
18:54
|
+ "Криво" - в смысле не всегда происходит эмуляция F4.
|
|||
27
oslokot
29.01.13
✎
09:37
|
(26) у меня нет, но я всего-лишь попробовал вариант (21)
А вот если вместо ПриОтжатииКнопкиКлавиатуры использовать ПриНажатииКнопкиКлавиатуры ? И мышь как себя чувствует? т.е. событие при ПриНажатииЛевойКнопки? |
|||
28
oslokot
29.01.13
✎
09:40
|
(26) формекс свежий?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |