Обращение к доп реквизиту программно

1. Alexponenta 10.10.21 16:30 Сейчас в теме
В карточке номенклатуры создан дополнительный реквизит. Вопрос как к нему обратится программно, если его не видно в конфигураторе?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. glek 119 11.10.21 07:25 Сейчас в теме
(1) в типовых у доп. характеристик есть поле "Имя".
2. TokarevV 30 10.10.21 16:44 Сейчас в теме
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Дата по данным клиента");
ДатаПоДаннымКлиента=СсылкаНаОбъект..ДополнительныеРеквизиты.Найти(ДопСвойство).Значение;
4. Dem0 11.10.21 11:03 Сейчас в теме
Как написали в (2) , только не вздумайте искать просто по наименованию, ищите по реквизиту "Имя" - это то, которое выглядит, как заклинание на эльфийском.
А то будет у вас "Размер" и "Размер" - один для трусов, один для галстуков. Узнаете об этом только когда продавать клиенту будете =)
5. Alexponenta 11.10.21 14:46 Сейчас в теме
(4)
Не, это то понятно. Меня именно обращение к доп.реквизиту интересует. То как я его найду это отдельный вопрос:

в справочнике "Номенклатура" создан реквизит (для работы одной обработки), и собственно то требуется чтобы это значение программно заполнялось на основании другого реквизита.

И еще вопрос: как правильно написать функцию которая бы срабатывала если заполнены оба реквизита в обработке. Событие "ПриИзменении" не шибко подходит поскольку на его работу влияет изменение только одного реквизита.
6. soft_wind 11.10.21 15:03 Сейчас в теме
база УТ?
еще есть Дополнительные свойства, лежат в РС.ДополнительныеСведения
(многие путаются в них) обратите внимание!
7. Alexponenta 11.10.21 15:13 Сейчас в теме
(6)

Да, база УТ.

Update: наврал, база УНФ
8. Dem0 11.10.21 15:18 Сейчас в теме
УТ 10.3 или 11 - там и там разные места хранения доп. реквизитов и доп. сведений
9. Dem0 11.10.21 15:19 Сейчас в теме
Давайте скриншот в студию! Где находится этот реквизит, который вы хотите изменить
10. Alexponenta 11.10.21 15:23 Сейчас в теме
11. Dem0 11.10.21 15:30 Сейчас в теме
(10)
Зайдите в справочник "Номенклатура" в конфигураторе в дереве метаданных - посмотрите есть ли табличная часть типа "ДополнительныеРеквизиты".
Посмотрите
Получаете объект, от него через точку обращение к табличной части. В таблице ищете доп реквизит

НоменклатураОбъект = НоменклатураСсылкаНаФорме.ПолучитьОбъект();
ДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","ИндСвойство_a6c5ac5d419a44bebcbe19171c190e40");
ДопСвойствоВТаблице = НоменклатураОбъект.ДополнительныеРеквизиты.Найти(ДопРеквизит,"Свойство");
Если ДопСвойствоВТаблице = Неопределено Тогда
	ДопСвойствоВТаблице = НоменклатураОбъект.ДополнительныеРеквизиты.Добавить();
КонецЕсли;
ДопСвойствоВТаблице.Значение = //тут значение;
НоменклатураОбъект.Записать();
Показать
13. Alexponenta 11.10.21 16:08 Сейчас в теме
(11)
Вот из-за таких "конструкций" и не люблю с РС работать... До сих пор отойти не могу от программного заполнения характеристик номенклатуры в КА1.
15. Dem0 11.10.21 16:21 Сейчас в теме
(13)
Вот из-за таких "конструкций" и не люблю с РС работать

Я тоже страдал, но потом как-то пофигу на это стало, после нескольких обработок. В КА 1.1 - там регистры сведений. Но тоже нужно спозиционироваться на конкретном свойстве из ПланаВидовХарактеристик. А просто по имени его искать - большая ошибка. Там они могут свойство поменять прямо из карточки контрагента (номенклатуры) и ищи-свищи потом этот "размер", когда он уже "размерчик шапочки".
17. Alexponenta 11.10.21 19:09 Сейчас в теме
(11)
Данный код работает если реквизит предварительно заполнен - неважно чем. Если реквизит пуст , то:
Прикрепленные файлы:
18. Alexponenta 11.10.21 20:03 Сейчас в теме
(11)
Отбой. Оказывается не хватало строчки:
НоменклатураОбъект = НоменклатураСсылкаНаФорме.ПолучитьОбъект();
ДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","ИндСвойство_a6c5ac5d419a44bebcbe19171c190e40");
ДопСвойствоВТаблице = НоменклатураОбъект.ДополнительныеРеквизиты.Найти(ДопРеквизит,"Свойство");
Если ДопСвойствоВТаблице = Неопределено Тогда
ДопСвойствоВТаблице = НоменклатураОбъект.ДополнительныеРеквизиты.Добавить();
КонецЕсли;
-->ДопСвойствоВТаблице.Свойство = ДопРеквизит;
ДопСвойствоВТаблице.Значение = //тут значение;
НоменклатураОбъект.Записать();
12. starik-2005 3036 11.10.21 15:58 Сейчас в теме
По поводу доп.реквизитов в УФ, то в списке реквизитов совершенно не просто так добавлено поле с именем для разработчика. С этим что-то можно сделать. А так - да, есть табличная часть у объекта с доп.реквизитами, порывшись в которой можно найти то, что нужно.
14. Alexponenta 11.10.21 16:08 Сейчас в теме
(12)

Таки да... Но вот где его конкретно применять не совсем понятно.
16. Оберон 16 11.10.21 17:54 Сейчас в теме
УНФ, значит есть БСП. а значит и танцев с бубнами меньше

общий модуль УправлениеСвойствами

ЗнСвойства = УправлениеСвойствами.ЗначениеСвойства(ОбъектСсылка, "ИмяРеквизитаДляРазработчика")

УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений)

*******
для инициализации
УправлениеСвойствами.ПриСозданииНаСервере(Форма, ДополнительныеПараметры)
УправлениеСвойствами.ПриЧтенииНаСервере(Форма, ТекущийОбъект)
УправлениеСвойствами.ПередЗаписьюНаСервере(Форма, ТекущийОбъект)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(Форма, Отказ, ПроверяемыеРеквизиты, Объект)
Alexponenta; Dem0; +2 Ответить
19. Dem0 11.10.21 20:15 Сейчас в теме
(16)
ЗнСвойства = УправлениеСвойствами.ЗначениеСвойства(ОбъектСсылка, "ИмяРеквизитаДляРазработчика")

Спасибо за этот кусок, действительно не знал про него.
pve mode on
Но погодите-ка..Оберон Уайт? Вас же закатали в капсулу для криосна? =)
pve mode off
Оставьте свое сообщение

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