|
Обработка выбора программно созданного поля | ☑ | ||
---|---|---|---|---|
0
vlasabo
21.02.17
✎
15:36
|
Добрый день.
задача (Таблица значений программное добавление колонок) решена, спасибо пользователям указавшим на ошибку. На данный момент: имею заполненную таблицу значений, содержащую колонки с названиями в виде ФИО сотрудников и строки их расписания. Программно вывожу её на форму: МассивТипаВыбора = Новый Массив; МассивТипаВыбора.Добавить(Тип("ТаблицаЗначений")); ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора); МассивРеквизитов = Новый Массив; МассивРеквизитов.Добавить(Новый РеквизитФормы("табличка", ОписаниеТипаВыбора, "", "ТЗН")); Для Каждого Колонка Из табличка.Колонки Цикл МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения,"табличка",Колонка.Заголовок)); КонецЦикла; ИзменитьРеквизиты(МассивРеквизитов); ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы")); ТаблицаПолейВыбора.ПутьКДанным = "табличка"; ТаблицаПолейВыбора.Отображение = ОтображениеТаблицы.Список; Для Каждого Колонка Из табличка.Колонки Цикл НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ТаблицаПолейВыбора); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = "табличка." + Колонка.Имя; НовыйЭлемент.Высота=4; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.УстановитьДействие("ПриИзменении", "МойОбработчик_ПриИзменении"); КонецЦикла; ЗначениеВРеквизитФормы(табличка, "табличка"); Процедура МойОбработчикПриИзменении() Сообщить("Это рабоатет"); КонецПроцедуры Так вот - это, увы, НЕ работает. Почему, куда искать и что рыть? Поясню задачу: треба чтобы пользователь с вот этой вот выведенной таблички мог менять расписание. Для этого мне неплохо было бы узнать КУДА он ткнул, т.е. имя колонки и номер строки. (не планирую изменять данные из ТЗ на форме, понимаю что это не возможно. Всё, что нужно - получить данные, содержащиеся в ячейке, на которую ткнул пользователь) ЗЫ: 8.3 |
|||
1
vlasabo
21.02.17
✎
15:38
|
Разница в написании МойОбработчикПриИзменении и МойОбработчик_ПриИзменении - это опечатка при копировании кода сюда, дело не в этом
|
|||
2
AlvlSpb
21.02.17
✎
16:34
|
(0) Лучше было бы всю эту задачу выполнить не программным добавлением ТЗ, а расширением. Вставили нужную ТЗ на форму в расширении и делайте с ней все что хотите.
И, уверены, что надо ПриИзменении(), если просто "ткнул пользователь", то ОбработкаАктивизации()? |
|||
3
vlasabo
21.02.17
✎
16:48
|
(2) ОбработкаАктивизации(), всё верно. Это я в стадии отладки что первое на ум пришло, то и воткнул.
Что есть расширение я не очень понял. Увы, знаний у меня катастрофически мало, выручает только гугл. Сделано уже много, переделывать не хочется. Пока из того что по теме и что смог сам: Там где добавляем колонки, на сервере: НовыйЭлемент.УстановитьДействие("ПриИзменении", "МойОбработчикПриИзменении"); &НаКлиенте Процедура МойОбработчикПриИзменении(элементформы1) Сообщить(элементформы1.имя); КонецПроцедуры т.о. получаем имя колонки, к которой обращается пользователь(она равна ФИО сотруднкиа без пробелов, что позволяет нам потом дёрнуть из регистра нужные данные). Осталось найти к какой строке обращается пользователь, т.о. узнаем какое именно время нам надо корректировать. |
|||
4
DrShad
21.02.17
✎
16:57
|
текущая строка и будет та к которой обращается пользователь
|
|||
5
vlasabo
21.02.17
✎
17:14
|
(4) поясни подалуйста, как к ней обратиться? Где мне взять эту текущую строку?
|
|||
6
AlvlSpb
21.02.17
✎
17:26
|
(5)
// Получаем активированную строку НашаСтрока = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные // Выбираем нужную ячейку Сообщение = Новый СообщениеПользователю; Сообщение.Текст = ""+НашаСтрока.Имя+""; Сообщение.Сообщить(); |
|||
7
vlasabo
21.02.17
✎
17:47
|
(6) у меня, видимо, к концу дня уже мозг не соображает.
У меня сейчас после програмного вывода на форму ТЗ (на сервере) стоит строчка: ЭтаФорма.Элементы.ТЗН.УстановитьДействие("ПриИзменении", "МойОбработчикПриИзменении"); Дальше есть мой обработчик: &НаКлиенте Процедура МойОбработчикПриИзменении(элементформы1) ПутьКДаннымЯчейки = МояТабличнаяЧастьВыборНаСервере(элементформы1.Имя); Идентификатор = элементформы1.ТекущаяСтрока; Сообщить(Идентификатор); КонецПроцедуры что в результате выдаёт мне номер строки (в принципе, я уже могу с этим работать - ответы форумчан дали пищу для гугла) Не очень понимаю как ты предлагаешь сделать |
|||
8
vlasabo
21.02.17
✎
17:51
|
ПутьКДаннымЯчейки = МояТабличнаяЧастьВыборНаСервере(элементформы1.Имя);
*вот эта строка не нужна, это остатки попыток сделать различными способами |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |