Имя: Пароль:
1C
 
Переход на следующую строку
0 Макаров
 
11.05.07
09:31
Всем привет. Возникла  такая проблема. Есть док. с заполненой таб частью. необходимо чтобы после ввода данных в графу кол-во активизаровалась следующая строка таб части. попытался сделать так
   
НомСтр=НомерСтроки;
НомСТР=НомСТР+1;
Если НомСтр > КоличествоСтрок() Тогда
   Возврат;
Иначе
   ПолучитьСтрокуПоНомеру(НомСтр);
КонецЕсли;

Не работает. Вообще возможно ли реализовать то что мне нужно?
1 Дурилко Картонная
 
11.05.07
09:32
АктивизироватьСтроку
2 Макаров
 
11.05.07
09:34
Пробывал тоже почимуто не работает
3 Дурилко Картонная
 
11.05.07
09:35
а у меня почимуто работает
4 Макаров
 
11.05.07
09:40
В процедуре при открытии работает, АктивизироватьСтроку(2);
А когда док уже открыт и ввел данные, переход на другую строку не происходит, хотя процедура вызывается.
5 ZanderZ
 
11.05.07
10:07
Процедура ПриОкончанииРедактированияСтроки(Флаг)
   АктивизироватьСтроку(НомерСтроки+1);
КонецПроцедуры//*****************************************************************************
6 Mikle Shaman
 
11.05.07
10:27
Если ввод данных интерактивный, а не программный, то просто поставить в свойствах табличной части галку "Автоматический ввод новой строки".
7 ZanderZ
 
11.05.07
10:30
ему надо не ввод новой строки а переход уже на существующую как я понял
8 Mikle Shaman
 
11.05.07
10:41
(7) Тогда должен работать метод АкивизироватьСтроку()
9 Ёпрст2
 
11.05.07
10:44
(0) Можно с ложным закрытием поиграться ....
10 Макаров
 
11.05.07
11:50
(5) Спасибо так работает. А при переход на др. строку, можно сделать чтобы значение открывалось для редактирования?
11 Программист 484
 
11.05.07
11:52
(10) Нажать enter?
12 Макаров
 
11.05.07
11:57
А без нажатия? автоматически при переходе на др. строку
13 Программист 484
 
11.05.07
11:59
Ввестичисло() ?
14 Макаров
 
11.05.07
12:01
Так тоже не подходит.
Может можно както програмно нажать кнопку enter?
15 ZanderZ
 
11.05.07
12:03
Процедура ПриОкончанииРедактированияСтроки(ФЛаг)
   АктивизироватьСтроку(НомерСтроки+1);
   Активизировать("ИмяРеквизита",1);
КонецПроцедуры
16 Программист 484
 
11.05.07
12:03
(14) Активизировать - смотри второй реквизит 1
17 Программист 484
 
11.05.07
12:04
(15) Опять+1?
18 Макаров
 
11.05.07
12:07
Огромное спасибо!
19 Ёпрст2
 
11.05.07
12:25
(18) И что, как в (15) работает ?...
20 Макаров
 
11.05.07
12:30
Нет, не коректно работает. глюки просходят
21 Ёпрст2
 
11.05.07
12:31
(20) :)~
22 Программист 484
 
11.05.07
12:33
(20) и что за глюки?
23 Chieftain
 
11.05.07
12:33
А так не пройдет?

WshShell=СоздатьОбъект("WScript.Shell");
WshShell.SendKeys("{ENTER}");
24 ZanderZ
 
11.05.07
12:34
(21) сам предложи че нить...
25 Макаров
 
11.05.07
12:34
Мне тоже стало весело когда увидел глюки. А может всеже кто знае как из 1с програмно нажать кнопку enter?
26 Chieftain
 
11.05.07
12:34
(25) Смотри (23)
27 Макаров
 
11.05.07
12:36
(22) во всех стоках отображается только та строка на которую ты перешел
28 ZanderZ
 
11.05.07
12:37
можно конечно без редактироания
типа
Активизировать("ИмяРеквизита",0);
Потом  в зависимости от типа резквизита выбирать значения
(ВвестиЧсило, ВвестиСтроку,ОткрытьФорму и т.д.)
29 Ёпрст2
 
11.05.07
12:36
Учись, студент ..!
Перем фл;
 Процедура ПриОкончанииРедактированияСтроки(флаг)
     Если флаг =0 Тогда  
         фл=1;
         Форма.Закрыть(0);
     КонецЕсли;
 КонецПроцедуры
 Процедура ПриЗакрытии()
     Если фл=1  Тогда
         АктивизироватьСтроку(НомерСтроки+1);  
         Активизировать("Реквизит",1);
         фл=0;
         СтатусВозврата(0);
     КонецЕсли;
 КонецПроцедуры
30 Программист 484
 
11.05.07
12:38
(27) а форма.обновить(1) попробуй вставить
31 ZanderZ
 
11.05.07
12:38
(29) че за х...
32 Макаров
 
11.05.07
12:38
(23) спосибо так все ок.
33 Программист 484
 
11.05.07
12:40
Процедура ПриОкончанииРедактированияСтроки(ФЛаг)
   АктивизироватьСтроку(НомерСтроки+1);
   Активизировать("ИмяРеквизита",1);
   форма.обновить(1)
КонецПроцедуры

Проверь - скажи результат - стало интересно
34 Ёпрст2
 
11.05.07
12:39
+29 Только еще вот так лучше, а то из последнего реквизита не выплывешь:
 Если НомерСтроки+1<=КоличествоСтрок() Тогда
   Активизировать("Реквизит",1);
 КонецЕсли;
35 Ёпрст2
 
11.05.07
12:42
(33) Молодец ...сам то хоть проверял своё творение ? ...
36 Макаров
 
11.05.07
12:44
(33) полная ерунда получается. а работает так
Процедура ПриОкончанииРедактированияСтроки(Флаг)
   НомСтр=НомерСтроки+1;
   Если НомСтр > КоличествоСтрок() Тогда
       Возврат;
   Иначе
       АктивизироватьСтроку(НомСтр);
       WshShell=СоздатьОбъект("WScript.Shell");
       WshShell.SendKeys("{ENTER}");
   КонецЕсли;
КонецПроцедуры

Только WshShell=СоздатьОбъект("WScript.Shell"); - вынесу в проц. при открытии
37 Макаров
 
11.05.07
12:47
А что это за объект такой WScript.Shell?
38 Ёпрст2
 
11.05.07
12:49
(36) Да ну ???!!! Не верю!!! 100% не рабочий код.
39 Макаров
 
11.05.07
12:51
Попробуй 100% работает и не глючит
40 Ёпрст2
 
11.05.07
12:52
(39) На что забьёмся, что код в (36) не работает ? ...
41 Барбариска
 
11.05.07
12:54
Через Форма.Закрыть() и СтатусВозврата() при закрытии - все работает. Без этого - режим редактирования строки не заканчивается, и новая строка не активизируется.
Со скриптами - почему-то неустойчиво; в модальном режиме по-моему проблемы; за давностью проблемы - не помню точно ))
42 Макаров
 
11.05.07
12:55
А чего забивать та, если у меня работает, проверял.
Если не вериш давай забъем на чё хочеш.
43 Программист 484
 
11.05.07
12:57
(41) для этого вобще то галочка в свойствах таблицы ставиться - переходить на новую строку
44 Chieftain
 
11.05.07
12:58
(40),(42) - тока что проверил - работает, но с косяками.
Многократно вызывается процедура "ПриОкончанииРедактированияСтроки"

А такой вариант лучше работает:

Процедура ПриОкончанииРедактированияСтроки(Флаг)
   Если НомерСтроки<КоличествоСтрок() Тогда
       WshShell=СоздатьОбъект("WScript.Shell");
       WshShell.SendKeys("{DOWN}{ENTER}");
   КонецЕсли;
КонецПроцедуры
45 Chieftain
 
11.05.07
12:59
(43) Вообще-то галка только на ввод новой строки
46 Ёпрст2
 
11.05.07
12:59
(42) 500$ для начала.
Условия - выкладываешь базу с 1 документом, где только 1 реквизит и код в (36)
47 Программист 484
 
11.05.07
13:00
(45) Сорри да - просмотрел
так форма.обновить(1) тоже нефига неработает?
48 Макаров
 
11.05.07
13:04
(44) Действительно так работает быстрее, только  WshShell=СоздатьОбъект("WScript.Shell"); вынести в проц приОткрытии, чтобы каждый раз не создавать.
49 Ёпрст2
 
11.05.07
13:04
(44) И чего ? На новую строку переходит? ... нЕ верю.
50 Ёпрст2
 
11.05.07
13:06
+49 я именно про (36) говорил
51 Chieftain
 
11.05.07
13:07
(49) Сабж читай - табличная часть есть - надо просто перейти на следующую строку
52 Барбариска
 
11.05.07
13:09
(47) да вот - представляешь - нефига ))
53 Ёпрст2
 
11.05.07
13:09
(51) Биомать , ну не работает АктивизироватьСтроку просто так...!
И код в (36) не рабочий...
54 Программист 484
 
11.05.07
13:09
(52) Спасибо
55 Chieftain
 
11.05.07
13:10
(53) Код из (44) должен железно работать
56 Ёпрст2
 
11.05.07
13:11
(55) Про (44) речи не было ... :)
57 Chieftain
 
11.05.07
13:17
(56) При условиях как в (46) точно циклит
58 Макаров
 
11.05.07
13:42
(51) код в (36) 100 пудово рабочий, если денег не жалко тогда я выложу тебе базу
с данной процедурой.
59 Chieftain
 
11.05.07
13:54
(58) На типовой торговле идет, но "ПриОкончанииРедактированияСтроки" вызывается несколько раз. Поэтому начальная строка мерцает - несколько раз обновляется форма

Самый оптимальный код, по-моему

Процедура ПриОкончанииРедактированияСтроки(Флаг)
   Если Флаг=1 Тогда Возврат;КонецЕсли;
   Если НомерСтроки<КоличествоСтрок() Тогда
       WshShell=СоздатьОбъект("WScript.Shell");
       WshShell.SendKeys("{DOWN}{ENTER}");
   КонецЕсли;
КонецПроцедуры
60 Макаров
 
11.05.07
14:03
(58)не спрорю,  только лучше WshShell=СоздатьОбъект("WScript.Shell"); вынести в проц приОткрытии, чтобы каждый раз не создавать.
61 Ёпрст2
 
11.05.07
14:08
(58) Выкладывай.
62 Макаров
 
14.05.07
09:22
Для Ёпрст2 Куда тебе прислать базу? Она весит меньше метра.
63 Макаров
 
14.05.07
09:25
Для Ёпрст2, можеш скачать  http://dvusrachek.ifolder.ru/2002324
64 DenGr
 
14.05.07
10:05
(63) у меня циклит и вылетает
65 Макаров
 
14.05.07
10:26
А у меня работает без проблем. Какая у тебя платформа. У меня 27.
66 DenGr
 
14.05.07
11:00
(65) 25
может в этом дело, попробую на 27
67 Макаров
 
14.05.07
11:17
(66)ну как на 27 работает?
68 Ёпрст2
 
14.05.07
11:23
(63) Ни и ? Циклит и вылетает ...что на 25, что на 27.
69 kiroy
 
14.05.07
11:43
(63) )))) жесть
70 Lals1
 
15.04.08
02:20
(68) Летает код (59)
71 sapphire
 
15.04.08
03:02
Ребята совсем отупели... Про Метод ТекущаяСтрока() совсем забыли :(
72 smaharbA
 
15.04.08
06:31
(70) ну-ну...
73 Ёпрст2
 
15.04.08
09:06
(71) Гыы... это в Документе то??? Ну-ну ...
2 + 2 = 3.9999999999999999999999999999999...