|
Выборка из запроса | ☑ | ||
---|---|---|---|---|
0
Sigh
28.03.13
✎
14:11
|
УТ 10.3 8.2. Проблема такая, сначала я вытаскиваю из табличной части документа реализации товара и услуг необходимые данные, запросом. Потом из этой выборки по циклу (следующий) делаю еще один запрос, и хочу получить свойство номенклатурной группы (Номенклаутра.Родитель) "МестоХранения", однако в результат, через отладчик, смотрю- таблицы значений выгружается ноль записей. Однако у этой группы, точно задано свойство. Вот мой код:
Функция Печать() Экспорт ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Казанова_Картинки"; Макет = ПолучитьМакет("Картинки"); ОбластьПечати = Макет.ПолучитьОбласть("ОбластьПечати"); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Номенклатура.Родитель.Наименование КАК Группа, | РеализацияТоваровУслуг.Номенклатура КАК Номенклатура, | РеализацияТоваровУслуг.Номенклатура.Наименование КАК Наименование, | РеализацияТоваровУслуг.Номенклатура.Артикул КАК Артикул, | РеализацияТоваровУслуг.Номенклатура.ОсновноеИзображение КАК ОсновноеИзображение, | СУММА(РеализацияТоваровУслуг.Количество) КАК Количество, | РеализацияТоваровУслуг.НомерСтроки КАК НомерСтроки |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслуг.Номенклатура.Родитель, //+++ добавлена группировка по товару | РеализацияТоваровУслуг.Номенклатура, | РеализацияТоваровУслуг.Номенклатура.Наименование, | РеализацияТоваровУслуг.Номенклатура.Артикул, | РеализацияТоваровУслуг.Номенклатура.ОсновноеИзображение, | РеализацияТоваровУслуг.НомерСтроки | Выборка = Запрос.Выполнить().Выбрать(); Заглушка = ОбластьПечати.Рисунки.Картинка.Картинка; КоличествоСтолбцов = 0; Пока Выборка.Следующий() Цикл n=0; СвойствоМестоХранения=""; ТекГруппа=Выборка.Группа; ТекНом=Выборка.Наименование; Рез = ПолучитьДанныеПоСвойствам(ТекНом, "МестоХранения"); Если Не (Рез.Количество() = 0 ) Тогда СвойствоМестоХранения = Рез[0].Значение.Наименование; Иначе Рез = ПолучитьДанныеПоСвойствам(ТекГруппа, "МестоХранения"); Если Не (Рез.Количество() = 0 ) Тогда СвойствоМестоХранения = Рез[0].Значение.Наименование; КонецЕсли; КонецЕсли; ... Функция ПолучитьДанныеПоСвойствам(Объект,ИмяСвойства) Экспорт Запрос=Новый Запрос; Запрос.УстановитьПараметр("Объект",Объект); Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(ИмяСвойства); Запрос.УстановитьПараметр("Свойство",Свойство); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ЗначенияСвойств.Значение КАК Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойств |ГДЕ | ЗначенияСвойств.Свойство = &Свойство | И ЗначенияСвойств.Объект = &Объект"; РезультатЗапроса = Запрос.Выполнить(); Возврат РезультатЗапроса.Выгрузить(); КонецФункции; |
|||
1
Sigh
28.03.13
✎
14:11
|
Код урезал, могу выложить полный если неоходимо... очень нужна помощь...
|
|||
2
Ёпрст
28.03.13
✎
14:12
|
(0) получай свойство в первом запросе сразу.
|
|||
3
Maxus43
28.03.13
✎
14:13
|
&Свойство Значит не то, не находит... отладчик поможет
|
|||
4
Ёпрст
28.03.13
✎
14:18
|
И особенно зачетно в объект пихать Наименование, заместо ссылки
|
|||
5
Maxus43
28.03.13
✎
14:19
|
(4) да кстати, не углядел сразу... ТекНом = наименование, Где Объект = &ТекНом
|
|||
6
Sigh
28.03.13
✎
14:49
|
Спасибо господа, сейчас попробую.
|
|||
7
Sigh
28.03.13
✎
14:51
|
(3) Свойство точно то, отладчиком проверял.
|
|||
8
Sigh
28.03.13
✎
14:56
|
(5) Не совсем понял. "ТекНом = наименование, Где Объект = &ТекНом" - вот это.
|
|||
9
kosts
28.03.13
✎
15:01
|
(8) ТекНом=Выборка.Наименование; => ТекНом=Выборка.Номенклатура;
|
|||
10
kosts
28.03.13
✎
15:03
|
Почему бы сразу в запросе не получить значение свойства?
|
|||
11
Sigh
28.03.13
✎
15:06
|
(9) Угу, это понял, быстро писал не заметил.Но все-равн оне помогает. (10) Это остается единсвтенное и попробовать. У них свойство задается только номенклатурной группе, вот не знаю, мне как то так проще показалось, даже не проще, а нагляднее. Сейчас попробую.
|
|||
12
DaZol1991
28.03.13
✎
15:13
|
(0) в одном запросе получай свойство. и не РеализацияТоваровУслуг.Номенклатура.Наименование КАК Наименование(эта не нужна строка), а РеализацияТоваровУслуг.Номенклатура КАК Наименование, ссылку а не строку получай.Тоже самое с родителем.Выбирай в одном запросе две таблицы и просто соединяй их.
|
|||
13
Sigh
28.03.13
✎
15:22
|
(12) Спасибо. А что тогда устанавливать параметром в ЗначенияСвойствОбъектов.Объект = &? Мне нужен родитель.
|
|||
14
DaZol1991
28.03.13
✎
15:25
|
(13) ну в запросе пиши что ЗначенияСвойствОбъектов.Объект = РеализацияТоваровУслуг.Номенклатура.Родитель
|
|||
15
kosts
28.03.13
✎
15:26
|
(13) Для получения значения свойства по родителю еще раз нужно соединиться с ЗначенияСвойствОбъектов, а в выборке поставить
ЕстьNull(ЗначениеСвойстваМестоХранения.Значение,ЗначениеСвойстваРодителяМестоХранения.Значение) как то так |
|||
16
Sigh
28.03.13
✎
15:26
|
Я потому и сделал, второй запрос в цикле чтобы каждый раз туда устанавливать в параметр следующую номен-клатуру(тоесть ее родителя).
|
|||
17
kosts
28.03.13
✎
15:27
|
(16) За запросы в цикле тут руки отрывают.
|
|||
18
Sigh
28.03.13
✎
15:28
|
(17) Наверное, я еще новичок...
|
|||
19
kosts
28.03.13
✎
15:29
|
(18) Да и в данном случае с запросом просто намного проще получится.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |