1с как программно добавить колонку в табличную часть
Перейти к содержимому

1с как программно добавить колонку в табличную часть

  • автор:

1с как программно добавить колонку в табличную часть

Задача такая. У документа добавлен новый реквизит табличной части «Кононка1». Тип число. Необходимо программно вывести эту колонку на форму, в табличное поле. Я пробовал подобным образом:
ЭлементыФормы.РаботникиОрганизации.Колонки.Добавить(«Колонка1», «Дни»);
Колонка появляется на форме, но в нее нет возможности ввести значение. Посмотрел по отладчику, реквизит колонки «ЭлементУправления» = неопределенно. Возможно в этом проблема. Форма обычная.
На форуме поискал, именно того что мне нужно к удивлению не нашел.

Почему обязательно программно?

(0)
может тип колонки надо задать при добавлении
НоваяКолонка = ЭлементыФормы.Товары.Колонки.Добавить(«Кол»);
НоваяКолонка.УстановитьЭлементУправления(Тип(«ПолеВвода»));

эл = ЭлементыФормы.РаботникиОрганизации.Колонки.Вставить(Позиция, «ПродолжительностьВредность», «За вредные условия труда»);
эл.Имя = «ПродолжительностьВредность»;
эл.Видимость = Истина;
эл.Положение = ПоложениеКолонки.ВТойЖеКолонке;
эл.Данные = «ПродолжительностьВредность»;
эл.ТекстШапки = «Вредность»;
эл.УстановитьЭлементУправления(Тип(«ПолеВвода»));
эл.ЭлементУправления.УстановитьДействие(«ПриИзменении», Новый Действие(«РаботникиОрганизацииПродолжительностьНенормированныйПриИзмененииПодключаемая»));

Milana да вы правы. Все сработало! Спасибо!
(1) Обновлять потом проще.

Да проще обновлять. Именно за этим такой «изысканный» способ размещения элементов на форме. Вот такой код работает. Спасибо всем за помощь.

ЭлементыФормы.РаботникиОрганизации.Колонки.Добавить(«Колонка1», «Дней компенсации»);
ЭлементыФормы.РаботникиОрганизации.Колонки.Колонка1.Данные = «Колонка1»;
ЭлементыФормы.РаботникиОрганизации.Колонки.Колонка1.УстановитьЭлементУправления(Тип(«ПолеВвода»));

Как добавить колонку в табличное поле?

Табличное поле

Иногда возникает необходимость программно добавить новую колонку в табличное поле документа или элемента справочика. Сделать это можно следующим образом.

КолонкаТабличногоПоля = ЭтаФорма.ЭлементыФормы.ОтражениеВУчете.Колонки.Добавить(«НалоговыйУчет», «НУ»);
КолонкаТабличногоПоля.УстановитьЭлементУправления(Тип(«ПолеВвода»));
КолонкаТабличногоПоля.Данные = «НалоговыйУчет»;
КолонкаТабличногоПоля.ПодсказкаВШапке = «»;
КолонкаТабличногоПоля.Видимость = Истина;

И здесь есть подводный камень: «УстановитьЭлементУправления» нужно до присвоения значения реквизиту «Данные». В противном случае добавленный на форму элемент нельзя будет редактировать.

Также, в типовой конфигурации 1С:Зарплата и управление персоналом 8.2, имеется специальная функци. При ее использовании код можно сократить до одной строки.

КолонкаТабличногоПоля = РаботаСДиалогами.ВставитьКолонкуВТабличноеПоле(Неопределено, ЭтаФорма.ЭлементыФормы.ОтражениеВУчете, «НалоговыйУчет», «НУ», «НалоговыйУчет», , , , Тип(«ПолеВвода»));

Тэги

  • Блог пользователя Nicholas
  • Добавить комментарий

Как программно добавить реквизит табличной части управляемой формы в 1С

Опытные программисты 1С в основном добавляют какие либо реквизиты на форму программно, это касается в первую очередь типовых конфигураций в которые вносятся изменения. Так как в этом случае гораздо проще потом производить обновление, сравнивать конфигурации. Поэтому это должен уметь каждый даже самый начинающий 1С -ник. Тем более что сделать это достаточно просто, в предыдущих статьях я уже затрагивал эту тему, рассказывал про программное добавление команд, сегодня же попробуем поработать с табличной частью документа, а именно добавить новый реквизит ТЧ программно, использовать будем управляемые формы.

Программное добавление колонок в ТЧ управляемой формы

Что бы на первых порах не запутаться я возьму в качестве примера простенький созданный мной документ «Поступление» у которого есть табличная часть, со следующими реквизитами «Номер», «Наименование», Количество» и «Цена».

1С Добавление колонок в ТЧ

Давайте программно добавим еще один реквизит скажем «Комментарий». Для этого необходимо через конфигуратор открыть событие «При создании на сервере».

Как программно добавить реквизит табличной части управляемой форм

И в эту процедуру добавить следующий код.

// добавим реквизит в табличную часть МассивРеквизитов = Новый Массив; МассивРеквизитов.Добавить(Новый РеквизитФормы("Комментарий", Новый ОписаниеТипов("Строка"), "Объект.Товары", "Комментарий", Ложь)); ИзменитьРеквизиты( МассивРеквизитов ); Эл = Элементы.Добавить("Колонка1", Тип("ПолеФормы"), Элементы.Товары); Эл.Вид = ВидПоляФормы.ПолеВвода; Эл.ПутьКДанным = "Объект.Товары.Комментарий"; 

Программное добавление колонок в ТЧ управляемой формы

Сохраняем изменения и проверяем что получилось, и видим что в табличной части появился еще один реквизит.

1С как программно добавить реквизит табличной части

Это программный реквизит который создается в момент создания документа, в конфигураторе вы его не увидите.

1С как программно добавить колонку в табличную часть любого документа

Таким образом можно добавить реквизит табличной части в любой конфигурации 1С.

Очень важный момент, в таком варианте внесенные данные в эту колонку не будут сохраняться в базе.

1С Добавление колонок в ТЧ : 2 комментария

  1. Тохир 19.01.2023 Программное добавление колонок в ТЧ управляемой формы
    Всё работал нормально спасибо
    А как в массиве распознавать новую колонку?

Как программно добавить колонку в табличную часть управляемой формы

Я уже писал об общем принципе программного добавления элементов на управляемую форму, теперь напишу конкретно о том, как добавить колонку табличной части или таблицы значений.

Итак, у нас есть справочник «Тест» с табличной частью «Тест», в табличной части присутствуют реквизиты «Тест1» и «Тест2», а нам нужно добавить еще один реквизит — «Тест3» и показать его на форме.

Выглядит это приблизительно так:

Процедура ДобавитьКолонкуНаСервере()
нРеквизиты = Новый Массив;

нРеквизиты.Добавить(Новый РеквизитФормы(«Тест3», Новый ОписаниеТипов(«Строка»), «Объект.Тест», «Тест3», Истина));

ИзменитьРеквизиты(нРеквизиты);
нЭлемент = Элементы.Добавить(«Тест3», Тип(«ПолеФормы»), Элементы.Тест);
нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
нЭлемент.ПутьКДанным = «Объект.Тест.Тест3»;
КонецПроцедуры

Не думаю, что приведенный код нуждается в комментариях, но на всякий случай скажу, что первые три строки создают новый реквизит типа «Строка» — тут важно указать путь к создаваемому реквизиту — третий параметр.

Точно также можно добавить колонку любой таблице значений (не табличной части) — в этом случае нужно убрать часть «Объект.» из кода.

Следующие три строки добавляют саму колонку на форму.

На этом все, надеюсь данная статья Вам помогла.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Оценка статьи:

УжасноПлохоНеплохоХорошо Отлично(оценок: 27, средняя оценка: 4,30 из 5)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *