|   |   | 
| 
 | 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) формекс свежий?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |