|
Программное добавление реквизитов в табличную часть. | ☑ | ||
---|---|---|---|---|
0
НачинающийВ1С
18.06.19
✎
11:08
|
Доброе утро.
На форму в общем модуле добавляю реквизиты в табличную часть "Товары" программно. В самом документе в табличной части реквизиты в конфигураторе добавлены. Добавляю абсолютно одинаково, но почему-то характеристика добавляется, а номенклатура нет. На что обратить внимание, где может быть ошибка? Если Форма.ИмяФормы = "Документ.НашДокумент.Форма.ФормаДокумента" тогда ДобавляемыеРеквизиты = Новый Массив; //реквизиты ТЧ Товары Номенклатура = Новый РеквизитФормы("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), "Объект.Товары", "Номенклатура"); Характеристика = Новый РеквизитФормы("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"), "Объект.Товары", "Характеристика"); //Заполним массив после описания реквизитов формы ДобавляемыеРеквизиты.Добавить(Номенклатура); ДобавляемыеРеквизиты.Добавить(Характеристика); //Добавим новые реквизиты в форму Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); //добавление на форму элементов ТЧ Номенклатура = Форма.Элементы.Добавить("Номенклатура", Тип("ПолеФормы"), Форма.Элементы.Товары); Номенклатура.ПутьКДанным = "Объект.Товары.Номенклатура"; Номенклатура.Вид = ВидПоляФормы.ПолеВвода; Характеристика = Форма.Элементы.Добавить("Характеристика", Тип("ПолеФормы"), Форма.Элементы.Товары); Характеристика.ПутьКДанным = "Объект.Товары.Характеристика"; Характеристика.Вид =ВидПоляФормы.ПолеВвода; КонецЕсли; |
|||
1
НачинающийВ1С
18.06.19
✎
11:10
|
Замечу, что в отладчике в "Форма.Объект.Товары" оба реквизита присутствуют после обхода этих строк.
А вот уже в предприятии номенклатуры нет, а характеристика есть. |
|||
2
НачинающийВ1С
18.06.19
✎
11:12
|
(1) Да собственно и перед выводом самим в самом конце события "при открытии формы" в отладчике оба реквизита присутствуют.
|
|||
3
aleks_default
18.06.19
✎
11:24
|
Почисти кэш
|
|||
4
НачинающийВ1С
18.06.19
✎
11:33
|
(3) Чистил, не помогло. На всякий случай еще раз почистил, снова не помогло.
|
|||
5
RomanYS
18.06.19
✎
11:40
|
>> В самом документе в табличной части реквизиты в конфигураторе добавлены
Зачем добавлять реквизиты формы, если они уже есть в метаданных. По идее ты вообще ошибку должен получить |
|||
6
НачинающийВ1С
18.06.19
✎
11:41
|
(5) А как правильно добавить на форму реквизиты?
Ошибок никаких не получаю. |
|||
7
RomanYS
18.06.19
✎
11:46
|
(6) Зачем это делать программно? Просто добавьте их в редакторе формы.
Код подобный вашему может быть использован для упрощения поддержки, когда непосредственное редактирование форм не рекомендуется. Но "НашДокумент" явно не тот случай. |
|||
8
НачинающийВ1С
18.06.19
✎
11:47
|
(7) "НашДокумент" это абстрактное название документа. Документ типовой. Как и Номенклатура и Характеристика это абстрактные названия реквизитов.
А сама задача вполне реальна. И требование заключается в том, что все реквизиты на форму добавляются в расширении программно. |
|||
9
catena
18.06.19
✎
11:48
|
+(5)ТОже не поняла. Достаточно же элементы добавить.
|
|||
10
catena
18.06.19
✎
11:48
|
Вот этого должно хватить, если реквизиты в ТЧ есть:
//добавление на форму элементов ТЧ Номенклатура = Форма.Элементы.Добавить("Номенклатура", Тип("ПолеФормы"), Форма.Элементы.Товары); Номенклатура.ПутьКДанным = "Объект.Товары.Номенклатура"; Номенклатура.Вид = ВидПоляФормы.ПолеВвода; Характеристика = Форма.Элементы.Добавить("Характеристика", Тип("ПолеФормы"), Форма.Элементы.Товары); Характеристика.ПутьКДанным = "Объект.Товары.Характеристика"; Характеристика.Вид =ВидПоляФормы.ПолеВвода; |
|||
11
НачинающийВ1С
18.06.19
✎
11:53
|
(10) Убрал добавление самих реквизитов. Оставил только добавление элементов.
Все осталось как прежде - один реквизит добавляется, второй нет. |
|||
12
НачинающийВ1С
18.06.19
✎
11:54
|
(7) (10) Вы были правы, добавление реквизитов само по себе излишне. Уберу это в коде.
Но проблема с выводом на форму так и не решена. |
|||
13
RomanYS
18.06.19
✎
11:55
|
(8) Прикольно. Каков уровень абстракции: реквизит Номенклатура в ТЧ Товары !!!
(10) +1 (8) Проверь права, возможно на абстрактный добавленный тип их забыли установить. Вряд ли у тебя там добавлены абстрактные функциональные опции, но тоже проверь. |
|||
14
НачинающийВ1С
18.06.19
✎
11:56
|
(13) Запускаю с полными правами.
|
|||
15
RomanYS
18.06.19
✎
11:58
|
(14) проверь ещё раз ПутьКДанным. Хотя при ошибке по идее исключение должно выдаваться
|
|||
16
RomanYS
18.06.19
✎
12:00
|
Ещё имена переменных поменяй, вместо
Номенклатура = Форма.Элементы.Добавить("Номенклатура", Тип("ПолеФормы"), Форма.Элементы.Товары); делай НовыйЭлементФормы = Форма.Элементы.Добавить("Номенклатура", Тип("ПолеФормы"), Форма.Элементы.Товары); |
|||
17
НачинающийВ1С
18.06.19
✎
12:02
|
(16) Имена переменных в базе итак другие (Элемент_ИмяЭлемента)
Путь к данным правильный. В последней строке события "При открытии" по прежнему в "Объект.Товары" есть оба нужных реквизита. А в итоге почему-то только один. |
|||
18
НачинающийВ1С
18.06.19
✎
12:03
|
(17) Не в базе, а в моем коде.
|
|||
19
RomanYS
18.06.19
✎
12:05
|
(17) В Объект.Товары они независимо от твоего кода - из метаданных расширения.
Смотри Форма.Элементы.ИмяТвоегоАбстактногоРеквизита: видимость, доступность... |
|||
20
singlych
18.06.19
✎
12:12
|
ставлю на функциональную опцию
|
|||
21
НачинающийВ1С
18.06.19
✎
12:20
|
(19) Сверил.
Все строчки у обоих реквизитов идентичны. |
|||
22
mikecool
18.06.19
✎
12:25
|
добавить в конфигураторе, рулить видимостью - не вариант?
|
|||
23
НачинающийВ1С
18.06.19
✎
12:26
|
(22) Вы имеете ввиду добавить в конфигураторе на форме не кодом? Не вариант так.
|
|||
24
mikecool
18.06.19
✎
12:29
|
(23) как пожелаешь
|
|||
25
aleks_default
18.06.19
✎
12:31
|
Вообще-то непонятно. Если реквизиты изначально есть, то почему изначально нет элементов формы для этих реквизитов? Они тоже тогда наверное должны быть. Может они тоже на самом деле уже есть, а их потом где-то дальше в коде скрывают(убирают видимость)?
|
|||
26
НачинающийВ1С
18.06.19
✎
12:31
|
(24) Ну это не мое желание. Задание такое.
|
|||
27
НачинающийВ1С
18.06.19
✎
12:32
|
(25) Потому что реквизиты добавлены мной вручную. А формы типовые.
|
|||
28
Вафель
18.06.19
✎
12:32
|
(10) должно работать
|
|||
29
aleks_default
18.06.19
✎
12:32
|
Может просмотреть код на наличие действий с элементами формы?
|
|||
30
aleks_default
18.06.19
✎
12:34
|
(27) А тоесть ты реквизиты в расширении добавил?
|
|||
31
НачинающийВ1С
18.06.19
✎
13:20
|
(30) Нет, сами реквизиты добавлены в конфигурации основной. А общий модуль, в котором приведенный код написан, находится в расширении. (29) Что имеется ввиду?
|
|||
32
RomanYS
18.06.19
✎
13:24
|
(31) Озвучь уже тип проблемного реквизита, конфигурацию и вид типового документа. В твоей абстракции возможно совершено другие проблемы и ошибки чем в реальности.
|
|||
33
НачинающийВ1С
18.06.19
✎
13:26
|
(32) Комплексная автоматизация 2 (2.4.7.109)
Документ "Коммерческое предложение клиенту". В табличную часть не добавляется реквизит "Направление" (СправочникСсылка.НаправленияДеятельности) |
|||
34
RomanYS
18.06.19
✎
13:31
|
(33) Возможно Справочник.НаправленияДеятельности выключен фукнциональными опциями
|
|||
35
НачинающийВ1С
18.06.19
✎
13:32
|
(34) Если добавлять просто на форму руками, все добавляется.
Как можно проверить выключен или нет? |
|||
36
Avalone2010
18.06.19
✎
14:49
|
(0) КА - типовая.Пустая.Включена ФО по КП. В модуле формы расширения.В процедуре при создании на сервере.
НовыйЭлементФормы = Элементы.Добавить("Товары_НаправлениеДеятельности", Тип("ПолеФормы"), Элементы.Товары); НовыйЭлементФормы.ПутьКДанным = "Объект.Товары._НаправлениеДеятельности"; НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода; В КП добавлен в ТЧ товары новый реквизит "_НаправлениеДеятельности". |
|||
37
Avalone2010
18.06.19
✎
15:03
|
(35) Настройки фин реза и контролинг. раздел финансовый результат. галочка финансовый результат по направлениям деятельности. константа ФормироватьФинансовыйРезультат
|
|||
38
НачинающийВ1С
18.06.19
✎
15:21
|
(37) Спасибо! Это решило вопрос.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |