Имя: Пароль:
1C
1С v8
Почему не работает код?
, ,
0 DirecTwiX
 
25.05.13
20:30

Функция СледующийЭлемент(Текущий, Коллекция)
   Стоп = Ложь;
   Для каждого Э Из Коллекция Цикл
       Если Стоп Тогда
           Возврат Э;    
       КонецЕсли;    
       Если Э=Текущий Тогда
           Стоп=Истина    
       КонецЕсли;
   КонецЦикла;
   Возврат Неопределено;
КонецФункции

Процедура АктивироватьСледующийЭлементСФ()
   К = СледующийЭлемент(ЭлементыФормы.СФ.ТекущаяКолонка, ЭлементыФормы.СФ.Колонки);
   Если К = Неопределено ИЛИ не КолонкаРедактируемая(К) Тогда
       С = СледующийЭлемент(ЭлементыФормы.СФ.ТекущаяСтрока, СФ);
       Если С<>Неопределено Тогда
           ЭлементыФормы.СФ.ТекущаяСтрока = С;
           Для каждого К Из ЭлементыФормы.СФ.Колонки Цикл
               Если КолонкаРедактируемая(К) Тогда
                   ЭлементыФормы.СФ.ТекущаяКолонка = К;
                   Возврат;
               КонецЕсли;    
           КонецЦикла;
       КонецЕсли;
   Иначе
       ЭлементыФормы.СФ.ТекущаяКолонка = К;    
   КонецЕсли;
КонецПроцедуры

Текущую колонку изменяет, а вот строку не хочет. Хотя в С лежит строка. Почему так может быть?
1 DirecTwiX
 
25.05.13
20:35
Хм.. Почему-то не хочет вообще изменять текущую строка.
Пробовал так
ЭлементыФормы.ТП.ТекущаяСтрока = ДанныеТП[12];
2 ОбычныйЧеловек
 
25.05.13
20:40
(0) судя по всему даже платформа отказывается выполнять "такой шикарный" код. Просто нет слов - одни эмоции....
3 DirecTwiX
 
25.05.13
20:43
(2) Что не так с кодом?

Если по кнопке вызывать то всё норм. А из события ПриОкончанииРедактирования не хочет. С чем связано?
4 hhhh
 
25.05.13
21:30
(3)приколист? думаешь, событие  ПриОкончанииРедактирования не работает с текущей строкой?
5 DirecTwiX
 
25.05.13
21:43
(4) Да уж понял, что работает) Как тогда перейти на следующую строку после окончания редактирования?
СтандартнойОбработки не нашёл у события..
6 Drac0
 
25.05.13
22:00
(0) Текущая строка это ИД строки. Т.е. число, а оно никогда не будет равно ссылке на строку Таблицы.
7 DirecTwiX
 
25.05.13
22:23
(6) Нет.

ТабличноеПоле (TableBox)
ТекущаяСтрока (CurrentRow)
Использование:

Чтение и запись.
Описание:

Содержит текущую строку табличного поля.

Доступность:

Толстый клиент.
Примечание:

Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов.

Плюс, вне события работает.


Ап
8 DirecTwiX
 
25.05.13
23:27
Нашёл..
Первый раз в поиске наткнулся на другую тему на мисте..
Книга знаний: v8: Как после ввода перейти на следующую строку табличного поля?
9 Asmody
 
26.05.13
00:04
(0) функция СледующийЭлемент() прекрасна!
У коллекций обычно встречается метод Индекс()
10 DirecTwiX
 
26.05.13
00:11
(9) Ключевое слово - обычно
Не хотел писать две разные функции для строк и столбцов)
11 barsik123
 
26.05.13
00:48
У меня была задачка, имелась заполненная табличная часть документа и нужно было при нажатии на Enter перемещаться в зависимости от колонки либо вправо, либо на следующую строку. Решил задачку так:
Процедура ПереходНаСледующуюЯчейку()
   WSHShell = Новый COMОбъект("WScript.Shell");
   WSHShell.SendKeys("{RIGHT}{ENTER}");
КонецПроцедуры    

Процедура ПереходНаСледующуюСтроку()
   WSHShell = Новый COMОбъект("WScript.Shell");
   WSHShell.SendKeys("{ENTER}");
   Индекс = ЭлементыФормы.Ведомость.ТекущаяСтрока.НомерСтроки;
   Если Индекс < Ведомость.Количество() Тогда                            
       ЭлементыФормы.Ведомость.ТекущаяСтрока = Ведомость[Индекс];
       ЭлементыФормы.Ведомость.ТекущаяКолонка = ЭлементыФормы.Ведомость.Колонки.НомерБаллона;
   КонецЕсли;
КонецПроцедуры
12 Torquader
 
26.05.13
01:09
(11) Такой "способ" в самый раз для семёрки.
13 DirecTwiX
 
26.05.13
02:07
Прсыоать сообщения равносильно использованиб костылей, я считаю)
14 ProgAL
 
26.05.13
09:00
(12) А как правильно?