• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Golod

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

Zab

ухты, а можно узнать зачем? я бы рекомендовал всетки развернуть табличку на 90градусов. т.е. вниз, чтоб строчки росли :) почитай про реляционные базы. все описывается вполне табличками с фиксированным количеством столбцов
 
G

Golod

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

Zab

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

Golod

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

b00tch

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

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

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

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

Zab

и всетки лучще чем хранилище, всетки развернуть таблицу в строки... хотя бы внутренне. (Юзерам покажешь как они хотят.) Бо ссылочная целостность! Можно при помощи доп табличных частей.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!