|
v7: Как перехватить ввод данных в ячейку, чтобы например сделать выбор значения из списка? | ☑ | ||
---|---|---|---|---|
0
Chai Nic
08.09.21
✎
10:03
|
Есть справочник, редактируемый в форме списка. В нем есть строковый реквизит. Нужно, чтобы при входе в этот реквизит не входить в режим редактирования текста, а вывести список, из которого бы пользователь выбрал значение.
Как это сделать, подскажите? |
|||
1
Злопчинский
08.09.21
✎
10:06
|
отказаться от редактирования в списке. это зло. применять его только для простейшего ввода.
|
|||
2
Guk
08.09.21
✎
10:12
|
(0) реквизит делаешь недоступным. на морду кидаешь невидимый реквизит. в формулу реквизита функцию. в функции анализируешь текущую колонку списка и выводишь все что тебе надо...
|
|||
3
Guk
08.09.21
✎
10:12
|
+(2) вроде как-то так было. и как только я вспомнил это говно мамонта...
|
|||
4
Mikeware
08.09.21
✎
10:16
|
А что, ПриНачалеРедактированияСтроки() отменили?
|
|||
5
Злопчинский
08.09.21
✎
10:22
|
(2) не, так не получится, сработает после энтера в строке.
|
|||
6
Злопчинский
08.09.21
✎
10:23
|
(4) это-то да, но если ввод по строке и новая строка и в этот реквизит попадаем поле ввода какого-то предыдущего реквизита...
|
|||
7
Guk
08.09.21
✎
10:36
|
(5) в смысле?...
|
|||
8
Злопчинский
08.09.21
✎
11:04
|
(7) в прямом. существующий элемент справочника. жмакаем в реквизит (например, строковый). поле активизируется, двигай там кусором и исправляй что хошь. а вот когда завершишь редактирование энтером - тогда и выскакивает спсиок
|
|||
9
Garykom
гуру
08.09.21
✎
11:05
|
(1) +1
когда кодил на 77 всегда делал форму элемента |
|||
10
Злопчинский
08.09.21
✎
11:10
|
как в (4) написал Макивара - сработает, но это только на существующий элемент ссправочника. а при вводе нового элемента если редактируемый реквизит не первый - все равно вывалиться первым. плюс к этому будет еще трабла с блокировкой.
. вывернуться конечно можно, но это извращения будут. |
|||
11
ДенисЧ
08.09.21
✎
11:11
|
Майк, он тебя доской назвал...
)) |
|||
12
Guk
08.09.21
✎
11:17
|
(8) мы ж его недоступным сделали. ну можно еще запретить редактирование. жаль проверить не на чем...
|
|||
13
Василий Алибабаевич
08.09.21
✎
11:20
|
(0)
1. В свойствах реквизита "запретить редактирование" установить. "Сделать недоступным" не устанавливать. 2. На закладке "дополнительно" выставить фишку "имееет кнопку выбора" 3. В модуле формы прописать процедуру ПриНачалеВыбораЗначения |
|||
14
JeHer
08.09.21
✎
11:24
|
(0) А нах... зачем строковый реквизит, если его всё равно заполняешь какими-то предопределенными значениями?
|
|||
15
Злопчинский
08.09.21
✎
12:00
|
(13) не выйдет так
|
|||
16
Злопчинский
08.09.21
✎
12:09
|
"наименование" не реагирует на такую штуку, педали не появляется.
другие реквизиты - норм. |
|||
17
Злопчинский
08.09.21
✎
12:12
|
плюс по педали - если ввод нового - при переходе на реквизит с педалью - список автоматом не вывалится, надо педаль/ф4 жать.
я как-то извращался - при окончании редактирования предыдущего реквизита эмулировал нажатие Ф4, вроде срабатывало (хотя может вру, стараюсь избегать таких извращений) |
|||
18
Злопчинский
08.09.21
✎
12:13
|
даже реадактировать существующую строчку - по двойному клику активизируется только, появляется педаль, все равно приходится дополнительно педаль жмакать.
|
|||
19
Guk
08.09.21
✎
13:30
|
из-за вас, засранцев, пришлось в клюшки лезть ;)
в (2) абсолютно рабочий вариант. на морде формы кидаем текст, делаем его невидимым. в формуле текста прописываем функцию ВыделениеКолонки(). в модуле формы списка Функция ВыделениеКолонки() Если Форма.ТекущаяКолонка() = "Наименование" Тогда спис = СоздатьОбъект("СписокЗначений"); спис.ДобавитьЗначение(1, "Значение1"); спис.ДобавитьЗначение(2, "Значение2"); спис.ДобавитьЗначение(3, "Значение3"); спис.ТекущаяСтрока(1); Зн = 0; Если спис.ВыбратьЗначение(Зн,,,,1) = 1 Тогда Спр = СоздатьОбъект("Справочник.Номенклатура"); Спр.НайтиЭлемент(ТекущийЭлемент()); НовоеНаименование = ""; спис.ПолучитьЗначение(Зн, НовоеНаименование); Спр.Наименование = НовоеНаименование; Спр.Записать(); КонецЕсли; КонецЕсли; КонецФункции работает как в постанове автора топика... |
|||
20
Mikeware
08.09.21
✎
14:07
|
(11) причем "для битья"
|
|||
21
Mikeware
08.09.21
✎
14:08
|
(10) новый, емнип - ПриРедактированииНовойСтроки()
|
|||
22
Злопчинский
08.09.21
✎
14:10
|
(19) ну, это только если именно наименование майсрячить так (на нем педалька штатная не срабатывает).
а так - проще ПриНачалеРедактирвоанияЗначения(ИД,ФСО) |
|||
23
Злопчинский
08.09.21
✎
14:10
|
(22) в этом слуыае даже позиционироваться не надо через НайтиЭлемент
|
|||
24
Mikeware
08.09.21
✎
14:16
|
Вообще, если делать красиво - то надо как в классах КоллекцияПолейВыбораЗначения/полеВыбораЗначения: атрибут, задвигается подальше с глаз долой, при вводе данных в поле - передвигается формексом на его координатты поверх него, ну и там уже выбовы всякие, всё что угодно
|
|||
25
Злопчинский
08.09.21
✎
14:19
|
(24) ну, так сделан класс РедакторТЗ.
только он, холера, не понимает, когда на ТЗ повешен шрифт, отличающийся от шрифта формы, и поле задвигает для ввода со шрифтом формы ;-) получается некузяво... |
|||
26
Mikeware
08.09.21
✎
14:37
|
(25) принципиальных ограничений исправлять шрифт - не вижу. хотя и не пользовал
|
|||
27
Mikeware
08.09.21
✎
14:38
|
а вообще, наверное самое удобное решение - вставить эти классы в конфу - получит не только хотелку, но и плюшки типа автоподбора по подстроке...
но не самое простое, конечно |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |