Создать колонки в тз на форме ОФ

1. Andrey1804 3 30.03.23 15:46 Сейчас в теме
Всем доброго дня! Стоит задача создать программно создать 20 колонок в тз на форме, с определенными именами, типом и шириной у каждой колонки. код в процедуре :
	НоваяКолонка = ЭлементыФормы.тз.Колонки.Добавить(,Новый ОписаниеТипов("Строка"));
			НоваяКолонка.Имя = "Наименование";
			НоваяКолонка.ТекстШапки = "Наименование";
			НоваяКолонка.Ширина = 50;
По теме из базы знаний
Найденные решения
87. Asya.Ozerova 41 30.03.23 18:29 Сейчас в теме
(85)Тогда Вам проще таблицу создать с исходными данными и потом из нее работать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. starjevschik 30.03.23 16:21 Сейчас в теме
(1) массив массивов можно сделать, заменяет таблицу значений на уф.
2. Dem0 30.03.23 16:02 Сейчас в теме
Вы уже пробовали как-то и у вас не получилось?
Приведите код, который у вас вызывает затруднения. И перепишите последнее ваше предложение.
3. karamazoff 96 30.03.23 16:12 Сейчас в теме
Извините за мой французкий, задача, изначально тупорылая, не надо это делать при открытии, либо тч либо программно, но НЕ ТАК
4. Andrey1804 3 30.03.23 16:14 Сейчас в теме
(3) Мне нужно программно создать 20 колонок, у каждой свой имя и ширина, как это проще сделать?
5. karamazoff 96 30.03.23 16:16 Сейчас в теме
(4)Друг мой извини, но проще в екселе
21. Andrey1804 3 30.03.23 17:36 Сейчас в теме
(3)Подскажите, почему нельзя создать колонки в процедуре ПриОткрытии ?
6. soft_wind 30.03.23 16:17 Сейчас в теме
присоединяюсь, сначала заполняете ТЗ, и в обычных формах есть команда СоздатьКолонки()

ЭлементТаблицаРезультата.Значение = ТекРезультатТаблица.Скопировать();
ЭлементТаблицаРезультата.СоздатьКолонки();
8. karamazoff 96 30.03.23 16:23 Сейчас в теме
Если Вы с 1с гасите, то макет с отчетом, там можно плясать как угодно, либо, наймите программиста
9. Andrey1804 3 30.03.23 16:27 Сейчас в теме
(8)не понял, что Вы имели этим ввиду ?
11. karamazoff 96 30.03.23 16:40 Сейчас в теме
(9)не берите близко к сердцу, имел ввиду что вы программер
10. AR18 30.03.23 16:38 Сейчас в теме
Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>)
НоваяКолонка = тз.Колонки.Добавить(,Новый ОписаниеТипов("Строка"),"Наименование",50);
12. Andrey1804 3 30.03.23 16:40 Сейчас в теме
(10)Так у меня изначально не пошло, Слишком много фактических параметров
13. AR18 30.03.23 16:44 Сейчас в теме
тз.Колонки.Добавить("Наименование",Новый ОписаниеТипов("Строка"),"Наименование",50) а так?
14. Andrey1804 3 30.03.23 16:54 Сейчас в теме
15. Andrey1804 3 30.03.23 16:55 Сейчас в теме
(13) НоваяКолонка = ЭлементыФормы.тз.Колонки.Добавить(Наименование,Новый ОписаниеТипов("Строка"));
НоваяКолонка.ТекстШапки = "Наименование";
НоваяКолонка.Ширина = 50;
вот так работает ,но не 20 раз же так писать
16. Asya.Ozerova 41 30.03.23 17:09 Сейчас в теме
(15)А чем мешает Цикл применить?
20. Andrey1804 3 30.03.23 17:31 Сейчас в теме
(16)а как в цикл данные передать ? имена колонок, ширину, тип и заголовок ?
43. user1826630 30.03.23 17:51 Сейчас в теме
(20) А че, коллекциями пользоваться не учили?
18. Andrey1804 3 30.03.23 17:22 Сейчас в теме
(13)
Колонки.Добавить("Наименование",Новый ОписаниеТипов("Строка"),"Наименование",50)

вот так сработало
Колонки.Добавить("Наименование1",Новый ОписаниеТипов("Строка"),"Наименование1",50)
Колонки.Добавить("Наименование2",Новый ОписаниеТипов("Строка"),"Наименование2",50)
Колонки.Добавить("Наименование3",Новый ОписаниеТипов("Строка"),"Наименование3",50)
Колонки.Добавить("Наименование4",Новый ОписаниеТипов("Строка"),"Наименование4",50)
ЭлементыФормы.тз.СоздатьКолонки();
22. user1826630 30.03.23 17:37 Сейчас в теме
(18) А если понадобится создать 120 колонок?
17. user1826630 30.03.23 17:14 Сейчас в теме
Раз в год такая задача на форуме точно всплывает.
И все упорно пытаются в цикле использовать одно и то же имя колонки.
Подумать о том, чтобы создать уникальные имена колонок - даже 10 лет стажа на форуме никак не помогают...

