gifts2017

Переход к редактированию значения в цифровой колонке при нажатии на цифровую клавишу

Опубликовал Евгений (Berrimor) в раздел Программирование - Практика программирования

Переход к редактированию значения в цифровой колонке при нажатии на цифровую клавишу

По анонсу все понятно, для работы нужен FormEX.DLL, интегрируется в модуль формы документа, в приведенном примере редактируем значение в колонке "Количество", как прикрутить к своей думаю прозрачно - разглагольствовать не буду

Перем РедКоличество;

//*****************************************************************************
Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО)
    Если РедКоличество=Тогда
        Возврат;
    КонецЕсли;

    Если Форма.ТекущаяКолонка()="Количество" Тогда
        Если (КодКлавиши>=96) И (КодКлавиши<=105) Тогда
            КодКлавиши=КодКлавиши-48;
        КонецЕсли;

        Если (КодКлавиши>=48) И (КодКлавиши<=57) Тогда
            РедКоличество=1;

            Сервис = СоздатьОбъект("Сервис");
            Сервис.SendKeys("{ENTER}{DEL}",1);
            Сервис.SendKeys(Симв(КодКлавиши));

            ФСО=0;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

//******************************************************************************
Процедура ПриНачалеРедактированияСтроки()

    Если Форма.ТекущаяКолонка() = "Количество" Тогда
        РедКоличество=1;
    КонецЕсли;

КонецПроцедуры //ПриНачалеРедактированияСтроки()

//*****************************************************************************
Процедура ПриОкончанииРедактированияСтроки(НовСтр)
    РедКоличество=0;
КонецПроцедуры

//*****************************************************************************
РедКоличество = 0;

при использовании такой реализации ф-ции ПриОкончанииРедактированияСтроки:

//*****************************************************************************
Процедура ПриОкончанииРедактированияСтроки(НовСтр)
    РедКоличество=0;

    Если (Форма.ТекущаяКолонка()<>"Количество") ИЛИ (НовСтр=1) Тогда
        Возврат;
    КонецЕсли;

    Сервис = СоздатьОбъект("Сервис");
    Сервис.SendKeys("{DOWN}");
КонецПроцедуры

получим еще и переход на следующую строку по завершающему редактирование ENTER-у

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей Плутенко (Noy) 20.11.09 17:18
Зачетно!
Вот только при такой схеме поиск пропадает (да, иногда приходится искать и по полю Количество!) :(
2. Евгений (Berrimor) 23.11.09 07:26
3. vip (vip) 23.11.09 08:02
Сервис = СоздатьОбъект("Сервис");


Некрасиво создавать объект в каждой процедуре.
Достаточно один раз в модуле.
А еще лучше в глобальнике.
4. GSoft. (GSoft) 25.11.09 10:31
интереснее было бы это была глобальная процедура, которая получала идентификаторы колонок программно в каждой форме и привязывала по порядку к цифровым клавишам
5. Евгений (Berrimor) 21.02.10 14:45
(4) без применения класса Перехватчик 1СРР не получится, а ее использовать только ради этого не хотел. А в моем случае и вовсе - нужно всего в одном документе
6. XXC (xxi) 01.10.12 22:05
+/-
о=СоздатьОбъект("Сервис");о.ДобавитьГлобальныйМодуль("Процедура ПриНажатииКнопкиКлавиатуры(г,к,ф,п,а,б,с)Если(к=107)ИЛИ(к=109)Тогда Попытка г.ТекущийДокумент(); ф=г.Форма;Если ф.АктивныйЭлемент()=""Количество"" Тогда г.Количество=г.Количество+?(к=107,1,-1);ф.Обновить();с=0;КонецЕсли;Исключение КонецПопытки;КонецЕсли;КонецПроцедуры");
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа