Имя: Пароль:
1C
1С v8
Задача на собеседовании (создать Запрос)
0 roman383
 
03.12.14
12:36
Приходит как-то мой знакомый на собеседование в одну контору (франч) на вакансию программист 1С. Для того чтобы проверить навыки работы с 1С запросами ему задают задачку: в консоли запросов создать запрос, который получает список целых чисел от 1 до заданного параметра (целое число не меньше 1). Требование к задачи: запрос не обращается к базе данных, имеет всего лишь один параметр (целое число) и запрещено пользоваться ОБЪЕДИНЕНИЯМИ. Дал ему на решение 30 мин. Он эту задачу решить не смог и более того сказал что ее вообще нельзя решить. Проверяющий сказал ему ДО СВИДАНИЯ. Можно ли эту задачу вообще решить?
1 ДенисЧ
 
03.12.14
12:37
решить можно.
Но такого рабодателя надо послать сразу после прочтения задания.
2 Wobland
 
03.12.14
12:39
какие навыки работы проверить?
3 ДенисЧ
 
03.12.14
12:40
(2) Посылоспособность
4 iamnub
 
03.12.14
12:40
Интересно уточнить - не обращается к базе данных..
У оракла есть FROM DUAL, а у MS SQL? Не говоря уж о 1С-диалекте - как можно запросом что-то получить БЕЗ БД??
5 Wobland
 
03.12.14
12:41
(4) выбрать "без бд"
6 DCKiller
 
03.12.14
12:41
Гы... А пакетами пользоваться можно?
А на собеседование в галстуке надо приходить?
7 ДенисЧ
 
03.12.14
12:42
(4) выбрать 2 как колонка
В чём проблема?
8 roman383
 
03.12.14
12:42
(2) не знаю какие. С начала ему дали задачу с легким запросом, а потом говорит: вот тебе запрос посложнее
9 Ненавижу 1С
 
гуру
03.12.14
12:43
(4) раздел FROM в MSSQL и 1С диалектах необязателен
10 Зеленый пень
 
03.12.14
12:43
(0) Сколько лет работаю, ни разу не приходилось такую задачу решать.
ИХМО, ТС так тешит своё ЧСВ.
11 Лефмихалыч
 
03.12.14
12:44

(0) это называется ебанариум

12 Зеленый пень
 
03.12.14
12:44
(10) + ну не ТС, а проверяющий, конечно
13 DCKiller
 
03.12.14
12:45
(11) Мне одному стало интересно, что там за франч такой?..
14 ramir
 
03.12.14
12:46
Ограничение по (целое число) есть?
15 DCKiller
 
03.12.14
12:46
Я сталкивался на собеседованиях обычно с тупыми эйчарами. С тупыми тестировщиками проверочного ТЗ приходилось сталкиваться всего раза 2 за всю карьеру...
16 Лефмихалыч
 
03.12.14
12:46

(13) ну, какой-нибудь Волгоградский регианальный клуб ебанариумистов. Да какая разница?..

17 Ненавижу 1С
 
гуру
03.12.14
12:46
(1) научишь?
имхо, решения нет
18 Ненавижу 1С
 
гуру
03.12.14
12:47
(14) ээээ, с ограничением неинтересно
19 Wobland
 
03.12.14
12:47
(17) с верхним потолком можно через запятую
20 Godofsin
 
03.12.14
12:47
Запрос в цикле ))))))
21 DCKiller
 
03.12.14
12:48
(16) А если из мск кто-нибудь?.. Вот пойдешь устраиваться на работу и нарвёшься на такого.
22 pessok
 
03.12.14
12:49
(17) совсем недавно на ИСе было
23 Лефмихалыч
 
03.12.14
12:49

(21) тоже мне трагедия

24 Ненавижу 1С
 
гуру
03.12.14
12:50
(22) ссылку не дашь? спасибо
25 roman383
 
03.12.14
12:50
(10) встречаются задачи типо такой, например при помощи запроса использую две даты получить все месяцы находящиеся между этими датами
26 DmitriyDI
 
03.12.14
12:51
решение кто-то даст)?
27 roman383
 
03.12.14
12:51
(25) хотя легче в цикле это сделать
28 pessok
 
03.12.14
12:51
(24) а, там с объединить :(
http://infostart.ru/public/251678/
29 Ненавижу 1С
 
гуру
03.12.14
12:52
(28) на важно, там ограничение на вводимое значение
30 pessok
 
03.12.14
12:53
(29) в (0) тоже. целое число больше 1
31 Ненавижу 1С
 
гуру
03.12.14
12:53
(27) особенно если даты 01.01.1900 и 01.01.2015
32 Ненавижу 1С
 
гуру
03.12.14
12:54
(30) ограничение сверху ))
33 roman383
 
03.12.14
12:55
решение (25) есть в (28)
34 Господин ПЖ
 
03.12.14
12:55
(30) у тебя в коде запроса зашито верхнее ограничение
35 Господин ПЖ
 
03.12.14
12:56
а в (0) этого нет
36 pessok
 
03.12.14
12:56
(32), (34) ага, был невнимателен
37 Господин ПЖ
 
03.12.14
13:00
п.э. либо кандидат недослушал и задача на самом деле (28) или экзаменатор что-то свое имел ввиду.

в общем кандидат/франь ничего не потеряли
38 dk
 
03.12.14
13:00
полчаса прошло
пока никто не сдал тест
может постановка была несколько другая?
39 Господин ПЖ
 
03.12.14
13:01
>пока никто не сдал тест

в постановке (0) она нерешаема
40 Тюря
 
03.12.14
13:02
Надо на собеседование ходить со своей головоломкой.
И задающему тоже предложить соревнование у кого мозги острей )))
41 ramir
 
03.12.14
13:03
(38) При наличии ограничения по заданному числу задача вполне решаемая.
42 roman383
 
03.12.14
13:04
В условии сказано получить список целых чисел, но это не означает что запрос должен возвращать таблицу состоящей из одной колонки и количеством строк равным параметру. Может быть можно попробовать получить таблицу из одной строки и количеством колонок равным этому параметру!!!
43 Лефмихалыч
 
03.12.14
13:04

(41) "запрещено пользоваться ОБЪЕДИНЕНИЯМИ"

44 Господин ПЖ
 
03.12.14
13:04
(41) значит франь ничего для себя не потерял
если ограничений не было - кандидат
45 ramir
 
03.12.14
13:05
(43) Я прочитал условие. Знаю как без объединений решить.
46 Господин ПЖ
 
03.12.14
13:06
(42) гы...
47 dk
 
03.12.14
13:06
типа
выбрать
  1,2,3,4,5,6 ...
?
48 roman383
 
03.12.14
13:06
(45) пусть ограничение равно 1000000. Только не используя (42) реши
49 Господин ПЖ
 
03.12.14
13:07
(45) ну клади сюда, посмотрим
50 Chum
 
03.12.14
13:07
CREATE FUNCTION [dbo].[GetSequence] (@From int, @Count int) RETURNS @Tabl TABLE (ID int) AS
BEGIN
  DECLARE i int
  SET i=0
  WHILE i<@Count BEGIN
    INSERT INTO @Tabl (ID) VALUES (@From+i)
    SET i=i+1
  END
  RETURN
END
51 roman383
 
03.12.14
13:07
(47) ну да, мож франь это имел ввиду
52 dk
 
03.12.14
13:08
(50) запустишь в консоли запросов 1с? ))
53 ramir
 
03.12.14
13:10
Сейчас расскажу на словах, если хотите напишу запрос.

есть выборка1

ВЫБРАТЬ 1 как Поле1

есть выборка2

ВЫБРАТЬ 2 как Поле2

Выбираем полное соединение этих таблиц ПО ЛОЖЬ

Получаем таблицу из двух строк.

Далее выбираем из это таблицы, таблицу вот такую (с одной колонкой)

1
2

Далее нужное количество раз объединяем ~log(MAX).

выбираем сумму по всем таблицам, группируем и сортируем. Не забываем условие, чтобы числа больше заданного не выбирались.
54 ramir
 
03.12.14
13:11
(53) очепятался, нужное количество раз делаем полное соединение.
55 Господин ПЖ
 
03.12.14
13:13
как определить "нужное количество раз" в запросе?
56 roman383
 
03.12.14
13:13
(53) "Получаем таблицу из двух строк." - это как? Неужели при помощи декатово произведения таблиц из одной строки можно получить таблицу с двумя строками
57 ramir
 
03.12.14
13:13
(53) еще ступил, выбирать нужно 0, 1
58 ramir
 
03.12.14
13:13
(56) Полное соединение по ЛОЖЬ даст нам таблицу из двух строк.
59 Godofsin
 
03.12.14
13:14
(53) Накидай запрос
60 Euguln
 
03.12.14
13:15
(59) + для N = 300
61 capllary
 
03.12.14
13:17
(0) Интересная головоломка.
62 Drac0
 
03.12.14
13:21

ВЫБРАТЬ
    ДАТАВРЕМЯ(2001,1,1) КАК Поле
    
ИТОГИ
    ГОД(Поле)-2000 КАК Поле
    
ПО
    Поле ПЕРИОДАМИ(ГОД, ДАТАВРЕМЯ(2001,1,1),ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2001,1,1),ГОД,&Парам))



Но результат можно получить только в обходе :( И то не факт, что получится.
63 Vladal
 
03.12.14
13:25

(4) Можно!
И притом даже цела игра есть по теме Конвэя "Эволюция".

64 Vladal
 
03.12.14
13:25

*при том

65 Drac0
 
03.12.14
13:26
+(62) Работает :)
66 ramir
 
03.12.14
13:28
выбрать естьNull(Поле2, 0) как Поле поместить Темп из (выбрать * из (выбрать 0 как Поле1) как ВЗ1 Полное соединение (выбрать 1 как Поле2) как ВЗ2 ПО ЛОЖЬ) как ВложенныйЗапрос
;

////////////////////////////////////////////////////////////////////////////////
выбрать * из (
ВЫБРАТЬ
    Темп1.Поле + 2*Темп2.Поле + 2*2*Темп3.Поле + 2*2*2*Темп4.Поле + 2*2*2*2*Темп5.Поле + 2*2*2*2*2*Темп6.Поле + 2*2*2*2*2*2*Темп7.Поле + 2*2*2*2*2*2*2*Темп8.Поле + 2*2*2*2*2*2*2*2*Темп9.Поле как П
из

Темп как Темп1 полное соединение
Темп как Темп2 по истина полное соединение
Темп как Темп3 по истина полное соединение
Темп как Темп4 по истина полное соединение
Темп как Темп5 по истина полное соединение
Темп как Темп6 по истина полное соединение
Темп как Темп7 по истина полное соединение
Темп как Темп8 по истина полное соединение
Темп как Темп9 по истина


сгруппировать по Темп1.Поле + 2*Темп2.Поле + 2*2*Темп3.Поле + 2*2*2*Темп4.Поле + 2*2*2*2*Темп5.Поле + 2*2*2*2*2*Темп6.Поле + 2*2*2*2*2*2*Темп7.Поле + 2*2*2*2*2*2*2*Темп8.Поле + 2*2*2*2*2*2*2*2*Темп9.Поле) как ВложенныйЗапрос ГДЕ П <= &Параметр И П > 0
67 ramir
 
03.12.14
13:29
(66) Вот запрос для макс 511
68 mergan
 
03.12.14
13:30
(65)у меня нефига
69 Господин ПЖ
 
03.12.14
13:30
(66) это уже было в (28)
70 pessok
 
03.12.14
13:31
(66) 511
71 ramir
 
03.12.14
13:32
(69) Я ссылку не читал. Сказали, что там ОБЪЕДИНИТЬ используется.
72 Господин ПЖ
 
03.12.14
13:33
(71) ну избавился от от юнион. Но верхний предел у тебя все равно в запросе зашит
73 pessok
 
03.12.14
13:33
(71) ага, там через объединение. осталось теперь для неограниченного сделать
74 Бледно Золотистый
 
03.12.14
13:33
универсального решения нет, если параметр ничем не ограничен
75 ramir
 
03.12.14
13:34
(72) я сразу оговорился, что знаю как решить только с ограничением.
76 roman383
 
03.12.14
13:34
(75) Без ограничения получается никак. Может нужно было на собеседовании решить также но с ограничением, которое не знает проверяющий (например какое-то очень большое число, название которого даже не знаешь)
77 ramir
 
03.12.14
13:35
(76) Любой нормальный проверяющий поймет что это за число.
78 Господин ПЖ
 
03.12.14
13:35
(74) ну значит либо франь либо кандидат идет нафиг. что и произошло.

все довольны
79 Godofsin
 
03.12.14
13:35
(65) Чтот не взлетело...
80 roman383
 
03.12.14
13:35
В консоли запросов у поля ввода параметра какая разрядность числа?
81 pessok
 
03.12.14
13:36
(77) я вот дальше триллионов уже путаюсь
82 fdgd98
 
03.12.14
13:36
(0) какую зп обещали после решения задачи? какой город?
83 pessok
 
03.12.14
13:36
(78) просто франь знал, что правильный кандидат начнет с нашего любимого вопроса "а нафейхоа?"
84 roman383
 
03.12.14
13:37
(82) зарплата не знаю, город Волгоград
85 Господин ПЖ
 
03.12.14
13:38
(83) в зуповских запросах полно извращений
86 ramir
 
03.12.14
13:38
Это задача на сообразительность, чего зачастую очень не хватает 1Снегам. Сам подобные задаю на собеседование. Знания - дело наживное, главное чтобы не тупил и не ленился.
87 fdgd98
 
03.12.14
13:38
(84) зарплата 10 тыс + 50 % премия наверное.
88 pessok
 
03.12.14
13:38
(85) и каждый раз, когда я на них смотрю - волосы встают дыбом. успокаивает только то, что "возможно я чего-то не знаю"
89 Бледно Золотистый
 
03.12.14
13:40
(88) Нам землянам никогда не понять
90 roman383
 
03.12.14
13:40
(87) ну такую зарплату нужно еще заслужить
91 Godofsin
 
03.12.14
13:41
(89) +100500!
92 roman383
 
03.12.14
13:42
Получается решение как в (66) с ограничением как в (80)
93 Drac0
 
03.12.14
13:42
(79) (68) Обходить надо правильно: пВыборкаГод= Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Поле", "Все");
94 Drac0
 
03.12.14
13:44
(74) есть в (62) :)
95 Hans
 
03.12.14
13:45
Ну что никто не может решить задачу тупого франча? =)
96 shpioleg
 
03.12.14
13:46
(84) А название франча какое?
97 Господин ПЖ
 
03.12.14
13:48
(96) "Мозго.п и сыновья"
98 azernot
 
03.12.14
13:49
Вот моя нетленка с ограничением в 10 млн...


ВЫБРАТЬ
    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
        ПО (ЛОЖЬ)
;

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

УПОРЯДОЧИТЬ ПО
    Число
99 Godofsin
 
03.12.14
13:49
(93) а в консоли запросов можно обход задать?
100 Бледно Золотистый
 
03.12.14
13:49
(94) Читерство. Сразу таблицу давай.
101 Drac0
 
03.12.14
13:53
(100) не было такого условия :-) (99) я в клнсоли наптсал, а про оезультат там же ничего не сказано
102 Godofsin
 
03.12.14
13:58
(101) Ну хорошо)))) Зачтено, давай зачетку )))))
103 pessok
 
03.12.14
14:02
(102) есть таки ощущение, что где-то тут подвох. понятное дело, что "экзаменатор" мог тупо завернуть соискателя по личным причинам, а-ля, слишком умный, подсидит еще. но все-же
104 nevopros
 
03.12.14
14:04
Интересные задачи ставят работодатели. Обычно они все такого рода. "Представь что ты баклан и не умеешь решать задачи простым путем. Сделай задачу через *опу, докажи, что не баклан".
105 freetype
 
03.12.14
14:11
(98) зачетно!
106 pessok
 
03.12.14
14:13
запилите кто-то в КЗ сегодняшние варианты, пусть будут
107 ramir
 
03.12.14
14:27
Вот вам без группировки и с оформлением

ВЫБРАТЬ
    ЕСТЬNULL(ВложенныйЗапрос.Поле2, 0) КАК Поле
ПОМЕСТИТЬ Темп
ИЗ
    (ВЫБРАТЬ
        ВЗ1.Поле1 КАК Поле1,
        ВЗ2.Поле2 КАК Поле2
    ИЗ
        (ВЫБРАТЬ
            0 КАК Поле1) КАК ВЗ1
            ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                1 КАК Поле2) КАК ВЗ2
            ПО (ЛОЖЬ)) КАК ВложенныйЗапрос
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВложенныйЗапрос.П КАК Число
ИЗ
    (ВЫБРАТЬ
        Темп1.Поле + 2 * Темп2.Поле + 2 * 2 * Темп3.Поле + 2 * 2 * 2 * Темп4.Поле + 2 * 2 * 2 * 2 * Темп5.Поле + 2 * 2 * 2 * 2 * 2 * Темп6.Поле + 2 * 2 * 2 * 2 * 2 * 2 * Темп7.Поле + 2 * 2 * 2 * 2 * 2 * 2 * 2 * Темп8.Поле + 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * Темп9.Поле КАК П
    ИЗ
        Темп КАК Темп1
            ПОЛНОЕ СОЕДИНЕНИЕ Темп КАК Темп2
            ПО (ИСТИНА)
            ПОЛНОЕ СОЕДИНЕНИЕ Темп КАК Темп3
            ПО (ИСТИНА)
            ПОЛНОЕ СОЕДИНЕНИЕ Темп КАК Темп4
            ПО (ИСТИНА)
            ПОЛНОЕ СОЕДИНЕНИЕ Темп КАК Темп5
            ПО (ИСТИНА)
            ПОЛНОЕ СОЕДИНЕНИЕ Темп КАК Темп6
            ПО (ИСТИНА)
            ПОЛНОЕ СОЕДИНЕНИЕ Темп КАК Темп7
            ПО (ИСТИНА)
            ПОЛНОЕ СОЕДИНЕНИЕ Темп КАК Темп8
            ПО (ИСТИНА)
            ПОЛНОЕ СОЕДИНЕНИЕ Темп КАК Темп9
            ПО (ИСТИНА)) КАК ВложенныйЗапрос
ГДЕ
    ВложенныйЗапрос.П <= &Параметр
    И ВложенныйЗапрос.П > 0

УПОРЯДОЧИТЬ ПО
    Число
108 Kamas
 
03.12.14
14:35
фу блин решил
109 shpioleg
 
03.12.14
14:37
Тоже "родили" тут сообща.

выбрать 0 цифры ПОМЕСТИТЬ ВТ объединить выбрать 1 объединить выбрать 2 объединить выбрать 3 объединить выбрать 4 объединить выбрать 5 объединить выбрать 6 объединить выбрать 7 объединить выбрать 8 объединить выбрать 9;
выбрать T1.цифры + T2.цифры * 10 + T3.цифры * 100 + T4.цифры * 1000 КАК T из
(выбрать * ИЗ ВТ) T1,
(выбрать * ИЗ ВТ) T2,
(выбрать * ИЗ ВТ) T3,
(выбрать * ИЗ ВТ) T4
упорядочить по T
110 azernot
 
03.12.14
14:39
(109) в (0) "запрещено пользоваться ОБЪЕДИНЕНИЯМИ".
111 Kamas
 
03.12.14
14:40
ВЫБРАТЬ
    0 КАК Число
ПОМЕСТИТЬ _0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    1 КАК Число
ПОМЕСТИТЬ _1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    2 КАК Число
ПОМЕСТИТЬ _2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    3 КАК Число
ПОМЕСТИТЬ _3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЕСТЬNULL(_0.Число, 0) + ЕСТЬNULL(_1.Число, 0) + ЕСТЬNULL(_2.Число, 0) + ЕСТЬNULL(_3.Число, 0) КАК Поле
ПОМЕСТИТЬ числа
ИЗ
    _0 КАК _0
        ПОЛНОЕ СОЕДИНЕНИЕ _1 КАК _1
        ПО _0.Число = _1.Число
        ПОЛНОЕ СОЕДИНЕНИЕ _2 КАК _2
        ПО _0.Число = _2.Число
        ПОЛНОЕ СОЕДИНЕНИЕ _3 КАК _3
        ПО _0.Число = _3.Число
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    числа1.Поле + 4 * числа2.Поле + 16 * числа3.Поле + 1 КАК Поле1
ИЗ
    числа КАК числа1,
    числа КАК числа2,
    числа КАК числа3
ГДЕ
    числа1.Поле + 4 * числа2.Поле + 16 * числа3.Поле + 1 < &Параметр

УПОРЯДОЧИТЬ ПО
    Поле1
112 Господин ПЖ
 
03.12.14
14:42
вы получили ачивку "Годен для Волгограда"
113 pessok
 
03.12.14
14:42
(111) у тебя до 64
114 Kamas
 
03.12.14
14:42
(111) с максимальным можно играться но общий ход действий не изменится
115 pessok
 
03.12.14
14:43
(114) можно играться, когда максимальное заранее известно
116 Господин ПЖ
 
03.12.14
14:43
(114) следующий!
117 Kamas
 
03.12.14
14:46
(114) ну можно степенями 2 последнего догнать до то кого состояния что сервак уйдет в даун только зачем?? хот логики не меняетс
118 fdgd98
 
03.12.14
14:48
Вы нам подходите ! зп 5 тыс рублей!
119 Широкий
 
03.12.14
14:48
(111) Вложенные запросы не катят. Надо именно временку городить?
120 Pasha
 
03.12.14
14:49
(91) Вообще конечно хотелось бы взглянуть на фото автора ЗУПовских запросов... В глаза посмотреть
121 fdgd98
 
03.12.14
14:49
(120) фотки ссожены
122 pessok
 
03.12.14
14:50
(120) в юности мы часто употребляли фразу "да глянь на него, глаз нет". сами знаете о чем речь, не буду популизировать :)
123 Kamas
 
03.12.14
14:52
(119) Да без разницы я просто привык к врт автоматом выходит не думая
124 pessok
 
03.12.14
14:59
(123) а виноват в этом зуп, как пить дать :)
125 pessok
 
03.12.14
15:00
+(124) я тоже насмотревшись этого непотребства стал везде сувать ВТ. вот отучаюсь теперь
126 Ник второй
 
03.12.14
15:27
(125) Зачем отучаться, вт это верный подход.
127 ramir
 
03.12.14
15:31
ВТ оправдано, когда результат используется больше 1 раза. В противном случае особой разницы не вижу.
128 Drac0
 
03.12.14
15:34
(127) Оптимизатор SQL с тобой не согласен.
129 ramir
 
03.12.14
15:35
(128) Да я не против альтернативного мнения. Только на практике, как правило, это мелочь на фоне оптимальности самого запроса)
130 AlexITGround
 
03.12.14
15:43
да я задолбался читать и разбирать эти кучи вложенных запросов, стараюсь юзать ВТ, даже если обращение однократное, хотя некоторые из коллег на мисте против использования ВТ в принципе, пока серьезных аргументов не получил
131 Гёдза
 
03.12.14
15:46
полное соединение по ложь
оказалось равносильно
объединить
Но кто  бы знал такую куету
132 spero
 
03.12.14
15:46
(130) Тут соображения чисто эстетические. С ВТ декларативный по своей природе язык становится немножечко процедурным. Вот - фи!
133 etc
 
03.12.14
15:47
А я задолбался после таких любителей ВТ наращивать ресурсы DB сервера когда 80% дисковых обращений к tempdb. Конечно, по каждому чиху ВТ, а то где эта таблица создается никого не волнует.
134 igork1966
 
03.12.14
15:48
(129) иногда это зависит от базы например...

если используешь в соединения к регистру сведений... и у тебя Postgress
при большом количестве данных ты никуда не уйдешь от ВТ
135 WebberNSK
 
03.12.14
15:48
(0) можно, гугли на инфостарте пораждающие запросы
136 etc
 
03.12.14
15:48
Вы еще в списки ВТ понапихайте, особенно в процедуру ПриВыводеСтроки (вместо ПриПолученииДанных). Кодеры блин.
137 Kamas
 
03.12.14
15:50
(136) юзайте ssd админы блин
138 Kamas
 
03.12.14
15:50
(137) ))
139 WebberNSK
 
03.12.14
15:51
(0) между прочим подобным способом решается задача транзитивного замыкания, с помощью которой строятся эпические отчеты по юридической-корпоративной структуре в зуп
140 etc
 
03.12.14
15:51
(137) ты еще рамдиск посоветуй. Все вы такие умные.
141 dmpl
 
03.12.14
15:52
(120) Когда разберешься - там все просто, просто букв много.
142 dmpl
 
03.12.14
15:53
(127) Вложенный запрос иногда приводит к непопаданию в индексы. Если же выбрать предварительно в ВТ - практически всегда попадает.
143 DexterMorgan
 
03.12.14
15:56
(142) Вложенный запрос сам по себе не зло, а вот соединение с ним иногда приводит к печальным последствиям

(133) Спасибо, поржал
144 DexterMorgan
 
03.12.14
15:58
(140) чем плох рамдиск для темпдб? =)
145 Локи-13
 
03.12.14
16:02
(0) жесткий сатанизм... за 8 лет в 1С не сталкивался ни с чем подобным. не считаю нужным держать это в голове. при необходимости есть интернет, и куча сайтов с "Занимательными запросами".

знаете как на школьном конкурсе фонетики в штатах:
называют слово
и отвечающий задает два вопроса
Определение слова
Предложение с этим словом

Так же и тут. Я бы в ответ попросил описать задачу пользователя, для которой потребуется такое решение.

(143) +1
146 Бледно Золотистый
 
03.12.14
16:11
(143) Ага типа такого:
Microsoft OLE DB Provider for SQL Server: Запрос был отменен, потому что расчетные затраты на его выполнение превышают установленный порог в .... Свяжитесь с системным администратором.

Хотя запрос достаточно быстрый и простой как 2 копейки.
147 Серго62
 
03.12.14
16:14
(0) А целые числа случайно не должны были быть еще и простыми?
148 sapphire
 
03.12.14
16:21
(39) Это еще почему нерешаема?
149 Goggy
 
03.12.14
16:54
Ну что, мегамозги? Выложит-то запрос кто? Или попонтавались и хватит?
150 roman383
 
03.12.14
16:57
(147) не, они просто должны входить во множество чисел Фибоначчи
151 azernot
 
03.12.14
17:07
(149) Все согласились с тем, что простым запросом, без организации специальной выборки, задача нерешаема, если не вводить верхнее ограничение.
Можно конечно ввести ограничение на 1000 триллионов, и заявить, что бОльшие числа в сфере применения 1С не используются. Но с формальной точки зрения - это будет нерешённая задача.
152 igork1966
 
03.12.14
17:22
(151) +1
153 DmitriyDI
 
03.12.14
17:33
(109) можете объяснить почему при
выбрать T1.цифры + T2.цифры * 10 + T3.цифры * 100 + T4.цифры * 1000 КАК T из
(выбрать * ИЗ ВТ) T1,
(выбрать * ИЗ ВТ) T2,
(выбрать * ИЗ ВТ) T3,
(выбрать * ИЗ ВТ) T4
упорядочить по T

получается такой результат?

как работает эта часть запроса, что-то никак не пойму ((
154 DmitriyDI
 
03.12.14
17:40
(153) все возможные комбинации всех сумм цифр этих таблиц?
155 Господин ПЖ
 
03.12.14
17:42
(154) декарт
156 Kamas
 
03.12.14
17:42
(149)чем тебя не устраивает то что было предложено выше Там же все понятно Задаем список чисел в N ричной системе потом Берем этот список столько раз сколько разрядов должно быть у данного числа(Тк. берем таблички без всяких соединений то получаем все возможные комбинации чисел во всех разрядах ) в этой ситеме и переводим его в десятичную
157 Escander
 
03.12.14
17:42
(0) чисто для маркетинга... а что за фра, которому нужны спецы в том. что не имеет прикладного значения?
158 DS
 
03.12.14
17:47
(156) Где тебе не понятно условие задачи?
159 Kamas
 
03.12.14
17:52
(158) что не так вас смущает ограничение в разрядности
160 spero
 
03.12.14
17:57
(154) Если в запросе указать несколько таблиц через запятую, на выходе получишь произведение таблиц.
161 DS
 
03.12.14
18:05
(159) Решений данной задачи в теме еще нет.
А смущает меня то, что на вопрос "сможешь ли согнуть голыми руками пятисантиметровый стальной прут" отвечают "да запросто согну с помощью прутосгибального станка".
162 Господин ПЖ
 
03.12.14
18:06
правильный ответ 1С-ника на вопрос "за сколько пробежите 100 метровку" - "за 1500 рублей"
163 azernot
 
03.12.14
18:08
(162) В контексте ветки JOB: Давайте все вместе повысим стоимость своих услуг? правильный ответ "за 5000 рублей"
164 Escander
 
03.12.14
18:14
roman383, что за фра-то?
165 rsv
 
03.12.14
18:21
(0) Left Join c  ON   на сравнение . Как то так
166 rsv
 
03.12.14
18:23
т.е. если запретили  объеденения  значит разрешили соединения... надо  завтра  поселектить :)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn