Условия задачи
Допустим в форме элемента справочника «Контрагенты» есть табличная часть «События», с колонками:
- «Дата»;
- «Контактное лицо»;
- «Результат»;
- «Дата следующего касания»;
Необходимо для удобства пользователя превратить табличную часть в поля ввода.
Рекомендуем ознакомиться в видео, для полного понимания задачи.
Программный код модуля формы элемента справочника «Контрагенты»
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбновитьСобытия(); КонецПроцедуры &НаСервере Процедура ОбновитьСобытия() Для каждого Стр Из Объект.События Цикл Попытка ДобавитьСобытие(Стр.НомерСтроки-1); Исключение //Сообщить("Ошибка"); КонецПопытки; КонецЦикла; КонецПроцедуры &НаСервере Процедура ДобавитьСобытие(НомерСтроки) НаимРеквДата = "Дата" + НомерСтроки; НаимРеквКонтактноеЛицо = "КонтактноеЛицо" + НомерСтроки; НаимРеквРезультат = "Результат" + НомерСтроки; НаимРеквДатаСледующегоКасания = "ДатаСледующегоКасания" + НомерСтроки; ПутьКДаннымДата = СтрШаблон("Объект.События[%1].Дата", НомерСтроки); ПутьКДаннымКонтактноеЛицо = СтрШаблон("Объект.События[%1].КонтактноеЛицо", НомерСтроки); ПутьКДаннымРезультат = СтрШаблон("Объект.События[%1].Результат", НомерСтроки); ПутьКДаннымДатаСледующегоКасания = СтрШаблон("Объект.События[%1].ДатаСледующегоКасания", НомерСтроки); ДобавитьРеквизит(НаимРеквДата, "Дата"); ДобавитьРеквизит(НаимРеквКонтактноеЛицо, "КонтактноеЛицо"); ДобавитьРеквизит(НаимРеквРезультат, "Результат"); ДобавитьРеквизит(НаимРеквДатаСледующегоКасания, "ДатаСледующегоКасания"); Группа = Элементы.Добавить("СобытияГруппа" + (НомерСтроки), Тип("ГруппаФормы"), Элементы.СобытияГруппа); Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа; Группа.ОтображатьЗаголовок = Истина; Группа.Отображение = ОтображениеОбычнойГруппы.СильноеВыделение; Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; Группа.Видимость = Истина; ДобавитьПолеВвода(НаимРеквДата, ПутьКДаннымДата, Группа); ДобавитьПолеВвода(НаимРеквКонтактноеЛицо, ПутьКДаннымКонтактноеЛицо, Группа); ДобавитьПолеВвода(НаимРеквРезультат, ПутьКДаннымРезультат, Группа); ДобавитьПолеВвода(НаимРеквДатаСледующегоКасания, ПутьКДаннымДатаСледующегоКасания, Группа); КонецПроцедуры &НаСервере Процедура ДобавитьРеквизит(НаимРекв, Заголовок) нРеквизиты = Новый Массив; Реквизит = Новый РеквизитФормы(НаимРекв, Новый ОписаниеТипов("Строка"), , Заголовок, Истина); нРеквизиты.Добавить(Реквизит); ИзменитьРеквизиты(нРеквизиты); КонецПроцедуры &НаСервере Процедура ДобавитьПолеВвода(НаимРекв, ПутьКДанным, Группа) Элемент = ЭтаФорма.Элементы.Добавить(НаимРекв, Тип("ПолеФормы"), Группа); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.ПутьКДанным = ПутьКДанным; КонецПроцедуры &НаКлиенте Процедура ДобавитьСобытиеКоманда(Команда) НовСтр = Объект.События.Добавить(); ОбновитьСобытия(); КонецПроцедуры
Оставить комментарий