Динамическое добавление колонок в 1С8

  • Автор темы Golod
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Golod

Гость
#1
Появилась проблема: необходимо создать документ, в табличных частях которого колонки не постоянны и могут изменятся, причём пользователь может добавлять новые колонки прямо из формы документа.
Колонки можно добавить через элементы формы. Например так: ЭлементыФормы.ТабличнаяЧасть.Колонки.Добавить(Название), однако, в этом случае данные, находящиеся в колонке не подлежат изменению.
Как с этим бороться?
 

Zab

Well-Known Member
07.08.2006
583
0
#2
ухты, а можно узнать зачем? я бы рекомендовал всетки развернуть табличку на 90градусов. т.е. вниз, чтоб строчки росли :) почитай про реляционные базы. все описывается вполне табличками с фиксированным количеством столбцов
 
G

Golod

Гость
#3
Друг мой! Если бы в данной ситуации можно было бы сделать так, то обязательно бы так и сделал. Задача поставлена именно так, что необходимо создавать и колонки и строчки. Суть такая: бухгалтерия. Есть стоимостные показатели, по которым составляется бюджет этапа. Этап состоит из периодов. Периодов, как сам понимаешь может быть сколько угодно, а заказчику понадобилось ещё и показатели добавлять, к тому же смотреть данные по этапу в этих двух разрезах с возможностью правки и, соответственно, пересчёта. Таким образом отчёты не подходят, а табличку с динамически изменяемым количеством столбцов сделать, насколько я понял, в 1с не реально. Пришлось изворачиваться.
Конечно, можно сделать всё только строками (типа сложный ключ (P.S. теорию я нормально знаю)), но это будет не очень наглядно, заказчику не понравится, придётся переделывать, сроки жмут... Всё как обычно...
 

Zab

Well-Known Member
07.08.2006
583
0
#4
Друг мой, почему ты решил, что не реально? В модуле формы документа выполни следующий код:
Код:
ЭлементыФормы.ТабличнаяЧасть1.Колонки.Вставить(позиция, Наименование);
Где: позиция - номер колонки, после которой будет добавлена нужная
Наименование - Как колонка назовется
ТабличнаяЧасть1 - название твоей табличной части.
и посмотри, что произойдет.
Но я бы, всетки, на твоем месте, заставил заказчика пересмотреть ТЗ. А не пытался ему "понравиться" Ты профи в своем деле и к твоему мнению должны прислушиваться. А то на голову сядут (
 
G

Golod

Гость
#5
В таком случае возникает 2 вопроса:
1) не могу вставить данные в добавленную колонку;
2) колонка при записи документа не сохраняется, а это критично в моём случае.
 
B

b00tch

Гость
#6
1) после добавления колонки установи ей элемент управления, например:
НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода"));
проверь свойства к0лонки ТолькоПросмотр и Доступность
поковыряйся с0 свойствами самого поля ввода НоваяКолонка.ЭлементУправления

2) и не сохраницц0... иб0 состав реквизитов меняецц0 только в режиме Конфигуратора...
вариантЪ : добавь реквизит ХранилищеЗначения и загоняй в нег0 при записи ТЗ, являющуюся ист0чником данных для Таб. поля формы...
Контейнер = Новый ХранилищеЗначения(ТЗданныеФормы);

с00твеЦтвенно, ПриОткрытии вытаскивай обратн0...
ТекТаб = Контейнер.Получить();
ТЗданныеФормы = ТекТаб.Скопировать();
ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
ЭлементыФормы.ТабличноеПоле.ОбновитьСтроки();

т0ка запрос по полям этой ТЗ ты пАстроить, соотвеЦтвенно, не сможешь...
 

Zab

Well-Known Member
07.08.2006
583
0
#8
и всетки лучще чем хранилище, всетки развернуть таблицу в строки... хотя бы внутренне. (Юзерам покажешь как они хотят.) Бо ссылочная целостность! Можно при помощи доп табличных частей.
 
Статус
Закрыто для дальнейших ответов.