Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Сконвертировать запрос

v7: Сконвертировать запрос
Я
   teploset
 
01.03.21 - 16:23
Помогите, пожалуйста, перевести запрос с человеческого на 1эсовский 7.7. Этот рабочий на тестовой MySQL БД:

SELECT РУ.Док, РУ.РУСумма, SUM(ИК.ИККол * ИК.ИКЦена) ИКСумма
FROM РУ
LEFT JOIN ИК ON ДокРУЗакНар = ДокИКЗакНар
GROUP BY РУ.Док


Есть два документа: РеализацияУслуг (РУ) и ИнвентаризационнаяКарточка (ИК), у которых есть реквизит ЗаказНаряд. У РУ - шапки, у ИК - табличной части (может повторяться несколько раз в одном доке).
Задача: выбрать док-ты РУ за заданный период, из них выбрать Сумму (реквизит шапки), а также посчитать ИКСумма = Сумма(ИККол*ИКЦена) (реквизиты табличной части) из док-в ИК у которых одинаковый реквизит ЗаказНаряд.

Написал через конструктор запросов так, но видимо где-то (где?!) ошибся, выдает пустой результат:

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(ЗапросПрибыль1)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ДокРУ = Документ.РеализацияУслуг.ТекущийДокумент;
    |ДокРУЗакНар = Документ.РеализацияУслуг.ЗаказНаряд;
    |ДокИКЗакНар = Документ.ИнвентаризационнаяКарточка.ЗакНаряд;
    |ИККол = Документ.ИнвентаризационнаяКарточка.Количество;
    |ИКЦена = Документ.ИнвентаризационнаяКарточка.ФактЦенаЗаЕд;
    |РУСумма = Документ.РеализацияУслуг.Сумма;
    |Функция ИКСумма = Сумма(ИККол*ИКЦена);
    |Группировка ДокРУ;
    |Условие(ДокРУЗакНар = ДокИКЗакНар);
    |"//}}ЗАПРОС
    ;
   Андрей_Андреич
 
1 - 01.03.21 - 16:34
Группировка документ
   Андрей_Андреич
 
2 - 01.03.21 - 16:35
поспешил извиняюсь
   Djelf
 
3 - 01.03.21 - 16:39
Чавось ^^
Ты написал: запрос на "MySQL БД:".
1С 7.7 умеет работать с MySQL, но не умеет делать чёрные запросы к MySQL.
А если это MsSql, то "FROM РУ" это не обращение к таблице 1С, а обращение к вьюшке РУ, а там может быть наворочено все что угодно.
   teploset
 
4 - 01.03.21 - 16:41
(3) Да нет, в MySQL просто создал две таблички ИК и РУ для тестов запроса на истинном языке SQL :)
   teploset
 
5 - 01.03.21 - 16:44
Если убрать
    //|Условие(ДокРУЗакНар = ДокИКЗакНар);

то выводит 2 имеющихся РУ с их суммой, но в столбце ИКСумма пусто... где-то тут собака зарылась
   Андрей_Андреич
 
6 - 01.03.21 - 16:48
|РеализацияУслуг = Документ.РеализацияУслуг.ТекущийДокумент;
|ЗаказНаряд = Документ.РеализацияУслуг.ЗаказНаряд, Документ.ИнвентаризационнаяКарточка.ЗакНаряд;
|СуммаРУ = Документ.РеализацияУслуг.Сумма;
|ИККол = Документ.ИнвентаризационнаяКарточка.Количество; 
|ИКЦена = Документ.ИнвентаризационнаяКарточка.ФактЦенаЗаЕд; 
|Функция ИКСумма = Сумма(ИККол*ИКЦена);  
|Функция РУСумма = Сумма(СуммаРУ);  
|Группировка РеализацияУслуг;
|Группировка ЗаказНаряд;

где-то так
   teploset
 
7 - 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
   teploset
 
8 - 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
Это в разы проще, чем иметь это в чорном запросе. Ибо объяснять как будет посчитанна функция сумма по реквизиту шапки, когда есть обращение к тч документа...тоскливо
   teploset
 
12 - 01.03.21 - 19:38
(10) Отсутствие такого опыта. От эски отошел уже давно, а тут добрые люди откопали старый самописный конфиг и попросили чуть-чуть добавок - вот и завис, т.к. все позабыл уже напрочь...
   teploset
 
13 - 01.03.21 - 19:39
(11) Что, такой сложный запрос получится? Или вообще нереально это сделать запросом? А если через перебор док-в? Можно будет?
   Ёпрст
 
14 - 01.03.21 - 22:56
(10) дык в (0) почти готовый запрос, поправить только синтаксис и всё.
(13) да нет, всё можно
   teploset
 
15 - 02.03.21 - 08:46
(14) Спрошашиваю у профи - (11) "черный запрос" нельзя написать по моему ТЗ? Я к тому, чтоб не париться с ним, теряя время, а перепишу на  перебор доков тогда. А если можно - то помоги, плиз...
   Ёпрст
 
16 - 02.03.21 - 11:17
(15) забей на чорный, пиши прямой запрос ..там всё понятно что откуда и зачем.
   Ёпрст
 
17 - 02.03.21 - 11:17
что непонятно, спрашивай.
   teploset
 
18 - 02.03.21 - 11:24
(17) все непонятно) Даже не знаю с чего начать... нужны какие-то примочки доставлять к движку эски? Иначе, как прямой запрос к дбф-ам?
   teploset
 
19 - 02.03.21 - 11:24
А пока через перебор доков сделал. Работает)
   Ёпрст
 
20 - 02.03.21 - 11:32
(18) либо 1cpp.dll + vfpoledb, либо запрос на 1sqlite.dll
   teploset
 
21 - 02.03.21 - 11:34
(20) ок, спасибо, погуглю на эту тему на досуге
   Ёпрст
 
22 - 02.03.21 - 11:38
(21) на вот, пример , есть и то и то в одной поделке
https://cloud.mail.ru/public/AeJK/71o1vuzd1
   teploset
 
23 - 02.03.21 - 11:42
(22) о, спасибо!
   Ёпрст
 
24 - 02.03.21 - 11:44
Ну и..ознакомиться с этим:
http://www.script-coding.com/v77tables.html


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.