Помогите, как вытащить значение свойств объектов с справочника
С чего все началось, мне нужно было на форму справочника добавить кнопку, которая заполняла бы значение определенного свойства, но мне не удается к нему подцепится, чтоб записать в него данные? Данные для заполнения, беру с созданного мной регистра сведений
Процедура ЗаполнитьНажатие(Элемент)
Докум = Справочники.ДоговорыКонтрагентов.Выбрать().Владелец;
//осуществялем заполнение регистра сведений "Нумератор" значениями со справочника "Договоры Контрагентов"
Наборчик=РегистрыСведений.Нумератор.СоздатьМенеджерЗаписи();
Наборчик.Активность=Истина; //попробовать без него
Наборчик.Год=Формат(ТекущаяДата(), "ДФ=гггг"); //Выбрать формат, чтоб вытаскивал только "год"
Наборчик.ПорядковыйНомер = 1; //вытащить номер Рег. номера и присвоить его региструсведений.нумератор
Наборчик.Записать(); //(ложь)
Рег = РегистрыСведений.ЗначенияСвойствОбъектов.ПустойКлюч();
Справочники.ДоговорыКонтрагентов.ПолучитьСсылку();
Если Формат(Рег.Период, "ДФ=гггг") <> Формат(Наборчик.Год, "ДФ=гггг") тогда
Наборчик=РегистрыСведений.Нумератор.СоздатьМенеджерЗаписи();
Наборчик.Активность=Истина; //попробовать без него
Наборчик.Год=Формат(Рег.Период,"ДФ=гггг"); //Выбрать формат, чтоб вытаскивал только "год" ДФ=dd
Наборчик.ПорядковыйНомер = 1; //вытащить номер Рег. номера и присвоить его региструсведений.нумератор
Наборчик.Записать(); //(ложь)
Регистр = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
Регистр.Объект = Докум.Владелец;
Регистр.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00172");
Регистр.Значение = Наборчик.ПорядковыйНомер;
//Докум.Номер = Наборчик.ПорядковыйНомер;
Наборчик.ПорядковыйНомер = Наборчик.ПорядковыйНомер +1;
// Докум.Записать();
иначе
Регистр = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
Регистр.Объект = ;
Регистр.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00172");
Регистр.Значение = Наборчик.ПорядковыйНомер;
//Докум.Номер = Наборчик.ПорядковыйНомер;
Наборчик.ПорядковыйНомер = Наборчик.ПорядковыйНомер + 1;
//Докум.Записать();
КонецЕсли;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Как читать чужой код? Часть 3. Разбор и доработка запросов
- Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
- Опыт оптимизации 1С на PostgreSQL
- Что такое ОСень? Или как лучшие практики из мира Java прижились в экосистеме OneScript
- История одного админа в мире 1С. Как поиски причины тормозов 1С привели к созданию нового продукта
Найденные решения
(1) 2 универсальные функции для чтения и записи свойства, для ОФ, проверено и работает в УТ 10.3
Функция ОпределитьЗначениеСвойства(ЗначениеСвойства,ВыбОбъект) Экспорт
ЗначСвойства = неопределено;
ПВХ = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(ЗначениеСвойства);
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|ЗСО.Значение
|ИЗ
|РегистрСведений.ЗначенияСвойствОбъектов КАК ЗСО
|ГДЕ Объект = &ВыбОбъект И Свойство = &ВыбСвойство";
Запрос.УстановитьПараметр("ВыбОбъект",ВыбОбъект);
Запрос.УстановитьПараметр("ВыбСвойство",ПВХ);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЗначСвойства = Выборка.Значение;
КонецЕсли;
Возврат ЗначСвойства;
КонецФункции
Функция ЗаписатьЗначениеСвойства(Значение,ЗначениеСвойства,ВыбОбъект) Экспорт
ПВХ = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(ЗначениеСвойства);
МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Объект = ВыбОБъект.Ссылка;
МенеджерЗаписи.Свойство = ПВХ.Ссылка;
МенеджерЗаписи.Значение = Значение;
МенеджерЗаписи.Записать()
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) ФормаЭлемента
(3) Спасибо, я примерно так и думал, что нужно через запрос.
Теперь теперь такая штука, нужно свойству справочника "ДоговорыКонтрагентов" присвоить мой параметр. Вопрос примерно в том же, не могу вытащить из данного справочника (объекта) нужное мне свойство, ибо его найти там не удатся.
(3) Спасибо, я примерно так и думал, что нужно через запрос.
Теперь теперь такая штука, нужно свойству справочника "ДоговорыКонтрагентов" присвоить мой параметр. Вопрос примерно в том же, не могу вытащить из данного справочника (объекта) нужное мне свойство, ибо его найти там не удатся.
(1) 2 универсальные функции для чтения и записи свойства, для ОФ, проверено и работает в УТ 10.3
Функция ОпределитьЗначениеСвойства(ЗначениеСвойства,ВыбОбъект) Экспорт
ЗначСвойства = неопределено;
ПВХ = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(ЗначениеСвойства);
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|ЗСО.Значение
|ИЗ
|РегистрСведений.ЗначенияСвойствОбъектов КАК ЗСО
|ГДЕ Объект = &ВыбОбъект И Свойство = &ВыбСвойство";
Запрос.УстановитьПараметр("ВыбОбъект",ВыбОбъект);
Запрос.УстановитьПараметр("ВыбСвойство",ПВХ);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЗначСвойства = Выборка.Значение;
КонецЕсли;
Возврат ЗначСвойства;
КонецФункции
Функция ЗаписатьЗначениеСвойства(Значение,ЗначениеСвойства,ВыбОбъект) Экспорт
ПВХ = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(ЗначениеСвойства);
МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Объект = ВыбОБъект.Ссылка;
МенеджерЗаписи.Свойство = ПВХ.Ссылка;
МенеджерЗаписи.Значение = Значение;
МенеджерЗаписи.Записать()
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот