![]() |
![]() |
![]() |
|
Не могу добавить программно колонку в табличную часть документа | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
22.02.06
✎
12:50
|
В ТЧ документа добавил поле "п_Себестоимость" типа число.
Хочу его программно показывать. Поле показывается, но данные не вводятся. ПолеСС=Форма.ЭлементыФормы.Товары.Колонки.Добавить("п_Себестоимость", "СС"); ПолеСС.Доступность=истина; ПолеСС.Видимость=истина; ПолеСС.Данные="п_Себестоимость"; ПолеСС.УстановитьЭлементУправления(Тип("ПолеВвода")); |
|||
1
Rovan
гуру
22.02.06
✎
12:52
|
(0) данные пиши туда в ПриВыводеСтроки()
|
|||
2
igork1966
22.02.06
✎
12:52
|
В табличное поле ты добавил, а не в ТЧ.
|
|||
3
igork1966
22.02.06
✎
12:57
|
||||
4
Гений 1С
гуру
22.02.06
✎
12:58
|
(2) в метаданных это поле есть, ты на ник внимание обрати, я бы так не лоханулся просто.
(1) уверен? А какая разница? (3) не угадал, тема другая. Мне нужно редактировать это поле, я хочу колонку создать программно. В метаданных колонка есть. Поведение: захожу, ввожу текст. Выхожу - текст сбрасывается. Блин. |
|||
5
Волшебник
модератор
22.02.06
✎
12:59
|
(4) Данные нужно где-то хранить. Табличное поле не хранит данные.
|
|||
6
Гений 1С
гуру
22.02.06
✎
13:00
|
(5) Читай внимательно - данные хранятся в реквизите табличной части документа, конкретно в ТЧ "Товары". А в табличном поле источник данных как раз эта таблица.
Опять плохо объясняю? ;-) |
|||
7
Гений 1С
гуру
22.02.06
✎
13:01
|
(5) Я добавил реквизит в эту ТЧ. Называется "п_Себестоимость". Почему не работает, не могу понять
|
|||
8
igork1966
22.02.06
✎
13:01
|
(4) Тогда зачем это. Делаешь предварительно невидимое поле в табличном поле. Потом делаешь его доступным и видимым.
|
|||
9
Волшебник
модератор
22.02.06
✎
13:01
|
(6) Почему бы для этой колонки ТП не установить связь с реквизитом ТЧ по данным?
|
|||
10
Vozhd
22.02.06
✎
13:01
|
(8) Это будет не гениальным решением...
|
|||
11
Волшебник
модератор
22.02.06
✎
13:06
|
Запомни, Гений 1С. Все гениальное - просто.
|
|||
12
dimoff
22.02.06
✎
13:08
|
Совершенно нормальный вопрос и естетственное желание и все тупят
|
|||
13
Гений 1С
гуру
22.02.06
✎
13:08
|
(8) мне надо програмно, без всяких предварительных.
(9) А это что по-вашему: ПолеСС.Данные="п_Себестоимость";
(10) Блин, Вождь мирового пролетариата, специально для вас - чтоб было проще обновляться, хочу изменения формы вносить кодом, а не ручками, чтобы потом сделать через объединение модулей, а не ковыряться ручками в форме. (12) вово. Перед праздником что ли? |
|||
14
dimoff
22.02.06
✎
13:09
|
(0) Данные не показывает или показывает но не дает вводить?
|
|||
15
Волшебник
модератор
22.02.06
✎
13:11
|
(13) ПолеСС.Данные="п_Себестоимость";
Это бред. Потому что у тебя нет реквизита ТЧ с именем п_Себестоимость. Тебе нужно завести таблицу значений, где и хранить данные. В событии ПриОкончанииРедактирования эти данные получать из текущий строки табличного поля и запоминать в ТЗ, а в событии ПриВыводеСтроки данные извлекать из ТЗ. Для ускорения процесса рекомендую использовать Соответствие с ключом примитивного типа (индекс строки, например). |
|||
16
igork1966
22.02.06
✎
13:13
|
(15) Я так понял, он создал одноименный реквизит в ТЧ. Просто программно хочет добавлять его на ТП.
|
|||
17
Гений 1С
гуру
22.02.06
✎
13:13
|
(15) Это не бред, я добавил такой реквизит в табличную часть документа и хочу его выводить в ТП
(16) меня правильно понял. (14) не показывает и не сохраняет введенное |
|||
18
Волшебник
модератор
22.02.06
✎
13:14
|
(16) А я так понял, что он его не создал и хочет все делать программно.
(17) Но я ошибся. Он действительно его создал. |
|||
19
Vozhd
22.02.06
✎
13:15
|
(13) За "мировой пролетариат" спасибо. Вынужден Вас растроить, только что проверил, колонки программно добавляются и с данными связываются. Но я то делал тупо и не гениально...
|
|||
20
Гений 1С
гуру
22.02.06
✎
13:20
|
(19) Код в студию
|
|||
21
Гений 1С
гуру
22.02.06
✎
13:20
|
(19) или опять бла-бла-бла
|
|||
22
dimoff
22.02.06
✎
13:28
|
НоваяКолонка = ЭлементыФормы.Товары.Колонки.Добавить("ЦенаВРознице");
НоваяКолонка.Данные = "ЦенаВРознице"; НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода")); Это в типовой УПП Авансовый отчет, ТЧ Товары. Всё чудесно добавляется, сохраняется, вводится, отображается |
|||
23
Гений 1С
гуру
22.02.06
✎
13:41
|
(22) блин, а у меня такой же код не работает. Может они еще в другом месте чего прописывают? В моей редакции УПП такого кода нет
|
|||
24
igork1966
22.02.06
✎
13:43
|
(23) Нет в типовой такого кода. Это он его сам донаписал, я так думаю. И говорит работает. ;-)
|
|||
25
igork1966
22.02.06
✎
13:51
|
Щас из принципа проверил.
1. Добавил в ТЧ документа АвансовыйОтчет реквизит "МойРеквизит" текстовый. 2. Добавил в "ПриОткрытии()" в модуле формы: НоваяКолонка = ЭлементыФормы.Товары.Колонки.Добавить("МойРеквизит"); НоваяКолонка.Данные = "МойРеквизит"; НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода")); Все работет, отображает, сохраняет. ;-) |
|||
26
Vozhd
22.02.06
✎
14:16
|
(25) Небольшое исследование показало:
1. Если добавлять колонки в модуле формы, то это срабатывает полностью для списков, например, для ДокументСписок. 2. Если добавлять колонки для табличной части документа в модуле формы, то колонка появляется, но данных в ней не отображается. Проблема отображения данных легко решается через оформление строки, но привязать поле ввода к данным колонки пока не удалось. 3. Если добавлять колонки для табличной части документа ПриОткрытии() формы, то все работает без дополнительных извратов. |
|||
27
Гений 1С
гуру
22.02.06
✎
14:16
|
(25) есть одна мысля, сча проверяю, потом скажу
|
|||
28
Гений 1С
гуру
22.02.06
✎
14:18
|
(26) прикол в том, что я привязываю при создании формы (еще до открытия), может из-за этого?
|
|||
29
Vozhd
22.02.06
✎
14:19
|
(28) При создании формы добавление колонки не всегда адекватно срабатывает, как я уже написал.
|
|||
30
Гений 1С
гуру
22.02.06
✎
14:21
|
(29) Ну да. я ж согласен, потому и указал (26)
|
|||
31
Vozhd
22.02.06
✎
14:29
|
(30) Не надо недооценивать пролетариат...
|
|||
32
Гений 1С
гуру
22.02.06
✎
14:30
|
(31) ну и как пролетариат сие расценивает - как баг 1С?
|
|||
33
Гений 1С
гуру
22.02.06
✎
14:30
|
(31) в смысле баг платформы
|
|||
34
igork1966
22.02.06
✎
14:31
|
(33) Скорее "особенность". ;-)
|
|||
35
Гений 1С
гуру
22.02.06
✎
14:33
|
(34) счас настучу БГ об этом, только проверю, на самом деле так или нет
|
|||
36
Гений 1С
гуру
22.02.06
✎
15:09
|
(34)(31) Реально, проблема в том, что вызывается при создании формы.
Стукнул в 1С: Для воспроизведения создайте обработку, у нее табличную часть Товары и реквизит этой табличной части "Кол" типа "Количество(10,0)". Создайте основную форму, удалите из нее колонку Кол в табличной части Товары и код обработки замените этим: Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. НоваяКолонка = ЭлементыФормы.Товары.Колонки.Добавить("Кол"); НоваяКолонка.Данные = "Кол"; НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода")); КонецПроцедуры НоваяКолонка = ЭлементыФормы.Товары.Колонки.Добавить("Кол1"); НоваяКолонка.Данные = "Кол"; НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода")); Разве это не бага платформы??? По моему слова о том, что форма еще не создана, прозвучат неубедительно. Тогда надо выдавать ошибку, а так получается странный результат - данные в ячейку вводятся, сохраняются, но не привязываются к реквизиту. Касается не только формы обработки, но и любых форм вообще. |
|||
37
Vozhd
22.02.06
✎
15:13
|
(36) Так 1С уже неоднократно сообщал, что в модуле формы объект еще не полностью инициализирован. И именно этим они объясняют закрытие предприятия при возникновении ошибок в модулях...
|
|||
38
Гений 1С
гуру
22.02.06
✎
15:16
|
(37) в курсе, это конкретная бага... корявая библиотека по работе с формами
|
|||
39
Гений 1С
гуру
26.02.06
✎
17:08
|
(0) 1С признало свою ошибку.
(36) Отправил им вот этот пост. Ответили (1С, Москва) 26.02.2006 16:52 : Re: Бага или фича? Программное добавление колонок при создании объекта Форма. Указанная Вами ошибка подтвердилась и зарегистрирована. Спасибо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |