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

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

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

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

Да, база УТ.

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

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

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

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

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

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

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

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

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

Программист 1С
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день

Ведущий разработчик 1С
Москва
зарплата от 250 000 руб.
Полный день

Руководитель проектов 1С
Москва
зарплата от 200 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб.
Полный день