|
Запись Дополнительных реквизитов | ☑ | ||
---|---|---|---|---|
0
sonGodv
25.06.15
✎
20:47
|
Помогите решить задачу. Обнаружил в справочнике Номенклатура УТ11, табличную часть Дополнительные реквизиты. Решил вывести ее на форму с целью напрямую записывать туда значения доп.реквизитов. Но оказалось все не так просто).
Если добавить в табличную часть новую строку вручную, то при записи объекта она исчезает. Нашел общий модуль УправлениеСвойствами и в нем процедуру, которая этим занимается. Но вот ломаю голову и никак не могу придумать как сделать так, чтобы добавленные строки сохранялись Вот собственно сама процедура: // Переносит значения свойств из реквизитов формы в табличную часть объекта. // // Параметры: // Форма - УправляемаяФорма - уже настроена в процедуре ПриСозданииНаСервере. // Объект - Неопределено - взять объект из реквизита формы "Объект". // - Объект - СправочникОбъект, ДокументОбъект, ..., ДанныеФормыСтруктура (по типу объекта). // Процедура ПеренестиЗначенияИзРеквизитовФормыВОбъект(Форма, Объект = Неопределено) Экспорт Если НЕ Форма.Свойства_ИспользоватьСвойства ИЛИ НЕ Форма.Свойства_ИспользоватьДопРеквизиты Тогда Возврат; КонецЕсли; Если Объект = Неопределено Тогда ОписаниеОбъекта = Форма.Объект; Иначе ОписаниеОбъекта = Объект; КонецЕсли; СтарыеЗначения = ОписаниеОбъекта.ДополнительныеРеквизиты.Выгрузить(); ОписаниеОбъекта.ДополнительныеРеквизиты.Очистить(); Для каждого Строка Из Форма.Свойства_ОписаниеДополнительныхРеквизитов Цикл Значение = Форма[Строка.ИмяРеквизитаЗначение]; Если Значение = Неопределено Тогда Продолжить; КонецЕсли; Если Строка.ТипЗначения.Типы().Количество() = 1 И (НЕ ЗначениеЗаполнено(Значение) Или Значение = Ложь) Тогда Продолжить; КонецЕсли; Если Строка.Удалено Тогда Если ЗначениеЗаполнено(Значение) Тогда ЗаполнитьЗначенияСвойств( ОписаниеОбъекта.ДополнительныеРеквизиты.Добавить(), СтарыеЗначения.Найти(Строка.Свойство, "Свойство")); КонецЕсли; Продолжить; КонецЕсли; НоваяСтрока = ОписаниеОбъекта.ДополнительныеРеквизиты.Добавить(); НоваяСтрока.Свойство = Строка.Свойство; НоваяСтрока.Значение = Значение; // Поддержка строк неограниченной длины. ИспользоватьНеограниченнуюСтроку = УправлениеСвойствамиСлужебный.ИспользоватьНеограниченнуюСтроку( Строка.ТипЗначения, Строка.МногострочноеПолеВвода); Если ИспользоватьНеограниченнуюСтроку Тогда НоваяСтрока.ТекстоваяСтрока = Значение; КонецЕсли; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |