Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: туплю с черным запросом

v7: туплю с черным запросом
Я
   monsterZE
 
08.01.13 - 12:54
не пользовал их миллион лет
есть старый сабжевый запрос по регистру
типа
|Клиент  = Регистр.Взаиморасчеты.Клиент;
|Баз_сум = Регистр.Взаиморасчеты.СуммаБазовая;
|Докум   = Регистр.Взаиморасчеты.ТекущийДокумент;
|Вал_сум = Регистр.Взаиморасчеты.СуммаВалютная;
|Группировка Клиент упорядочить по Клиент.Наименование;
|Группировка Докум;
|Функция КонБаз  = КонОст(Баз_сум);
|Функция КонВал  = КонОст(Вал_сум);
|Функция НачБаз  = НачОст(Баз_сум);
|Функция НачВал  = НачОст(Вал_сум);
|Функция ПрихВал = Приход(Вал_сум);
|Функция РасхВал = Расход(Вал_сум);
|Функция ПрихБаз = Приход(Баз_сум);
|Функция РасхБаз = Расход(Баз_сум);
|Условие (Клиент.ПринадлежитГруппе(ВыбКлиент) = 1);
надо отсеить документы с определенным реквизитом.. добавляю
Условие (Докум.ЗакрепленЗа = ВыбЗакрепЗа);
и по два раза оно мне говорит, что "поле агрегатного объекта не обнаружено" жму ок и все успешно выполняется
 
и появляется эта ошибка, только если выбрана самая верхняя группа справочника.. втф? =)
 
 
   1Сергей
 
1 - 08.01.13 - 12:55
перепиши на беловой запрос
   monsterZE
 
2 - 08.01.13 - 12:55
из-за групп?.. добавлял в первую группировку без групп - все равно
   Азат
 
3 - 08.01.13 - 12:56
ну симен сименыч, а во всех доках есть реквизит "Закреплен За"?
   monsterZE
 
4 - 08.01.13 - 12:58
да это стандартный овно-отчет.. и он уже переписан, но некоторые в силу каких-то причин, иногда всетаки тыркают его.
=) (3) да вроде как во всех.. которые двигают этот регистр..
оно смотрит тока проведенные или непроведенные тоже учавствуют в выборке?
   Азат
 
5 - 08.01.13 - 13:01
овно отчет - это фигня...

Профессор в университете: "Недоделанный отчёт – это не беда. Главное, когда будете делать детей – доделайте их! А то потом приходят недоделанные дети и приносят недоделанные отчёты. И никак не прервать этот замкнутый круг." (с) с анеков
   monsterZE
 
6 - 08.01.13 - 13:01
специально выбирал конкретных клиентов - не говорит об ошибке
по группе этих-же клиентов - есть
и еще зависит от того, где в запросе стоит это условие =)
т.е. в начале списка условий или в конце
   monsterZE
 
7 - 08.01.13 - 13:04
(5) =) он доделан и работает..
просто добавился еще один реквизит, который влияет на накопления сумм в этом отчете. и я хотел особо не заморачиваясь, выделить нужное, просто через условие в этом запросе.
   vip67
 
8 - 08.01.13 - 13:05
расшифруй
   vip67
 
9 - 08.01.13 - 13:05
расшифруй докум: вместо докум - попробу
   vip67
 
10 - 08.01.13 - 13:05
тот -же регистр...
 
 Рекламное место пустует
   monsterZE
 
11 - 08.01.13 - 13:05
(8) что именно? =)
   monsterZE
 
12 - 08.01.13 - 13:06
а
   Popkorm
 
13 - 08.01.13 - 13:06
(7) что такое ВыбЗакрепЗа?!Строка\справочник
   dclxvi
 
14 - 08.01.13 - 13:06
Выводе отчет выведи сообщение с обрабатываемым элементом и посмотри на чем спотыкается.
   vip67
 
15 - 08.01.13 - 13:07
Регистр.Взаиморасчеты...
   monsterZE
 
16 - 08.01.13 - 13:08
(13) справочник
(10) так теперь вобще на все ругается =)
   vip67
 
17 - 08.01.13 - 13:08
попробуй для начала просто вывести свое ЗакрепленЗа
   monsterZE
 
18 - 08.01.13 - 13:09
(14) в том то и дело, что он не спотыкается =)
думал мож документ в выборке - сообщить(Запрос.Докум) - все норм
   monsterZE
 
19 - 08.01.13 - 13:11
(17) все выводится норм.. есть заполненные, есть не заполненные
   monsterZE
 
20 - 08.01.13 - 13:15
к (15)
Условие (Регистр.Взаиморасчеты.ТекущийДокумент.ЗакрепленЗа = ВыбЗакрепЗа);
так похоже вобще нельзя =) не видит "ТекущийДокумент"
   1Сергей
 
