Имя: Пароль:
1C
1С v8
Редактирование значений в таблице значений.
0 Креатив
 
31.01.16
09:51
БП 3.0. Пишу обработку. На форме создал таблицу значений. В неё загрузил из запроса даннфе. В таблице есть колонка, в которой будут либо вводится значения, либо открываться другая форма(в зависимости от содержимого). Не могу сообразить на какое событие повесить процедуру?
Вроде бы напрашивается приизменении. Но там нет прямого(да и кривого тоже)доступа к данным ячейки.
1 Креатив
 
31.01.16
11:35
Переформулирую вопрос. В каком обработчике можно получить координаты ячейки, в которую пользователь собирается менять данные?
2 Mort
 
31.01.16
11:36
Гм интересно, какое же поле обрабатывает событие "КонтрагентПриИзменении"...
3 Mort
 
31.01.16
11:37
Или ты не знаешь как получить текущие данные строки?
4 Креатив
 
31.01.16
11:42
(3)Текущие данный выдают всю строку. А мне нужна конкретная ячейка. Кстати, текущая строка есть, а текущей колонки нет.
5 Записьдампа
 
31.01.16
11:45
(4) А находишся ты в обработчике, привязанному к нажатию кнопки ОК, я так понимаю?
6 Креатив
 
31.01.16
11:47
(5)К таблице.
7 Записьдампа
 
31.01.16
11:47
(6) зачем?
8 Креатив
 
31.01.16
11:54
(7)Потом занесу введённые значения в регистр сведений.
9 Записьдампа
 
31.01.16
11:56
(8) зачем в обработчик таблицы, а не элемента?
10 Записьдампа
 
31.01.16
11:58
Который колонка
11 фобка
 
31.01.16
12:04
(0) на форме табличное поле, имеющее тип данных ТЗ
(4) ну и норм, тащи имя поля в которое тыкнул.. Если без заморочек, то просто переименуй имен полей чтобы они соответствовали именам ТЗ
12 Креатив
 
31.01.16
12:36
(9)Попробовал все обработчики, доступные у колонки таблицы. Только ХарактеристикиЗначениеАвтоПодбор перехватывает событие до начала выбора.
(11)Склоняюсь к этому варианту. Через Текущийэлемент получить имя колонки, потом как-то из текущихданных получить значение по имени.
13 Записьдампа
 
31.01.16
12:46
(12) До начала выбора события перехватываются обработчиками "НачалоВыбора", "НачалоВыбораИзСписка" и "ОкончаниеВводаТекста".
14 Креатив
 
31.01.16
12:52
(11)А по-другому и не получается, потому как в текущихданных имена из ТЗ. В этом случае можно получить так.
Элемент.ТекущиеДанные.Свойство(Элемент.ТекущийЭлемент.Имя)
(13)В моём случае заходит только в ОкончаниеВводаТекста и то только после того, как в ячейке произведено редактирование.
15 Записьдампа
 
31.01.16
13:06
(14) Можешь попробовать еще "Ввод" у всей таблицы перехватить.

Если не получится - медицина здесь бессильна.
16 Креатив
 
31.01.16
13:18
(15У всей таблицы дела лучше обстоят.
17 kosts
 
31.01.16
15:27
Как вариант.
Отображаешь кнопку открытия. На неё вешаешь событие открытия твоей формы редактирования. Заменяешь картинку кнопки открытия, например на три точки.
В условном оформлении в зависимости от твоих условий для ячейки устанавливаешь или снимаешь "только просмотр" (было бы идеально "редактирование текста", но его в УО нету).
Далее в зависимости от типа значения либо редактирование само происходит в ячейке (ведь мы разрешили это в УО).
Либо пользователь может нажать кнопку и редактировать в форме.



Пока писал, пришла другая мысль.
Сделай для разных типов разные колонки. Сгруппируй в одну колонку (вертикально).
И в УО отображай нужную колонку в зависимости от типа.
Каждую колонку настраиваешь как удобно для редактирования заданного типа.
Я б так сделал.