|
Помогите с запросом. | ☑ | ||
---|---|---|---|---|
0
ВотОнЯ
12.03.12
✎
10:31
|
Запрос выбирает все поступления по банку и кассе за период с возможностью фильтрации.
В запросе отрабатывает все, кроме "В ИЕРАРХИИ" Не могу понять что не так делаю. В переменные &СчетБанк и &СчетКасса и &СчетПодотчет передаю значения типа ПланыСчетов.Хозрасчетный.ТакойТоСчет(Корень).Ссылка Вот сам запрос ВЫБРАТЬ РАЗРЕШЕННЫЕ | ПриходБанк.СубконтоДт2 КАК СтатьяДДС, | ПриходБанк.СубконтоДт3 КАК Литер, | ПриходБанк.Организация КАК Организация, | ПриходБанк.ПодразделениеДт КАК Подразделение, | СУММА(ПриходБанк.Сумма) КАК Сумма, | ПриходБанк.Содержание КАК Содержание |ИЗ | РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ПриходБанк |ГДЕ | ПриходБанк.СчетДт В ИЕРАРХИИ (&СчетБанк) | И ПриходБанк.СчетКт НЕ В ИЕРАРХИИ (&СчетКасса) | И ПриходБанк.СчетКт НЕ В ИЕРАРХИИ (&СчетБанк) | И ПриходБанк.СчетКт НЕ В ИЕРАРХИИ (&СчетПодотчет) | И (&ОтбиратьПоОрганизациям = ИСТИНА | И ПриходБанк.Организация В ИЕРАРХИИ (&СписокОрганизаций) | ИЛИ &ОтбиратьПоОрганизациям = ЛОЖЬ) | И (&ОтбиратьПоЛитерам = ИСТИНА | И ПриходБанк.Организация В ИЕРАРХИИ (&СписокЛитеров) | ИЛИ &ОтбиратьПоЛитерам = ЛОЖЬ) | И (&ОтбиратьПоСтатьямДДС = ИСТИНА | И ПриходБанк.Организация В ИЕРАРХИИ (&СписокСтатейДДС) | ИЛИ &ОтбиратьПоСтатьямДДС = ЛОЖЬ) | И ПриходБанк.Период МЕЖДУ &ДатаНачала И &ДатаОкончания | |СГРУППИРОВАТЬ ПО | ПриходБанк.Организация, | ПриходБанк.ПодразделениеДт, | ПриходБанк.СубконтоДт2, | ПриходБанк.СубконтоДт3, | ПриходБанк.Содержание | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ПриходКасса.СубконтоДт1, | ПриходКасса.СубконтоДт3, | ПриходКасса.Организация, | ПриходКасса.ПодразделениеДт, | ПриходКасса.Сумма, | ПриходКасса.Содержание |ИЗ | РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ПриходКасса |ГДЕ | ПриходКасса.СчетДт В ИЕРАРХИИ (&СчетКасса) | И ПриходКасса.СчетКт НЕ В ИЕРАРХИИ (&СчетКасса) | И ПриходКасса.СчетКт НЕ В ИЕРАРХИИ (&СчетБанк) | И ПриходКасса.СчетКт НЕ В ИЕРАРХИИ (&СчетПодотчет) | И (&ОтбиратьПоОрганизациям = ИСТИНА | И ПриходКасса.Организация В ИЕРАРХИИ (&СписокОрганизаций) | ИЛИ &ОтбиратьПоОрганизациям = ЛОЖЬ) | И (&ОтбиратьПоЛитерам = ИСТИНА | И ПриходКасса.Организация В ИЕРАРХИИ (&СписокЛитеров) | ИЛИ &ОтбиратьПоЛитерам = ЛОЖЬ) | И (&ОтбиратьПоСтатьямДДС = ИСТИНА | И ПриходКасса.Организация В ИЕРАРХИИ (&СписокСтатейДДС) | ИЛИ &ОтбиратьПоСтатьямДДС = ЛОЖЬ) | И ПриходКасса.Период МЕЖДУ &ДатаНачала И &ДатаОкончания | |СГРУППИРОВАТЬ ПО | ПриходКасса.Организация, | ПриходКасса.ПодразделениеДт, | ПриходКасса.СубконтоДт1, | ПриходКасса.СубконтоДт3, | ПриходКасса.Сумма, | ПриходКасса.Содержание | |УПОРЯДОЧИТЬ ПО | Организация, | Подразделение, | СтатьяДДС, | Литер, | Содержание |ИТОГИ | СУММА(Сумма) |ПО | Организация, | Подразделение, | СтатьяДДС, | Литер, | Содержание |
|||
1
Кроха
12.03.12
✎
10:34
|
давай конкретные примеры, чему равны переменные
|
|||
2
vicof
12.03.12
✎
10:44
|
есть такой прием отладки - комментировать все условия, а потом их по одному добавлять
|
|||
3
ВотОнЯ
12.03.12
✎
10:46
|
(1)
Если ТипЗнч(МассивОрганизаций) = Тип("Массив") Тогда Запрос.УстановитьПараметр("ОтбиратьПоОрганизациям", (МассивОрганизаций.Количество() > 0)); Запрос.УстановитьПараметр("СписокОрганизаций",МассивОрганизаций); КонецЕсли; Если ТипЗнч(МассивЛитеров) = Тип("Массив") Тогда Запрос.УстановитьПараметр("ОтбиратьПоЛитерам", (МассивЛитеров.Количество() > 0)); Запрос.УстановитьПараметр("СписокЛитеров",МассивЛитеров); КонецЕсли; Если ТипЗнч(МассивСтатейДДС) = Тип("Массив") Тогда Запрос.УстановитьПараметр("ОтбиратьПоСтатьямДДС", (МассивСтатейДДС.Количество() > 0)); Запрос.УстановитьПараметр("СписокСтатейДДС",МассивСтатейДДС); КонецЕсли; Запрос.УстановитьПараметр("СчетБанк",ПланыСчетов.Хозрасчетный.РасчетныеСчета.Ссылка); Запрос.УстановитьПараметр("СчетКасса",ПланыСчетов.Хозрасчетный.Касса.Ссылка); Запрос.УстановитьПараметр("СчетПодотчет",ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами_.Ссылка); Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ДатаНачала)); Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(ДатаОкончания)); (2) я так и узнал, что проблема в условии содержащем "В ИЕРАРХИИ" |
|||
4
ВотОнЯ
12.03.12
✎
10:56
|
апну
|
|||
5
vicof
12.03.12
✎
10:57
|
| И (&ОтбиратьПоСтатьямДДС = ИСТИНА
| И ПриходКасса.Организация В ИЕРАРХИИ (&СписокСтатейДДС) | ИЛИ &ОтбиратьПоСтатьямДДС = ЛОЖЬ) интересное условие. Проще было написать так: |ПриходКасса.Организация В ИЕРАРХИИ (&СписокСтатейДДС) |
|||
6
Ненавижу 1С
гуру
12.03.12
✎
10:58
|
ПриходКасса.Организация В ИЕРАРХИИ (&СписокСтатейДДС)
это клево само по себе |
|||
7
ВотОнЯ
12.03.12
✎
10:59
|
(5)Не проще, мне нужно именно так
(6)как наприкалываетесь, если вас не затруднит,напишите что именно вас прикололо. |
|||
8
vicof
12.03.12
✎
11:00
|
(7) читай внимательно
|
|||
9
ВотОнЯ
12.03.12
✎
11:00
|
(6) аааа....
Это я поправил, проблема уже не в этом |
|||
10
vmv
12.03.12
✎
11:01
|
подозроеваю, что взаимоисключающие В ИЕРАРХИИ
зачем вообще писать запросы в таком стиле, неужели нельзя все это структурировать, создать вложенные, пакетные или хотябы шаблоны, чтобы такой профан как я читал запрос как безхитросную песню Кати Лель "Я не права") "фигня какая-то" |
|||
11
ВотОнЯ
12.03.12
✎
11:06
|
(10)нет, взаимоисключающего ничего нет, прочтите внимательнее
|
|||
12
МихаилМ
12.03.12
✎
11:09
|
на мс скл этот запрос может вызвать дед лок (2005) или тайм оут (2008)
Объединение таблицы с сабой дурной тон поектирования запросов т.к. на чтение тоже блокировки есть. если очень хочется - отбирайте в врем.таб. и потом над ней надругайтесь. на врем таб - блокировки минимальные "ПриходБанк.Организация В ИЕРАРХИИ (&СписокОрганизаций) | ИЛИ &ОтбиратьПоОрганизациям = ЛОЖЬ)" решение собирайте текст запроса динамически. |
|||
13
vicof
12.03.12
✎
11:09
|
(0) давай нормальный запрос сюда
>>В запросе отрабатывает все, кроме "В ИЕРАРХИИ" Не могу понять что не так делаю. в чем конкретно выражается, что в иерархии не отрабатывает, при каких условиях? |
|||
14
ВотОнЯ
12.03.12
✎
11:48
|
(13) комментирую это условие - запрос содержит значения, не комментирую - запрос пустой.
|
|||
15
ВотОнЯ
12.03.12
✎
11:48
|
Весь запрос я выдал ранее, параметры к нему тоже
|
|||
16
ВотОнЯ
12.03.12
✎
12:07
|
Я так и не понял как мне отфильтровать движения по вхождению Субсчета движения в иерархию указаного в параметрах счета
|
|||
17
ВотОнЯ
12.03.12
✎
12:15
|
Или формировать список субсчетов в массив и в параметре передавать его?
|
|||
18
ВотОнЯ
12.03.12
✎
12:15
|
как то это.... по семерочному
|
|||
19
ВотОнЯ
12.03.12
✎
12:22
|
Сейчас смотрю примеры... блин! Да должно же это отрабатывать!!!!!!!!
|
|||
20
ВотОнЯ
12.03.12
✎
12:31
|
ребят, ну помогите, как нормально сделать без кучи уровней вложенности с рекурсиями?
|
|||
21
Ненавижу 1С
гуру
12.03.12
✎
12:33
|
(15) нет ты выложи исходный вариант, а то "Это я поправил, проблема уже не в этом"
|
|||
22
ВотОнЯ
12.03.12
✎
12:39
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПриходБанк.СубконтоДт2 КАК СтатьяДДС, ПриходБанк.СубконтоДт3 КАК Литер, ПриходБанк.Организация КАК Организация, ПриходБанк.ПодразделениеДт КАК Подразделение, СУММА(ПриходБанк.Сумма) КАК Сумма, ПриходБанк.Содержание КАК Содержание ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ПриходБанк ГДЕ ПриходБанк.СчетДт В ИЕРАРХИИ(&СчетБанк) И НЕ ПриходБанк.СчетКт В ИЕРАРХИИ (&СчетКасса) И НЕ ПриходБанк.СчетКт В ИЕРАРХИИ (&СчетБанк) И НЕ ПриходБанк.СчетКт В ИЕРАРХИИ (&СчетПодотчет) И (&ОтбиратьПоОрганизациям = ИСТИНА И ПриходБанк.Организация В ИЕРАРХИИ (&СписокОрганизаций) ИЛИ &ОтбиратьПоОрганизациям = ЛОЖЬ) И (&ОтбиратьПоЛитерам = ИСТИНА И ПриходБанк.Организация В ИЕРАРХИИ (&СписокЛитеров) ИЛИ &ОтбиратьПоЛитерам = ЛОЖЬ) И (&ОтбиратьПоСтатьямДДС = ИСТИНА И ПриходБанк.СубконтоДт2 В ИЕРАРХИИ (&СписокСтатейДДС) ИЛИ &ОтбиратьПоСтатьямДДС = ЛОЖЬ) И ПриходБанк.Период МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО ПриходБанк.Организация, ПриходБанк.ПодразделениеДт, ПриходБанк.СубконтоДт2, ПриходБанк.СубконтоДт3, ПриходБанк.Содержание ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПриходКасса.СубконтоДт1, ПриходКасса.СубконтоДт3, ПриходКасса.Организация, ПриходКасса.ПодразделениеДт, ПриходКасса.Сумма, ПриходКасса.Содержание ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ПриходКасса ГДЕ ПриходКасса.СчетДт В ИЕРАРХИИ(&СчетКасса) И НЕ ПриходКасса.СчетКт В ИЕРАРХИИ (&СчетКасса) И НЕ ПриходКасса.СчетКт В ИЕРАРХИИ (&СчетБанк) И НЕ ПриходКасса.СчетКт В ИЕРАРХИИ (&СчетПодотчет) И (&ОтбиратьПоОрганизациям = ИСТИНА И ПриходКасса.Организация В ИЕРАРХИИ (&СписокОрганизаций) ИЛИ &ОтбиратьПоОрганизациям = ЛОЖЬ) И (&ОтбиратьПоЛитерам = ИСТИНА И ПриходКасса.Организация В ИЕРАРХИИ (&СписокЛитеров) ИЛИ &ОтбиратьПоЛитерам = ЛОЖЬ) И (&ОтбиратьПоСтатьямДДС = ИСТИНА И ПриходКасса.СубконтоДт1 В ИЕРАРХИИ (&СписокСтатейДДС) ИЛИ &ОтбиратьПоСтатьямДДС = ЛОЖЬ) И ПриходКасса.Период МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО ПриходКасса.Организация, ПриходКасса.ПодразделениеДт, ПриходКасса.СубконтоДт1, ПриходКасса.СубконтоДт3, ПриходКасса.Сумма, ПриходКасса.Содержание УПОРЯДОЧИТЬ ПО Организация, Подразделение, СтатьяДДС, Литер, Содержание ИТОГИ СУММА(Сумма) ПО Организация, Подразделение, СтатьяДДС, Литер, Содержание |
|||
23
vmv
12.03.12
✎
12:39
|
(20) под полными правами без всяких РАЗРЕШЕННЫЕ пашет, если да, то В Иерархии глючит на ограничениях, т.е. параметр запроса не видит родителей.
да и вообще, как я писало, такой стиль запроса вызываем у меня тошноту, наверно я слишком глуп и пишу вложенные |
|||
24
ArtKzn
12.03.12
✎
13:03
|
Попробуй в этом (и остальных подобных) выражении поменять местами условия. Было:
(&ОтбиратьПоОрганизациям = ИСТИНА И ПриходКасса.Организация В ИЕРАРХИИ (&СписокОрганизаций) ИЛИ &ОтбиратьПоОрганизациям = ЛОЖЬ) Сделай: (&ОтбиратьПоОрганизациям = ЛОЖЬ ИЛИ &ОтбиратьПоОрганизациям = ИСТИНА И ПриходКасса.Организация В ИЕРАРХИИ (&СписокОрганизаций)) |
|||
25
ВотОнЯ
12.03.12
✎
13:13
|
(23) это построитель.
Просто я всегда там делаю рабочий вариант, отлаживаю, а потом оптимизирую.. |
|||
26
ВотОнЯ
12.03.12
✎
13:14
|
(24)я эти куски уже комментил, проблема не в них
|
|||
27
ВотОнЯ
12.03.12
✎
13:15
|
(23) под полными правами без всяких разрешенные не пашет тоже, уже пробовал
|
|||
28
ArtKzn
12.03.12
✎
13:37
|
(26) У тебя в (0) сказано
>В запросе отрабатывает все, кроме "В ИЕРАРХИИ" Какое конкретно "В ИЕРАРХИИ" не отрабатывает? |
|||
29
hhhh
12.03.12
✎
13:39
|
а эту фигню тоже комментил?
ПриходКасса.Организация В ИЕРАРХИИ (&СписокЛитеров) |
|||
30
ВотОнЯ
12.03.12
✎
14:31
|
(29)
1) см (22) 2) Комментил |
|||
31
ВотОнЯ
12.03.12
✎
14:33
|
(28)
Вот это не работает ВЫБРАТЬ ПриходБанк.СубконтоДт2 КАК СтатьяДДС, ПриходБанк.СубконтоДт3 КАК Литер, ПриходБанк.Организация КАК Организация, ПриходБанк.ПодразделениеДт КАК Подразделение, СУММА(ПриходБанк.Сумма) КАК Сумма, ПриходБанк.Содержание КАК Содержание ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ПриходБанк ГДЕ ПриходБанк.СчетДт В ИЕРАРХИИ(&СчетБанк) СГРУППИРОВАТЬ ПО ПриходБанк.Организация, ПриходБанк.ПодразделениеДт, ПриходБанк.СубконтоДт2, ПриходБанк.СубконтоДт3, ПриходБанк.Содержание УПОРЯДОЧИТЬ ПО Организация, Подразделение, СтатьяДДС, Литер, Содержание ИТОГИ СУММА(Сумма) ПО Организация, Подразделение, СтатьяДДС, Литер, Содержание А вот это работает ВЫБРАТЬ ПриходБанк.СубконтоДт2 КАК СтатьяДДС, ПриходБанк.СубконтоДт3 КАК Литер, ПриходБанк.Организация КАК Организация, ПриходБанк.ПодразделениеДт КАК Подразделение, СУММА(ПриходБанк.Сумма) КАК Сумма, ПриходБанк.Содержание КАК Содержание ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ПриходБанк //ГДЕ // ПриходБанк.СчетДт В ИЕРАРХИИ(&СчетБанк) СГРУППИРОВАТЬ ПО ПриходБанк.Организация, ПриходБанк.ПодразделениеДт, ПриходБанк.СубконтоДт2, ПриходБанк.СубконтоДт3, ПриходБанк.Содержание УПОРЯДОЧИТЬ ПО Организация, Подразделение, СтатьяДДС, Литер, Содержание ИТОГИ СУММА(Сумма) ПО Организация, Подразделение, СтатьяДДС, Литер, Содержание |
|||
32
ВотОнЯ
12.03.12
✎
15:03
|
Опачки... Кажись понял почему не отрабатывает
Значение ПриходБанк.СчетДт в запросе = Null |
|||
33
ВотОнЯ
12.03.12
✎
15:04
|
Блин, а почему же Null? (((
|
|||
34
Ненавижу 1С
гуру
12.03.12
✎
15:05
|
(33) потому что он такой
|
|||
35
ВотОнЯ
12.03.12
✎
15:21
|
(34) в проводках задан вполне себе конкретный счет из плана счетов, в запросе почему Null?
|
|||
36
ArtKzn
12.03.12
✎
15:32
|
(35) у тебя ИТОГИ стоят.
Null в детальных записях видишь или в итоговых? |
|||
37
ВотОнЯ
12.03.12
✎
15:43
|
везде..
делаю Запрос.Выполнить.Выгрузить() получаю ТЗ, открываю в отладчике, а там колонка счет вообще не заполнена. |
|||
38
Ненавижу 1С
гуру
12.03.12
✎
15:44
|
(37) получаешь ТЗ "плоской" выборки, а у тебя итоги
посмотри что в детальных записях |
|||
39
ArtKzn
12.03.12
✎
15:55
|
(37),в дополнение к (38): либо выгружай в дерево (.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам)) и обходи как дерево, либо убери ИТОГИ из запроса.
|
|||
40
ВотОнЯ
12.03.12
✎
16:16
|
Убрал итоги, в плоской выборке все нормализовалось
|
|||
41
ВотОнЯ
12.03.12
✎
16:30
|
Все отлично, поправил по советам (38) + (39), все получилось,
Ребята, спасибо вам огромное! =) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |