|
Таблица умножения на СКД | ☑ | ||
---|---|---|---|---|
0
Rousse
04.05.18
✎
13:31
|
Добрый день
Есть задача прстроить отчет с использованием СКД Отчет должен представлять собой таблицу, верхняя строка и левый столбец которой будут содержать числа от А до В с шагом 1, а в клетках таблицы должны содержаться произведения чисел, находящихся в верхней клетке столбца и крайней левой клетке строки, на пересечении которых находится клетка. Т.е. отчет должен представлять собой таблицу умножения. Не знаю даже с чего начать. Какой-то ступор. Прошу помощи. |
|||
1
Волшебник
04.05.18
✎
13:35
|
Задание на собеседовании?
|
|||
2
Rousse
04.05.18
✎
13:37
|
Да...
|
|||
3
Волшебник
04.05.18
✎
13:38
|
(2) А как же ты потом работать будешь?
|
|||
4
Hans
04.05.18
✎
13:40
|
Эту задачу пол мисты не выполнит, которые уже десятилетиями работают.
|
|||
5
Hans
04.05.18
✎
13:42
|
Даже не пол мисты. 90% не выполнит.
|
|||
6
Лодырь
04.05.18
✎
13:42
|
(4) Не верится. Задачка достаточно распространенная.
|
|||
7
_Дайвер_
04.05.18
✎
13:44
|
(5) Решить можно, просто подумать немного
|
|||
8
stepan73
04.05.18
✎
13:46
|
Ни разу не сталкивался с такой задачей. Да и необходимость как-то не очень представляю. Но, имхо, через полное соединения таблицы с самой собой. Особой проблемы нет, но лениво дальше думать :)
|
|||
9
Лодырь
04.05.18
✎
13:47
|
(8) Это ты вторую часть решения обсуждаешь, а есть еще и первая. Но тоже типовая.
|
|||
10
stepan73
04.05.18
✎
13:50
|
(9) получить таблицу? да ну, там то вообще сложностей нет... разве что извращаться еще с системами счисления
|
|||
11
youalex
04.05.18
✎
13:52
|
(0)
1) врем. таблица чисел "От А до B" 2) Cross JOIN сама с собой - на выходе три поля 3) поле произведение - в ресурсы. 4) В структуре СКД - таблица |
|||
12
stepan73
04.05.18
✎
13:56
|
(11) учитывая что ТС - новорег, подозреваю что такого ему не хватит :)
|
|||
13
NWsFF
04.05.18
✎
13:57
|
Формируешь тч умножения передаешь в СКД как внешние данные и вуаля.
|
|||
14
los_hooliganos
04.05.18
✎
13:58
|
ВЫБРАТЬ
1 КАК Колонье ПОМЕСТИТЬ Колонка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 1 КАК Поле1, 2 КАК Поле2, 3 КАК Поле3, 4 КАК Поле4, 5 КАК Поле5, 6 КАК Поле6, 7 КАК Поле7, 8 КАК Поле8, 9 КАК Поле9 ПОМЕСТИТЬ Ряд ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Колонка.Колонье, Ряд.Поле1*Колонка.Колонье, Ряд.Поле2*Колонка.Колонье, Ряд.Поле3*Колонка.Колонье, Ряд.Поле4*Колонка.Колонье, Ряд.Поле5*Колонка.Колонье, Ряд.Поле6*Колонка.Колонье, Ряд.Поле7*Колонка.Колонье, Ряд.Поле8*Колонка.Колонье, Ряд.Поле9*Колонка.Колонье ИЗ Колонка КАК Колонка, Ряд КАК Ряд |
|||
15
Лодырь
04.05.18
✎
14:00
|
(14) Мсье знает толк в извращениях. А теперь от -45345353 до 5464656456
|
|||
16
xxTANATORxx
04.05.18
✎
14:02
|
(15)тут без динамического запроса не обойтись )
|
|||
17
Xapac
04.05.18
✎
14:03
|
ВЫБРАТЬ 1 КАК Цифер
ПОМЕСТИТЬ Вт_Циферы ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Вт_Циферы.Цифер КАК Цифер1, Вт_Циферы1.Цифер КАК Цифер2, Вт_Циферы.Цифер * Вт_Циферы1.Цифер КАК Рез ИЗ Вт_Циферы КАК Вт_Циферы, Вт_Циферы КАК Вт_Циферы1 |
|||
18
los_hooliganos
04.05.18
✎
14:04
|
(15) Нет там надо писать запрос, который сам себя будет множить
Но в любом случае надо сначала загнать в вирт таблицу цифры от 1 до 9 |
|||
19
xxTANATORxx
04.05.18
✎
14:05
|
(4)таблица умножения это ерунда, ты попробуй таблицу деления изобрази
|
|||
20
Xapac
04.05.18
✎
14:05
|
||||
21
Timon1405
04.05.18
✎
14:07
|
вообще-то, все кто решают для цифр с 1 по 9 решают не ту задачу. в условии сказано
>>содержать числа от А до В с шагом 1 |
|||
22
xxTANATORxx
04.05.18
✎
14:07
|
а вот еще хорошая задачка: с помощью СКД вывести календарь за произвольный период, в виде "привычной" таблицы (по месяцам)
|
|||
23
rabbidX
04.05.18
✎
14:15
|
Раз уж зашла речь об извращениях)
ВЫБРАТЬ ПЕРВЫЕ 1000 Номенклатура.Ссылка КАК Ссылка ПОМЕСТИТЬ Спр ИЗ Справочник.Номенклатура КАК Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Количество + &А - 1 КАК Число ПОМЕСТИТЬ Числа ИЗ (ВЫБРАТЬ КОЛИЧЕСТВО(Спр1.Ссылка) КАК Количество ИЗ Спр КАК Спр ЛЕВОЕ СОЕДИНЕНИЕ Спр КАК Спр1 ПО Спр.Ссылка >= Спр1.Ссылка) КАК ВложенныйЗапрос ГДЕ ВложенныйЗапрос.Количество <= &В ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Числа.Число КАК Строка, Числа1.Число КАК Столбец ИЗ Числа КАК Числа, Числа КАК Числа1 А произведение через вычислимое поле в СКД |
|||
24
youalex
04.05.18
✎
14:18
|
(14) зачем усложнять, когда можно просто:
ВЫБРАТЬ 1 КАК x, 1 КАК y, 1*1 КАК m ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 КАК x, 2 КАК y, 1*2 КАК m ... |
|||
25
Dotoshin
04.05.18
✎
14:21
|
Ну раз пошла такая пьянка, вот...
ВЫБРАТЬ 1 КАК Столбец ПОМЕСТИТЬ Столбцы ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 1 КАК Ряд ПОМЕСТИТЬ Ряды ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Ряды.Ряд, Столбцы.Столбец, Ряды.Ряд * Столбцы.Столбец КАК Произведение ИЗ Ряды КАК Ряды ВНУТРЕННЕЕ СОЕДИНЕНИЕ Столбцы КАК Столбцы ПО (ИСТИНА) |
|||
26
NWsFF
04.05.18
✎
14:22
|
Я бы никого из вас на работу не взял, за исключением пары человек, задачу не поняли но уже успешно решают )
|
|||
27
Лодырь
04.05.18
✎
14:25
|
(26) Это называется "гибкие методики разработки" ))
|
|||
28
bolobol
04.05.18
✎
14:28
|
(26) Обязательно понимать бред заказчика, перед тем как предоставить успешное решение?
|
|||
29
bolobol
04.05.18
✎
14:29
|
А, ну да... Франч же, наверняка, а там почасовка, больше бреда - больше денег
|
|||
30
Xapac
04.05.18
✎
14:30
|
(26)Клиент не всегда знает что он хочет. Надо иногда его убедить в том что ему надо
|
|||
31
rabbidX
04.05.18
✎
14:31
|
(25) Это (17) с лишними сущностями
В идеале нужен в вариант (17) добавить 0, соединить таблицу Цифер с собой приемлемое количество раз и получить поля вида 1000*Цифер3.Цифер + 100*Цифер2.Цифер + 10*Цифер1.Цифер + Цифер.Цифер, и уже то, что здесь получилось соединять само с собой и перемножать. Но делать этого я, конечно, не буду. |
|||
32
DrShad
04.05.18
✎
14:49
|
(31) у тебя в (23) ошибка в вычислении ВТ Числа
|
|||
33
NWsFF
04.05.18
✎
14:52
|
(28) Ну согласись с переменными А B это уже другого уровня задача, более интересная
|
|||
34
Повелитель
04.05.18
✎
14:58
|
(0)
ТЗ = Новый ТаблицаЗначений. Для колонка= 1 По А Цикл //создание колонок Для строка= 1 По В Цикл //создание строк КонецЦикла; КонецЦикла; Потом это все поместить во временную таблицу запроса и вывести. |
|||
35
Лодырь
04.05.18
✎
15:04
|
(34) Ты неправильно условия прочитал
|
|||
36
rabbidX
04.05.18
✎
15:09
|
(32) Ага, спасибо. Надо так
ВЫБРАТЬ ВложенныйЗапрос.Количество + &А - 1 КАК Число ПОМЕСТИТЬ Числа ИЗ (ВЫБРАТЬ КОЛИЧЕСТВО(Спр1.Ссылка) КАК Количество, Спр.Ссылка КАК Ссылка ИЗ Спр КАК Спр ЛЕВОЕ СОЕДИНЕНИЕ Спр КАК Спр1 ПО Спр.Ссылка >= Спр1.Ссылка СГРУППИРОВАТЬ ПО Спр.Ссылка) КАК ВложенныйЗапрос ГДЕ ВложенныйЗапрос.Количество <= &В -&А + 1 |
|||
37
rabbidX
04.05.18
✎
15:15
|
(22) "привычная" таблица - это так?
https://pastenow.ru/3204T |
|||
38
bolobol
04.05.18
✎
15:15
|
(33) У заказчика всегда какие-то особые условия с другим уровнем. И как только выставляется счёт - задача либо умирает совсем, либо стремительно упрощается до "дважды два".
|
|||
39
Franchiser
гуру
04.05.18
✎
15:15
|
(36) причем тут СКД?
|
|||
40
bolobol
04.05.18
✎
15:16
|
(39) СамНакодилДанных...
|
|||
41
bolobol
04.05.18
✎
15:16
|
Тьфу, СамКодилДанные
|
|||
42
Franchiser
гуру
04.05.18
✎
15:17
|
Если такая постановка, то значит нужно сделать средствами СКД, т.е. несколькими наборами
|
|||
43
xxTANATORxx
04.05.18
✎
15:18
|
(37)да, типа того
|
|||
44
Новиков
04.05.18
✎
15:20
|
Числа от А до В - эти два числа, это параметры, задаваемые где-то на форме отчета?
|
|||
45
rabbidX
04.05.18
✎
15:21
|
(42) Какая на фиг разница? Я ж средства неСКД не использовал.
|
|||
46
rabbidX
04.05.18
✎
15:22
|
(43) действительно интересная задачка
|
|||
47
stepan73
04.05.18
✎
15:23
|
Я таки задумался, а есть вариант сделать универсальное решение? Т.е. без ограничения по разрядности чисел А и В. Я пока не смог придумать.
|
|||
48
stepan73
04.05.18
✎
15:25
|
(44) конечно, иначе бы было не интересно :)
|
|||
49
Новиков
04.05.18
✎
15:29
|
(48) Тогда сам запрос в (17) и вся задача сводится к тому, чтобы текст запроса сформировать динамически в диапазоне от А к Б. Или есть какой-то реальный хитрый лайфхак от Ильдаровича :)
|
|||
50
lEvGl
гуру
04.05.18
✎
15:29
|
на даты надо завязаться, типа там
ДобавитьКДате(Текущая, День, &B) получить строки с цифрами 1, 2, 3 - уже будут "независимые" от справочников и регистров данные, полдела |
|||
51
lEvGl
гуру
04.05.18
✎
15:30
|
(49) динамический текст это кодинг
|
|||
52
stepan73
04.05.18
✎
15:32
|
(49) надо не текст запроса динамический, а диапазон
(50) блин, точно... вот теперь дальше понятно :) |
|||
53
DrShad
04.05.18
✎
15:33
|
(36) да не за что
твой вариант самый приемлимый https://cdn1.savepice.ru/uploads/2018/5/4/f60687e81beb5d367394ffa2034c53be-full.png |
|||
54
DmitriyDI
04.05.18
✎
15:40
|
https://yadi.sk/d/AEnkviq93VL83v
Что скажете)? |
|||
55
DmitriyDI
04.05.18
✎
15:41
|
(54) результат работы
https://yadi.sk/i/01lv1a_d3VL8Ct |
|||
56
Новиков
04.05.18
✎
15:44
|
(54), (55) Хорошее простое решение. Зачет. Даже говнокодить с запросом не стал, видимо совсем ленно.
|
|||
57
DrShad
04.05.18
✎
15:45
|
(54) у меня красивее )))
|
|||
58
DmitriyDI
04.05.18
✎
15:47
|
(57) ссылку на отчет в студию))
(56) ага) 4 минуты потребовалось) |
|||
59
g00d
04.05.18
✎
15:50
|
(54) в общем то твое решение не чистое скд, таким образом можно было подготовить таблицу в модуле и потом уже ее просто вывести.
|
|||
60
stepan73
04.05.18
✎
15:51
|
(54) красиво :) но с "ПриКомпоновкеРезультата" не интересно
|
|||
61
DmitriyDI
04.05.18
✎
15:53
|
(59) с использованием грязных трюков))
|
|||
62
lEvGl
гуру
04.05.18
✎
15:59
|
(57) тоже кодом что ли?
|
|||
63
DrShad
04.05.18
✎
16:11
|
(62) не, как в (23)
|
|||
64
Asirius
04.05.18
✎
16:28
|
На чистом СКД при помощи фиксированного запроса для неограниченного А и Б задачу решить невозможно.
Фиксированный (не динамический) запрос содержит конечное количество исходных таблиц и конечное количество соединений. Значит количество записей в его результате будет ограничено следующим числом: МаксивальноеКоличествоЗаписейВИсходнойТаблице^2^КоличествоСоединений |
|||
65
g00d
04.05.18
✎
16:42
|
вот чистое скд, но до 1000, можно сделать и больше, но потребуется добавить новые порядки в таблицу чисел между А и Б
https://yadi.sk/d/i8uinjLj3VLFTN |
|||
66
DmitriyDI
04.05.18
✎
17:39
|
(65) теперь автор может смело идти на собеседование с несколькими вариантами)
|
|||
67
Rousse
06.05.18
✎
05:34
|
Всем участникам большое спасибо за помощь!
|
|||
68
Fram
06.05.18
✎
05:42
|
(67) Ноу проблем. Ждём теперь тему "дали первую задачу ... Какой то ступор. Прошу помощи."
|
|||
69
wt
06.05.18
✎
08:18
|
+(66) А вот уж совсем оригинальный вариант.
https://yandex.ru/images/search?text=умножение%20на%209%20на%20пальцах%20рук&img_url=http%3A%2F%2Fimages.myshared.ru%2F19%2F1193339%2Fslide_42.jpg&pos=0&rpt=simage&lr=213 |
|||
70
Мимохожий Однако
06.05.18
✎
08:23
|
процесс пошёл ))
https://iralebedeva.ru/inform7.html |
|||
71
Otark
07.05.18
✎
06:09
|
(67)Я подозреваю, про тебя уже забыли :)
|
|||
72
g00d
07.05.18
✎
10:52
|
(71) о ком ты?
|
|||
73
DrShad
07.05.18
✎
11:06
|
(72) про ТС
|
|||
74
g00d
07.05.18
✎
11:27
|
(73) это было продолжение шутки про забытого тс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |