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

Запрос в 1С

Запрос в 1С
Я
   Vlaloplo
 
01.04.21 - 17:37
Доброго времени суток, задача стоит в следующем, составить запрос результатом которого будет таблица с одной колонкой. Таблица должна быть заполнена числами, составляющие геометрическую последовательность. Параметрами требуется задать начальное и конечное число (Пример: Если задать от 2 до 5, то результат будет 4,9,16, 25) Это лаба в вузе, в 1С сам мало понимаю, буду очень благодарен за помощь молодому подовану)
   Vlaloplo
 
1 - 01.04.21 - 17:38
Да, результат нудно получить именно запросом
   Asmody
 
2 - 01.04.21 - 17:40
Отправиться на инфостарт молодой подован должен.
Про генерирующие запросы статей найдёт много он там.
   Vlaloplo
 
3 - 01.04.21 - 17:42
(2), Ох, мастер, без вас совсем не одолеть.. Мне бы оружие в виде ссылки или пояснения, как искать..
   Курцвейл
 
4 - 01.04.21 - 17:47
А причем тут 1С? Для написания запроса необходимо и достаточно понимать язык запросов на уровне ANSI SQL-92
   Vlaloplo
 
5 - 01.04.21 - 17:48
(4) Слабоват видимо в запросах, раз данную задачу не под силу мне решить
   H A D G E H O G s
 
6 - 01.04.21 - 17:52
Какой только бабуйней не занимаются в ВУЗах
   Vlaloplo
 
7 - 01.04.21 - 17:55
https://pro1c8.ru/ryad-chisel-zaprosom/
нашел данную статью для примера
Только числа соответсвено в геом прогрессии
   Vlaloplo
 
8 - 01.04.21 - 17:55
(6), соглашусь..
   fisher
 
9 - 01.04.21 - 17:57
И это лаба по 1С? Прогресс, однако...
   Vlaloplo
 
10 - 01.04.21 - 18:00
(9) Ну у нас много подобных задач, в направлении программирования
Но вот именно с запросом слабо понимаю
   Vlaloplo
 
11 - 01.04.21 - 18:04
Нет ли у вас идей, как это сделать? Уж очень надо (
   Classic
 
12 - 01.04.21 - 18:08
В (0) не геометрическая прогрессия
   Vlaloplo
 
13 - 01.04.21 - 18:09
(12) Почему? 2 в степени 2 = 4
3 в степень  = 9
4 в степень = 16
5 в степень = 25
 ОТ 2 До 5
2 и 5 это параметры
   Classic
 
14 - 01.04.21 - 18:10
(13)
Геометричская прогрессия это немного другое. 2,4,8,16,32 и т.д.
   Classic
 
15 - 01.04.21 - 18:11
(0)
В общем случае данную задачу решить нельзя.
Только  в случае заранее известного ограничения на входящие числа
   polosov
 
16 - 01.04.21 - 18:11
(11) Гугли "порождающий запрос 1С" и кликай на первую ссылку.
   Vlaloplo
 
17 - 01.04.21 - 18:14
(15), Может не много не понял тебя, числа то известны, все от X до Y
   Classic
 
18 - 01.04.21 - 18:16
(17)
Да, ты меня не понял.

Задачу "блаблабла  при X и Y меньше миллиона" решить можно.
Задачу "блаблабла при произвольных X и Y" - нельзя.
   Vlaloplo
 
19 - 01.04.21 - 18:17
(18) Хоть в бубен уже бей, так Y и есть Конечное число, за это пределы мы не уходим
Т.е получаем последовательность от Y и заканчиваем запрос
   Vlaloplo
 
20 - 01.04.21 - 18:18
(18) Или чего я могу тут не видеть в упор?
   Classic
 
21 - 01.04.21 - 18:18
(17)
Размер результирующей таблицы запроса всегда ограничен сверху произведением размеров учавствующих в запросе таблиц.
Потому исключительно силами 1С запроса создать бесконечную таблицу нельзя.

Программно составить текст запроса, имея уже введенные X и Y  - можно
   Vlaloplo
 
22 - 01.04.21 - 18:20
(21) Можешь подсказать как?
   Classic
 
23 - 01.04.21 - 18:20
(19)
Запрос не "заканчивается".
Выполнение запроса с точки зрения языка запросов - это не последовательная операция с условным завершением.
Это получение таблиц (определенного размера) и их компоновка и обрезка
   Михаил Козлов
 
24 - 01.04.21 - 18:20
(0) Программно текст запроса подойдет?
   Vlaloplo
 
25 - 01.04.21 - 18:26
(24) Мне бы уже хоть  что то.. Преподу как нибудь объясню)
   Classic
 
26 - 01.04.21 - 18:28
(25)
Врядли тебе кто-то будет кидать готовый запрос. Смысл?

Показывай, что ты уже смог наваять.
   polosov
 
27 - 01.04.21 - 18:28
(25) Ты отсталый чтоле? В (16) сделай.
   Vlaloplo
 
28 - 01.04.21 - 18:29
(27) Не думаю, что можно сразу оскорблять.. Все когда то учились, я это погуглил, понятней не стало
   Vlaloplo
 
29 - 01.04.21 - 18:30
(26), все надеюсь на добрых людей, думаешь зря?
   acht
 
30 - 01.04.21 - 18:31
(29) А на преподавателя почему не надеешся?
 
 Рекламное место пустует
   polosov
 
32 - 01.04.21 - 18:34
(28) Ну тут наши полномочия всё.
   Vlaloplo
 
33 - 01.04.21 - 18:35
(29) преподаватель будет оценивать, а не помогать
   Vlaloplo
 
34 - 01.04.21 - 18:36
ладно, спасибо и на этом.. Странно, почему 1С такие не добрые?) Но это уже другая ветка будет )
   sitex
 
35 - 01.04.21 - 18:36
(0) Если лаба была на каком нить другом языке, я бы  еще понял, ну мля не на 1С . ппц.
   Vlaloplo
 
36 - 01.04.21 - 18:37
(35) К тому что 1С легкий язык или что?
   polosov
 
37 - 01.04.21 - 18:39
(33) Я сам был студентотой, только 20 лет назад. Если бы у меня был тот массив инфы, что у вас сейчас, то я вообще бы все автоматом сдавал и не ходил бы на профильные предметы.
   sitex
 
38 - 01.04.21 - 18:40
(36) Кому как . Что мешает переосмыслить это на бумаге и перевести все в запрос ?
   Волшебник
 
39 - 01.04.21 - 18:44
(33) Преподаватель должен преподавать. Оценивать учителя должны ученики.
   Жан Пердежон
 
40 - 01.04.21 - 19:05
(29) тебе уже сказали, что (0) противоречие - вместо геом.прогрессии поселдовательность квадратов, чего еще ты ждешь?
   sitex
 
41 - 01.04.21 - 19:11
(40) Решения в чистом виде что был копи паст .
   experimentator76
 
42 - 01.04.21 - 22:34
(41) а после выпуска потребует от двухста тыщ чтобы открывать конфигуратор
   Said_We
 
43 - 02.04.21 - 11:41
(37) Игрался бы как и все студенты в игрушки и зависал бы в соцсетях - учился бы, ага рассмешил.
   Михаил Козлов
 
44 - 02.04.21 - 11:44
(28) Попробую стимулировать. По (16) можно так:
ВЫБРАТЬ 0 КАК Х
ПОМЕСТИТЬ Регистр1
ОБЪЕДИНИТЬ
ВЫБРАТЬ 1
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ Младшие.Х + 2 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр2
ИЗ Регистр1 КАК Младшие, Регистр1 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ Младшие.Х + 4 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр4
ИЗ Регистр2 КАК Младшие, Регистр2 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ Младшие.Х + 16 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр8
ИЗ Регистр4 КАК Младшие, Регистр4 КАК Старшие
;
///////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ Младшие.Х + 256 * Старшие.Х КАК Х
ПОМЕСТИТЬ целые
ИЗ Регистр8 КАК Младшие, Регистр8 КАК Старшие
;
/////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    целые.Х*целые.Х КАК X2
ИЗ целые
ГДЕ целые.Х МЕЖДУ &мин И &макс
УПОРЯДОЧИТЬ ПО Х2
   Михаил Козлов
 
45 - 02.04.21 - 11:44
(44)+ Но не советую показывать препу: ухватится и начнет пытать.
   Said_We
 
46 - 02.04.21 - 11:52
(0) Порождающий запрос в (44) и тут тоже в 58

,чтобы в последовательности числа не повторялись

Вместо порождающего запроса в первой части на Т-SQL можно использовать рекурсивный.
   Said_We
 
47 - 02.04.21 - 11:55
Пример рекурсивного запроса тут:
Рекурсивный запрос на СКД по массиву параметров

Только последовательность будет не от 0 до 9, а от 0 до 10. Сознательно написал в консоле запрос проверил и указал немного не тот результат. Интересно было - проверит кто или нет. Таковых не нашлось. :-)
   Escander
 
48 - 02.04.21 - 12:48
(0)вам следует разобраться с постановкой задачи... да и математику подтянуть 4,9,16,25 это не геометрическая прогрессия а квадраты чисел 2,3,4,5. Если вы не понимаете задачу - вы не сделаете правильное решение.
   Kassern
 
49 - 02.04.21 - 13:38
(44) в данном случае получится таблица из 1024 чисел по порядку. А если зададут числа, выходящие за рамки данной таблицы?) Вот поэтому и в (21) написали, что нужно изначально узнать диапазон выбора для X Y. В противном случае, скорее всего придется программно запрос собирать и соединять таблицы N раз, чтобы результирующая таблица дала возможность выполнить условие.
   Mikeware
 
50 - 02.04.21 - 13:43
(35) ну а какая разница? тот же SQL, только на русском
   Mikeware
 
51 - 02.04.21 - 13:46
(37) зря "не ходил бы". грамотный препод обычно не столько дает "ценную информацию", сколько дает "верное направление", взаимосвязь.
но да, по возможностям учиться - зависть берет. а вот по применению студиоузами этих возможностей - охватывает ужас...
   Kassern
 
52 - 02.04.21 - 13:50
(2) интересно, загнется ли 1ска, если препод укажет два 14значных числа для последовательности с генерирующим запросом?)
   Михаил Козлов
 
53 - 02.04.21 - 13:51
(52) Попробуйте.
   Kassern
 
54 - 02.04.21 - 13:55
(53) судя по тому, что максимальная целая часть числа всего 32 символа, то врятли 1ска справится) Поэтому сама задача ТС без ограничения диапазона вводных данных звучит странно.
   rphosts
 
55 - 02.04.21 - 14:18
(52) перемножая два 14 разрядных числа ты получишь число максимум из 28 разрядов... 1с поддерживает 32? - тогда справится
   Kassern
 
56 - 02.04.21 - 14:24
(55) блин точно, повелся на фразу: "Таблица должна быть заполнена числами, составляющие геометрическую последовательность", а потом идет тупо пример с последовательностью квадратов...
   Said_We
 
57 - 02.04.21 - 15:44
Это лаба - какие разряды и ОДЗ?
Генерация десятка тысяч квадратов чисел выше крыши. Преподавателю обрисовать устно или письменно, что от 0 и до скольки сгенеришь и усё.
   Kassern
 
58 - 02.04.21 - 15:59
(57) Здесь ключевая фраза "Преподавателю обрисовать устно или письменно", это я и хотел донести.
   Sserj
 
59 - 02.04.21 - 16:47
Что то столько слов и ни одной подсказки :)
Вот запрос генерирует последовательность чисел от МинЗначение до МаксЗначение в пределах 1-1000000
Если этого мало просто добавить объединений банальным копипастом, каждое объединение увеличивает степень 10.
Проверялось на MSSQL он выполняет ТОЛЬКО нужное количество обхединений. Тобишь если МинЗначение = 1 и МаксЗначение = 5 соединений вообще не будет, выберутся первые 5 строк и все.

    МинЗначение = 10;
    МаксЗначение = 15;
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ " + (МаксЗначение - МинЗначение + 1) + "
        |  1 КАК ПростоПолеБезНегоНеРаботает
        |  , АВТОНОМЕРЗАПИСИ () КАК Ключ
        |ПОМЕСТИТЬ ПоследовательностьЧисел
        |ИЗ
        |    (ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1
        |    ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1) КАК Т1
        |   СОЕДИНЕНИЕ 
        |    (ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1
        |    ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1) КАК Т2
        |   ПО Истина
        |   СОЕДИНЕНИЕ 
        |    (ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1
        |    ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1) КАК Т3
        |   ПО Истина      
        |   СОЕДИНЕНИЕ 
        |    (ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1
        |    ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1) КАК Т4
        |   ПО Истина
        |   СОЕДИНЕНИЕ 
        |    (ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1
        |    ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1) КАК Т5
        |   ПО Истина
        |   СОЕДИНЕНИЕ 
        |    (ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1
        |    ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1) КАК Т6
        |   ПО Истина
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    (Т.Ключ + "+(МинЗначение - 1)+") КАК Числа
        |ИЗ
        |    ПоследовательностьЧисел КАК Т";


   polosov
 
60 - 02.04.21 - 16:49
(59) Хочу от 5 до 500
Текст запроса насколько вырастет?
 
 Рекламное место пустует
   Sserj
 
61 - 02.04.21 - 16:49
(60) Ни насколько. Измени переменные в начале:
    МинЗначение = 5;
    МаксЗначение = 500;
И получишь таблицу с последовательностью от 5 до 500.
   Sserj
 
62 - 02.04.21 - 16:50
+(60) Диапазон 1-1000000 это какими могут быть минмальные и максимальные границы диапазона.
   Kassern
 
63 - 02.04.21 - 16:56
(59) "Что то столько слов и ни одной подсказки :)" серьезно? В самом же начале написали про генерирующий запрос и отправили в пеший поход в поисковик. На первой же странице поисковика есть пример для диапазона от 0-1024. Увеличить его по аналогии проблем нет никаких. Еще и предупредили, что заранее нужно диапазон ввода данных определить. Что еще подсказать я хз...
   polosov
 
64 - 02.04.21 - 17:00
(59) Ему наверняка уже пару влепили. Как обычный студент он пытался в последний день сделать наверное.
   Kassern
 
65 - 02.04.21 - 17:03
(64) в последний день, это еще по божески, скорее всего на паре был, где нужно было это сдавать, за час два не нагуглил и усе(
   Said_We
 
66 - 02.04.21 - 18:25
(59) "просто добавить объединений банальным копипастом" - ужасть, банальный копипаст....


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