|
Элемент управления динамической колонки табличного поля | ☑ | ||
---|---|---|---|---|
0
OnCheck
16.07.12
✎
14:19
|
Есть ТП. Тип значения ТП РегистрСведенийСписок. Требуется добавить поле, не добавляя его в регистр сведений.
Сделал так: 1. В процедуре "ПриПолученииДанных" для каждой строки добавляю требуемое поле 2. Назначил ЭлементУправления этому полю. 3. Установил значение этому элементу управления. 4. Назначил обработчик действия "ПриИзменении" для этого элемента управления. Проблема в том в это процедуре "ПриИзменении", не удается получить выбранное значение. Поле Элемент.Значение всегда равно значению установленному в процедуре "ПриПолученииДанных". Подскажите. Как реализовать возможно изменения значения элемента управления? Спасибо! |
|||
1
palpetrovich
16.07.12
✎
14:20
|
зачем программно? добавь "требуемое поле" прямо на форме, а "ПриПолученииДанных" уже определяй что в нем будет
|
|||
2
OnCheck
16.07.12
✎
14:22
|
(1) динамически надо. Их много будет.
|
|||
3
OnCheck
16.07.12
✎
14:23
|
+(2) к тому же, эту проблему так не обойти
|
|||
4
palpetrovich
16.07.12
✎
14:24
|
(2) да пофиг, хочешь создавать колонки программно - пожалуйста, но не при "ПриПолученииДанных"
|
|||
5
OnCheck
16.07.12
✎
14:25
|
(4) а что так?
|
|||
6
palpetrovich
16.07.12
✎
14:31
|
(5) ну как-бы "ПриПолученииДанных" - надо данные заполнять :)
к примеру так Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок) СписокЗаказов = Новый СписокЗначений; Для Каждого ЭлементОформления Из ОформленияСтрок Цикл СписокЗаказов.Добавить(ЭлементОформления.ДанныеСтроки.Ссылка); КонецЦикла; Запрос = Новый Запрос("ВЫБРАТЬ | РеализацияТоваровУслуг.Сделка, | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Сделка В(&СписокЗаказов) |"); Запрос.УстановитьПараметр("СписокЗаказов", СписокЗаказов); Выборка = Запрос.Выполнить().Выбрать(); Для Каждого ЭлементОформления Из ОформленияСтрок Цикл Выборка.Сбросить(); Если Выборка.НайтиСледующий(ЭлементОформления.ДанныеСтроки.Ссылка,"Сделка") Тогда ЭлементОформления.Ячейки.Реализация.ОтображатьТекст = Истина; ЭлементОформления.Ячейки.Реализация.Текст = ""+ Выборка.Ссылка; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
7
OnCheck
16.07.12
✎
14:36
|
Надо создать требуемое количество колонок в зависимости от данных в строке:
Процедура ПриПолученииДанных(Элемент, ОформленияСтрок) Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл //{pack 2012-07-16 Организация = ДанныеСтроки.Подразделение.Владелец; Подразделение = ДанныеСтроки.Подразделение; Должность = ДанныеСтроки.Должность; ВидРасчета = ДанныеСтроки.ВидРасчета; ДанныеПериодов = ПолучитьДанныеПериодов(Организация, Подразделение, Должность, ВидРасчета).Выбрать(); счетчик = 0; Пока ДанныеПериодов.Следующий() Цикл Счетчик = Счетчик + 1; ИмяКолонкиС = "ПериодС" + Счетчик; КолонкаС = Элемент.Колонки.Найти(ИмяКолонкиС); Если КолонкаС = Неопределено Тогда КолонкаС = Элемент.Колонки.Вставить(2,"Период"); КолонкаС.Имя = ИмяКолонкиС; КолонкаС.УстановитьЭлементУправления(Тип("ПолеВвода")); Иначе ЭУ = КолонкаС.ЭлементУправления; ЭУ.ТипЗначения = Новый ОписаниеТипов("Дата",,,,Новый КвалификаторыДаты(ЧастиДаты.Дата)); //ЭУ.Значение = ДанныеПериодов.ДатаНачальная; ОбработкаПриИзменении = Новый Действие("ПериодСПриИзменении"); ЭУ.УстановитьДействие("ПриИзменении", ОбработкаПриИзменении); ОформлениеСтроки.Ячейки[ИмяКолонкиС].Значение = ДанныеПериодов.ДатаНачальная; КонецЕсли; ИмяКолонкиПо = "ПериодПо" + Счетчик; КолонкаПо = Элемент.Колонки.Найти(ИмяКолонкиПо); Если КолонкаПо = Неопределено Тогда КолонкаПо = Элемент.Колонки.Вставить(3," по"); КолонкаПо.Имя = ИмяКолонкиПо; КолонкаПо.Положение = ПоложениеКолонки.ВТойЖеКолонке; КонецЕсли; КонецЦикла; //} КонецЦикла; КонецПроцедуры |
|||
8
OnCheck
16.07.12
✎
14:40
|
(8) вопрос то немного не в этом. Как получить введённое значение в процедуре "ПриИзменении".
|
|||
9
palpetrovich
16.07.12
✎
14:42
|
(7) а ПриОткрытии(...) Формы добавить колонки в ТП не судьба?
|
|||
10
OnCheck
16.07.12
✎
14:43
|
(9) в при открытии я не знаю сколько колонок нужно добавить в каждую строку.
|
|||
11
palpetrovich
16.07.12
✎
14:47
|
(10) жестко
|
|||
12
palpetrovich
16.07.12
✎
14:48
|
кста, речь про УФ?
|
|||
13
Reset
16.07.12
✎
14:49
|
(10) тогда добавляй в тот момент, когда тебе это становится известно.
Наверняка это происходит не в момент оформления ТП. palpetrovich все верно сказал |
|||
14
OnCheck
16.07.12
✎
14:49
|
кажется понял, после ввода данных в ячейку сначала отрабатывает "ПриПолученииДанных", которая скидывает введённое значение в исходное. а только потом "ПриИзменении". Значит значение ЭУ надо устанавливать в процедуре "НачалоВыбора".
(11) думаешь есть смысл поработать на ТЗ ;-)? (12) нет |
|||
15
OnCheck
16.07.12
✎
16:10
|
(13) хм, счас посмотрел в СП пишут "привыводеданных" вызывается раньше чем "приполученииданных", странно ведь сначала получают данные, затем выводят.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |