Имя: Пароль:
1C
 
Событие до события Выбор в ТЧ документа
0 НоваяВолна
 
20.08.15
18:00
Доброго всем времени суток!
Есть необходимость при выборе пользователем строки в ТЧ документа произвести некоторые действия используя данные строки, которая была текущей до выбора. Как получить данные предыдущей строки?
1 Ёпрст
 
гуру
20.08.15
18:06
Запоминай её в переменной
2 НоваяВолна
 
20.08.15
18:10
(0)В том то и дело в какой момент запоминать. При первом открытии документа ТЧ может не содержать не одной строки. Потом строки заполняются, и при перевыборе строки надо определить предыдущую.
3 НоваяВолна
 
20.08.15
18:13
(1) При выборе строки срабатывает событие Выбор ТЧ... и текущей строкой становится выбранная. Тут я конечно могу запомнить ее в переменную, а потом использовать. Но как быть с самой первой строкой?
4 Михаил Козлов
 
20.08.15
18:33
У ТЧ есть реквизит НомерСтроки (в порядке, как они видны).
Предыдущая строка = ТЧ.Получить(ЭлементФормы.ТекущаяСтрока.НомерСтроки-2), если строк>=2 и предыдущей нет, в противном случае.
5 НоваяВолна
 
20.08.15
18:38
(4) Может быть текущей пятая строка например, а пользователь выбирает вторую. И так я ничего толкового не получу.
6 Михаил Козлов
 
20.08.15
18:42
"...а пользователь выбирает вторую.". При активизации строки текущей будет вторая.
Или я чего-то не понял.
7 НоваяВолна
 
20.08.15
18:47
(6) текущая будет вторая, это да. А мне надо при выборе этой второй строки произвести действия по данным предыдущей (пятой в данном примере) строки
8 Злопчинский
 
20.08.15
18:49
а я хз как это в 8-ке..
в клюшках делается тривиально: на форму функция ложится, в функции проверяется текущая строка, сравнивается с переменнной в которой запомнена текущая строка при предыдущем срабатывании функции... фсе..
9 НоваяВолна
 
20.08.15
18:50
И кстати дополнительный вопрос. Как определить заполнена ли табличная часть (есть ли в ней вообще строки). Это уже не относится к выбору строки.
10 Михаил Козлов
 
20.08.15
18:54
(7) В этом контексте непонятно, что такое предыдущая: на которой стоял курсор до активизации текущей?
Тогда можно попробовать сесть на событие ПриАктивизацииСтроки:
1. Получить значение переменной формы (скажем ПредыдущаяТекущая) и с этим значением проделать нужные действия.
2. ПредыдущаяТекущая = ЭлементФормы.ТекущаяСтрока.

(9) ТЧ.Количество()>0.
11 НоваяВолна
 
20.08.15
18:57
(0) В общем вся задача целиком выглядит так. В документе две ТЧ, данным каждой строки первой ТЧ соответствуют данные второй ТЧ. Данные из второй ТЧ я записываю в регистр сведений. При выборе строки из первой ТЧ из регистра должны заполнятся строки второй ТЧ.
12 Defender aka LINN
 
20.08.15
19:00
(2) "При первом открытии документа ТЧ может не содержать не одной строки" - ну вот ты тогда и скажи - какая строка при этом текущая?
А вообще - есть событие "ПриАктивизацииСтроки", чего тебе еще надо?
13 НоваяВолна
 
20.08.15
19:03
(12) В том то и дело, что если я ПриОткрытии буду пытаться взять ТекущуюСтроку, то будет ошибка, в случае если ТЧ пустая. Но это уже я решил.
14 Михаил Козлов
 
20.08.15
19:11
(11) Вместо второй ТЧ (она не нужна) можно на форму поместить табличное поле с источником данных РС.НаборЗаписей.
Нужно только аккуратно организовать работу по чтению/записи этого набора при изменении текущей в 1-ой ТЧ. Правда, это несколько "трудоемко" и отменить редактирование набора будет нельзя.
С набором записей можно посмотреть как работают в типовых с контактной информацией.
Либо прямо работать с РС.Список: редактирование записей РС будет происходить непосредственно. При активизации строки в 1-ой ТЧ нужно будет только устанавливать отбор для этого списка РС.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший