Имя: Пароль:
1C
1C 7.7
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
а вообще, наверное самое удобное решение - вставить эти классы в конфу - получит не только хотелку, но и плюшки типа автоподбора по подстроке...
но не самое простое, конечно
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший