|
УТ 11.4 Программно добавить доп. реквизит | ☑ | ||
---|---|---|---|---|
0
letovd
26.08.22
✎
10:38
|
Добрый день, добавляю программно доп реквизит, но он почему-то не используется в предприятии, пока его не перезаписать.. что я упустил?
Если ЭлементПВХ_Ссылка = Неопределено ИЛИ ЭлементПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПустаяСсылка() Тогда ЭлементПВХ_Нов = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент(); ЭлементПВХ_Нов.Заголовок = ИмяРеквизита; ЭлементПВХ_Нов.Имя = ИмяРеквизита; ЭлементПВХ_Нов.НаборСвойств = НаборСвойствРеквизита; ЭлементПВХ_Нов.Наименование = ЭлементПВХ_Нов.Заголовок+" ("+ЭлементПВХ_Нов.НаборСвойств+")"; ЭлементПВХ_Нов.ТипЗначения = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(ДлинаСтроки)); // ? Попытка ЭлементПВХ_Нов.Записать(); ЭлементПВХ_Ссылка = ЭлементПВХ_Нов.Ссылка; Исключение Сообщить("Не удалось создать свойство " + ИмяРеквизита); КонецПопытки; КонецЕсли; |
|||
1
letovd
26.08.22
✎
10:39
|
Наверное так понятнее будет:
Функция ПолучитьСвойство(ИмяРеквизита, НаборСвойствРеквизита, ДлинаСтроки=0) ЭлементПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок", ИмяРеквизита); Если ЭлементПВХ_Ссылка = Неопределено ИЛИ ЭлементПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПустаяСсылка() Тогда ЭлементПВХ_Нов = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент(); ЭлементПВХ_Нов.Заголовок = ИмяРеквизита; ЭлементПВХ_Нов.Имя = ИмяРеквизита; ЭлементПВХ_Нов.НаборСвойств = НаборСвойствРеквизита; ЭлементПВХ_Нов.Наименование = ЭлементПВХ_Нов.Заголовок+" ("+ЭлементПВХ_Нов.НаборСвойств+")"; ЭлементПВХ_Нов.ТипЗначения = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(ДлинаСтроки)); // ? Попытка ЭлементПВХ_Нов.Записать(); ЭлементПВХ_Ссылка = ЭлементПВХ_Нов.Ссылка; Исключение Сообщить("Не удалось создать свойство " + ИмяРеквизита); КонецПопытки; КонецЕсли; Возврат ЭлементПВХ_Ссылка; КонецФункции |
|||
2
alarm2020
26.08.22
✎
10:41
|
(1) Нет, не будет.
Попробуйте использовать простой шаблон для задавания вопросов 1. Что вы делаете 2. Что ожидаете получить 3. Что получаете |
|||
3
letovd
26.08.22
✎
10:46
|
(2)
1. Проверяю наличие доп. реквизита по имени, если его нет, то программно создаю 2. Ожидаю, либо найти доп. реквизит, либо создать 3. Если реквизит есть, возвращаю его из функции, если реквизита нет, записываю его, но в предприятии я его не вижу в справочнике, он будто не активен, но если зайти в пвх функции тех. специалиста, то он там есть, и если нажать в нем команду записать, то он появляется в справочнике. Он будто не используется до момента "проведения". |
|||
4
alarm2020
26.08.22
✎
10:56
|
(3) Создайте элемент ПВХ с помощью вашей функции и посмотрите какие поля в нем не заполнены по сравнению с другими элементами ПВХ
|
|||
5
letovd
26.08.22
✎
10:57
|
(4) Сравнивал, все идентично
|
|||
6
alarm2020
26.08.22
✎
10:59
|
(5) В конфигураторе ищите по ссылкам где используется ПВХ и сравнивайте там
|
|||
7
letovd
26.08.22
✎
11:00
|
(6) Да я по ходу решил сделать по другому, в отладчике в момент отработки строки ЭлементПВХ_Нов.Записать(); проверил какие реквизиты еще доступные для изменения, нашел реквизит типа булево: ЭлементПВХ_Нов.Доступен, сейчас его проверю
|
|||
8
alarm2020
26.08.22
✎
11:02
|
(7) Так вы неправильным инструментом пользуетесь. Для сравнения надо брать такой, который показывает все реквизиты, а не тот, что разработчики вам дают
|
|||
9
letovd
26.08.22
✎
11:05
|
(8) В "рабочем" свойстве пвх реквизит доступен также "ложь", брр
Я пользуюсь возможностями конфигуратора, а что еще есть? |
|||
10
oslokot
26.08.22
✎
11:10
|
Есть же общий модуль УправлениеСвойствами который сделает всю эту работу за вас, зачем городить своё?
|
|||
11
alarm2020
26.08.22
✎
11:16
|
(10) Затем, что иногда "что-то идет не так"
|
|||
12
alarm2020
26.08.22
✎
11:17
|
(9) Ищи по ссылкам. Наверняка в какой-нибудь регистр сведений запихнули
|
|||
13
letovd
26.08.22
✎
11:43
|
Решил. Его еще нужно в наборе записать...
|
|||
14
letovd
26.08.22
✎
11:56
|
Функция ПолучитьСвойство(ИмяРеквизита, НаборСвойств_Ссылка, ДлинаСтроки=0)
ЭлементПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок", ИмяРеквизита); Если ЭлементПВХ_Ссылка = Неопределено ИЛИ ЭлементПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПустаяСсылка() Тогда ЭлементПВХ_Нов = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент(); ЭлементПВХ_Нов.Заголовок = ИмяРеквизита; ЭлементПВХ_Нов.Имя = ИмяРеквизита; ЭлементПВХ_Нов.НаборСвойств = НаборСвойств_Ссылка; ЭлементПВХ_Нов.Наименование = ЭлементПВХ_Нов.Заголовок+" ("+ЭлементПВХ_Нов.НаборСвойств+")"; ЭлементПВХ_Нов.ТипЗначения = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(ДлинаСтроки)); Попытка ЭлементПВХ_Нов.Записать(); ЭлементПВХ_Ссылка = ЭлементПВХ_Нов.Ссылка; Исключение Сообщить("Не удалось создать свойство " + ИмяРеквизита); КонецПопытки; КонецЕсли; // Добавим наш реквизит в набор дополнительных реквизитов справочника. НаборСвойств_Объект = НаборСвойств_Ссылка.ПолучитьОбъект(); Если НаборСвойств_Объект.ДополнительныеРеквизиты.Найти(ЭлементПВХ_Ссылка, "Свойство") = Неопределено Тогда ЭлементНС_Нов = НаборСвойств_Объект.ДополнительныеРеквизиты.Добавить(); ЭлементНС_Нов.Свойство = ЭлементПВХ_Ссылка; НаборСвойств_Объект.Записать(); КонецЕсли; Возврат ЭлементПВХ_Ссылка; КонецФункции |
|||
15
Мимохожий Однако
27.08.22
✎
10:31
|
(14) Я бы использовал в первой строке
ЭлементПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", ИмяРеквизита); |
|||
16
Chameleon1980
27.08.22
✎
10:53
|
(15) не всегда пойдет. в типовых же, если интерактивно создаешь элемент пвх имя генерируется с идентификатором
можно использовать, наверное: 1. заведомо поменять имя 2. знать имя заранее (с идентификатором) |
|||
17
Chameleon1980
27.08.22
✎
10:58
|
||||
18
Сергиус
29.08.22
✎
00:47
|
(0)Что значит "не используется в предприятии"?
|
|||
19
letovd
29.08.22
✎
11:20
|
(15) Разве эти функции отличатся по скорости отработки?
|
|||
20
Мимохожий Однако
29.08.22
✎
11:23
|
(19) Дело не в скорости, а уникальности дополнительного реквизита. Не просто так этот реквизит придуман. Но..дело вкуса.
|
|||
21
letovd
29.08.22
✎
11:24
|
(20) Понял, согласен
|
|||
22
unbred
29.08.22
✎
11:55
|
(15) если не программно создавать, а ручками, то имя пустое будет. ( по крайней мере, в рознице 2.2.5.23, так )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |