Имя: Пароль:
JOB
Работа
Готов поработать падаваном
, ,
0 Aurum
 
31.07.12
20:27
Что умею: 7,7 плотная работа
8 -начальный уровень.(отчеты,обработки)
с запросами знаком,СКД тоже видел :)
навыки составления ТЗ есть.

ps сбегать за пивом- не вопрос:)

Место обитания -Мск.регион
57 DrShad
 
01.08.12
23:16
(55) неэффективно
58 izekia
 
01.08.12
23:17
(57) под вопросом ...
приду - напишу, можно будет померять
59 izekia
 
01.08.12
23:18
это не тот путь которым я стал бы решать реальную задачу, просто я сразу оговорился, что это нетривиально и интересно
60 DrShad
 
01.08.12
23:22
(59) вообще-то речь немного не о том, а о том что задача не для тестирования на падавана
61 prog2012
 
02.08.12
00:16
(60)задача считаю универсальна и проверяет способность писать запросы
значительно более адекватный тест чем задача типа
"сделайте так чтобы при позиционировании в динамическом списке номенклатуры на управляемой форме, на этой же форме в другом списке отображался бы список остатков по ней по складам (ну или любая другая хрень как вариант, суть связанная с текущим элементом первого списка)"
62 Абырвалг
 
02.08.12
01:06
(51) Антоха, что-то ты заморочился. Там надо в запросе реализовать аналог среза последних на каждую дату ПТиУ. Запрос нетрививальный, я такие люблю, но это не для собеседования.
63 izekia
 
02.08.12
06:55
(62) да я понимаю, я просто увидел другой вариант формирования тех же данных и мне захотелось такой написать
64 prog2012
 
02.08.12
11:03
(62)"на каждую дату" и где вывозмете "каждую дату"?
там хоть по реальным хотьпо виртуальным таблицам всё равно интервалы вычислять
65 DrShad
 
02.08.12
11:35
(64) если ты не в курсе как запросом сформировать таблицу дат за период, то это не означает что никто не знает
66 izekia
 
02.08.12
11:38
(64) давай свой вариант ответа)
67 izekia
 
02.08.12
11:40
я сейчас свой накидаю
68 prog2012
 
02.08.12
11:51
(65)в 1с это не возможно, скульным скриптом может быть
69 DrShad
 
02.08.12
11:52
(68) акуеть! и этот человек дает задания на тестирование - читай книгу знаний до полного просветления там и не такое есть
70 prog2012
 
02.08.12
11:55
(69)какие ваши доказательства?
71 DrShad
 
02.08.12
11:57
72 palpetrovich
 
02.08.12
12:01
(69) +1  хотя, собственно чего удивляться ...когда это в наших государствах более умные или образованные были руководителями? ;)
73 DrShad
 
02.08.12
12:02
(72) ну если я чего не знаю, то не утверждаю что это не возможно, пока сам не выясню что невозможно
74 DrShad
 
02.08.12
12:03
+(73) так что тем кого я собеседовал вроде бы жаловаться не на что :)
75 prog2012
 
02.08.12
12:05
(74)запрос который покажет список дат за период где?
76 mikecool
 
02.08.12
12:08
(20) ты куда пропала? ТИффани тебя наконец выпустила?
77 Абырвалг
 
02.08.12
12:09
Ребята, что вы спорите. Это стандартная задача, немного нетривиальная, но встречается часто. Но на собеседованиях ее не сделают 99 человек из 100. Мы на собеседовании даем простой запрос с левым соединением, и то 90% отсеиваются, а остальные во временные рамки не укладываются.
78 Maxus43
 
02.08.12
12:14
(77) неужто всё так плохо с 1сниками?
79 Абырвалг
 
02.08.12
12:16
(78) Угу. Причем все приходят с запросами от 120 тыс.
80 prog2012
 
02.08.12
12:17
(74)v8: Как в запросе сгенерировать таблицу всех дат в заданном диапозоне?
там период ограничен по размеру, это очень ограниченное решение
81 DrShad
 
02.08.12
12:19
(75) ты статью прочитал?
82 prog2012
 
02.08.12
12:21
(81)там период ограничен по размеру, это очень ограниченное решение
83 DrShad
 
02.08.12
12:22
(82) по какому размеру? у тебя в задаче написано, что "за период"
84 palpetrovich
 
02.08.12
12:40
(75) М.Г.Радченко  "1С Предприятие 8.1. Практическое пособие разработчика. Примеры и типовые приемы"
Часть 2, глава 5, Созжание отчетов... :)
85 izekia
 
02.08.12
13:43
(77) сколько денег даете?
86 DrShad
 
02.08.12
13:43
(82) сдулся тестировщик, блин!
87 izekia
 
02.08.12
13:43
(79) о, возьмите меня на 150
88 DrShad
 
02.08.12
13:44
(87) мелко просишь, надо уже 180, тем более если ты такую задачу на собеседовании в один запрос решишь в положенное время
89 Надсмотрщик
 
02.08.12
13:51
(79) Давай так!
Если напишу - 120 тыр.
Не напишу - 100 тыр.
90 prog2012
 
02.08.12
14:02
(86)уважаемый, полоска под ником не абсолютный показатель
с вашей помощью разобрался как получаются все даты за период. спасибо, просто раньше мне это не было нужно
поэтому правильно сказать в данном случае раздулся (стал больше)
указанные задачи мною были решены без использования списка дат

(84)там такого нет
(88)тогда тестировщик скажет что решние этой задачи за установленное время не гарантирует устройство
91 prog2012
 
02.08.12
14:05
(79)эти запросы на подавана уже потому что совсем не проверяют чего бы то ни было кроме понимания принципов программирования запросами
вся эта программистсткая беллетристика не позволяет понять насколько человек способен создать быстродействующую стабильную систему учетную
92 DrShad
 
02.08.12
14:06
(90) то что ты решил задание не означает что твое решение было оптимальным
поверь я видел обработки со сплошным быдлокодом, но тем не менее они давали необходимый результат
93 DrShad
 
02.08.12
14:08
+(92) а вот то что стал чуть умнее это радовает нас и таки советую пошерстить книгу знаний - очень много интересных и нетривиальных решений/подходов
94 prog2012
 
02.08.12
14:14
(92)ты не повериш... )))
именно поиски предельно оптимальных решений (в частности технологических) и есть повод здесь потрындеть
95 prog2012
 
02.08.12
14:14
(93)такие там есть?
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ВЫБРАТЬ
               ВложенныйЗапрос.Ссылка КАК Поступление,
               ВложенныйЗапрос.КурсВзаиморасчетов - КурсыВалют.Курс КАК РазницаКурсов
ИЗ
               (ВЫБРАТЬ
                              ВложенныйЗапрос.Ссылка КАК Ссылка,
                              МАКСИМУМ(ВложенныйЗапрос.Период) КАК Период,
                              МАКСИМУМ(ВложенныйЗапрос.ВалютаДокумента) КАК ВалютаДокумента,
                              МАКСИМУМ(ВложенныйЗапрос.КурсВзаиморасчетов) КАК КурсВзаиморасчетов
               ИЗ
                              (ВЫБРАТЬ
                                              ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
                                              ПоступлениеТоваровУслуг.КурсВзаиморасчетов КАК КурсВзаиморасчетов,
                                              ПоступлениеТоваровУслуг.ВалютаДокумента КАК ВалютаДокумента,
                                              ПоступлениеТоваровУслуг.Дата КАК Дата,
                                              КурсыВалют.Период КАК Период,
                                              КурсыВалют.Курс КАК Курс,
                                              КурсыВалют.Валюта КАК Валюта
                              ИЗ
                                              Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
                                                              ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
                                                              ПО ПоступлениеТоваровУслуг.ВалютаДокумента = КурсыВалют.Валюта
                              ГДЕ
                                              НАЧАЛОПЕРИОДА(ПоступлениеТоваровУслуг.Дата, ДЕНЬ) >= КурсыВалют.Период
                                              И КОНЕЦПЕРИОДА(ПоступлениеТоваровУслуг.Дата, МЕСЯЦ) = КОНЕЦПЕРИОДА(&Период, МЕСЯЦ)) КАК ВложенныйЗапрос
               
               СГРУППИРОВАТЬ ПО
                              ВложенныйЗапрос.Ссылка) КАК ВложенныйЗапрос
                              ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
                              ПО ВложенныйЗапрос.ВалютаДокумента = КурсыВалют.Валюта
                                              И ВложенныйЗапрос.Период = КурсыВалют.Период
ГДЕ
               ВложенныйЗапрос.КурсВзаиморасчетов - КурсыВалют.Курс <> 0

