|
|
|
Как в табличной части редактировать вложенный объект? | ☑ | ||
|---|---|---|---|---|
|
0
Гений 1С
гуру
15.04.07
✎
18:40
|
Итак, зарисовка.
У меня есть табличная часть, в ней один из реквизитов - ссылка на справочник. Каждой строке табличной части соответствует один уникальный элемент справочника. Мне нужно чтобы в этой строке можно было редактировать реквизиты справочника по ссылке. Добавим конкретики. Есть документ "Выполненние работ". В нем есть табличная часть "Работы", реквизиты: Задача, Работа, Событие, Объем. Нужно в этой строке редактировать свойство Длительность объекта Событие в поле Объем. То бишь чтобы в Объем я редактировал именно реквизит Длительность объекта Событие. При этом при записи документа я буду записывать и все объекты реквизита Событие типа События. В общем я могу создать реквизит формы РаботыСобытие типа События, но как его приаттачить? |
|||
|
1
ТелепатБот
гуру
15.04.07
✎
18:40
|
||||
|
2
simol
15.04.07
✎
18:45
|
(0) Я делаю подобное. Обработчик "При изменении" у поля если надо оперативно реагировать или в перед записью в модуле объекта.
|
|||
|
3
Гений 1С
гуру
15.04.07
✎
18:49
|
(2) а отображать как, ведь очищается? Через чтение свойства?
|
|||
|
4
simol
15.04.07
✎
18:52
|
(3) почему очищается?
|
|||
|
5
simol
15.04.07
✎
18:54
|
+(4) объем же это реквизит табличной части у тебя,почему при его смене он очищается?
|
|||
|
6
Гений 1С
гуру
15.04.07
✎
19:02
|
(4) реквизим объем берется из реквизита Событие.Длительность, а не хранится в табличной части.
|
|||
|
7
simol
15.04.07
✎
20:24
|
(6) Может через ВвестиЧисло?
|
|||
|
8
Гений 1С
гуру
15.04.07
✎
22:27
|
(7) В принципе разобрался. Конечно проще было бы добавить реквизит, чтобы он чисто болтался для ввода, но зачем зря напрягать память базы данных.
Короче, я значение отображаю в ПриВыводеСтроки, а заношу в ПриИзменении, что-то типо этого. ;-) |
|||
|
9
Гений 1С
гуру
15.04.07
✎
22:28
|
Вот код:
Перем ДополнительныеДанныеРабота; Функция ЗаполнитьДополнительныеДанныеРабота() ДополнительныеДанныеРабота=Новый Соответствие(); Для Каждого Стр ИЗ Работа Цикл ДополнительныеДанныеРабота.Вставить(Стр, Новый Структура("Событие", Стр.Событие.ПолучитьОбъект())); КонецЦикла; КонецФункции Процедура ПриОткрытии() // Вставить содержимое обработчика. ЗаполнитьДополнительныеДанныеРабота(); КонецПроцедуры Процедура РаботаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) // Вставить содержимое обработчика. Стр=ДанныеСтроки; ДополнительныеДанныеРаботаСтр=ДополнительныеДанныеРабота[ДанныеСтроки]; ОформлениеСтроки.Ячейки.Объем.УстановитьТекст(ДополнительныеДанныеРаботаСтр.Событие.Длительность); КонецПроцедуры Процедура РаботаПриАктивизацииСтроки(Элемент) // Вставить содержимое обработчика. Стр=Элемент.ТекущаяСтрока; ДополнительныеДанныеРаботаСтр=ДополнительныеДанныеРабота[Стр]; Если ДополнительныеДанныеРаботаСтр=Неопределено Тогда СобытиеОбъект=Справочники.Событие.СоздатьЭлемент(); ДополнительныеДанныеРабота.Вставить(Стр, Новый Структура("Событие", СобытиеОбъект)); КонецЕсли; КонецПроцедуры Процедура РаботаОбъемПриИзменении(Элемент) // Вставить содержимое обработчика. Стр=ЭлементыФормы.Работа.ТекущаяСтрока; ДополнительныеДанныеРаботаСтр=ДополнительныеДанныеРабота[Стр]; ДополнительныеДанныеРаботаСтр.Событие.Длительность=Элемент.Значение; КонецПроцедуры Процедура ПриЗаписи(Отказ) // Вставить содержимое обработчика. Для Каждого Стр ИЗ ДополнительныеДанныеРабота Цикл Стр.Значение.Событие.Записать(); КонецЦикла; КонецПроцедуры |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |