Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Тест по запросам 1С

Тест по запросам 1С
Я
   igorkms
 
17.10.19 - 16:04
Сегодня ходил на тестирование при устройстве на работу и не смог решить вот такую задачу:

КоличествоМесяцев - нужно выдавать сотруднику через это количество месяцев спецодежду.
Есть только два параметра:
НачДата - 01.01.2016
КонДата - 01.01.2018

Текст изначального запроса:

ВЫБРАТЬ
        Спецодежда.Номенклатура,
    Спецодежда.КоличествоМесяцев
ИЗ
    РегистрСведений.Спецодежда КАК Спецодежда

Результат:

|------------|-----------------|
|Номенклатура|КоличествоМесяцев|
|------------|-----------------|
|Куртка      |                6|
|------------|-----------------|
|Сапоги      |                8|
|------------|-----------------|
|Тапочки     |               12|
|------------|-----------------|

Доработать запрос который бы выводил информацию в начале какого месяца нужно выдать спецодежду:
Так должен выглядеть результат:

|------------|-----------------|
|Номенклатура|   Дата выдачи   |
|------------|-----------------|
|Куртка      |       01.01.2016|
|------------|-----------------|
|Куртка      |       01.07.2016|
|------------|-----------------|
|Куртка      |       01.01.2017|
|------------|-----------------|
|Куртка      |       01.07.2017|
|------------|-----------------|
|Сапоги      |       01.01.2016|
|------------|-----------------|
|Сапоги      |       01.09.2016|
|------------|-----------------|
|Сапоги      |       01.05.2017|
|------------|-----------------|
|Тапочки     |       01.01.2016|
|------------|-----------------|
|Тапочки     |       01.01.2017|
|------------|-----------------|

Есть кто сможет решить?)
 
 
   H A D G E H O G s
 
1 - 17.10.19 - 16:07
Выбрать КоличествоМесяцев для нужной номенклатуры и обработать на сервере 1С.
Делающих это запросом - слать в сад.
   RomanYS
 
2 - 17.10.19 - 16:08
(0) Есть)
   igorkms
 
3 - 17.10.19 - 16:17
(1) Можете пример запроса написать?
(2) Я и не сомневался)
   igorkms
 
4 - 17.10.19 - 16:17
(1) Для общего развития
   Жан Пердежон
 
5 - 17.10.19 - 16:20
(3)
1. в зарос передать таблицу с датами
2. самому её сгенерировать в запросе
   RomanYS
 
6 - 17.10.19 - 16:22
(4) нужно сгенерить таблицу со счетчиком. А дальше соединение с условием на дату.
Само поле
ДобавитьКДате(&НачДата, Месяц, Таб.КоличествоМесяцев*ТаблицаСоСчетчиком.Индекс)
   palsergeich
 
7 - 17.10.19 - 16:29
Документом выдачи спецодежды делать запись в РС вперёд, когда надо будет эту спецуху менять
Состав регистра - 3 измерения: сотрудник, дата, номенклатура. Дата - заполняется как дата документа выдачи + СПИ
Запрос тривиальный
Выбрать номенклатура из регистр.какой то где сотрудник=сотрудник и дата между началоМесяца и Конец месяца, но так как в задаче начало месяца, то задачу можно упростить записывая дату всегда на начало месяца и условие так же
   palsergeich
 
8 - 17.10.19 - 16:31
(7) но это реальное использование в этой учебной задаче надо всего лишь:
От даты в регистре до даты запроса разбить на интервалы и все
   Жан Пердежон
 
9 - 17.10.19 - 16:39
(7) (8) где ты тут регистр с датами увидел?
   palsergeich
 
10 - 17.10.19 - 16:40
(9) Ща
   palsergeich
 
11 - 17.10.19 - 16:55
ВЫБРАТЬ
    "Куртка" КАК Номенклатура,
    6 КАК СПИ,
    &ДатаНачала КАК ДатаНачала
ПОМЕСТИТЬ ТипоРегистр

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

ВЫБРАТЬ
    "Сапоги",
    8,
    &ДатаНачала

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

ВЫБРАТЬ
    "Тапочки",
    12,
    &ДатаНачала
;

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

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

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

ВЫБРАТЬ
    2

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

ВЫБРАТЬ
    3

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

ВЫБРАТЬ
    4

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

ВЫБРАТЬ
    5

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

ВЫБРАТЬ
    6

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

ВЫБРАТЬ
    7

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

ВЫБРАТЬ
    8

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

ВЫБРАТЬ
    9

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

ВЫБРАТЬ
    0
;

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

ВЫБРАТЬ
    100 * Числа.Поле1 + 10 * Числа1.Поле1 + Числа2.Поле1 КАК Сдвиг
ПОМЕСТИТЬ Итератор
ИЗ
    Числа КАК Числа,
    Числа КАК Числа1,
    Числа КАК Числа2
;

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

ВЫБРАТЬ
    ТипоРегистр.Номенклатура КАК Номенклатура,
    ДОБАВИТЬКДАТЕ(ТипоРегистр.ДатаНачала, МЕСЯЦ, Итератор.Сдвиг) КАК ДатаВыдачи
ИЗ
    ТипоРегистр КАК ТипоРегистр,
    Итератор КАК Итератор
ГДЕ
    (ВЫРАЗИТЬ(Итератор.Сдвиг / ТипоРегистр.СПИ КАК ЧИСЛО(15, 0))) = Итератор.Сдвиг / ТипоРегистр.СПИ
    И ДОБАВИТЬКДАТЕ(ТипоРегистр.ДатаНачала, МЕСЯЦ, Итератор.Сдвиг) <= &ДатаОкончания

УПОРЯДОЧИТЬ ПО
    Номенклатура,
    ДатаВыдачи
10 минут ковыряясь в носу
   palsergeich
 
12 - 17.10.19 - 16:57
https://pastebin.com/veWRmBdX
Вот более удобно
   RomanYS
 
13 - 17.10.19 - 16:58
(11) условие лучше во внутреннее соединение и условие можно попроще переписать
Придирки)
   Йохохо
 
14 - 17.10.19 - 16:59
(11) (15, 0) чтобы показать что фуражка сидит как влитая?)
   palsergeich
 
15 - 17.10.19 - 17:01
(14) нужно кратно СПИ. В запросе нет функции остатка от деления.
Если результат деления равен округлению до целого то это и есть эмуляция функции %
   RomanYS
 
16 - 17.10.19 - 17:09
(15)делить не нужно совсем. См (6)
   palsergeich
 
17 - 17.10.19 - 17:10
(16) мое решение изящнее и решено чисто на запросе без кода 1с
   RomanYS
 
18 - 17.10.19 - 17:12
(17) изящнее чем что? В (6) оно и описано. Только условия без деления
   palsergeich
 
19 - 17.10.19 - 17:14
(18) ну ок, это одна из реализаций на скору руку, решение верное и валидное
   igorkms
 
20 - 17.10.19 - 18:36
(18) (19) Две головы, мне расти и расти)
   Ёпрст
 
21 - 17.10.19 - 18:54
(20) прочитай эту книжку, тоже голова отрастёт:
Microsoft SQL Server 2012. Основы T-SQL
by Ицик Бен-Ган
   Ёпрст
 
22 - 17.10.19 - 18:59
ну и ежели интерес будет, тут поиграться
http://www.sql-ex.ru/?Lang=
   xXeNoNx
 
23 - 17.10.19 - 21:06
Другой вопрос: а как относитесь к тестовому заданию, где решить нужно задачу-аналог как на экзамене спеца по платформе, с учетом того что этот серт у тебя уже присутствует?
   palsergeich
 
24 - 17.10.19 - 21:55
(23) Яна полном серьезе говорю что у меня еще 6 предложений и на каждое тратить на тестовое по несколько часов я не готов. Или очно или пока.
   xXeNoNx
 
25 - 17.10.19 - 22:49
(24) Аналогично, после некой фирмы, которая проводит лотереи, где мне дали тестовое аналог со спеца, я конечно потратил 2 часа, но не стал работать там, впредь сразу уточняю есть ли тестовое задание и в каком виде, если надо что-то писать, сразу лесом идут. Буквально на днях частичную удаленку так отмел, пришел, пообщались, вроде все норм, сказали дадим тебе реальную задачу, справишься, возьмем..., я не стал справляться
   palsergeich
 
26 - 17.10.19 - 22:53
(25) мне в одном месте понравилось как было:
Заранее сказали все про все 2 часа.
И беседа с HR и беседа с руком и тестовое задание тут же, простенькое но нетривиальное и сразу оффер и на СБ документы отправили. 3 дня ожидания одобрения СБ и выход. ИМХО - эталон как надо, а не эти 100500 ступеней собеседований на пару месяцев длиной
   xXeNoNx
 
27 - 17.10.19 - 23:03
(26) Да, согласен, все четко и без воды.., если рук. грамотный, то через полчаса общения уже складывается впечатление о кандидате, но если задание служит для того что бы скинуть офер от заявленного это капец. Еще контора была висит 2 вакансии на старшего и ведущего, приглашают на ведущего: звонят рассказывают о конторе, спрашивают знаете то, знаете это, отвечаю что с этим сталкивался, с этим не приходилось(что-то про какую-то типовую было) и отвечают ну так  как вы не достаточно знаете, можете претендовать на старшего, соответственно с меньшим окладом, причем это был уровень HR.
   Скиурус
 
28 - 18.10.19 - 00:24
За (11) я бы пожизненно лишал доступа в конфигуратор и выдавал метлу.
А решать нужно так:

ВЫБРАТЬ
    "Куртка" КАК Номенклатура,
    6 КАК СПИ
ПОМЕСТИТЬ ТипоРегистр

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

ВЫБРАТЬ
    "Сапоги",
    8

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

ВЫБРАТЬ
    "Тапочки",
    12
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ РАЗЛИЧНЫЕ
    НАЧАЛОПЕРИОДА(КалендарныеГрафики.ДатаГрафика, МЕСЯЦ) КАК Дата
ПОМЕСТИТЬ тДаты
ИЗ
    РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
ГДЕ
    КалендарныеГрафики.ДатаГрафика МЕЖДУ &НачДата И &КонДата
;

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

ВЫБРАТЬ
    ТипоРегистр.Номенклатура,
    тДаты.Дата
ИЗ
    ТипоРегистр КАК ТипоРегистр
        ЛЕВОЕ СОЕДИНЕНИЕ тДаты КАК тДаты
        ПО (РАЗНОСТЬДАТ(тДаты.Дата, &НачДата, МЕСЯЦ) / ТипоРегистр.СПИ = (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(тДаты.Дата, &НачДата, МЕСЯЦ) / ТипоРегистр.СПИ КАК ЧИСЛО(10, 0))))
   DrZombi
 
29 - 18.10.19 - 06:31
(0) Ты туда не пошел, молодец... бред сивой кобылы :)
   DrZombi
 
30 - 18.10.19 - 06:33
(28) Вы в условии (0) Видите Регистр "Календарные графики"? :)
 
 Рекламное место пустует
   DrZombi
 
31 - 18.10.19 - 06:33
+ В условии нет описания, что за конфигурация и есть ли еще какие либо таблицы :)
   DrZombi
 
32 - 18.10.19 - 06:34
(1) А количество месяцев вы будете считать от какой даты...
От начала или с конца? :)
   DrZombi
 
33 - 18.10.19 - 06:38
+(0) Задача решается тупым сдвигом от начала даты... задача тупая, как и тестировщик.
Давай разберем твой результат, коль тебе его озвучили:

1. Результат некорректен, почему надо, что бы была начальная дата?
2. Негде в постановке это не озвучено, тут либо постановщик дурак, либо ты должен был у него уточнять, что делать (проверка как ты работаешь с пользователями)
   DrZombi
 
34 - 18.10.19 - 06:39
+ Единственное ще, зачем тут конечная дата?...
Просто любопытно, что бы поржать :)
   Nikoss
 
35 - 18.10.19 - 07:03
(27) в чем разница старший/ведущий?
   Скиурус
 