Пилите, Шура. Пилите!
19. Andrey1804 3 30.03.23 17:25 Сейчас в теме
(17)Пилю) я еще в цикле ничего не создавал.
23. Asya.Ozerova 41 30.03.23 17:37 Сейчас в теме
(17)А кто сказал, что одно и то же!? Я думаю Автор сам пойиет, что имя Уникально!
24. user1826630 30.03.23 17:39 Сейчас в теме
(23) Не надо за него думать. Мой опыт подсказывает - что тот, кто приходит сюда с такими вопросами - вряд ли понимает про уникальность и циклы.
26. Andrey1804 3 30.03.23 17:43 Сейчас в теме
(24)Что вы говорите ? Понимаю про уникальность!
27. Asya.Ozerova 41 30.03.23 17:44 Сейчас в теме
25. Asya.Ozerova 41 30.03.23 17:40 Сейчас в теме
СтрокаЦикла Из МассивИмен Цикл
НоваяКолонка = ЭлементыФормы.тз.Колонки.Добавить(Наименование,Новый ОписаниеТипов("Строка"));
НоваяКолонка.ТекстШапки = СтрокаЦикла;
НоваяКолонка.Ширина = 50;
КонецЦикла 
28. Andrey1804 3 30.03.23 17:45 Сейчас в теме
(25)Это то понятно. Но в массиве еще нужно иметь наименование,тип, текстШапки и ширину.
30. user1826630 30.03.23 17:46 Сейчас в теме
(28) Они откуда-то должны сами придуматься?
34. Andrey1804 3 30.03.23 17:48 Сейчас в теме
(30)Задать нужно естественно,
36. user1826630 30.03.23 17:48 Сейчас в теме
38. Andrey1804 3 30.03.23 17:49 Сейчас в теме
(36)конечно, список имен колонок с параметрами .Например ? как задать ?
40. user1826630 30.03.23 17:50 Сейчас в теме
(38) Че, не научили создавать список или массив?
35. Asya.Ozerova 41 30.03.23 17:48 Сейчас в теме
(30)Я так понимаю Имена где-то есть.
39. user1826630 30.03.23 17:50 Сейчас в теме
(35) Да не надо за автора "понимать". Он сам не понимает - есть они где-то или нет.
А то потом ты начнешь пытаться за него понимать про "ширину и типизацию колонок".
41. Asya.Ozerova 41 30.03.23 17:50 Сейчас в теме
(39)А Выто почему за Автора решаете, что Он знаеет, а чего нет!!!
44. user1826630 30.03.23 17:51 Сейчас в теме
29. user1826630 30.03.23 17:46 Сейчас в теме
(25)

СтрокаЦикла Из МассивИмен Цикл
НоваяКолонка = ЭлементыФормы.тз.Колонки.Добавить(Наименование,Новый ОписаниеТипов("Строка"));
НоваяКолонка.ТекстШапки = СтрокаЦикла;
НоваяКолонка.Ширина = 50;
КонецЦикла 


Давай, расскажи про уникальность имен колонок в твоём коде.
31. Andrey1804 3 30.03.23 17:47 Сейчас в теме
(29)Где вы видите мой код ? я его в цикл не загонял
33. user1826630 30.03.23 17:47 Сейчас в теме
(31) А я разве с тобой сейчас разговариваю? Сообщение (25) разве ты написал?
32. Asya.Ozerova 41 30.03.23 17:47 Сейчас в теме
СтрокаЦикла Из МассивИмен Цикл
НоваяКолонка = ЭлементыФормы.тз.Колонки.Добавить(СтрокаЦикла ,Новый ОписаниеТипов("Строка"));
НоваяКолонка.ТекстШапки = СтрокаЦикла;
НоваяКолонка.Ширина = 50;
КонецЦикла 

Ну Да, оштбочка закралась
37. Said-We 30.03.23 17:49 Сейчас в теме
ОписаниеТиаСтрока = Новый ОписаниеТипов("Строка");
Для а=1 по 50 Цикл
      ИмяКолонки = "Наименование"+а;
      Колонки.Добавить(ИмяКолонки, ОписаниеТиаСтрока, ИмяКолонки, 50);
КонецЦикла;
42. Andrey1804 3 30.03.23 17:51 Сейчас в теме
(37)У меня у каждой колонки свое имя Например: Тип, страна, цвет, и т.п.
45. Said-We 30.03.23 17:52 Сейчас в теме
(42)
У меня у каждой колонки свое имя

Где они у вас? В чем они хранятся или на листке бумаги написаны и на столе лежат?
48. user1826630 30.03.23 17:53 Сейчас в теме
(45) Тссс... Он щас сам догадается, он в курсе (как утверждает Ася Озерова).
46. user1826630 30.03.23 17:53 Сейчас в теме
(42) Ну и? Что у нас можно использовать в качестве элемента коллекции, в каждом из которых содержится несколько значений?
52. Asya.Ozerova 41 30.03.23 17:56 Сейчас в теме
(42)В (47) Функция, обращайтесь к ней с 3-мя параметрами: Имя, Тип, Ширина из Своего Модуля
54. Said-We 30.03.23 17:57 Сейчас в теме
(52) "СтрокаЦикла" - там это что?
57. Andrey1804 3 30.03.23 17:58 Сейчас в теме
(52)Да я понял, спасибо. Просто тут про цикл из массива писали, но как в массив столько параметров засунуть.
58. user1826630 30.03.23 17:59 Сейчас в теме
(57) А это смотря что хранить в массиве в качестве элемента...
59. Andrey1804 3 30.03.23 17:59 Сейчас в теме
(58)имя, тип, заголовок,.ширину
63. user1826630 30.03.23 18:03 Сейчас в теме
(59) Это не элемент. Это конечные значения одного из элементов массива. А элементом массива могут быть ЛЮБЫЕ объекты.
62. Asya.Ozerova 41 30.03.23 18:01 Сейчас в теме
(57) В каком виде они у Вас есть в сущности?
66. user1826630 30.03.23 18:05 Сейчас в теме
(62) Ну реши опять за автора, что ж ты...
68. Andrey1804 3 30.03.23 18:06 Сейчас в теме
69. Andrey1804 3 30.03.23 18:08 Сейчас в теме
(66) есть список имен колонок, надо их задать в одном месте и программно создать колонки, предложите свое видение
70. user1826630 30.03.23 18:09 Сейчас в теме
(69) Ок, список Имен у тебя есть. А список заголовков, типов, ширин - у тебя есть?
47. Asya.Ozerova 41 30.03.23 17:53 Сейчас в теме
Функция СоздатьКолонку(Имя, Тип, Ширина)
НоваяКолонка = ЭлементыФормы.тз.Колонки.Добавить(Имя,Новый ОписаниеТипов(Тип));
НоваяКолонка.ТекстШапки = СтрокаЦикла;
НоваяКолонка.Ширина = Ширина;
КонецФункции;
49. Andrey1804 3 30.03.23 17:55 Сейчас в теме
(47)спасибо, я понял. Создаем без циклов.
51. user1826630 30.03.23 17:55 Сейчас в теме
(49) Красавчик! Продолжай!
53. Andrey1804 3 30.03.23 17:57 Сейчас в теме
56. user1826630 30.03.23 17:58 Сейчас в теме
(53) Сам как думаешь? А если потом возникнет задача создать не 20, а 25 колонок - что будешь делать?
50. user1826630 30.03.23 17:55 Сейчас в теме
(47)
Функция СоздатьКолонку(Имя, Тип, Ширина)
НоваяКолонка = ЭлементыФормы.тз.Колонки.Добавить(Имя,Новый ОписаниеТипов(Тип));
НоваяКолонка.ТекстШапки = СтрокаЦикла;
НоваяКолонка.Ширина = Ширина;
КонецФункции;


И нахрена тут неработающая функция? Что она возвращает? Или опять "ошибочка закралась"?
55. Asya.Ozerova 41 30.03.23 17:58 Сейчас в теме
Функция СоздатьКолонку(Имя, Тип, Ширина)
НоваяКолонка = ЭлементыФормы.тз.Колонки.Добавить(Имя,Новый ОписаниеТипов(Тип));
НоваяКолонка.ТекстШапки = Имя;
НоваяКолонка.Ширина = Ширина;
КонецФункции;

Да, опять "Закралась"
60. user1826630 30.03.23 18:00 Сейчас в теме
(55) То есть продолжаешь утверждать, что функцию можно использовать без оператора Возврат.
Ну ок, продолжай учительствовать тут дальше.
64. Asya.Ozerova 41 30.03.23 18:04 Сейчас в теме
(60)Ну поменяй на "Процедура" суть изменилась?
65. user1826630 30.03.23 18:05 Сейчас в теме
67. Said-We 30.03.23 18:06 Сейчас в теме
(60)
что функцию можно использовать без оператора Возврат


Проблема если в функции будешь использовать возврат и ничего не возвращать. Или возвращать ерунду.
В С++, на сколько я помню, нет процедур. Может я конечно плохо помню или в прошлом веке так было в С++. Но обходились.

А в ассемблере я не помню функций. Только процедуры. И что?
81. user1826630 30.03.23 18:21 Сейчас в теме
(67) А не надо с чужим уставом в свой язык программирования...
93. Said-We 30.03.23 18:44 Сейчас в теме
(81)
А не надо с чужим уставом в свой язык программирования...


Почему в чужой язык программирования. 1С что не на есть наш российский.

В 1С если внутри функции нет вызова "ВОЗВРАТ", то по факту от процедуры она мало чем отличается.
Отличается только тем, что потенциально могла бы возвращать значение, но не делает этого. Процедура никогда ничего не возвращает.

В С++ тем функциям, которые не должны ничего возвращать рисуют тип возвращаемого значения void. Т.е. ничего. Получается практически процедура.
В 1С процедуры можно вообще не использовать примерно по такому же принципу. При необходимости нарисовать "Возврат" рисовать, например "Возврат Неопределенно". Но тут на любителя. :-)
61. Said-We 30.03.23 18:01 Сейчас в теме
(57) Тебе не про это писали.
Где находится источник данных твоих имен и типов колонок и названий в шапке?
Откуда ты их берешь?

Если каждый раз кто-то приносит на бумажке, то сиди и каждый раз пиши. Не будет никаких циклов.
Если прилетает структура какая-то, массив или ещё что, там и бери в цикле.
71. Said-We 30.03.23 18:09 Сейчас в теме
(69) Список - это некий контейнер, который можно обходить в цикле.
72. Andrey1804 3 30.03.23 18:11 Сейчас в теме
(71)Подскажите мне такой контейнер с 4 параметрами,
75. Asya.Ozerova 41 30.03.23 18:14 Сейчас в теме
(72)
МояСтруктура = Новый Структура("Имя, Тип, Ширина", Имя, Тип, Ширина);
79. Andrey1804 3 30.03.23 18:18 Сейчас в теме
(75)30 колонок, 30 структур ? может проще как Вы писали к процедуре СоздатьКолонку ?
80. Asya.Ozerova 41 30.03.23 18:20 Сейчас в теме
(79)Структуру тоже можно в Цикле создать. Главное понять где храняться Исходные данные и в каком виде
82. Asya.Ozerova 41 30.03.23 18:21 Сейчас в теме
(79)Где у Вас храняться Имена колонок, тип и размер?
84. user1826630 30.03.23 18:23 Сейчас в теме
(82) ДА НИГДЕ! Он же сказал уже.
85. Andrey1804 3 30.03.23 18:24 Сейчас в теме
(84)в коде руками прописываем
86. user1826630 30.03.23 18:26 Сейчас в теме
(85) Продолжай тогда. Ты это уже умеешь, а об остальном даже думать не хочешь.
Храни в коде.
И потом при необходимости добавить еще одну колонку - будешь изменять код и перезаписывать конфигурацию с остановкой работы всего предприятия.

Вперед!
87. Asya.Ozerova 41 30.03.23 18:29 Сейчас в теме
(85)Тогда Вам проще таблицу создать с исходными данными и потом из нее работать
88. Andrey1804 3 30.03.23 18:30 Сейчас в теме
(87)Да, так проще будет.Спасибо.
91. Asya.Ozerova 41 30.03.23 18:33 Сейчас в теме
(88)Ну тогда отметьте мой ответ Верным, буду благодарна!
89. Asya.Ozerova 41 30.03.23 18:31 Сейчас в теме
(85)Еще тогда вопрс: Раз Вы их знаете заранее и прописываете в коде, почему бы сразу их не прописывать в таблицу формы?
90. Andrey1804 3 30.03.23 18:33 Сейчас в теме
(89)с кодом как то проще, там их около 30, а может и больше. А в таблице видимость группами переключаю.
83. user1826630 30.03.23 18:22 Сейчас в теме
(79) Можно и 30 строк в Таблице значений. Можно 30 строк в регистре сведений. Можно тридцать элементов Справочника...

Или эти данные с потолка сами возьмутся?
73. Said-We 30.03.23 18:12 Сейчас в теме
(72) Структура...
Массив из структур....
Таблица значений....
Список списков... (в 1С 7.5 не было таблиц значений)
74. user1826630 30.03.23 18:13 Сейчас в теме
(73) + Строка таблицы значений. + Соответствие.
76. Andrey1804 3 30.03.23 18:16 Сейчас в теме
(73)Я знаю как в структуру 2 значения, а 4 как ?
77. user1826630 30.03.23 18:16 Сейчас в теме
(76)
Я знаю как в структуру 2 значения, а 4 как ?
Так же как и 16.
78. Asya.Ozerova 41 30.03.23 18:18 Сейчас в теме
92. Andrey1804 3 30.03.23 18:36 Сейчас в теме
Спасибо всем за критику и ответы!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот