![]() |
|
УПП 1,3 свойства номенклатуры. Как программно получить? | ☑ | ||
---|---|---|---|---|
0
Gray776
16.03.16
✎
10:37
|
В общем у номенклатуры имеются несколько свойств. Для внешней печатной формы документа нужно получить некоторые из них, для номенклатуры из таблицы документа.
Может есть штатная функция какая для этого? Я просто поискал не нашел, наверно не там или не так искал... |
|||
1
mistеr
16.03.16
✎
10:41
|
(0) Нету. Точнее функции есть, но привязаны к форме редактирования свойств.
|
|||
2
Gray776
16.03.16
✎
10:43
|
(1) тоесть поискать в формах функцию? а как называется?
|
|||
3
Одинесю
16.03.16
✎
10:56
|
Функция ПолучитьСвойстваОбъекта(Ссылка = Неопределено)
// данные из свойств документа СтруктураПараметров = Новый Структура; СтруктураСвойств = Новый Структура; ЗаполнитьСписокСвойств(СтруктураСвойств, СтруктураПараметров); Запрос = Новый Запрос; Запрос.Текст = ТекстЗапросаПоСвойствамОбъекта(СтруктураСвойств); Если Ссылка = Неопределено Тогда Ссылка = СсылкаНаОбъект; КонецЕсли; Запрос.Параметры.Вставить("ТекущийОбъект", Ссылка); Для каждого Параметр Из СтруктураПараметров Цикл Запрос.Параметры.Вставить(Параметр.Ключ, Параметр.Значение); КонецЦикла; РезультатЗапроса = Запрос.Выполнить().Выбрать(); Если РезультатЗапроса.Следующий() Тогда ЗаполнитьЗначенияСвойств(СтруктураСвойств, РезультатЗапроса); КонецЕсли; Возврат СтруктураСвойств; КонецФункции // ПолучитьСвойстваОбъекта() Вот такая функция у меня в обработке. |
|||
4
Gray776
16.03.16
✎
11:12
|
(3) Поковырялся я уже в справочнике номенклатура. Нашел функцию она в обработках... жесть конечно сколько наворочено. Как то все изподвыподверта всё...
Просто не хотел запрос в цикле пускать: печатная форма жеж и в каждой строке штук по пять свойств надо вытащить из номенклатуры... Но вот Запрос = Новый Запрос; Запрос.Текст = ТекстЗапросаПоСвойствамОбъекта(СтруктураСвойств); самое интересное место будет ли оно работать в УПП? |
|||
5
Gray776
16.03.16
✎
11:14
|
(4) + тоесть сам текст запроса глянуть бы я вот о чем... ото выдаст ошибку не поймет где текст этот брать...
|
|||
6
Strogg
16.03.16
✎
11:14
|
(0) все доп. свойства хранятся в РС ЗначенияСвойствОбъектов. Их тока запросом получать, где Объект = номенклатура, свойство = выбСвойство.
|
|||
7
Gray776
16.03.16
✎
11:15
|
(6) та в курсе я что запросом буду попробую штатной обработкой.
|
|||
8
Gray776
16.03.16
✎
11:17
|
(6) + я даже уже несколько вариантов этих запросов напридумывал... но чтот мне не нравятся такие решения вот и заговорил о штатных методах... нравятся мне они или нет лучше их пользовать... ото и так уже затянул я с этими свойствами...
|
|||
9
Одинесю
16.03.16
✎
15:05
|
(5) Функция ТекстЗапросаПоСвойствамОбъекта(СтруктураСвойств) Экспорт
ТипОбъекта = ""; Если Метаданные.Справочники.Содержит(СсылкаНаОбъект.Метаданные()) Тогда ТипОбъекта = "Справочник"; ИначеЕсли Метаданные.Документы.Содержит(СсылкаНаОбъект.Метаданные()) Тогда ТипОбъекта = "Документ"; КонецЕсли; ТекстЗапросаПоля = ""; ТекстЗапросаСоединения = ""; ТекстЗапросаПакеты = ""; Для каждого Свойство Из СтруктураСвойств Цикл ТекстЗапросаПакеты = ТекстЗапросаПакеты+ " |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЗначенияСвойствОбъектов.Объект, | ЗначенияСвойствОбъектов.Значение КАК Значение |ПОМЕСТИТЬ Свойство"+Свойство.Ключ+" |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект = &ТекущийОбъект | И ЗначенияСвойствОбъектов.Свойство.Наименование = """+Свойство.Ключ+""" |;"; Если ТипЗнч(Свойство.Значение) = Тип("Булево") Тогда ЗначениеПоУмолчанию = ?(Свойство.Значение, "ИСТИНА", "ЛОЖЬ"); ИначеЕсли ТипЗнч(Свойство.Значение) = Тип("Число") Тогда ЗначениеПоУмолчанию = Строка(Свойство.Значение); ИначеЕсли ТипЗнч(Свойство.Значение) = Тип("Строка") Тогда Если Найти(Свойство.Значение, "&") Тогда // это параметр ЗначениеПоУмолчанию = Свойство.Значение; Иначе ЗначениеПоУмолчанию = """"+Свойство.Значение+""""; КонецЕсли; Иначе ЗначениеПоУмолчанию = """"+Строка(Свойство.Значение)+""""; КонецЕсли; ТекстЗапросаПоля = ТекстЗапросаПоля+", | ЕСТЬNULL(Свойство"+Свойство.Ключ+".Значение, "+ЗначениеПоУмолчанию+") КАК "+Свойство.Ключ; ТекстЗапросаСоединения = ТекстЗапросаСоединения+" | ЛЕВОЕ СОЕДИНЕНИЕ Свойство"+Свойство.Ключ+" КАК Свойство"+Свойство.Ключ+" | ПО ДанныеОбъекта.Ссылка = Свойство"+Свойство.Ключ+".Объект"; КонецЦикла; ТекстЗапросаЦиклом = ТекстЗапросаПакеты+" | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДанныеОбъекта.Ссылка" + ТекстЗапросаПоля + " |//ВременнаяТаблица// |ИЗ | "+ТипОбъекта+"."+СсылкаНаОбъект.Метаданные().Имя+" КАК ДанныеОбъекта" + ТекстЗапросаСоединения + " |ГДЕ | ДанныеОбъекта.Ссылка = &ТекущийОбъект"; Возврат ТекстЗапросаЦиклом; КонецФункции // ТекстЗапросаПоСвойствам() |
|||
10
Gray776
16.03.16
✎
15:42
|
(9) Я так понимаю если всё это прикрутить и запустить то можно будет к свойству через точку обращаться? Ну типа: номенклатура.Свойство.Значение
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |