Имя: Пароль:
1C
1C 7.7
v7: 1С++. Табличное поле.
0 Asakra
 
02.06.14
12:06
Подскажите, как сделать, что бы по enter переходить в следующую колонку, для ввода.
1 an-korot
 
02.06.14
12:47
Процедура ОбработкаЯчейкиТаблицы(<?>,,,)
Синтаксис:
ОбработкаЯчейкиТаблицы(<Значение>,<ФлагСтандОбраб>,<Таблица>,<Адрес>)


в ней после своих манипуляций с ячейкой задай нужную активную область:
АктивнаяОбласть(<Адрес>)
2 Asakra
 
02.06.14
12:54
щас попробую... но это ж вроде для штатной Таблицы. не?
так то я уже сделал. FormEx рулит :)
3 an-korot
 
02.06.14
13:00
(2) по твоему вопросу не понять что ты говоришь про таблицу на форме документа.
4 Asakra
 
02.06.14
13:01
(3) ОбработкаЯчейкиТаблицы - это для объекта "Таблица", а у меня "Табличное поле" от 1С++
5 an-korot
 
02.06.14
13:01
(2) и каким извратом нужно заниматься чтобы понадобился formex?
на форме документа тоже все просто, при окончании редактирования строки меняешь колонку и проблема решена.
6 Asakra
 
02.06.14
13:03
(5) по-моему ввод в штатную ТЗ изврат не меньше. да и в том и задача упростить ввод...
7 Ёпрст
 
гуру
02.06.14
13:11
(0)
пользуй событие
ПослеРедактированияЗначения(Источник, строка, колонка, ТипРегиона)

там делай текущаяколонка = ....
8 Ёпрст
 
гуру
02.06.14
13:15
9 Asakra
 
02.06.14
13:42
(8) Спасибо! Получилось.
Еще нужно начать редактирование текущей ячейки.
через "РедактироватьЗначение" чет не срастается.
10 Ёпрст
 
гуру
02.06.14
13:47
(9) а че там ?
в событии Выбор втыкай РедактироватьЗначение .. и усё.. в (8) должны быть примеры
11 Asakra
 
02.06.14
13:50
говорит: "Неверно задана колонка '2'" - это следующая колонка
12 Ёпрст
 
гуру
02.06.14
13:52
больше кода
13 Asakra
 
02.06.14
13:56
(12) пробовал так:
Процедура ТПНастройкиПослеРедактированияЗначения(стр, кол, рег)
    
    ТабличноеПоле = ПоставщикДанных.Данные.ТабличноеПоле;
    
    ТабличноеПоле.ТекущаяКолонка = ТабличноеПоле.Колонки.Получить(кол + 1);
    
    выбзнач = 0;
    ТабличноеПоле.РедактироватьЗначение(стр, кол, рег, выбзнач, 5, 0, "", 0);
    
КонецПроцедуры // ТПНастройкиПослеРедактированияЗначения()
14 Asakra
 
02.06.14
13:56
(13) так от:
ТабличноеПоле.РедактироватьЗначение(стр, кол + 1, рег, выбзнач, 5, 0, "", 0);
15 Ёпрст
 
гуру
02.06.14
14:07
(13)
см (7)

первый параметр - это само табличное поле
16 Ёпрст
 
гуру
02.06.14
14:07
потом ужо строка, колонка и тип региона
17 Asakra
 
02.06.14
14:19
так же ругается:
//******************************************************************************
// Asakra
//
Процедура ТПНастройкиПослеРедактированияЗначения(Источник, стр, кол, ТипРегиона)
    
    //Если АктивизироватьСледующуюКолонку = 1 Тогда
    //    Сервис.ЭмулироватьКлавиатуру("{TAB}");
    //    Сервис.ЭмулироватьКлавиатуру("{ENTER}");
    //    
    //    АктивизироватьСледующуюКолонку = 0;
    //КонецЕсли;
    
    ТабличноеПоле = ПоставщикДанных.Данные.ТабличноеПоле;
    
    ТабличноеПоле.ТекущаяКолонка = ТабличноеПоле.Колонки.Получить(ТабличноеПоле.Колонки.Индекс(ТабличноеПоле.ТекущаяКолонка) + 1);
    
    выбзнач = 0;
    ТабличноеПоле.РедактироватьЗначение(Источник, стр, ТабличноеПоле.ТекущаяКолонка, ТипРегиона, выбзнач, 5, 0, 0);
    
КонецПроцедуры // ТПНастройкиПослеРедактированияЗначения()
18 Asakra
 
02.06.14
14:21
если использовать ЭмулироватьКлавиатуру, то все работает как надо.
19 Asakra
 
02.06.14
14:59
(5) кстати... после перехода с ТЗ на табличное поле - кода стала в 3 раза меньше!
20 Ёпрст
 
гуру
02.06.14
15:13
Процедура ТаблПолеПослеРедактированияЗначения(Источник,СтрокаТП, КолонкаТП, ТипРегиона)
    Источник.ТекущаяКолонка = Источник.Колонки.Получить(Источник.Колонки.Индекс(КолонкаТП) + 1);
КонецПроцедуры
21 Ёпрст
 
гуру
02.06.14
15:14
только это, учитывать надо крайнюю колонку.. условие сам впихнешь
22 Asakra
 
02.06.14
16:11
(20) ну дык тоже самое будет, т.к.
Источник = ПоставщикДанных.Данные.ТабличноеПоле

смысл то в том что б начать редактирование следующей колонки.
23 Asakra
 
02.06.14
16:13
(21) ето то понятно. т.к. решить в тесте так не получается, писать этого уже не стал, а при эмуляции кнопок, это проверка не нужна.
24 Ёпрст
 
гуру
02.06.14
16:49
(22) ну , активация есть, дальше ниже написать вызов редактирования и усё.
25 Asakra
 
02.06.14
17:00
(24) дык вот она и ругается :)
решил уже так оставить. проблем не выявлено.

Процедура ПриНажатииКнопкиКлавиатуры(КодКнопки, _а, _ш, _к)
    
    Если _а + _ш + _к > 0 Тогда
        Возврат;
        
    ИначеЕсли (Форма.АктивныйЭлемент() = "РедактированиеТП") И (КодКнопки = 13)  Тогда
        Сервис.ЭмулироватьКлавиатуру("{TAB}");
        Сервис.ЭмулироватьКлавиатуру("{ENTER}");
        
    КонецЕсли;
    
КонецПроцедуры // ПриНажатииКнопкиКлавиатуры()
26 Ёпрст
 
гуру
02.06.14
17:19
(25) кто ругается ?
код в (20) рабочий 225 %
27 Asakra
 
02.06.14
17:21
(26) кто? кто? :)
ТабличноеПоле.РедактироватьЗначение(Источник, стр, ТабличноеПоле.ТекущаяКолонка, ТипРегиона, выбзнач, 5, 0, 0); код в (20) рабочий, я не спорю...
28 Asakra
 
02.06.14
17:23
(26) говорит: "Неверно задана колонка '1'"
29 Ёпрст
 
гуру
02.06.14
17:24
Процедура ТаблПолеПослеРедактированияЗначения(Источник,СтрокаТП, КолонкаТП, ТипРегиона)
    Источник.ТекущаяКолонка = Источник.Колонки.Получить(Источник.Колонки.Индекс(КолонкаТП) + 1);
    //тут определяешь тип/вид длину точность редактируемой колонки и делаешь вызов
    Источник.РедактироватьЗначение(СтрокаТП, Источник.ТекущаяКолонка, ТипРегиона,ТипВид,Длина,Точность,,флаг);
КонецПроцедуры
30 Asakra
 
02.06.14
17:39
(29) вот.. а все лень :)
надо было на Источник все исправить.
все работает... спасибо, за терпение!
Процедура ТПНастройкиПослеРедактированияЗначения(Источник,СтрокаТП, КолонкаТП, ТипРегиона)
    
    Источник.ТекущаяКолонка = Источник.Колонки.Получить(Источник.Колонки.Индекс(КолонкаТП) + 1);
    
    ТекущееЗначение = Источник.ТекущиеДанные.Получить(Источник.Колонки.Индекс(Источник.ТекущаяКолонка) + 1) ;
    
    Источник.РедактироватьЗначение(СтрокаТП, Источник.ТекущаяКолонка, ТипРегиона, ТекущееЗначение,5,0,,0);
    
КонецПроцедуры
31 Asakra
 
02.06.14
17:43
(30) у меня там еще первый параметр Источник был...
32 Asakra
 
02.06.14
17:54
:) зепа получилась
надо по Enter прыгать в следующую колонку, а теперь всегда туда прыгает.
т.к. так и так формекс использовать придется, да и кода через формекс меньше, не нужно проверять кончились ли колонки... оставлю все через формекс.
ЕПРСТ, спасибо, за помощь!

оставлю так:
Процедура ПриНажатииКнопкиКлавиатуры(КодКнопки, _а, _ш, _к)
    
    Если (Форма.АктивныйЭлемент() = "РедактированиеТП") И (КодКнопки = 13) И (_а + _ш + _к = 0) Тогда
        Сервис.ЭмулироватьКлавиатуру("{TAB}");
        Сервис.ЭмулироватьКлавиатуру("{ENTER}");
    КонецЕсли;
    
КонецПроцедуры // ПриНажатииКнопкиКлавиатуры()