21 - 08.01.13 - 13:18
|ЗакрепленЗа   = Регистр.Взаиморасчеты.ТекущийДокумент.Расходная.ЗакрепленЗа, Регистр.Взаиморасчеты.ТекущийДокумент.Возврат.ЗакрепленЗа, Регистр.Взаиморасчеты.ТекущийДокумент.Приврат.ЗакрепленЗа, ....;
Условие (ЗакрепленЗа = ВыбЗакрепЗа);
   vip67
 
22 - 08.01.13 - 13:21
(20) текущий документ и не увидит, а вот в (21) - похоже уже расписали, вот только не попутано ли текущийдокумент.возврат? и нужно ли тут вообще Текущий документ?
   1Сергей
 
23 - 08.01.13 - 13:22
(22) иначе не взлетит. А так взлетит, но очень низко
   vip67
 
24 - 08.01.13 - 13:23
а не проще было бы выгрузить это все в таблицу значений и потом уже отсеивать?
   monsterZE
 
25 - 08.01.13 - 13:23
(21) ага, взлетело
   vip67
 
26 - 08.01.13 - 13:23
это так... по-деревенски...
   monsterZE
 
27 - 08.01.13 - 13:25
(24) да можно было бы конечно
но тут не в этом вопрос был.. =) 
разобраться, что мешает ему так взлететь?
   monsterZE
 
28 - 08.01.13 - 13:25
в выборку попадают документы без этого реквизита?
   vip67
 
29 - 08.01.13 - 13:26
очевидно то, что Докум - это ссылка (там уже есть ТекущийДокумент), а нужно было обращаться непосредственно к реквизиту. наверно - дело в этом.
   1Сергей
 
30 - 08.01.13 - 13:28
тут важно понимать, что Регистр - это одни таблички, Документ - другие. И отфильтровать первые по колонкам вторых - не совсем простая задача. Точнее, не простая для черного запроса
   monsterZE
 
31 - 29.01.13 - 21:56
апну. такая странность нарисовалась, может кто пояснит. =)
если в запросе указаны несколько описаний переменной, то условие 
Условие (Клиент.ПринадлежитГруппе(ВыбКлиент) = 1)
отрабатывает привильно. условия
Условие (Клиент = ВыбКлиент)
Условие (Клиент в ВыбКлиент)
не отрабатывают, а например
Условие (Клиент.Код = ВыбКлиент.Код)
работает
?
зы. клиент - измерение регистра(справочник) выбклиент, соттветсно реквизит формы
   monsterZE
 
32 - 29.01.13 - 22:12
т.е., если в выбклиент группа - выборка находит соответствия
если элемент - не находит
элемент.код - находит
   Classic
 
33 - 29.01.13 - 22:24
(31)
Юзай ИЛИ
 
 
   monsterZE
 
34 - 29.01.13 - 22:26
(33) чего? =)
   Classic
 
35 - 29.01.13 - 22:34
(34)
Странно пишешь. Я решил что у тебя несколько условий в запросе.
   sapphire
 
36 - 29.01.13 - 22:41
Мне так нравится изобретение штаnного regprint.ert :)
   monsterZE
 
37 - 29.01.13 - 22:41
=) (35) нет. дело совсем не в этом.
есть древний сабжевый запрос, получающий взаиморасчеты по кексам. в него было добавлено условие на выделение доков по реквизиту. добавлено (21) образом. после чего, если выбирать группы - все работает, если - элементы - выборка не находит клиента. поменял условие на Клиент.Код - так находит - пачиму?
пишу одна переменная - одно описание - срабатывает со старым условием (клиент = выбклиент).
   monsterZE
 
38 - 29.01.13 - 22:43
(36) да причем тут это? =) в регистрах все нормально. есть и нормальный отчет. любопытно, почему этот "не нормальный".
   Classic
 
39 - 29.01.13 - 22:48
(37)
Понятней было бы, если бы ты написал весь(или ключевые моменты) целиком.
Потому как в (21) "Закреплен за", а в (31) "Клиент"

Я так понимаю, что в (31) должно быть "закрепленЗа"?
   Classic
 
40 - 29.01.13 - 22:49
и что означает "не отрабатывает".
Ошибка, работа как без условия, нулевой результат?
   sapphire
 
41 - 29.01.13 - 22:49
(38) из-за этого |Группировка Докум;

Группировка Документ; \\ вроде как...
   Classic
 
42 - 29.01.13 - 22:50
(41)
У него Докум - переменная
   sapphire
 
43 - 29.01.13 - 22:51
(38) Короче, посмотри regprint, я на семерки запросы писал лет эдак 8 назад...
   sapphire
 
44 - 29.01.13 - 22:51
(42) Там регистр
   sapphire
 
45 - 29.01.13 - 22:51
(42) Для регистров это предопределенная группировка.
   sapphire
 
46 - 29.01.13 - 22:51
Могу ошибаться
   monsterZE
 
47 - 29.01.13 - 23:00
не, не в Докум дело
(40) нулевой результат
просто дома покавырять решил, тут немного не так, но смысл тот-же. и запрос тот-же.
   sapphire
 
