|
v7: Сконвертировать запрос | ☑ | ||
---|---|---|---|---|
0
teploset
01.03.21
✎
16:23
|
Помогите, пожалуйста, перевести запрос с человеческого на 1эсовский 7.7. Этот рабочий на тестовой MySQL БД:
SELECT РУ.Док, РУ.РУСумма, SUM(ИК.ИККол * ИК.ИКЦена) ИКСумма FROM РУ LEFT JOIN ИК ON ДокРУЗакНар = ДокИКЗакНар GROUP BY РУ.Док Есть два документа: РеализацияУслуг (РУ) и ИнвентаризационнаяКарточка (ИК), у которых есть реквизит ЗаказНаряд. У РУ - шапки, у ИК - табличной части (может повторяться несколько раз в одном доке). Задача: выбрать док-ты РУ за заданный период, из них выбрать Сумму (реквизит шапки), а также посчитать ИКСумма = Сумма(ИККол*ИКЦена) (реквизиты табличной части) из док-в ИК у которых одинаковый реквизит ЗаказНаряд. Написал через конструктор запросов так, но видимо где-то (где?!) ошибся, выдает пустой результат: Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(ЗапросПрибыль1) |Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы все; |Обрабатывать НеПомеченныеНаУдаление; |ДокРУ = Документ.РеализацияУслуг.ТекущийДокумент; |ДокРУЗакНар = Документ.РеализацияУслуг.ЗаказНаряд; |ДокИКЗакНар = Документ.ИнвентаризационнаяКарточка.ЗакНаряд; |ИККол = Документ.ИнвентаризационнаяКарточка.Количество; |ИКЦена = Документ.ИнвентаризационнаяКарточка.ФактЦенаЗаЕд; |РУСумма = Документ.РеализацияУслуг.Сумма; |Функция ИКСумма = Сумма(ИККол*ИКЦена); |Группировка ДокРУ; |Условие(ДокРУЗакНар = ДокИКЗакНар); |"//}}ЗАПРОС ; |
|||
1
Андрей_Андреич
naïve
01.03.21
✎
16:34
|
Группировка документ
|
|||
2
Андрей_Андреич
naïve
01.03.21
✎
16:35
|
поспешил извиняюсь
|
|||
3
Djelf
01.03.21
✎
16:39
|
Чавось ^^
Ты написал: запрос на "MySQL БД:". 1С 7.7 умеет работать с MySQL, но не умеет делать чёрные запросы к MySQL. А если это MsSql, то "FROM РУ" это не обращение к таблице 1С, а обращение к вьюшке РУ, а там может быть наворочено все что угодно. |
|||
4
teploset
01.03.21
✎
16:41
|
(3) Да нет, в MySQL просто создал две таблички ИК и РУ для тестов запроса на истинном языке SQL :)
|
|||
5
teploset
01.03.21
✎
16:44
|
Если убрать
//|Условие(ДокРУЗакНар = ДокИКЗакНар); то выводит 2 имеющихся РУ с их суммой, но в столбце ИКСумма пусто... где-то тут собака зарылась |
|||
6
Андрей_Андреич
naïve
01.03.21
✎
16:48
|
|РеализацияУслуг = Документ.РеализацияУслуг.ТекущийДокумент;
|ЗаказНаряд = Документ.РеализацияУслуг.ЗаказНаряд, Документ.ИнвентаризационнаяКарточка.ЗакНаряд; |СуммаРУ = Документ.РеализацияУслуг.Сумма; |ИККол = Документ.ИнвентаризационнаяКарточка.Количество; |ИКЦена = Документ.ИнвентаризационнаяКарточка.ФактЦенаЗаЕд; |Функция ИКСумма = Сумма(ИККол*ИКЦена); |Функция РУСумма = Сумма(СуммаРУ); |Группировка РеализацияУслуг; |Группировка ЗаказНаряд; где-то так |
|||
7
teploset
01.03.21
✎
16:58
|
(6) Уже лучше, но почему-то все развернуто получилось (хз как тут вставить таблицу):
ДокРУ ЗаказНаряд ИКСумма РУСуммаСум 21880.20 Заказ-наряд 007/03 10733.35 Заказ-наряд 013/01 1980.00 Заказ-наряд 105/01 9166.85 Реализация услуг 00000001 77000.00 Реализация услуг 00000001 Заказ-наряд 007/03 77000.00 Реализация услуг 00000002 3885.00 Реализация услуг 00000002 Заказ-наряд 105/01 3885.00 Итого 21880.20 80885.00 |
|||
8
teploset
01.03.21
✎
17:00
|
Ой, работа кончилась, завтра продолжим)
|
|||
9
Ёпрст
01.03.21
✎
17:07
|
(6) радуга же будет
|
|||
10
Ёпрст
01.03.21
✎
17:10
|
(0) что мешает переписать запрос с селектом на синтаксис с реальными табличками ?
Используя или odbc для sql или oledb/sqllite для дбф ? |
|||
11
Ёпрст
01.03.21
✎
17:11
|
Это в разы проще, чем иметь это в чорном запросе. Ибо объяснять как будет посчитанна функция сумма по реквизиту шапки, когда есть обращение к тч документа...тоскливо
|
|||
12
teploset
01.03.21
✎
19:38
|
(10) Отсутствие такого опыта. От эски отошел уже давно, а тут добрые люди откопали старый самописный конфиг и попросили чуть-чуть добавок - вот и завис, т.к. все позабыл уже напрочь...
|
|||
13
teploset
01.03.21
✎
19:39
|
(11) Что, такой сложный запрос получится? Или вообще нереально это сделать запросом? А если через перебор док-в? Можно будет?
|
|||
14
Ёпрст
01.03.21
✎
22:56
|
(10) дык в (0) почти готовый запрос, поправить только синтаксис и всё.
(13) да нет, всё можно |
|||
15
teploset
02.03.21
✎
08:46
|
(14) Спрошашиваю у профи - (11) "черный запрос" нельзя написать по моему ТЗ? Я к тому, чтоб не париться с ним, теряя время, а перепишу на перебор доков тогда. А если можно - то помоги, плиз...
|
|||
16
Ёпрст
02.03.21
✎
11:17
|
(15) забей на чорный, пиши прямой запрос ..там всё понятно что откуда и зачем.
|
|||
17
Ёпрст
02.03.21
✎
11:17
|
что непонятно, спрашивай.
|
|||
18
teploset
02.03.21
✎
11:24
|
(17) все непонятно) Даже не знаю с чего начать... нужны какие-то примочки доставлять к движку эски? Иначе, как прямой запрос к дбф-ам?
|
|||
19
teploset
02.03.21
✎
11:24
|
А пока через перебор доков сделал. Работает)
|
|||
20
Ёпрст
02.03.21
✎
11:32
|
(18) либо 1cpp.dll + vfpoledb, либо запрос на 1sqlite.dll
|
|||
21
teploset
02.03.21
✎
11:34
|
(20) ок, спасибо, погуглю на эту тему на досуге
|
|||
22
Ёпрст
02.03.21
✎
11:38
|
(21) на вот, пример , есть и то и то в одной поделке
https://cloud.mail.ru/public/AeJK/71o1vuzd1 |
|||
23
teploset
02.03.21
✎
11:42
|
(22) о, спасибо!
|
|||
24
Ёпрст
02.03.21
✎
11:44
|
Ну и..ознакомиться с этим:
http://www.script-coding.com/v77tables.html |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |