Я уже писал об общем принципе программного добавления элементов на управляемую форму, теперь напишу конкретно о том, как добавить колонку табличной части или таблицы значений.
Итак, у нас есть справочник «Тест» с табличной частью «Тест», в табличной части присутствуют реквизиты «Тест1» и «Тест2», а нам нужно добавить еще один реквизит — «Тест3» и показать его на форме.
Выглядит это приблизительно так:
1 2 3 4 5 6 7 8 9 10 | &НаСервере Процедура ДобавитьКолонкуНаСервере() нРеквизиты = Новый Массив; нРеквизиты.Добавить(Новый РеквизитФормы("Тест3", Новый ОписаниеТипов("Строка"), "Объект.Тест", "Тест3", Истина)); ИзменитьРеквизиты(нРеквизиты); нЭлемент = Элементы.Добавить("Тест3", Тип("ПолеФормы"), Элементы.Тест); нЭлемент.Вид = ВидПоляФормы.ПолеВвода; нЭлемент.ПутьКДанным = "Объект.Тест.Тест3"; КонецПроцедуры |
Не думаю, что приведенный код нуждается в комментариях, но на всякий случай скажу, что первые три строки создают новый реквизит типа «Строка» — тут важно указать путь к создаваемому реквизиту — третий параметр.
Точно также можно добавить колонку любой таблице значений (не табличной части) — в этом случае нужно убрать часть «Объект.» из кода.
Следующие три строки добавляют саму колонку на форму.
На этом все, надеюсь данная статья Вам помогла.
Спасибо, за подсказку!
Супер) Спасибо)
А как сделать эту колонку в табличной части второй по порядку?
Переместить(, , )
вот как-то так..
Элементы.Переместить(нЭлемент,Элементы.Тест,Элементы.)
помогите пожалуйста я в 1с чайник это много сказано) 1С 7.7 бух. учет (7.70.307) в реестр документов нужно добавить колонку ИНН контрагента. Что нужно написать в таблице и в модуле?
Предлагаю добавить обработчик событий ПриИзменении
&НаСервере
Процедура _ДобавитьКолонкуНаСервере(ИмяКолонки, ИмяТаблицыОбъекта, ИмяПредСтоящейКолонки, ИмяПроцедурыПриИзменении=Неопределено)
//Добавляет сущетсвующий реквизит (ИмяКолонки) табличной части (ИмяТаблицыОбъекта) на форму перед колонкой (ИмяПредСтоящейКолонки)
нЭлемент = Элементы.Добавить(ИмяКолонки, Тип(«ПолеФормы»), Элементы[ИмяТаблицыОбъекта]);
нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
нЭлемент.ПутьКДанным = «Объект.»+ ИмяТаблицыОбъекта +».» + ИмяКолонки;
Элементы.Переместить(нЭлемент, Элементы[ИмяТаблицыОбъекта], Элементы[ИмяТаблицыОбъекта].ПодчиненныеЭлементы[ИмяПредСтоящейКолонки]);
Если ИмяПроцедурыПриИзмененииНеопределено тогда
нЭлемент.УстановитьДействие(«ПриИзменении», ИмяПроцедурыПриИзменении);
КонецЕсли;
КонецПроцедуры
Пример использования:
_ДобавитьКолонкуНаСервере(«МассаБрутто», «Товары», «ТоварыНоменклатура», «ТоварыМассаБруттоПриИзменении»);
Спасибо,статья очень помогла!
спасибо за статью — помогло)
А как расположить новое поле в определенном месте?
Например между двумя существующими полями?
Спасибо, работает!
Где ???
ИзменитьРеквизиты(нРеквизиты);
А как добавить колонки, у которых Видимость=ложь в конфигураторе. Интерактивно пользователем. Спрашиваю т.к. эти колонки не видны в меню ЕЩЁ—>ИзменитьФорму
Спасибо!!! Очень помогло
Добрый день! А как добавить несохраняемый реквизит — новую колонку в ТЧ? Его нет в Объект.ТЧ, но мне надо дать понять бухгалтеру ЧТО занеслось, к примеру в документе «Инвентаризация ОС» в строке ТЧ мне надо добавить счет учета
// может кому сгодится
нРеквизиты = Новый Массив;
нРекв = Новый РеквизитФормы(«Страны», Новый ОписаниеТипов(«Строка»), «Объект.ВидыТМЦ», «Страны», Ложь);
нРеквизиты.Добавить(нРекв);
ИзменитьРеквизиты(нРеквизиты);
// НоваяКолонка = Элементы.Добавить(«Страны», Тип(«ПолеФормы»), Элементы.ВидыТМЦ); // если добавляем колонку в конец ТЧ
НоваяКолонка = Элементы.Вставить(«Страны», Тип(«ПолеФормы»), Элементы.ВидыТМЦ, Элементы.ВидыТМЦ.ПодчиненныеЭлементы.ВидыТМЦКоличество); // если перед элементом
НоваяКолонка.ПутьКДанным = «Объект.ВидыТМЦ.Страны»;
НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;