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

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

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

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

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

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

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

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

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

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

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

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


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