//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ВЫБРАТЬ
               ВложенныйЗапрос.Номенклатура КАК Товар,
               СУММА(ВложенныйЗапрос.Поле1) КАК ЧислоДнейОтсутствияТовара
ИЗ
               (ВЫБРАТЬ
                              ВложенныйЗапрос.Номенклатура КАК Номенклатура,
                              РАЗНОСТЬДАТ(ВложенныйЗапрос.ДатаВхода, ВложенныйЗапрос.ДатаВыхода, ДЕНЬ) КАК Поле1
               ИЗ
                              (ВЫБРАТЬ
                                              ВложенныйЗапрос.Номенклатура КАК Номенклатура,
                                              ВложенныйЗапрос.ДатаВхода КАК ДатаВхода,
                                              МИНИМУМ(ВложенныйЗапрос.ДатаВыхода) КАК ДатаВыхода
                              ИЗ
                                              (ВЫБРАТЬ
                                                              ВложенныйЗапрос.Номенклатура КАК Номенклатура,
                                                              ВложенныйЗапрос.ДатаВхода КАК ДатаВхода,
                                                              ВложенныйЗапрос.ДатаВыхода КАК ДатаВыхода
                                              ИЗ
                                                              (ВЫБРАТЬ
                                                                             Нулевые.Номенклатура КАК Номенклатура,
                                                                             Нулевые.Период КАК ДатаВхода,
                                                                             ВЫБОР
                                                                                             КОГДА КОНЕЦПЕРИОДА(Нулевые.Период, ДЕНЬ) = КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
                                                                                                             ТОГДА ДОБАВИТЬКДАТЕ(Нулевые.Период, ДЕНЬ, 1)
                                                                                             ИНАЧЕ ЕСТЬNULL(НеНулевые.Период, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ))
                                                                             КОНЕЦ КАК ДатаВыхода
                                                              ИЗ
                                                                             (ВЫБРАТЬ
                                                                                             ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
                                                                                             ТоварыНаСкладахОстаткиИОбороты.Период КАК Период
                                                                             ИЗ
                                                                                             РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(КОНЕЦПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), День, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты
                                                                             ГДЕ
                                                                                             ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <= 0
                                                                             
                                                                             ОБЪЕДИНИТЬ ВСЕ
                                                                             
                                                                             ВЫБРАТЬ
                                                                                             Товары.Ссылка,
                                                                                             &НачалоПериода
                                                                             ИЗ
                                                                                             Справочник.Номенклатура КАК Товары
                                                                                                             ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(КОНЕЦПЕРИОДА(&НачалоПериода, ДЕНЬ), ) КАК ТоварыНаСкладахОстатки
                                                                                                             ПО (ТоварыНаСкладахОстатки.Номенклатура = Товары.Ссылка)
                                                                             ГДЕ
                                                                                             (ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
                                                                                                                            ИЛИ ТоварыНаСкладахОстатки.КоличествоОстаток <= 0)) КАК Нулевые
                                                                                             ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                                                                                                             ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
                                                                                                             ТоварыНаСкладахОстаткиИОбороты.Период КАК Период
                                                                                             ИЗ
                                                                                                             РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(КОНЕЦПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), День, , ) КАК ТоварыНаСкладахОстаткиИОбороты
                                                                                             ГДЕ
                                                                                                             ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток > 0) КАК НеНулевые
                                                                                             ПО Нулевые.Номенклатура = НеНулевые.Номенклатура) КАК ВложенныйЗапрос
                                              ГДЕ
                                                              ВложенныйЗапрос.ДатаВыхода >= ВложенныйЗапрос.ДатаВхода) КАК ВложенныйЗапрос
                             
                              СГРУППИРОВАТЬ ПО
                                              ВложенныйЗапрос.Номенклатура,
                                              ВложенныйЗапрос.ДатаВхода) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
               ВложенныйЗапрос.Номенклатура
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
96 DrShad
 
02.08.12
14:15
(95) что это!? что они должны делать скажи и скажу есть или нет и что у тебя не так
97 Gantosha
 
02.08.12
14:16
хорошо иметь рабов ..
98 DrShad
 
02.08.12
14:16
(97) это ты к чему?
99 izekia
 
02.08.12
14:17
(68) Невозможно?
вот запрос формирующий таблицу дат за год:
ВЫБРАТЬ
   &Год - 2012 КАК Смещение
