![]() |
|
v7: В чем ошибка в запросе ? | ☑ | ||
---|---|---|---|---|
0
Ночной Эльф
27.11.12
✎
09:37
|
Выбираю элементы справочника в запросе вот так
ТекущийКонтрагент = ЯКонтрагент.Наименование; ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Наименование = Справочник.я_Адреса.Наименование; |Хозяин = Справочник.я_Адреса.Хозяин; |ТекущийЭлемент = Справочник.я_Адреса.ТекущийЭлемент; |Группировка ТекущийЭлемент; |Условие(Наименование = ""Документы""); |Условие(Хозяин = ТекущийКонтрагент); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Выдает вот такую вот ошибку в чем причина? Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {D:\БАЗЫ\23.11\EXTFORMS\OTCH_VITALIY\СПЕЦИАЛЬНЫЕ.GRP\ОТЧЕТПОРЕГИСТРАЦИИДОКУМЕНТОВ.ERT(499)}: Значение не представляет агрегатный объект (Выполнить) |
|||
1
Морозов Александр
27.11.12
✎
09:38
|
сам объект запрос то создан?
|
|||
2
Ёпрст
гуру
27.11.12
✎
09:38
|
Запрос = СоздатьОбъект("Запрос");
перед этим кодом воткни хоть |
|||
3
Ёпрст
гуру
27.11.12
✎
09:39
|
>>>
|Условие(Наименование = ""Документы""); вот из-за этого, как минимум, будет всегда пустая выборка. |
|||
4
Ёпрст
гуру
27.11.12
✎
09:40
|
>>>ТекущийКонтрагент = ЯКонтрагент.Наименование;
>>> |Условие(Хозяин = ТекущийКонтрагент); аналогично |
|||
5
Надсмотрщик
27.11.12
✎
09:42
|
Ошибка в ДНК
ТекущийКонтрагент = ЯКонтрагент.Наименование; |Условие(Хозяин = ТекущийКонтрагент); |
|||
6
Ночной Эльф
27.11.12
✎
09:44
|
А как тогда условие надо делать с |Условие(Наименование = ""Документы""); и |Условие(Хозяин = ТекущийКонтрагент);
|
|||
7
Надсмотрщик
27.11.12
✎
09:47
|
Пригласи спеца
|
|||
8
Ёпрст
гуру
27.11.12
✎
09:47
|
Реквизит Хозяин сделать как минимум, реквизитом агрегатного типа, в запрос пихать ссылку на элемент справочника, а не строку.
Условие на наименование делать хотя бы через Найти () или пересмотреть структуру хранения данных. |
|||
9
Voronve
27.11.12
✎
09:48
|
Найти(Наименование, ""Документы"") > 0
Условие(Хозяин = ЯКонтрагент) |
|||
10
Ночной Эльф
27.11.12
✎
09:59
|
сделал условие Условие(Хозяин = ЯКонтрагент) и убрал с "Документы" все равно пустая вобще в чем проблема нужно выбрать из справочника не подчиненного справочнику ЯКонтрагент строку где Наименование = "Документы" а Хозяин равен ЯКонтрагент пробовал через
СпрАдрес=СоздатьОбъект("Справочник.я_Адреса"); СпрАдрес.ИспользоватьВладельца(ЯКонтрагент.ТекущийЭлемент()); СпрАдрес.ВыбратьЭлементы();//Поиск Контактных лиц Пока СпрАдрес.ПолучитьЭлемент()=1 Цикл Если СокрЛП(СпрАдрес.Хозяин) = СокрЛП(ЯКонтрагент.Наименование) Тогда Если СпрАдрес.Наименование = "Документы" Тогда тКонтактныеЛица = СпрАдрес.Адрес + тКонтактныеЛица; КонецЕсли; КонецЕсли; КонецЦикла; Все работает ну уж очень долго. Перебирает все элементы справочника я_Адреса сами понимаете для каждого Контрагента сколько это время займет. Сейчас сделал запросом не чуть не лучше справочник я_Адреса находиться в табличной части справочника я_Контрагенты. Как можно на много быстрее выбрать строку нужно справочника ? |
|||
11
Шапокляк
27.11.12
✎
10:04
|
(10) Ты используешь владельца - ЯКонтрагента для выборки элементов справочника я_Адреса. А там еще в справочнике есть текстовый реквизит Хозяин, который может быть заполнен наименованием владельца, а может и еще чем-то? И у каждого владельца таких адресов 100500? Какая жуткая нетленка!!!
|
|||
12
Ночной Эльф
27.11.12
✎
10:27
|
(11) Как можно выбрать из справочника я_Адреса элементы которые имеют одно значение Хозяин (оно сто процентов равно ЯКонтрагента.Наименование) ?
|
|||
13
Ёпрст
гуру
27.11.12
✎
10:30
|
Хозяин - реквизит какого типа у тебя в справочнике ?
|
|||
14
Ночной Эльф
27.11.12
✎
12:25
|
(13) просто справочник
|
|||
15
Ночной Эльф
27.11.12
✎
12:25
|
попробовал вот так
СпрАдрес.ВыбратьЭлементыПоРеквизиту("Хозяин",СокрЛП(ЯКонтрагент),0,0);//Поиск Контактных лиц Пока СпрАдрес.ПолучитьЭлемент()=1 Цикл пустое выдает |
|||
16
Ёпрст
гуру
27.11.12
✎
12:38
|
(14) тогда сравнивать в запросе нужно со ссылкой на справочник, а не с его наименованием (это строка, если чё)
(15) Хозяин - это не строка у тебя, сравнивать агрегатный объект со строкой СокрЛП(ЯКонтрагент) тебе не кажется не логичным ? |
|||
17
Ёпрст
гуру
27.11.12
✎
12:39
|
+ у реквизита хозяин, чтоб был поиск по реквизиту, должен стоять признак "сортировка" с свойствах реквизита.
|
|||
18
Ночной Эльф
27.11.12
✎
12:47
|
Стоит сортировка и отбор по реквизиту.
а если не в запросе а с помощью функции ВыбратьЭлементыПоРеквизиту какой параметр для поиска указывать? ЯКонтрагент или ЯКонтрагент.Наименование? |
|||
19
Ночной Эльф
27.11.12
✎
12:49
|
Ух ты бл...... ь забыл что СокрЛП() преобразует в строку получалось что не ссылку а строку вводил для поиска убрал все заработало ))) спасибо всем
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |