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)

Как программно добавить колонку при открытии формы в 1С

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

Так мы делали, когда разрабатывали расширение “Заполнение чека ККМ по заказу клиента“. Нам нужно было в форму Чека добавить колонку с Заказом клиента.

Нужно добавить в расширение процедуру ПриСозданииНаСервере() из общего модуля МодификацияКонфигурацииПереопределяемый. В ней проверить, что это нужная нам форма и там программно добавить новую колонку к табличной части Товары и связать ее с реквизитом v8PRO_Заказ:

&После("ПриСозданииНаСервере") Процедура v8PRO_ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Если Форма.ИмяФормы = "Документ.ЧекККМ.Форма.ФормаДокумента" Тогда КолонкаЗаказКлиента = Форма.Элементы.Добавить("v8PRO_Заказ", Тип("ПолеФормы"), Форма.Элементы.Товары); КолонкаЗаказКлиента.ТолькоПросмотр = Истина; КолонкаЗаказКлиента.ПутьКДанным = "Объект.Товары.v8PRO_Заказ"; КолонкаЗаказКлиента.Вид = ВидПоляФормы.ПолеВвода; Форма.Элементы.Переместить(КолонкаЗаказКлиента, Форма.Элементы.Товары, Форма.Элементы.ТоварыУпаковкаЕдиницаИзмерения); КонецЕсли; КонецПроцедуры

Канал про 1С появился в telegram

Канал про 1С в Telegram (1c в Телеграм)

Следите за выходом отчетов и расширений для 1С на новом Telegram-канале здесь. Нас уже более 700 человек!

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

Интересное в нашем блоге

Сегодня, после обновления 1С:Бухгалтерия предприятия, при открытии Регламентированных отчетов стала появляться ошибка следующего: “Таблица не найдена «Константы»” Рассказываем о двух способах, как бесплатно решить эту проблему. Ошибки в 1С

Ошибка: Таблица не найдена Константы. Константы КАК Константы

Как в 1С заполнить контрагента по ИНН? Каждая организация и индивидуальный предприниматель имеет свой уникальный идентификационный номер налогоплательщика (ИНН). Именно по этому номеру налоговая служба (ФНС) отличает их в своей базе контрагентов. Сегодня, любой может зайти на сайт nalog.ru и по ИНН получить информацию по нужной организации или ИП. Если вы хоть раз вводили контрагентов […] Статьи

1С ИНН – обработка для заполнения реквизитов контрагентов

В этой статье мы собрали все ответы на вопросы, начинающиеся на “Где в 1С…”. Просто найдите нужный вопрос в списке и нажмите на него, чтобы раскрыть ответ. Мы постоянно будем пополнять новыми вопросами. Кстати, вы свой вопрос вы можете написать нам (смотрите раздел “Контакты”). Где в 1С Предприятие.

Где в 1С: Регистры накопления, сведений, бухгалтерии, расчетов

Рассказываем как подключиться к АПИ телеграм из 1С Предприятие 8, через прокси сервера сокс5. Простой способ: используйте его в своих разработках Программирование в 1С

Как настроить API telegram в 1С через proxy socks5

Рассказываем, как легко и просто можно скачать бесплатную версию продукта! Статьи

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

Статья для тех, кто задаётся вопросом как же быстро загрузить табели в 1С из файла Excel (Эксель). Несколько лет назад мы разработали специальную обработку именно для этого случая и сегодня хотим рассказать о её плюсах и минусах. Обработка для загрузки табелей в 1С ЗУП (Зарплата и управление персоналом) работала следующим образом: В начале месяца отдел […] Статьи

Как загрузить табель из Excel в 1С ЗУП

Рассказываем как исправить популярную ошибку печати в 1С: “Ошибка при получении характеристик принтера”… Ошибки в 1С

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

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