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


1С:Предприятие :: 1С:Предприятие 8 общая

Таблица умножения на СКД

Таблица умножения на СКД
Я
   Rousse
 
04.05.18 - 13:31
Добрый день
Есть задача прстроить отчет с использованием СКД
Отчет должен представлять собой таблицу, верхняя строка и левый столбец которой будут содержать числа от А до В с шагом 1, а в клетках таблицы должны содержаться произведения чисел, находящихся в верхней клетке столбца и крайней левой клетке строки, на пересечении которых находится клетка. Т.е. отчет должен представлять собой таблицу умножения.

Не знаю даже с чего начать. Какой-то ступор. Прошу помощи.
 
 
   Волшебник
 
1 - 04.05.18 - 13:35
Задание на собеседовании?
   Rousse
 
2 - 04.05.18 - 13:37
Да...
   Волшебник
 
3 - 04.05.18 - 13:38
(2) А как же ты потом работать будешь?
   Hans
 
4 - 04.05.18 - 13:40
Эту задачу пол мисты не выполнит, которые уже десятилетиями работают.
   Hans
 
5 - 04.05.18 - 13:42
Даже не пол мисты. 90% не выполнит.
   Лодырь
 
6 - 04.05.18 - 13:42
(4) Не верится. Задачка достаточно распространенная.
   _Дайвер_
 
7 - 04.05.18 - 13:44
(5) Решить можно, просто подумать немного
   stepan73
 
8 - 04.05.18 - 13:46
Ни разу не сталкивался с такой задачей. Да и необходимость как-то не очень представляю. Но, имхо, через полное соединения таблицы с самой собой. Особой проблемы нет, но лениво дальше думать :)
   Лодырь
 
9 - 04.05.18 - 13:47
(8) Это ты вторую часть решения обсуждаешь, а есть еще и первая. Но тоже типовая.
   stepan73
 
10 - 04.05.18 - 13:50
(9) получить таблицу? да ну, там то вообще сложностей нет... разве что извращаться еще с системами счисления
 
 Рекламное место пустует
   youalex
 
11 - 04.05.18 - 13:52
(0)
1) врем. таблица чисел "От А до B"
2) Cross JOIN сама с собой - на выходе три поля
3) поле произведение - в ресурсы. 
4) В структуре СКД - таблица
   stepan73
 
12 - 04.05.18 - 13:56
(11) учитывая что ТС - новорег, подозреваю что такого ему не хватит :)
   NWsFF
 
13 - 04.05.18 - 13:57
Формируешь тч умножения передаешь в СКД как внешние данные и вуаля.
   los_hooliganos
 
14 - 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
   xxTANATORxx
 
16 - 04.05.18 - 14:02
(15)тут без динамического запроса не обойтись  )
   Xapac
 
17 - 04.05.18 - 14:03
ВЫБРАТЬ    1 КАК Цифер
ПОМЕСТИТЬ Вт_Циферы

ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    2
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    4
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    5
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    6
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    7
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    8
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    9
;

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

ВЫБРАТЬ
    Вт_Циферы.Цифер КАК Цифер1,
    Вт_Циферы1.Цифер КАК Цифер2,
    Вт_Циферы.Цифер * Вт_Циферы1.Цифер КАК Рез
ИЗ
    Вт_Циферы КАК Вт_Циферы,
    Вт_Циферы КАК Вт_Циферы1
   los_hooliganos
 
18 - 04.05.18 - 14:04
(15) Нет там надо писать запрос, который сам себя будет множить
Но в любом случае надо сначала загнать в вирт таблицу цифры от 1 до 9
   xxTANATORxx
 
19 - 04.05.18 - 14:05
(4)таблица умножения это ерунда, ты попробуй таблицу деления изобрази
   Xapac
 
20 - 04.05.18 - 14:05
   Timon1405
 
21 - 04.05.18 - 14:07
вообще-то, все кто решают для цифр с 1 по 9 решают не ту задачу. в условии сказано
>>содержать числа от А до В с шагом 1
   xxTANATORxx
 
22 - 04.05.18 - 14:07
а вот еще хорошая задачка: с помощью СКД вывести календарь за произвольный период, в виде "привычной" таблицы (по месяцам)
   rabbidX
 
23 - 04.05.18 - 14:15
Раз уж зашла речь об извращениях)
ВЫБРАТЬ ПЕРВЫЕ 1000
    Номенклатура.Ссылка КАК Ссылка
ПОМЕСТИТЬ Спр
ИЗ
    Справочник.Номенклатура КАК Номенклатура
;

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

ВЫБРАТЬ
    ВложенныйЗапрос.Количество + &А - 1 КАК Число
ПОМЕСТИТЬ Числа
ИЗ
    (ВЫБРАТЬ
        КОЛИЧЕСТВО(Спр1.Ссылка) КАК Количество
    ИЗ
        Спр КАК Спр
            ЛЕВОЕ СОЕДИНЕНИЕ Спр КАК Спр1
            ПО Спр.Ссылка >= Спр1.Ссылка) КАК ВложенныйЗапрос
ГДЕ
    ВложенныйЗапрос.Количество <= &В
;

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

ВЫБРАТЬ
    Числа.Число КАК Строка,
    Числа1.Число КАК Столбец
ИЗ
    Числа КАК Числа,
    Числа КАК Числа1

А произведение через вычислимое поле в СКД
   youalex
 
24 - 04.05.18 - 14:18
(14) зачем усложнять, когда можно просто:
ВЫБРАТЬ 1 КАК x,  1 КАК y, 1*1 КАК m
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 1 КАК x,  2 КАК y, 1*2 КАК m
...
   Dotoshin
 
25 - 04.05.18 - 14:21
Ну раз пошла такая пьянка, вот...
ВЫБРАТЬ
    1 КАК Столбец
ПОМЕСТИТЬ Столбцы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    5
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    1 КАК Ряд
ПОМЕСТИТЬ Ряды

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    5
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Ряды.Ряд,
    Столбцы.Столбец,
    Ряды.Ряд * Столбцы.Столбец КАК Произведение
ИЗ
    Ряды КАК Ряды
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Столбцы КАК Столбцы
        ПО (ИСТИНА)
   NWsFF
 
26 - 04.05.18 - 14:22
Я бы никого из вас на работу не взял, за исключением пары человек, задачу не поняли но уже успешно решают )
   Лодырь
 
27 - 04.05.18 - 14:25
(26) Это называется "гибкие методики разработки" ))
   bolobol
 
28 - 04.05.18 - 14:28
(26) Обязательно понимать бред заказчика, перед тем как предоставить успешное решение?
   bolobol
 
29 - 04.05.18 - 14:29
А, ну да... Франч же, наверняка, а там почасовка, больше бреда - больше денег
   Xapac
 
30 - 04.05.18 - 14:30
(26)Клиент не всегда знает что он хочет. Надо иногда его убедить в том что ему надо
   rabbidX
 
31 - 04.05.18 - 14:31
(25) Это (17) с лишними сущностями
В идеале нужен в вариант (17) добавить 0, соединить таблицу Цифер с собой приемлемое количество раз и получить поля вида 1000*Цифер3.Цифер + 100*Цифер2.Цифер  + 10*Цифер1.Цифер + Цифер.Цифер, и уже то, что здесь получилось соединять само с собой и перемножать.
Но делать этого я, конечно, не буду.
   DrShad
 
32 - 04.05.18 - 14:49
(31) у тебя в (23) ошибка в вычислении ВТ Числа
   NWsFF
 
33 - 04.05.18 - 14:52
(28) Ну согласись с переменными А B это уже другого уровня задача, более интересная
 
 
   Повелитель
 
34 - 04.05.18 - 14:58
(0)

ТЗ = Новый ТаблицаЗначений.
Для колонка= 1 По А Цикл
//создание колонок

Для строка= 1 По В Цикл
//создание строк

КонецЦикла;
КонецЦикла;

Потом это все поместить во временную таблицу запроса и вывести.
   Лодырь
 
35 - 04.05.18 - 15:04
(34) Ты неправильно условия прочитал
   rabbidX
 
36 - 04.05.18 - 15:09
(32) Ага, спасибо. Надо так
ВЫБРАТЬ
    ВложенныйЗапрос.Количество + &А - 1 КАК Число
ПОМЕСТИТЬ Числа
ИЗ
    (ВЫБРАТЬ
        КОЛИЧЕСТВО(Спр1.Ссылка) КАК Количество,
        Спр.Ссылка КАК Ссылка
    ИЗ
        Спр КАК Спр
            ЛЕВОЕ СОЕДИНЕНИЕ Спр КАК Спр1
            ПО Спр.Ссылка >= Спр1.Ссылка
    
    СГРУППИРОВАТЬ ПО
        Спр.Ссылка) КАК ВложенныйЗапрос
ГДЕ
    ВложенныйЗапрос.Количество <= &В -&А + 1
   rabbidX
 
37 - 04.05.18 - 15:15
(22) "привычная" таблица - это так?
https://pastenow.ru/3204T
   bolobol
 
38 - 04.05.18 - 15:15
(33) У заказчика всегда какие-то особые условия с другим уровнем. И как только выставляется счёт - задача либо умирает совсем, либо стремительно упрощается до "дважды два".
   Franchiser
 
39 - 04.05.18 - 15:15
(36) причем тут СКД?
   bolobol
 
40 - 04.05.18 - 15:16
(39) СамНакодилДанных...
   bolobol
 
41 - 04.05.18 - 15:16
Тьфу, СамКодилДанные
   Franchiser
 
42 - 04.05.18 - 15:17
Если такая постановка, то значит нужно сделать средствами СКД, т.е. несколькими наборами
   xxTANATORxx
 
43 - 04.05.18 - 15:18
(37)да, типа того
   Новиков
 
44 - 04.05.18 - 15:20
Числа от А до В - эти два числа, это параметры, задаваемые где-то на форме отчета?
   rabbidX
 
45 - 04.05.18 - 15:21
(42) Какая на фиг разница? Я ж средства неСКД не использовал.
   rabbidX
 
46 - 04.05.18 - 15:22
(43) действительно интересная задачка
   stepan73
 
47 - 04.05.18 - 15:23
Я таки задумался, а есть вариант сделать универсальное решение? Т.е. без ограничения по разрядности чисел А и В. Я пока не смог придумать.
   stepan73
 
48 - 04.05.18 - 15:25
(44) конечно, иначе бы было не интересно :)
   Новиков
 
49 - 04.05.18 - 15:29
(48) Тогда сам запрос в (17) и вся задача сводится к тому, чтобы текст запроса сформировать динамически в диапазоне от А к Б. Или есть какой-то реальный хитрый лайфхак от Ильдаровича :)
 
 Рекламное место пустует
   lEvGl
 
50 - 04.05.18 - 15:29
на даты надо завязаться, типа там
ДобавитьКДате(Текущая, День, &B)
получить строки с цифрами 1, 2, 3 - уже будут "независимые" от справочников и регистров данные, полдела
   lEvGl
 
51 - 04.05.18 - 15:30
(49) динамический текст это кодинг
   stepan73
 
52 - 04.05.18 - 15:32
(49) надо не текст запроса динамический, а диапазон
(50) блин, точно... вот теперь дальше понятно :)
   DrShad
 
53 - 04.05.18 - 15:33
(36) да не за что
твой вариант самый приемлимый

https://cdn1.savepice.ru/uploads/2018/5/4/f60687e81beb5d367394ffa2034c53be-full.png
   DmitriyDI
 
54 - 04.05.18 - 15:40
https://yadi.sk/d/AEnkviq93VL83v
Что скажете)?
   DmitriyDI
 
55 - 04.05.18 - 15:41
(54) результат работы
https://yadi.sk/i/01lv1a_d3VL8Ct
   Новиков
 
56 - 04.05.18 - 15:44
(54), (55) Хорошее простое решение. Зачет. Даже говнокодить с запросом не стал, видимо совсем ленно.
   DrShad
 
57 - 04.05.18 - 15:45
(54) у меня красивее )))
   DmitriyDI
 
58 - 04.05.18 - 15:47
(57) ссылку на отчет в студию))

(56) ага) 4 минуты потребовалось)
   g00d
 
59 - 04.05.18 - 15:50
(54) в общем то твое решение не чистое скд, таким образом можно было подготовить таблицу в модуле и потом уже ее просто вывести.
   stepan73
 
60 - 04.05.18 - 15:51
(54) красиво :) но с "ПриКомпоновкеРезультата" не интересно
   DmitriyDI
 
61 - 04.05.18 - 15:53
(59) с использованием грязных трюков))
   lEvGl
 
62 - 04.05.18 - 15:59
(57) тоже кодом что ли?
   DrShad
 
63 - 04.05.18 - 16:11
(62) не, как в (23)
   Asirius
 
64 - 04.05.18 - 16:28
На чистом СКД при помощи фиксированного запроса для неограниченного А и Б задачу решить невозможно.
Фиксированный (не динамический) запрос содержит конечное количество исходных таблиц и конечное количество соединений.
Значит количество записей в его результате будет ограничено следующим числом: МаксивальноеКоличествоЗаписейВИсходнойТаблице^2^КоличествоСоединений
   g00d
 
65 - 04.05.18 - 16:42
вот чистое скд, но до 1000, можно сделать и больше, но потребуется добавить новые порядки в таблицу чисел между А и Б
https://yadi.sk/d/i8uinjLj3VLFTN
   DmitriyDI
 
66 - 04.05.18 - 17:39
(65) теперь автор может смело идти на собеседование с несколькими вариантами)
   Rousse
 
67 - 06.05.18 - 05:34
Всем участникам большое спасибо за помощь!
   Fram
 
68 - 06.05.18 - 05:42
(67) Ноу проблем. Ждём теперь тему "дали первую задачу ... Какой то ступор. Прошу помощи."
   wt
 
69 - 06.05.18 - 08:18
   МимохожийОднако
 
70 - 06.05.18 - 08:23
процесс пошёл ))
https://iralebedeva.ru/inform7.html
   Otark
 
71 - 07.05.18 - 06:09
(67)Я подозреваю, про тебя уже забыли :)
   g00d
 
72 - 07.05.18 - 10:52
(71) о ком ты?
   DrShad
 
73 - 07.05.18 - 11:06
(72) про ТС
   g00d
 
74 - 07.05.18 - 11:27
(73) это было продолжение шутки про забытого тс


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