36 - 18.10.19 - 08:22
(30) Я в условии даже не вижу, что это платформа 1С. Но мы ж тут вроде все инженеры, и разумными умолчаниями должны уметь пользоваться.
   DrZombi
 
37 - 18.10.19 - 09:02
(36) Точно... задача не о чем :)
   DrZombi
 
38 - 18.10.19 - 09:03
+(36) По умолчанию, это только в школьных задачах, в жизни за по-умолчанию увольняют и лишают премии :)
   Cyberhawk
 
39 - 18.10.19 - 09:06
(23) Если тестовое задание любое больше чем на полчаса, то сразу спрашиваю, оплачивается ли оно. А уж если оплачивается, то без разницы, задача со спеца там или что-то другое.
   Cyberhawk
 
40 - 18.10.19 - 09:06
(25) "сказали дадим тебе реальную задачу, справишься, возьмем" // Безплатно что ли? ))
   Cyberhawk
 
41 - 18.10.19 - 09:08
(35) В деньгах на руки, наверное. Ведущий больше старшего.
   xXeNoNx
 
42 - 18.10.19 - 09:09
(35) у них в ЗП
   mikecool
 
43 - 18.10.19 - 09:12
(15) " В запросе нет функции остатка от деления. "
а это:
15/4 - выразить(15/4 как число(15,0))
?
   Скиурус
 
44 - 18.10.19 - 09:13
(38) Как раз наоборот. В школьных задачах мне поставят двойку, а в жизни уволят за говнокод из (11) и за незнание того, что в конфе есть регистр с датами.
   xXeNoNx
 
45 - 18.10.19 - 09:15
(39)каждый для себя ставит планку, если они на собеседовании начинают мозг выносить, что будет после, проверять не хотелось. Кстати, думаю что после вопроса об оплате собеседования более получаса данные конторы сразу отсеятся
   xXeNoNx
 
46 - 18.10.19 - 09:16
(40) не совсем, думаю это бы вошло в будущую ЗП
   Cyberhawk
 
47 - 18.10.19 - 09:16
(45) "думаю что после вопроса об оплате собеседования более получаса данные конторы сразу отсеятся"// Так и отсеиваются)

Задачку из спеца за деньги еще ни разу не делал)
   RomanYS
 
48 - 18.10.19 - 09:55
(44) Так его регистра нет - запустили, не работает. Это же тест)
   dubraver
 
49 - 18.10.19 - 10:36
Решение на T-SQL:
declare @t1 table (product varchar(10), mCount int)
insert into @t1 select 'Куртка', 6 union  select 'Сапоги', 8 union select 'Тапочки', 12

declare @dateFrom date, @dateTo date
select  @dateFrom = '2016-01-01', @dateTo = '2018-01-01';

with cte_
as
(
    select @dateFrom as _date, mCount, product from @t1
    union all
    select DATEADD(month, mCount, _date),mCount, product
    from cte_
    where DATEADD(month, mCount, _date) < @dateTo 
)
select product, _date  from cte_ order by product, _date;
   Ёпрст
 
50 - 18.10.19 - 11:00
(49) ага, а теперь тоже самое, на 2000 sql )
   spiller26
 
51 - 18.10.19 - 11:20
(28) Не во всех конфигурациях есть такой РС
Довольно часто встречаю задачи подобного типа, особенно идет задача "Остатки на  каждый день".
Самый распространённый пример "Курс валюты на каждый день".
   Новиков
 
52 - 18.10.19 - 11:37
(51) остатки на каждый день хорошо обмусолил ильдарович на исе. Он там эталонное решение выкладывал.

(0) ТС, на какую зп такое садо-мазохизм? И решение по памяти надо писать при них онлайн?
   igorkms
 
53 - 19.10.19 - 11:02
(29) Я тоже понял, после поставленной задачи, что это тупари если дают такие задания которые в жизни никогда и не понадобятся. Вообще контора простая, из задач основных был переход с УТ 10 на 11
(52) ЗП от 120, на решение давалось 2 часа, у них, плюс еще две задачи (попроще), вспомню напишу позже.


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