ПОМЕСТИТЬ ВремСмещение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   0 КАК Число
ПОМЕСТИТЬ ВремЧисла

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   9

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   10

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   11

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   12

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   13

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   14

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   15

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   16

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   17

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   18

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   19

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   20

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   21

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   22

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   23

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   24

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   25

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   26

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   27

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   28

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   29

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   30
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 12
   ВремЧисла.Число КАК Месяц,
   ДЕНЬ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2012, 1, 1), ГОД, ВремСмещение.Смещение), МЕСЯЦ, ВремЧисла.Число), МЕСЯЦ)) КАК ДнейВМесяце
ПОМЕСТИТЬ ВремДнейВмесяцах
ИЗ
   ВремЧисла КАК ВремЧисла,
   ВремСмещение КАК ВремСмещение

УПОРЯДОЧИТЬ ПО
   ВремЧисла.Число
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2012, 1, 1), ГОД, ВремСмещение.Смещение), МЕСЯЦ, ВремДнейВмесяцах.Месяц), ДЕНЬ, ВремЧисла.Число) КАК Дата
ИЗ
   ВремДнейВмесяцах КАК ВремДнейВмесяцах
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВремЧисла КАК ВремЧисла
       ПО ВремДнейВмесяцах.ДнейВМесяце > ВремЧисла.Число,
   ВремСмещение КАК ВремСмещение
100 prog2012
 
02.08.12
14:18
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, Цифры4.Цифра * 1000 + Цифры3.Цифра * 100 + Цифры2.Цифра * 10 + Цифры1.Цифра * 1) КАК ДатаДень
ИЗ
   (ВЫБРАТЬ
       0 КАК Цифра
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       1
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       2
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       3
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       4
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       5
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       6
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       7
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       8
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       9) КАК Цифры1
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           0 КАК Цифра
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           1
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           2
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           3
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           4
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           5
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           6
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           7
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           8
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           9) КАК Цифры2
       ПО (Цифры2.Цифра * 10 + Цифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ))
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           0 КАК Цифра
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           1
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           2
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           3
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           4
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           5
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           6
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           7
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           8
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           9) КАК Цифры3
       ПО (Цифры3.Цифра * 100 + Цифры2.Цифра * 10 + Цифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ))
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           0 КАК Цифра
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           1
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           2
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           3
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           4
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           5
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           6
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           7
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           8
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           9) КАК Цифры4
       ПО (Цифры4.Цифра * 1000 + Цифры3.Цифра * 100 + Цифры2.Цифра * 10 + Цифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ))

УПОРЯДОЧИТЬ ПО
   ДатаДень
101 izekia
 
02.08.12
14:19
если есть таблица с гарантированными 31 элементами, то можно нарисовать все еще проще, просто сгенерить 31 элемент не получается кроме как в (99)
102 prog2012
 
02.08.12
14:19
(96)(28)
103 DrShad
 
02.08.12
14:19
что за меряние запросами?
104 DrShad
 
02.08.12
14:21
(102) вообще-то мы полдня обсуждаем вторую задачу из (28), а не первую, но даже применительно к 1-й задаче в книге знаний решено изящнее
105 Gantosha
 
02.08.12
14:24
(98) ну ведь приятно, когда кто то тапки принесет ..или за пивком сбегает.
106 prog2012
 
02.08.12
14:24
(104)там обе через коммент...
сомнительна полезность вытягивания всех дат если нужны только счетчики по интервалм а не полный график
107 DrShad
 
02.08.12
14:31
(106) ну решение второй задачи совсем неудобочитаемое, к тому же видно сразу что ты не юзаешь пакетные запросы, а с ними было бы гораздо удобнее
108 prog2012
 
02.08.12
14:36
(107)в условии сказано одинесным запросом
использование пакетов должно быть технологически обосновано упрощением запроса или его читабельностью
этот можно открыть в консоли
109 Black_Doctor
 
02.08.12
14:39
(108) а что мешает делать пакетный в конструкторе?
110 DrShad
 
02.08.12
14:41
(108) а пакетники в консоли не открываются!? может хватить тупить
111 izekia
 
02.08.12
14:45
более компактный вариант:
ВЫБРАТЬ &Год - 2012 КАК Смещение
 ПОМЕСТИТЬ ВремСмещение;
ВЫБРАТЬ 1 КАК Число
 ПОМЕСТИТЬ Врем2
 ОБЪЕДИНИТЬ
