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