![]() |
![]() |
![]() |
|
v7: Результаты запроса в список значений | ☑ | ||
---|---|---|---|---|
0
Iriniya
22.05.13
✎
01:27
|
Нужно получить выборку, кот. содеожит группы и подчиненные элементы при условии, что наименование группы любого вышестоящего уровня начинается с «Авто.
Ругается " Поле агрегатного объекта не обнаружено (Принадлежит)" Хотя СЗ.количествострок() =1 (как в базе) Перем Запрос, ТекстЗапроса, Таб; Спр = СоздатьОбъект("Справочник.Номенклатура"); СЗ=СоздатьОбъект("СписокЗначений"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформир) |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент; |Родитель = Справочник.Номенклатура.Родитель; |Условие(Лев(ТекущийЭлемент,4) = ""Авто""); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Запрос.Выгрузить(СЗ); //Запрос.Выгрузить(СЗ); Если СЗ.КоличествоСтрок() > 0 Тогда Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() =1 Цикл Если Спр.ТекущийЭлемент().ЭтоГруппа()=0 Тогда Если СЗ.Принадлежит(Спр.ТекущийЭлемент())=1 Тогда зн=Спр.ТекущийЭлемент(); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; помогите разобраться. |
|||
1
zak555
22.05.13
✎
01:29
|
лучше сделать внешнюю функцию
|
|||
2
Злопчинский
22.05.13
✎
01:29
|
Запрос.Выгрузить(СЗ);
СЗ будет иметь тип Таблица Значений |
|||
3
zak555
22.05.13
✎
01:33
|
(2) +1
(0) что за зачем заново перебирать элементы ? |
|||
4
Iriniya
22.05.13
✎
01:36
|
(3) в запросе отобраны только группы, а нужны еще элементы справочника
(1) научите пожалуйста |
|||
5
Iriniya
22.05.13
✎
01:49
|
(2) ...Если переданное значение пустое, тогда система сама создаст объект типа 'Таблица значений'. Это стало ясно.
тогда чего не хватает, чтоб был тип СписокЗначений? |
|||
6
Злопчинский
22.05.13
✎
01:52
|
мне вообще не нравится конструкция
|ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент; |Условие(Лев(ТекущийЭлемент,4) = ""Авто""); текущийэлемент - тип = справочник . а потом ты к нему применяешь строковую функцию в условии, хз как оно там сработает унутре, напиши уже так . |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент; |Наименование = Справочник.Номенклатура.Наименование; |Условие(Врег(Лев(Наименование,4)) = ""АВТО""); |
|||
7
Cthulhu
22.05.13
✎
01:52
|
(5): определенным образом скомпонованных аминокислот.
|
|||
8
Злопчинский
22.05.13
✎
01:55
|
запорос возвращает "таблицу" из несколких колонок! СЗ - это не таблица из нескольких колонок, поэтому в сз запрос запихнет таблицу и получится таблицазначений.
. после запрос.Выгрузить какой-то бред написан |
|||
9
Злопчинский
22.05.13
✎
01:56
|
сначала запросом получи перечень групп. которые = АВТО. полученный перечень - запихни в СЗ.
Полученный СЗ используй во втором запросе в условии |
|||
10
Iriniya
22.05.13
✎
01:58
|
(6) а если так
|Родитель = Справочник.Номенклатура.Родитель; |Условие(Лев(Родитель,4) = ""Авто""); всетаки запрос создавался, чтоб группы выбрать |
|||
11
Злопчинский
22.05.13
✎
02:04
|
(10) угу, похоже
ща поверчу, там есть какие-то затыки, в свое время маялся |
|||
12
Злопчинский
22.05.13
✎
02:32
|
вот типа так
//====================================================================== Функция фуЭтоГруппаАвто(ВыбРодитель,Что) Если Врег(Лев(ВыбРодитель.Наименование,СтрДлина(Что))) = Врег(Что) Тогда //Сообщить(""+ВыбРодитель.Уровень()+"#"+ВыбРодитель+"#"+ВыбРодитель.ПолноеНаименование()); Возврат 1; КонецЕсли; Возврат 0; КонецФункции //фуЭтоГруппаАвто() //******************************************* Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Без Итогов; |Родитель = Справочник.Номенклатура.Родитель; |Условие(фуЭтоГруппаАвто(Родитель,""A"") = 1); |Группировка Родитель Без Групп; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ТЗ = ""; Запрос.Выгрузить(ТЗ); ПечатьТЗ(ТЗ,"Список групп"); СЗ = СоздатьОбъект("СписокЗначений"); Если ТЗ.КоличествоСтрок()>0 Тогда ТЗ.Выгрузить(СЗ,,,"Родитель"); КонецЕсли; ТекстЗапроса = " |Без Итогов; |Элемент = Справочник.Номенклатура.ТекущийЭлемент; |Условие(СЗ.Принадлежит(Элемент) = 1); |Группировка Элемент; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ТЗ = ""; Запрос.Выгрузить(ТЗ); ПечатьТЗ(ТЗ,"Иерархия групп и элементов"); КонецПроцедуры |
|||
13
Злопчинский
22.05.13
✎
02:36
|
(1) без внешней функции у меня не получилось...
|
|||
14
Iriniya
22.05.13
✎
02:59
|
(12) после первого запроса отладка показывает ТЗ.КоличествоСтрок()=0 хотя группы на "А" точно есть
|
|||
15
Злопчинский
22.05.13
✎
03:05
|
(14) Врешь. у меня там стоит английская А - исправь на русскую
|
|||
16
Злопчинский
22.05.13
✎
03:07
|
(140 кстати. тебе повезло. днем на мисте новичку женской части населения без фотки топлесс в личке фиг кто что подскажет. так что пользуйся моей добротой и хоть плечо оголи.
|
|||
17
Iriniya
22.05.13
✎
03:16
|
(15) исправила - все ОК.
а у меня без функции вот так выходило Перем Запрос, ТекстЗапроса, Таб; Спр = СоздатьОбъект("Справочник.Номенклатура"); ТЗ=СоздатьОбъект("ТаблицаЗначений"); ТЗ1=СоздатьОбъект("ТаблицаЗначений"); // СЗ=СоздатьОбъект("СписокЗначений"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформир) |Родитель = Справочник.Номенклатура.Родитель; |Группировка Родитель; |Условие(Лев(Родитель,1) = ""А""); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Запрос.Выгрузить (ТЗ); СЗ = СоздатьОбъект ("СписокЗначений"); ТЗ.Выгрузить (СЗ,,,"Родитель"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформир) |Номен = Справочник.Номенклатура.ТекущийЭлемент; |Группировка Номен; |Условие(СЗ.Принадлежит(Номен) = 1); |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Запрос.Выгрузить (ТЗ1); после первого запроса результат праильный, а после второго ТЗ1.КоличествоСтрок=0 ;( |
|||
18
Iriniya
22.05.13
✎
03:20
|
(16) За доброту твою спасибо ))))
а оголенная спинка зачтется в благодарность? |
|||
19
Злопчинский
22.05.13
✎
03:34
|
(18) за такие ненатуральные фотки народ тя растерзает
|
|||
20
zak555
22.05.13
✎
08:56
|
действительно, и это в 3:20
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |