|
проблема с запросом | ☑ | ||
---|---|---|---|---|
0
vip67
25.07.13
✎
12:04
|
Всем привет! помогите разобраться с запросом:
текст запроса: ЗапросПрихМатТекМес = Новый Запрос; ЗапросПрихМатТекМес.Текст = "ВЫБРАТЬ | ПОДСТРОКА(ПриходМатТекМес.СубконтоДт1.Код, 1, 2) КАК ГрМат, | СУММА(ПриходМатТекМес.СуммаОборот) КАК Сумма20, | ПриходМатТекМес.СубконтоКт3 КАК Сделка, | ПриходМатТекМес.Регистратор.Номер КАК НомерАкта |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПериода, &КонПериода, Запись, СчетДт В ИЕРАРХИИ (&Счет20), , , , ) КАК ПриходМатТекМес |ГДЕ | ПриходМатТекМес.СубконтоКт3 = &Сделка | |СГРУППИРОВАТЬ ПО | ПриходМатТекМес.СубконтоКт3, | ПриходМатТекМес.Регистратор.Номер, | ПОДСТРОКА(ПриходМатТекМес.СубконтоДт1.Код, 1, 2)"; ЗапросПрихМатТекМес.УстановитьПараметр("КонПериода", КонПериода); ЗапросПрихМатТекМес.УстановитьПараметр("НачПериода", НачПериода); ЗапросПрихМатТекМес.УстановитьПараметр("Сделка", Сделка); ЗапросПрихМатТекМес.УстановитьПараметр("Счет20", Счет20); // сообщить(Сделка); РезультатПрихМатТекМес = ЗапросПрихМатТекМес.Выполнить(); // ВыборкаПрих = РезультатПрихМатТекМес.Выбрать(); // Пока ВыборкаПрих.Следующий() Цикл // СтрокаТаб = Таблица.Добавить(); // СтрокаТаб.Контрагент = ВыборкаПлатежа.Контрагент; // СтрокаТаб.НомерСчета = ВыборкаПлатежа.Сделка.НомерВходящегоДокумента; // СтрокаТаб.НомерАкта = ВыборкаПрих.НомерАкта; // СтрокаТаб.ГруппаМатериала = ВыборкаПрих.ГрМат; // СтрокаТаб.Сумма20 = ВыборкаПрих.Сумма20; //// СтрокаТаб.Сумма631 = ВыборкаПрих.Сумма631; // // // КонецЦикла; ВыборкаСделка = РезультатПрихМатТекМес.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаСделка.Следующий() Цикл // СтрокаТаб = Таблица.Добавить(); // СтрокаТаб.Контрагент = ВыборкаПлатежа.Контрагент; // СтрокаТаб.НомерСчета = ВыборкаПлатежа.Сделка.НомерВходящегоДокумента; ВыборкаРегистратор = ВыборкаСделка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаРегистратор.Следующий() Цикл // СтрокаТаб.НомерАкта = ВыборкаРегистратор.Регистратор.Номер; // ВыборкаГрМат = ВыборкаРегистратор.Выбрать(); Пока ВыборкаГрМат.Следующий() Цикл СтрокаТаб = Таблица.Добавить(); СтрокаТаб.Контрагент = ВыборкаПлатежа.Контрагент; СтрокаТаб.НомерСчета = ВыборкаПлатежа.Сделка.НомерВходящегоДокумента; СтрокаТаб.НомерАкта = ВыборкаГрМат.НомерАкта; КонецЦикла; КонецЦикла; // КонецЦикла; если обход запроса без группировки - то таблицу заполняет (заремленная часть). А вот в текущем варианте - с обходом группровки - не заполняет - не проваливается даже во второй уровень где ошибка? |
|||
1
Капитан О
25.07.13
✎
12:05
|
а где итоги?
|
|||
2
vip67
25.07.13
✎
12:08
|
а они обязательны?
|
|||
3
Ненавижу 1С
гуру
25.07.13
✎
12:09
|
(2) обход по группировкам это и есть обход по ИТОГИ
просто у 1С путаница в терминологиях |
|||
4
vip67
25.07.13
✎
12:10
|
счас попробую!
|
|||
5
cw014
25.07.13
✎
12:11
|
Прих мат
|
|||
6
vip67
25.07.13
✎
12:22
|
с итогами - работает! а что тогда прихмат? - (5)
|
|||
7
cw014
25.07.13
✎
12:23
|
(6) ЗапросПрихМатТекМес
Прих мат текс мекс брякс |
|||
8
Капитан О
25.07.13
✎
12:25
|
(7) тссс.. сейчас вызовешь Нуралиева
|
|||
9
vip67
25.07.13
✎
12:26
|
еще одна загвозкда: вот полный текст:
ЗапросПлатеж.Текст = "ВЫБРАТЬ | ПлатежТекМес.Регистратор, | ПлатежТекМес.СубконтоДт3 КАК сделка, | ПлатежТекМес.СубконтоДт1 КАК Контрагент |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт( | &НачПериода, | &КонПериода, | Регистратор, | СчетДт В ИЕРАРХИИ (&Счет631) | ИЛИ СчетДт В ИЕРАРХИИ (&Счет371), | , | , | , | ) КАК ПлатежТекМес |ГДЕ | ПлатежТекМес.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеИсходящее"; Если ВыбКонтрагент <> справочники.Контрагенты.ПустаяСсылка() тогда ЗапросПлатеж.Текст = ЗапросПлатеж.Текст + " И ПлатежТекМес.СубконтоДт1 = &Контрагент"; ЗапросПлатеж.УстановитьПараметр("Контрагент", ВыбКонтрагент); КонецЕсли; ЗапросПлатеж.УстановитьПараметр("КонПериода", КонПериода); ЗапросПлатеж.УстановитьПараметр("НачПериода", НачПериода); ЗапросПлатеж.УстановитьПараметр("Счет631", Счет631); ЗапросПлатеж.УстановитьПараметр("Счет371", Счет371); РезультатПлатеж = ЗапросПлатеж.Выполнить(); //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА ВыборкаПлатежа = РезультатПлатеж.Выбрать(); Пока ВыборкаПлатежа.Следующий() Цикл Сделка = ВыборкаПлатежа.Сделка; //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! ЗапросПрихМатТекМес = Новый Запрос; ЗапросПрихМатТекМес.Текст = "ВЫБРАТЬ | ПОДСТРОКА(ПриходМатТекМес.СубконтоДт1.Код, 1, 2) КАК ГрМат, | СУММА(ПриходМатТекМес.СуммаОборот) КАК Сумма20, | ПриходМатТекМес.СубконтоКт3 КАК Сделка, | ПриходМатТекМес.Регистратор.Номер КАК НомерАкта |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПериода, &КонПериода, Запись, СчетДт В ИЕРАРХИИ (&Счет20), , , , ) КАК ПриходМатТекМес |ГДЕ | ПриходМатТекМес.СубконтоКт3 = &Сделка | |СГРУППИРОВАТЬ ПО | ПриходМатТекМес.СубконтоКт3, | ПриходМатТекМес.Регистратор.Номер, | ПОДСТРОКА(ПриходМатТекМес.СубконтоДт1.Код, 1, 2) |ИТОГИ | СУММА(Сумма20) |ПО | Сделка, | НомерАкта, | ГрМат"; ЗапросПрихМатТекМес.УстановитьПараметр("КонПериода", КонПериода); ЗапросПрихМатТекМес.УстановитьПараметр("НачПериода", НачПериода); ЗапросПрихМатТекМес.УстановитьПараметр("Сделка", Сделка); ЗапросПрихМатТекМес.УстановитьПараметр("Счет20", Счет20); сообщить(Сделка); РезультатПрихМатТекМес = ЗапросПрихМатТекМес.Выполнить(); ВыборкаСделка = РезультатПрихМатТекМес.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаСделка.Следующий() Цикл // СтрокаТаб = Таблица.Добавить(); // СтрокаТаб.Контрагент = ВыборкаПлатежа.Контрагент; // СтрокаТаб.НомерСчета = ВыборкаПлатежа.Сделка.НомерВходящегоДокумента; ВыборкаРегистратор = ВыборкаСделка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаРегистратор.Следующий() Цикл // СтрокаТаб.НомерАкта = ВыборкаРегистратор.Регистратор.Номер; // ВыборкаГрМат = ВыборкаРегистратор.Выбрать(); Пока ВыборкаГрМат.Следующий() Цикл СтрокаТаб = Таблица.Добавить(); СтрокаТаб.Контрагент = ВыборкаПлатежа.Контрагент; СтрокаТаб.НомерСчета = ВыборкаПлатежа.Сделка.НомерВходящегоДокумента; СтрокаТаб.НомерАкта = ВыборкаГрМат.НомерАкта; СтрокаТаб.ГруппаМатериала = ВыборкаГрМат.ГрМат; СтрокаТаб.Сумма20 = ВыборкаГрМат.Сумма20; КонецЦикла; КонецЦикла; // КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецЦикла; обратите внимание на первый запрос: там есть уловие по контрагенту - если контрагент есть (передаю ссылку) - то отрабатывает все - данные вижу, когда контрагента нет, по идее долно показать данные по все контрагентам - опять пусто. |
|||
10
vip67
25.07.13
✎
12:27
|
при этом, когда контрагент не указываю, т.е ВыбКонтрагент - пустая ссылка, то сделки перечилсяет через Сообщить(сделка)
|
|||
11
exwill
25.07.13
✎
12:27
|
(7) Хорошее имя для запроса. Звучное.
|
|||
12
cw014
25.07.13
✎
12:27
|
(9) Условие в виртуальную таблицу вставляй
|
|||
13
Капитан О
25.07.13
✎
12:29
|
(11) видал имя для списка документов - СписДок
|
|||
14
cw014
25.07.13
✎
12:31
|
(13) До меня только сейчас дошло )))))
|
|||
15
cw014
25.07.13
✎
12:31
|
(13) Надо букву "С" первую убрать
|
|||
16
cw014
25.07.13
✎
12:32
|
(13) и вторую заменить на "з"
|
|||
17
vip67
25.07.13
✎
12:33
|
(12) не понял? ксати - прошелся отладчиком - все-таки внутренний цикл при переборе вторго запроса отрабатывает, Таблица добавляется и данные есть - а вот не отображаются... это как?
|
|||
18
exwill
25.07.13
✎
12:33
|
(9) Если "контрагента нет". Это еще не значит, что ВыбКонтрагент=ПустаяСсылка()
|
|||
19
vip67
25.07.13
✎
12:34
|
какая-то бяка - после отладяика - отбразилось! да шо ж это такое!!!
|
|||
20
exwill
25.07.13
✎
12:36
|
(19) бывает
|
|||
21
cw014
25.07.13
✎
12:36
|
(19) Чудеса...
|
|||
22
vip67
25.07.13
✎
12:36
|
(18) почему не значит? я выбконтрагент выбираю на форме, если не выбрал - значит это поле - пустая ссылка. или не так?
|
|||
23
cw014
25.07.13
✎
12:38
|
(22) 1. Если ВыбКонтрагент <> справочники.Контрагенты.ПустаяСсылка() тогда
замени хотя бы на Если НЕ ВыбКонтрагент.Пустая() тогда 2. | СчетДт В ИЕРАРХИИ (&Счет631) | ИЛИ СчетДт В ИЕРАРХИИ (&Счет371), | , | , | , | ) КАК ПлатежТекМес Видишь куча запятушек? Так вот там где то параметры виртуальной таблицы кроются |
|||
24
exwill
25.07.13
✎
12:41
|
(22) В таком случае, да. Пустая ссылка. Если тип поля не составной.
|
|||
25
vip67
25.07.13
✎
12:41
|
тип поле не составной - счас пробовал в разных комбинациях ситуации - рабоатет. чудеса...
|
|||
26
hhhh
25.07.13
✎
12:58
|
(25) еще возможна ситуация, что контрагент не первое субконто. Как-то вы лихо решили, что первое. На самом деле, если типовая конфа, то там когда делают настройки учета, могут быть разные ситуации. Лучше перестраховаться и задавать параметр &Субконто
|
|||
27
vip67
25.07.13
✎
12:59
|
теперь - двоятся строки - как убрать задвоение?
|
|||
28
Капитан О
25.07.13
✎
13:07
|
(27) понять, что есть ещё измерения, применить полученные знания
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |