|
v7: Проблема с прямым запросом 7.7 | ☑ | ||
---|---|---|---|---|
0
Альбатрос
05.04.13
✎
06:00
|
Мужики, не получается закончить запрос. Задача: выбрать реквизиты шапки и табчасть документов за период.
Накатал такой запрос: ТекстЗапроса = "SELECT | Табчасть.SP70 [Товар $Справочник.Товары], | SUM(Табчасть.SP73) as Количество, | Табчасть.SP72 as Сумма, | Журнал.DocNo as НомерДок, | Журнал.IDDOC as Ссылочка, | Журнал.DATE_TIME_IDDOC as ДатаДок, | Журнал.SP1165 [Клиент $Справочник.Клиенты], | $Док.Сумма as Сумма | |FROM | $ДокументСтроки.РасходнаяНал as Табчасть |INNER JOIN | $Документ.РасходнаяНал as Док | ON Док.IDDoc = Табчасть.IDDoc |INNER JOIN | _1SJourn as Журнал | ON Журнал.IDDoc = Док.IDDoc |WHERE | CAST(LEFT(Журнал.DATE_TIME_IDDOC, 8) AS DATETIME) BETWEEN ? AND ? |GROUP BY |Табчасть.SP70, |Табчасть.SP72 |Табчасть.SP73) |"; Выдает ошибку и просит группировать поля. А как правильно сгруппировать? |
|||
1
Sserj
05.04.13
✎
06:06
|
Дэк при группировке все поля в селекте должны быть из группа группбай или функциям, тобишь Журнал.DocNo, Журнал.IDDOC и т.д нужно либо в групп вложить, либо фунцию типа min(Журнал.DocNo) и т.д. сделать
|
|||
2
AleksAnt
05.04.13
✎
06:07
|
GROUP BY
Табчасть.SP70, Табчасть.SP72, Журнал.DocNo, Журнал.IDDOC, Журнал.DATE_TIME_IDDOC, Журнал.SP1165, $Док.Сумма |
|||
3
Андрей_Андреич
naïve
05.04.13
✎
06:09
|
Почему Сумма дважды - из ТЧ и из шапки?
|
|||
4
Альбатрос
05.04.13
✎
06:10
|
(3) Ага, пропустил. Щас уберу
|
|||
5
Альбатрос
05.04.13
✎
06:20
|
(1) (2) Да, правильно, так работает. Спасибо
|
|||
6
Альбатрос
05.04.13
✎
06:23
|
еще один вопрос: Ведь существует возможность обхода группировок? Ну что-то вроде этого:
Пока Результат.ПолучитьСтроку() =1 Цикл Ссылка = Результат.Ссылка; Номер = Результат.НомерДок; Пока Результат.Группировка(1) цикл Товар = Результат.товар; Сумма = Результат.сумма; КонецЦикла; КонецЦикла; Как организовать подобное? |
|||
7
chelentano
05.04.13
✎
06:26
|
(6) выгрузи в ТЗ
|
|||
8
Альбатрос
05.04.13
✎
06:28
|
(7) А что это мне даст? Результат запроса вроде как тоже ТЗ
|
|||
9
Wobland
05.04.13
✎
06:30
|
(8) а ты ждёшь что-то типа дерева что-ли?
|
|||
10
Sserj
05.04.13
✎
06:30
|
(6) Либо изучить ИндексированнуюТаблицу либо по старинке
ЗначениеГруппировки1 = ""; ЗначениеГруппировки2 = ""; Пока Результат.ПолучитьСтроку() = 1 Цикл Если значениеГруппировки1 <> Резлутат.Группивка1 Тогда ЗначениеГруппировки1 = Результат.Группировка1; ... КонецЕсли; Если ЗначениеГруппировки2 <> Результат.Группировка2 Тогда ЗначениеГруппировки2 = Резульат.Группировка2; ... КонецЕсли; ... КонецЦикла; |
|||
11
Альбатрос
05.04.13
✎
06:30
|
(9) Да, такое возможно?
|
|||
12
Wobland
05.04.13
✎
06:31
|
доллар ещё не предлагали, кстати? Табчасть.SP73 --> $Табчасть.Количество
|
|||
13
chelentano
05.04.13
✎
06:31
|
(11) а, вон ты про что... тогда см. (10)
|
|||
14
Wobland
05.04.13
✎
06:31
|
(11) на грани уверенности: нет
|
|||
15
Sserj
05.04.13
✎
06:31
|
(11) Выгрузить в ИндексированнуюТаблицу и использовать Сгруппировать.
|
|||
16
Sserj
05.04.13
✎
06:32
|
+(15) А не там он просто Группировать называется
|
|||
17
ADirks
05.04.13
✎
06:34
|
(6) например: http://www.1cpp.ru/forum/YaBB.pl?num=1202201945
|
|||
18
Альбатрос
05.04.13
✎
06:40
|
(15) Прикольно, читаю =)
|
|||
19
Альбатрос
05.04.13
✎
07:04
|
Тааак, попробовал вот так сделать:
ИндТаб = СоздатьОбъект("ИндексированнаяТаблица"); ИндТаб.Загрузить(Результат); // ИндТаб.ДобавитьИндекс("Ссылка","Ссылочка"); ИндТаб.Группировать("Ссылка:Ссылочка","Сумма"); ИндТаб.Показать(); В итоге метод показать() показывает мне одну строку. А должно же быть дерево. Где ошибся? |
|||
20
ADirks
05.04.13
✎
07:08
|
(19) Возьми нормальный инструмент: http://infostart.ru/public/15487/
Подсунь свою ИТ в РедакторТЗ, сможешь пошариться по дереву. |
|||
21
Sserj
05.04.13
✎
07:11
|
(19)
Ну в запросе у тебя вроде "ссылка" нету, попробой: ИндТаб.Группировать("Ссылочка:Ссылочка","Сумма"); |
|||
22
Альбатрос
05.04.13
✎
07:17
|
(21) Нее, "ссылка" - имя создаваемого индекса, а вот "Ссылочка" - по какой колонке. Я вот думаю, может метод показать не работает правильно с ТЗ после группировать()
|
|||
23
Альбатрос
05.04.13
✎
07:20
|
(20) Чот там не написано, как эти разработки внедрить =(
|
|||
24
Sserj
05.04.13
✎
07:21
|
(22) Да просто в коде выше у тебя закоменчено добавление индекса, ну да ладно.
А ИндТаб.тзПотомки появилось и что в ней есть, хотя вроде по одной колонке не должно там быть ничего. |
|||
25
Альбатрос
05.04.13
✎
07:22
|
(24) Нет ее...
|
|||
26
Альбатрос
05.04.13
✎
07:23
|
Закоменчено, потому что это одинаковые действия
|
|||
27
Sserj
05.04.13
✎
07:24
|
ИндТаб.Загрузить(Результат);
ИндТаб.Показать(); А так вообще что показывает? |
|||
28
Альбатрос
05.04.13
✎
07:30
|
||||
29
Sserj
05.04.13
✎
07:32
|
(28) может и ошибаюсь, но у тебя там вроде "НомерДок" в обоих строках одинаковый, тобишь это один документ, ну по нему и свернулось в одну строку
|
|||
30
ADirks
05.04.13
✎
07:35
|
(23) хм... а я думал, и так понятно...
Все обработки положи в ExtForms; в ГМ (ну или в свою обработку) перетащи НайтиФайлВнешнегоОтчета(), ОткрытьОбработку() и РедакторТЗ() - они лежат в ФункцииТЗ.txt. А на картинке твоей потомков просто не видно, ибо они где-то там справа. |
|||
31
Альбатрос
05.04.13
✎
07:36
|
(29) Ну да, так и есть. Так я не понял... одинаковые поля тоже надо в индексы добавить? на выходе я хочу получить строку с ссылкой на документ, а в тзПотомки - его тч
|
|||
32
Альбатрос
05.04.13
✎
07:36
|
(30) их там нет, потомков. я просмотрел полностью.
|
|||
33
Sserj
05.04.13
✎
07:40
|
(31) Ну тогда надо:
ИндТаб.Группировать("Ссылка:Ссылочка; Товар:Товар","Сумма"); И получишь ИндТаб.ВыбратьСтроки(); Пока ИндТаб.ПолучитьСтроку() = 1 Цикл Док = ИндТаб.Ссылочка; тзТовары = ИндТаб.тзПотомки; тзТовары.ВыбратьСтроки(); Пока тзТовары.получитьСтроку() = 1 Цикл Товар = тзТовары.Товар; конецЦикла; КонецЦикла; |
|||
34
Альбатрос
05.04.13
✎
07:44
|
(33) Супер! Идеально!!! Спасибо приогромное!!!!
|
|||
35
Альбатрос
05.04.13
✎
07:49
|
Иииии последний вопрос =) А получится ли мне передать эту ИТЗ в 8.2? распознается она там? =)
|
|||
36
Wobland
05.04.13
✎
08:04
|
(35) я у себя делал запрос к внешнему источнику, добывал ТЗ, потом запрашивал итоги у ТЗ...
|
|||
37
ADirks
05.04.13
✎
08:07
|
кстати, в (19) если бы ты написал
ИндТаб.Группировать("Ссылка:Ссылочка","Сумма", 1); то получил бы нужный результат. Синтаксис: Группировать(стрГруппировки, стрКолонкиСумм, [чРасшифровкаПоследнегоУровня = 0]) Параметры: .... чРасшифровкаПоследнегоУровня - тип: Число. 1 - в каждой строке последнего уровня группировки будет таблица с расшифровкой, содержащая строки исходной таблицы в нетронутом виде. 0 - последний уровень будет свёрнут. |
|||
38
Альбатрос
05.04.13
✎
08:29
|
(36) Ну тоже вариант, но я сначала попробую поиграться с этой ИТЗ =) Не получится, попробую ваш вариант.
|
|||
39
Альбатрос
05.04.13
✎
08:30
|
(37) Я как раз перед (33) хотел попробовать пихнуть туда 1 =)
|
|||
40
Альбатрос
05.04.13
✎
09:08
|
Мужики, а что происходит, когда я получаю в 8.2 СОМОбъект из 7.7? То есть я получаю полноценную копию и все операции с ней происходят на стороне 8.2 или я получаю ссылку на созданный объект в 7.7 и все операции проводятся там?
|
|||
41
ДенисЧ
05.04.13
✎
09:09
|
(40) ссылку.
|
|||
42
Альбатрос
05.04.13
✎
09:10
|
(41) Понятно, спасибо
|
|||
43
Альбатрос
05.04.13
✎
09:23
|
(36) Таки да, получается что подключиться к таблицам sql 7.7 и работать с ними намного лучше и удобнее, чем по ОЛЕ.
Ожидайте топиков "Как подключиться к SQL 8.2" и "Как построить запрос к таблицам SQL" =))))) |
|||
44
Wobland
05.04.13
✎
09:28
|
(43) внешний источник - удобная штука
|
|||
45
Альбатрос
05.04.13
✎
09:29
|
(44) Примерчиком не кинете? =)
|
|||
46
Wobland
05.04.13
✎
09:31
|
||||
47
Wobland
05.04.13
✎
09:32
|
||||
48
Альбатрос
05.04.13
✎
09:43
|
(46) (47) Ойойой...
|
|||
49
Wobland
05.04.13
✎
10:08
|
(48) а это пример ;) сейчас-то всё работает-вертится, достаточно быстро, нигде не жмёт, юзеры довольны
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |