Вход | Регистрация


1С:Предприятие ::

Метки: 

Асы написания запросов, помогите, пожалуйста, написать хитрый запрос

↓ [Волшебник, 10.11.17 - 13:42]
Я
   KindLion
 
10.11.17 - 13:29
Есть табличная часть с реквизитами:
Номенклатура, Количество, Сумма.

Надо написать заказ таким образом, чтобы в результате запроса было:
Номенклатура, 1, Сумма/Количество

Строк в результате запроса должно быть столько, сколько Количество в табличной части.
 
 
   RomaH
 
1 - 10.11.17 - 13:32
это реальная задача или на сообразительность?
   Lexey_
 
2 - 10.11.17 - 13:32
(0) пиши запрос к ТЧ
   Остап Сулейманович
 
3 - 10.11.17 - 13:33
(0) В чем должна заключаться "хитрость".
Вот такой :

Выбрать 
Номенклатура КАК Номенклатура,
1 КАК НереальнаяХрень,
Сумма/Количество КАК НереальнаяХрень2
ИЗ ...

будет достаточно "хитрым"? Или нужно еще "хитрее"?
   RomaH
 
4 - 10.11.17 - 13:35
(3) насколько я понял
Есть строка в ТЧ
Сахар-песок 100500 тон 1000000 руб

надо получить 100500 строк на выходе запроса
   KindLion
 
5 - 10.11.17 - 13:37
(1) Это реальная задача.
Можно, конечно, обработкой, через цикл, но хочется красиво - запросом
(4) Да, именно так.
   SleepyHead
 
6 - 10.11.17 - 13:37
(0) Нахрена?
   Borteg
 
7 - 10.11.17 - 13:37
(0) Проще обычным циклом.
   KindLion
 
8 - 10.11.17 - 13:38
(3) Товарищ, все было бы классно, но в результате будет одна строка, а мне надо - количество таких строк, равное реквизиту Количество в ТЧ.
   Basilio
 
9 - 10.11.17 - 13:38
(5) прям интересно стало, зачем такое может понадобиться?
   KindLion
 
10 - 10.11.17 - 13:39
(7) Это понятно.
Но почему-то подумалось что и запросом не очень сложно, а я  просто туплю
 
 Рекламное место пустует
   patapum
 
11 - 10.11.17 - 13:39
(0) создать временную таблицу Таб, с колонкой Ном
1,
2,
...
максимальное количество
Соединять с ТЧ по ТЧ.Количество <= Таб.Ном, и строка продублируется сколько надо раз.
   patapum
 
12 - 10.11.17 - 13:41
+(11)
по Таб.Ном <= ТЧ.Количество, а не так как я написал, иначе бяка выйдет )))
   Волшебник
 
Модератор
13 - 10.11.17 - 13:42
(5) Не отвлекайте асов от работы на всякую вашу фигню.
   KindLion
 
14 - 10.11.17 - 13:43
(12) Спасибо, это уже что-то похожее
   Лефмихалыч
 
15 - 10.11.17 - 13:44
(0) порождающий запрос
http://catalog.mista.ru/public/90367/

сначала получаешь запросом таблицу просто с номерами строк, потом с ней соединяешь свою ТЧ по условию Номер<=Количество
В результате получаешь нужное произведение таблиц
   Basilio
 
16 - 10.11.17 - 13:44
(11) не сработает. у него же еще Номенклатура есть. Придется ее во временную таблицу добавлять и для каждой Номенклатуры число строк фигачить. а это уже и есть искомая таблица.
   KindLion
 
17 - 10.11.17 - 13:44
(13) Если это сарказм, то я не уловил, в чью сторону.

А что, у нас здесь уже от простых смертных вопросы игнорят? Оставляют только вопросы от асов?
   Волшебник
 
Модератор
18 - 10.11.17 - 13:46
(17) да
   azernot
 
19 - 10.11.17 - 13:54
ВЫБРАТЬ
    0 КАК Ноль,
    1 КАК Единица,
    2 КАК Двойка,
    3 КАК Тройка,
    4 КАК Четверка,
    5 КАК Пятерка,
    6 КАК Шестерка,
    7 КАК Семерка,
    8 КАК Восьмерка,
    9 КАК Девятка
ПОМЕСТИТЬ ЦифрыВСтолбцах
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ЕСТЬNULL(Цифра0.Ноль, ЕСТЬNULL(Цифра1.Единица, ЕСТЬNULL(Цифра2.Двойка, ЕСТЬNULL(Цифра3.Тройка, ЕСТЬNULL(Цифра4.Четверка, ЕСТЬNULL(Цифра5.Пятерка, ЕСТЬNULL(Цифра6.Шестерка, ЕСТЬNULL(Цифра7.Семерка, ЕСТЬNULL(Цифра8.Восьмерка, ЕСТЬNULL(Цифра9.Девятка, 0)))))))))) КАК Цифра
ПОМЕСТИТЬ Цифры
ИЗ
    ЦифрыВСтолбцах КАК Цифра0
        ПОЛНОЕ СОЕДИНЕНИЕ ЦифрыВСтолбцах КАК Цифра1
        ПО (ЛОЖЬ)
        ПОЛНОЕ СОЕДИНЕНИЕ ЦифрыВСтолбцах КАК Цифра2
        ПО (ЛОЖЬ)
        ПОЛНОЕ СОЕДИНЕНИЕ ЦифрыВСтолбцах КАК Цифра3
        ПО (ЛОЖЬ)
        ПОЛНОЕ СОЕДИНЕНИЕ ЦифрыВСтолбцах КАК Цифра4
        ПО (ЛОЖЬ)
        ПОЛНОЕ СОЕДИНЕНИЕ ЦифрыВСтолбцах КАК Цифра5
        ПО (ЛОЖЬ)
        ПОЛНОЕ СОЕДИНЕНИЕ ЦифрыВСтолбцах КАК Цифра6
        ПО (ЛОЖЬ)
        ПОЛНОЕ СОЕДИНЕНИЕ ЦифрыВСтолбцах КАК Цифра7
        ПО (ЛОЖЬ)
        ПОЛНОЕ СОЕДИНЕНИЕ ЦифрыВСтолбцах КАК Цифра8
        ПО (ЛОЖЬ)
        ПОЛНОЕ СОЕДИНЕНИЕ ЦифрыВСтолбцах КАК Цифра9
        ПО (ЛОЖЬ)
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    1 + Единицы.Цифра + 10 * ЕСТЬNULL(Десятки.Цифра, 0) + 100 * ЕСТЬNULL(Сотни.Цифра, 0) + 1000 * ЕСТЬNULL(Тысячи.Цифра, 0) + 10000 * ЕСТЬNULL(ДесяткиТысяч.Цифра, 0) + 100000 * ЕСТЬNULL(СотниТысяч.Цифра, 0) + 1000000 * ЕСТЬNULL(Миллионы.Цифра, 0) КАК Число
ПОМЕСТИТЬ МиллионыЧисел
ИЗ
    Цифры КАК Единицы
        ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Десятки
        ПО (&ВерхнийПредел >= 10)
        ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Сотни
        ПО (&ВерхнийПредел >= 100)
        ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Тысячи
        ПО (&ВерхнийПредел >= 1000)
        ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК ДесяткиТысяч
        ПО (&ВерхнийПредел >= 10000)
        ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК СотниТысяч
        ПО (&ВерхнийПредел >= 100000)
        ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Миллионы
        ПО (&ВерхнийПредел >= 1000000)
ГДЕ
    1 + Единицы.Цифра + 10 * ЕСТЬNULL(Десятки.Цифра, 0) + 100 * ЕСТЬNULL(Сотни.Цифра, 0) + 1000 * ЕСТЬNULL(Тысячи.Цифра, 0) + 10000 * ЕСТЬNULL(ДесяткиТысяч.Цифра, 0) + 100000 * ЕСТЬNULL(СотниТысяч.Цифра, 0) + 1000000 * ЕСТЬNULL(Миллионы.Цифра, 0) <= &ВерхнийПредел
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    МиллионыЧисел.Число * Множители.Число КАК Число
ПОМЕСТИТЬ Числа
ИЗ
    МиллионыЧисел КАК МиллионыЧисел
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ МиллионыЧисел КАК Множители
        ПО (&ВерхнийПредел >= 10000000
                    И &ВерхнийПредел / 10000000 >= Множители.Число
                ИЛИ Множители.Число = 1)
ГДЕ
    МиллионыЧисел.Число * Множители.Число <= &ВерхнийПредел
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ПриходнаяНакладнаяСостав.Ссылка КАК Документ,
    ПриходнаяНакладнаяСостав.Номенклатура,
    ПриходнаяНакладнаяСостав.Количество,
    ПриходнаяНакладнаяСостав.Сумма / ПриходнаяНакладнаяСостав.Количество КАК Цена
ПОМЕСТИТЬ ТабличнаяЧасть
ИЗ
    Документ.ПриходнаяНакладная.Состав КАК ПриходнаяНакладнаяСостав
ГДЕ
    НЕ ПриходнаяНакладнаяСостав.Количество = 0
    И НЕ ПриходнаяНакладнаяСостав.Сумма = 0
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ТабличнаяЧасть.Документ КАК Документ,
    ТабличнаяЧасть.Номенклатура,
    ТабличнаяЧасть.Цена,
    1 КАК Количество
ИЗ
    ТабличнаяЧасть КАК ТабличнаяЧасть
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Числа КАК Числа
        ПО ТабличнаяЧасть.Количество >= Числа.Число
ИТОГИ
    СУММА(Количество)
ПО
    Документ


Единственное ограничение запроса - ограничение по максимальному значению поля "Количество"
   Ненавижу 1С
 
20 - 10.11.17 - 13:56
Сумма(Сумма)/Сумма(Количество)
   KindLion
 
21 - 10.11.17 - 14:40
(19) Супер!
Спасибо большое!



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