ВЫБРАТЬ 2;
ВЫБРАТЬ В1.Число * 10000 + В2.Число * 1000 + В3.Число * 100 + В4.Число * 10 + В5.Число КАК ЧИСЛО
 ПОМЕСТИТЬ ВРЕМ32
 ИЗ Врем2 КАК В1, Врем2 КАК В2, Врем2 КАК В3, Врем2 КАК В4, Врем2 КАК В5;
ВЫБРАТЬ Количество(Врем2.Число)
 ПОМЕСТИТЬ ВремЧисла
 ИЗ Врем32 КАК Врем1 ЛЕВОЕ СОЕДИНЕНИЕ Врем32 КАК Врем2 ПО Врем1.Число > Врем2.Число
 СГРУППИРОВАТЬ ПО Врем1.Число
 ИМЕЮЩИЕ Количество(Врем2.Число) < 31;
ВЫБРАТЬ ПЕРВЫЕ 12
   ВремЧисла.Число КАК Месяц,
   ДЕНЬ(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2012, 1, 1), ГОД, ВремСмещение.Смещение), МЕСЯЦ, ВремЧисла.Число), МЕСЯЦ)) КАК ДнейВМесяце
 ПОМЕСТИТЬ ВремДнейВмесяцах
 ИЗ
   ВремЧисла КАК ВремЧисла,
   ВремСмещение КАК ВремСмещение

 УПОРЯДОЧИТЬ ПО
   ВремЧисла.Число;
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2012, 1, 1), ГОД, ВремСмещение.Смещение), МЕСЯЦ, ВремДнейВмесяцах.Месяц), ДЕНЬ, ВремЧисла.Число) КАК Дата
 ИЗ
   ВремДнейВмесяцах КАК ВремДнейВмесяцах
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВремЧисла КАК ВремЧисла
       ПО ВремДнейВмесяцах.ДнейВМесяце > ВремЧисла.Число,
   ВремСмещение КАК ВремСмещение
112 prog2012
 
02.08.12
15:34
(110)временные таблицы тоже там открываются?
113 izekia
 
02.08.12
15:37
вот второй запрос по движениям, нашел времени немного:
ВЫБРАТЬ
   ТоварыОстатки.Товар,
   ТоварыОстатки.Остаток,
   &НачалоПериода КАК Период
ПОМЕСТИТЬ ВремДвижения
ИЗ
   РегистрНакопления.Товары.Остатки(&НачалоПериода, ) КАК ТоварыОстатки

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

ВЫБРАТЬ
   Товары.Товар,
   ВЫБОР
       КОГДА Товары.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
           ТОГДА Товары.Остаток
       ИНАЧЕ -Товары.Остаток
   КОНЕЦ,
   Товары.Период
ИЗ
   РегистрНакопления.Товары КАК Товары
ГДЕ
   Товары.Период МЕЖДУ &НачалоПериода И &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВремДвижения.Товар,
   ВремДвижения.Период
ПОМЕСТИТЬ ВремНули
ИЗ
   ВремДвижения КАК ВремДвижения
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВремДвижения КАК ВремДвижения1
       ПО ВремДвижения.Товар = ВремДвижения1.Товар
           И ВремДвижения.Период >= ВремДвижения1.Период

СГРУППИРОВАТЬ ПО
   ВремДвижения.Товар,
   ВремДвижения.Период

ИМЕЮЩИЕ
   СУММА(ВремДвижения1.Остаток) = 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВремНули.Товар,
   РАЗНОСТЬДАТ(ВремНули.Период, ISNULL(МИНИМУМ(ВремДвижения.Период), &КонецПериода), ДЕНЬ) КАК ДнейСНулем
ПОМЕСТИТЬ ВремПериодыСНулями
ИЗ
   ВремНули КАК ВремНули
       ЛЕВОЕ СОЕДИНЕНИЕ ВремДвижения КАК ВремДвижения
       ПО ВремНули.Товар = ВремДвижения.Товар
           И ВремНули.Период < ВремДвижения.Период

СГРУППИРОВАТЬ ПО
   ВремНули.Товар,
   ВремНули.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВремПериодыСНулями.Товар,
   СУММА(ВремПериодыСНулями.ДнейСНулем) КАК ДнейСНулем
ИЗ
   ВремПериодыСНулями КАК ВремПериодыСНулями

СГРУППИРОВАТЬ ПО
   ВремПериодыСНулями.Товар
114 izekia
 
02.08.12
15:39
кто там меня обещал на 180 взять?
115 izekia
 
02.08.12
15:40
кстати, замерьте на реальных данных что быстрее? по виртуальным таблицам или по движениям, у меня есть подозрение, что второй вариант
116 DrShad
 
02.08.12
15:43
(112) ты не поверишь, но даже посмотреть их результат
117 prog2012
 
02.08.12
15:51
(111)(113)ну зашифровал...
и как это отлаживать?

(116)консоль с ИТС?
118 DrShad
 
02.08.12
15:53
(117) конечно же нет
119 prog2012
 
02.08.12
15:54
(118)ссылку кинь пожалуйста
(113)вы случайно не из команды пейсателей ЗУП?
120 DrShad
 
02.08.12
15:56
121 DrShad
 
02.08.12
16:04
(119) так ты пишешь сотни вложенных запросов из-за того что не осилил ЗУП? ха-ха
122 izekia
 
02.08.12
16:07
(117) в (111) просто постарался поменьше объем
в (113) из конструктора запроса, что я там зашифровал? наоборот все предельно ясно
123 prog2012
 
02.08.12
16:07
(121)я пишу так чтобы можно было работать с этим без "осиления"
124 izekia
 
02.08.12
16:08
(119) еще раз подробнее можно? я не догоняю, у тебя запрос что ли более читаемый?
125 izekia
 
02.08.12
16:09
(123) ты не в курсе, что лучше читается запрос без вложенных подзапросов, тем более у меня там повторное использование
126 DrShad
 
02.08.12
16:11
(125) +100500 ну один-два вложенных я еще допускаю, но более уже целесообразнее через ВТ
127 prog2012
 
02.08.12
16:13
(124)(125)мою писанину можно быстро разобрать на любом уровне с низшего
а ваша есть убогая попытка заменить скульное программирование на процедурное путем использования времянок со всем вытекающим негативом
лепите горбатого к стене без технических оснований
(126)фактически количество вложенных запросов не влияет на скорость исполнения (ничтожно), зато запрос действительно один получается

запрос в задачах должен быть один, времянка это уже два запроса
128 DrShad
 
02.08.12
16:17
(127) запрос и выходит 1 а времянка это всего-лишь вьюшки, которые потом умирают
129 DrShad
 
02.08.12
16:18
(127) [а ваша есть убогая попытка заменить скульное программирование на процедурное путем использования времянок со всем вытекающим негативом
лепите горбатого к стене без технических оснований] хотите об этом поговорить? т.е. по-твоему все кто юзает ВТ дауны? ибо не способны сотню вложенностей запросов написать?
130 prog2012
 
02.08.12
16:19
(128)если запрос кусочно сформировать то он тоже будет один
только задачи не про то как сделать как-нибудь а про знание запросов в 1С
131 prog2012
 
02.08.12
16:20
(129)скорее клоуны, заметающие следы затруднением отладки и обеспечивающие себе незаменимость
132 izekia
 
02.08.12
16:21
(127) сижу думаю как бы помягче написать, пока в голову ничего не приходит, приходится сдерживаться

я прекрасно понимаю, что действия оптимизатора при вложенном запросе и при запросе с использованием временных таблиц будут различными, более того, в первом случае скорее всего запрос будет выполнен более оптимально
Но во первых если не тупить, а попытаться посмотреть на текст запроса, то можно обнаружить там повторное использование первой таблицы, что оправдывает ее создание в качестве вт, остальные вполне можно пихнуть в один
Во вторых, чтение подобного запроса проще, можно долго пытаться меня убедить в обратном, но проще всего на мой взгляд создать голосование и выяснить это.
В третьих, постарайся аккуратнее пользоваться словами, я же пытаюсь сдерживаться, хотя мне сложно
133 DrShad
 
02.08.12
16:23
(132) +1
тоже прикалывает, что все вокруг дебилы, а prog2012 мегапостроитель вложенных запросов и весь белый
134 izekia
 
02.08.12
16:24
(130) если ты такой дартаньян и видишь главное знание в написании запросов в 1С - умение лепить вложенные запросы, то как бы не о чем дальше общаться
сходи кстати на сертификаты, кстати, посдавай, забавно будет поржать
135 prog2012
 
02.08.12
16:25
(132)отлаживать это как? )))
(133)ну ты сам предложил назвать всех дураками, я просот уточнил что вданном случае это прежде всего вредители
136 izekia
 
02.08.12
16:25
умение писать запрос - это в первую очередь логика его построения, собрать его во вложенные или разобрать на отдельные - это вообще не имеет отношения к делу по сути
137 izekia
 
02.08.12
16:26
(135) совсем не в себе?  вложенные запросы по твоему легче отладить?
я получаю результат запроса плюс результаты в промежуточных таблицах и легко могу отладить на любом этапе
138 prog2012
 
02.08.12
16:30
(137)как отладить? частично его не выполнишь, он требует заполненных временных таблиц, такое даже в ms sql не прокатит нето что в 1С
139 DrShad
 
02.08.12
16:38
(138) и снова если ты не видел как отлаживается пакетник, это еще не значит что его сложно отлаживать, кстати с использованием нормальной консоли не сложнее чем вложенные
140 izekia
 
02.08.12
16:47
(138) не говоря уже о спецсредствах я могу просто закомментировать поместить, и выделив нужный мне кусок просто выполнить
141 SoulPower
 
02.08.12
17:25
Вложенные запросы вообще нужно запретить)
142 izekia
 
02.08.12
17:46
не уходи, сейчас прог придет
143 DrShad
 
02.08.12
17:50
(142) а смысл ему приходить? он застрял на вложенных запросах и дальше не развивается - не приведи господь у такого проходить собеседование
144 izekia
 
02.08.12
17:56
(143) ну по сути вложенные часто оптимальнее будут
надо голосовалку сделать
145 DrShad
 
02.08.12
17:57
(144) я же не отрицаю вложенные на корню, но как ты сам говорил если один и тот же вложенный юзается несколько раз, то это уже ВТ
146 Лоботряс
 
02.08.12
18:32
Только я в (95) не увидел решения условия "Необходимо учитывать, что документы могут быть оформлены в выходные дни, а курс валют на выходные дни действует с пятницы"? Тут видимо не только некорректная постановка задачи, но и некомпетентность собеседующего.
147 izekia
 
02.08.12
19:13
(146) а что не так?
148 Лоботряс
 
02.08.12
19:24
(147)Ну как минимум во второй задаче нужно указать по данным какого регистра получать данные по товарам...
149 Лоботряс
 
02.08.12
19:27
И структуры регистров указать...  Типовые - они ведь все разные.
150 prog2012
 
02.08.12
22:42
(146)смотри лучше
(149)палишся)))
151 etc
 
02.08.12
23:14
Наоборот надо временные таблицы запретить. Насилуют tempdb во все щели как хотят.
152 koreav
 
03.08.12
00:38
(151) поддержка кода как в (95) обходится дороже нового железа
153 Aurum
 
03.08.12
21:08
(26) Вот что вышло
по списку сотров

ВЫБРАТЬ
   РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо,
   РаботникиОрганизацийСрезПоследних.Должность,
   РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения,
   РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.Пол,
   ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,
   ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
   ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
   ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
   КонтактнаяИнформация.Поле1 КАК ИндексАдресПоПаспорту,
   КонтактнаяИнформация1.Поле1 КАК ИндексАдресФактический,
   ПаспортныеДанныеФизЛицСрезПоследних.ДатаРегистрацииПоМестуЖительства
   ИЗ
   РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
       ПО РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ПО РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо = КонтактнаяИнформация.Объект
       И (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
               И (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица))
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация1
           ПО РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо = КонтактнаяИнформация1.Объект
               И (КонтактнаяИнформация1.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
               И (КонтактнаяИнформация1.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактАдресФизЛица))
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияТелефон
           ПО  РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо= КонтактнаяИнформацияТелефон.Объект
               И (КонтактнаяИнформацияТелефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
               И (КонтактнаяИнформацияТелефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонФизЛица))
154 Злопчинский
 
03.08.12
21:22
я не спец в запросах, но этот запрос не вызывает у меня чувство прекрасного
155 prog2012
 
04.08.12
13:33
(153)щас заплюют... не использовал временные таблицы )))
156 etc
 
05.08.12
03:07
(152) чрезмерное увлечение временными таблицами способно превратить самое дорогостоящее железо в тормозящий калькулятор
Ошибка? Это не ошибка, это системная функция.