Цитата:Добавление элементов при редактировании в форме списка - больной вопрос для меня. Логику поведения ТП я не придумал. На текущий момент поставщик что ODBC что SQLite не позволяет добавлять в ТП произвольную строку. Она должна быть в запросе. Вот и получается что добавление вызывает создание и запись элемента, а потом отображение и далее работа как с обычным элементом. Малость отличается от штатного, согласен. Но идеи как иначе у меня пока нет. Если есть предложения, с удовольствием рассмотрю. Как вариант в событии ПередУдалением можно самостоятельно добавлять проверку на заполненность реквизита и удалять его непосредственно.
Я выходил из этой ситуации следующим образом:
К запросу поставщика добавлял примерно такую секцию:
|UNION ALL
|
|SELECT -1 --ROW_ID
| , 0 --IsMark
| , 3 --Картинка
| , $ПустойИД --ID
| , ?Код(14, 10) --Код
| , ?Наименование(14, 50) --Наименование
| , ?Реквизит1(14, 10)
| , ?Реквизит2(14, 20)
.....
| , ?РеквизитN(14, 15)
|WHERE ?ВводНового(4, 1, 0)=1
При создании ТП:
ПоставщикДанных.Параметры.Установить("ВводНового", 0);
ПоставщикДанных.Параметры.Установить("Код", "");
ПоставщикДанных.Параметры.Установить("Наименование", "");
ПоставщикДанных.Параметры.Установить("Реквизит1", "");
ПоставщикДанных.Параметры.Установить("Реквизит2", "");
....
ПоставщикДанных.Параметры.Установить("РеквизитN", "");
При вводе новой строки:
ПоставщикДанных.Параметры.Установить("ВводНового", 1);
ПоставщикДанных.Обновить();
НоваяСтрока = 1;
ТП.ТекущаяСтрока=-1;
тп.РедактироватьЗначение(...)
В ПриРедактированииЗначения
Если НоваяСтрока = 1 Тогда
тп.ПоставщикДанных.Параметры.Установить(кол.Имя,Значение);
тп.ПоставщикДанных.Обновить(стр);
КонецЕсли;
После окончания ввода значения в последнюю колонку проверяю корректность введенных данных, если все в порядке, то создаю элемент справочника и обнуляю все параметры поставщика.