48 - 29.01.13 - 23:04
(47) Я бы regprint-ом посмотрел. Так проще :(
   monsterZE
 
49 - 29.01.13 - 23:05
ЗакрепленЗа - по этому параметру накладывается условие выдеоение доков, но до него даже не доходит.
смысл такой - если
|ЗакрепленЗа =Регистр.Взаиморасчеты.ТекущийДокумент.РасходнаяНал.ЗакрепЗа
то условия
Условие (Клиент.ПринадлежитГруппе(ВыбКлиент) = 1)
либо (если выбран элемент)
Условие (Клиент = ВыбКлиент)
работают правильно. но стоит добавить
|ЗакрепленЗа =Регистр.Взаиморасчеты.ТекущийДокумент.РасходнаяНал.ЗакрепЗа,Регистр.Взаиморасчеты.ТекущийДокумент.РасходнаяНОФ.ЗакрепЗа
условие по группе - возвращает правильный результат
а условие по элементу пустой - нет строк
 
(48) нет у меня дома регпринта =)
 
 Рекламное место пустует
   monsterZE
 
50 - 29.01.13 - 23:07
* а условие по элементу - пустой - нет строк
но если изменить условие и сделать сравнение по клиент.код
то клиент сразу находится и выборка отрабатывает
   sapphire
 
51 - 29.01.13 - 23:08
(49) в гугле забанили?
   monsterZE
 
52 - 29.01.13 - 23:16
(51) нет, а что искать?
-- вот из букваря, нагуглил и как оно влияет на первую группировку?
В объявлении внутренней переменной можно указывать несколько вариантов <ОписанияПеременной>. Все описания должны указывать на один и тот же тип данных (число, строку, справочник или документ). Переменной, указывающей на разные справочники или документы присваивается тип данных «Справочник неопределенного вида» или «Документ неопределенного вида» соответственно.

* Например, можно определить внутреннюю переменную:

Товар = Документ.Перемещение.Товар, Документ.Расходная.Товар;

и использовать ее для создания Группировки. Такой состав внутренней переменной как бы дает Группировке задание — просмотреть все документы видов "Перемещение" и "Расходная" и выбрать все товары, встречающиеся либо в документах вида "Перемещение", либо в документах "Расходная".

* Еще пример. Допустим, у нас есть регистр "Взаиморасчеты" и регистр "Кредиты", и в том и в другом есть измерение "Клиент". Определяем внутреннюю переменную:

Должник = Регистр.Взаиморасчеты.Клиент, Регистр.Кредиты.Клиент;

Если использовать такую внутреннюю переменную для образования Группировки, то она будет означать следующее: пройти по регистру "Взаиморасчеты" и по регистру "Кредиты", вычислить заданные в запросе Функции и выбрать значения "Клиентов", для которых значения хотя бы одной функции будет ненулевой. Здесь мы видим, что формирование запроса по регистрам имеет некоторые особенности (обязательно наличие Функций, причем их вычисленные значения должны быть отличны от нуля, только в этом случае найденные объекты включаются во временный набор данных формируемый запросом).
   sapphire
 
53 - 30.01.13 - 00:15
(52) В этом скорее всего проблема:
Группировка Клиент упорядочить по Клиент.Наименование;

там есть какая то без групп и еще чего-то.
Посмотри по-внимательнее.
Еще все вошедшие в запрос и всякое прочее.
я смотрел как штатные средства работают - помогало.
   sapphire
 
54 - 30.01.13 - 00:27
ну конечно,
Клиент  = Регистр.Взаиморасчеты.Клиент;

Там нет групп :)))
Клиент  = Регистр.Взаиморасчеты.Клиент,Справочник.Котнтрагенты.ТекущийЭлемент;
   sapphire
 
55 - 30.01.13 - 00:30
Только не помню надо ли директиву обрабатывать все & вошедшие в запрос
   monsterZE
 
56 - 30.01.13 - 00:30
(54) ложись уже =) группы как раз работают
не работает, когда выбирается конкретный элемент
   sapphire
 
57 - 30.01.13 - 00:31
(56) Попробуй, пока меня склероз не одолел :)
   monsterZE
 
58 - 30.01.13 - 00:31
поменял на (54) результат тот-же, тока еще справочник лопатит =) если добавляю в группировку Все
то оно появляется с 0-ыми значениями функции
   sapphire
 
59 - 30.01.13 - 00:31
(56) Условие неправильно накладываешь :)
   monsterZE
 
60 - 30.01.13 - 00:33
(59) условие на выбранного клиента, а как его еще наложить? =)
добавляю .Код - работает
   monsterZE
 
61 - 30.01.13 - 00:34
завтро буду посмотреть еще =) всем спок
   sapphire
 
62 - 30.01.13 - 00:35
Условие ((ВыбКлиент.Выбран()=1 И ВыбКлиент.ЭтоГруппа()=0 И Клиент.ПринадлежитГруппе(ВыбКлиент) = 1) ИЛИ (ВыбКлиент.Выбран()=1 И Клиент=ВыбКлиент И ()))


в обчем такого типа огород, ну не поленись, глянь regprint


Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует