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

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

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

Показывай, что ты уже смог наваять.
27 polosov
 
01.04.21
18:28
(25) Ты отсталый чтоле? В (16) сделай.
28 Vlaloplo
 
01.04.21
18:29
(27) Не думаю, что можно сразу оскорблять.. Все когда то учились, я это погуглил, понятней не стало
29 Vlaloplo
 
01.04.21
18:30
(26), все надеюсь на добрых людей, думаешь зря?
30 acht
 
01.04.21
18:31
(29) А на преподавателя почему не надеешся?
32 polosov
 
01.04.21
18:34
(28) Ну тут наши полномочия всё.
33 Vlaloplo
 
01.04.21
18:35
(29) преподаватель будет оценивать, а не помогать
34 Vlaloplo
 
01.04.21
18:36
ладно, спасибо и на этом.. Странно, почему 1С такие не добрые?) Но это уже другая ветка будет )
35 sitex
 
naïve
01.04.21
18:36
(0) Если лаба была на каком нить другом языке, я бы  еще понял, ну мля не на 1С . ппц.
36 Vlaloplo
 
01.04.21
18:37
(35) К тому что 1С легкий язык или что?
37 polosov
 
01.04.21
18:39
(33) Я сам был студентотой, только 20 лет назад. Если бы у меня был тот массив инфы, что у вас сейчас, то я вообще бы все автоматом сдавал и не ходил бы на профильные предметы.
38 sitex
 
naïve
01.04.21
18:40
(36) Кому как . Что мешает переосмыслить это на бумаге и перевести все в запрос ?
39 Волшебник
 
01.04.21
18:44
(33) Преподаватель должен преподавать. Оценивать учителя должны ученики.
40 Жан Пердежон
 
01.04.21
19:05
(29) тебе уже сказали, что (0) противоречие - вместо геом.прогрессии поселдовательность квадратов, чего еще ты ждешь?
41 sitex
 
naïve
01.04.21
19:11
(40) Решения в чистом виде что был копи паст .
42 experimentator76
 
01.04.21
22:34
(41) а после выпуска потребует от двухста тыщ чтобы открывать конфигуратор
43 Said_We
 
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)+ Но не советую показывать препу: ухватится и начнет пытать.
46 Said_We
 
02.04.21
11:52
(0) Порождающий запрос в (44) и тут тоже в 58
,чтобы в последовательности числа не повторялись

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

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

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