Имя: Пароль:
1C
1С v8
Задача на собеседовании
,
0 skela1c
 
25.08.16
09:34
Есть такая задачка
Разработать тестовую обработку. На форме обработки разместить табличную часть с полями «Дата», «Валюта», «Курс». Поля «Дата»  и «Валюта» заполняются пользователем, поле «Курс» заполняется нажатием на кнопку «Сформировать». Реализовать заполнение поля «Курс» одним запросом. Предполагаем, что в табличной части могут быть одинаковые валю-ты на разные даты. Курсы валют берем из типового регистра «Курсы валют».Подскажите как её можно решить, очень интересно для общего развития
17 DrZombi
 
гуру
25.08.16
09:54
(0) Нормальная задача. Вот некоторые дают задачу, написать некую конфигурацию БД. С минимальным учетом :)
И что бы это все еще работало по принципу УРБД но через Веб сервисы :)

...
Срок решения до недели, две :)
18 Mort
 
25.08.16
09:56
Знаю вагон невменько, которые бы эту задачу решили. Сам собеседую часто.
19 lubitelxml
 
25.08.16
09:57
(17) на какую зп дают такие тестовые задания?
20 Garykom
 
гуру
25.08.16
09:59
(16) Ну вот я реально не представляю как "Реализовать заполнение поля «Курс» одним запросом", если подразумевается "поле на форме".

Как минимум загрузить в ТЧ из результата запроса потребуется.
21 zak555
 
25.08.16
10:00
зачем нужны задачи на собеседованиях ?
22 Михаил Козлов
 
25.08.16
10:00
(8) А если в регистре нет курса на дату в ТЗ?
23 IlyaSR
 
25.08.16
10:03
(22) ну выведи 0, если Курс число
24 Mort
 
25.08.16
10:04
(21) Ну типа продемонстрировать навыки. В данном случае продемонстрировать навык получения курсов валют на дату.
Вот приходит сантехник на собеседование, а ему хоп - унитаз с протечкой, давай покажи что умеешь.
25 PCcomCat
 
25.08.16
10:05
(0)Собрать временную таблицу из табличной части, далее левое соединение с регистром сведений по дате и валюте, загрузка результата. Как-то так...
26 zak555
 
25.08.16
10:05
(24) надо реальную задачу давать
27 Mort
 
25.08.16
10:06
Можно было бы просто спросить знаешь ли механизм получения среза на дату и сэкономить вагон времени для других вопросов, но к сожалению "собеседуют" ровно такие каких и "набирают".
28 Михаил Козлов
 
25.08.16
10:06
(23) Курс нужен из среза последних.
29 DrZombi
 
гуру
25.08.16
10:07
(19) на мнимые 60 000 рублей :)
30 skela1c
 
25.08.16
10:08
если использовать менеджер временных таблиц, как потом в запросе связаться с временной таблицей?
31 Mort
 
25.08.16
10:10
(26) Не надо никаких задач на собеседовании давать. Поэтому и назвали соБЕСЕДование, а не решение ребусов.
32 DrZombi
 
гуру
25.08.16
10:11
(0) Решение:
1. Добавить Табличную часть с колонками:
        - «Дата», «Валюта», «Курс»
2. При изменении значений в колонках "«Дата», «Валюта»", должна пересчитываться значение в колонке "Курс"

:)
33 igork1966
 
25.08.16
10:12
Кроме (5), есть еще один способ....
Выгрузить из ТЧ дата+валюта, свернуть. Сформировать текст запроса с объединением. Обойти результат и по ключу дата+валюта заполнить в ТЧ
34 DrZombi
 
гуру
25.08.16
10:12
(33) Чет вы все усложняете :)
35 hhhh
 
25.08.16
10:13
(30) не используй менеджер. просто пакетный запрос.
36 igork1966
 
25.08.16
10:15
(34) Ну (32) не выполняет условия в (0)
37 DrZombi
 
гуру
25.08.16
10:15
(33)  Поля «Дата»  и «Валюта» заполняются пользователем,

поле «Курс» заполняется нажатием на кнопку «Сформировать»

...
В коей степени бредово, но получается сперва пользователь добавляет строчки. А после по кнопочке заполняется курс :)

И все сделать одним запросом, при этом не значит, что без временных таблиц и тому подобному :)
38 DrZombi
 
гуру
25.08.16
10:15
(36) Частично, не выполняет :)
39 zak555
 
25.08.16
10:16
(31) так на собеседовании как раз и нужно понять, как новенький будет решать задачи реальные
40 igork1966
 
25.08.16
10:16
(37) понятно что задача "виртуальная"
41 DrZombi
 
гуру
25.08.16
10:17
(39) Вот, поставили реальную задачу, на подобие в (17)... С формулировкой, что бы мы там могли вести учет :)
42 Lama12
 
25.08.16
10:17
(0) Хе... обычно прошу рассуждения на данную тему, т.к. написанный запрос можно и с интернета взять.
43 igork1966
 
25.08.16
10:17
(40) и в отличии от, проверяет понимание как работают РС и минимальные знания языка запросов
44 Mort
 
25.08.16
10:18
(39) За пять минут разговора становится очень хорошо понятно как он их будет решать. Вместо того чтобы сажать за комп, ставить задачу, ждать пока сделает, достаточно задать три вопроса чтобы понять может он её решить или нет и как.
45 DrZombi
 
гуру
25.08.16
10:18
(43) Минимальными там не обойтись :)
46 igork1966
 
25.08.16
10:21
(45) если только под минимальными понимать SELECT FROM WHERE
47 impulse9
 
25.08.16
10:25
Мне недавно дали "тестовое задание" - разработать обработку и 3 документа по учету дебеторки в ERP, по гтовому и подписанному ТЗ. Я подумал, что день тратить на тестовое задание это черезчур.
48 igork1966
 
25.08.16
10:27
(47) Это да. И для понимания квалификации вовсе необязательно реализовывать (0), можно просто описать как будет делать.
49 DrZombi
 
гуру
25.08.16
10:28
(47) Я тоже подумал, что писать конфигурацию, для тех. кто не может её толком проверить. Без ИТ специалиста. Лукавит в области оговоренной ЗП :)
50 spock
 
25.08.16
10:33
(21) Потому что приходят люди с красивыми резюме четкими рассказами успешно выполненных задач. На словах все замечательно. А вот садишь таких кандидатов за комп и просишь сделать простейшую вещь (например, проводимый документ с примитивными движениями по регистру) и начинает из них лезть вся шняга. То им нужны типовые, чтобы подсмотреть код, то им нужен интернет. И в итоге выдают, что не нравится им такое тестовое задание.
51 Garykom
 
гуру
25.08.16
10:37
(50) Прикинь чтобы решить задачу (0) мне потребуется СП и интернет "на чтение".
52 impulse9
 
25.08.16
10:37
(50) примитивные и не очень вещи проверяются наличием сертификата по платформе )
53 impulse9
 
25.08.16
10:38
(50) и на нем кстати разрешают пользоваться ИТС и ЖКК
54 ИС-2
 
naïve
25.08.16
10:38
(14) подумать о чем?
(22) для того и сделано левое соединение, если курса валюты не будет
55 Garykom
 
гуру
25.08.16
10:38
(51)+ Потому что я в упор не помню как из результата запроса в ТЗ, вроде бы "Выполнить().Выгрузить()" но совершенно не уверен...
56 impulse9
 
25.08.16
10:39
(55) чтобы это посмотреть, если забыл, интернет не нужен, достаточно Ctrl+F1 (ты это и без меня знаешь)
57 spock
 
25.08.16
10:40
+51 а был в опыте вообще стремный курьез - принятый кандидат на второй день слился по собственному. Была поставлена первая примитивная задача - вот тебе приличного размера список кодов элементов справочника, нужно их найти в базе и подправить по примитивному правилу наименование (накосячили пользователи). А так как это был второй день, то инета у сотрудника еще не было. Это было шоу :)
И были обвинения, что у нас управляемые формы (а в вакансии и на собеседовании было про УФ) и есть самописка. И вообще что это за работе, где нет доступа в инет :)
58 igork1966
 
25.08.16
10:41
(54) если на дату в физической таблице РС нет записи, это не значит что на эту дату нет курса
59 spock
 
25.08.16
10:42
(52) Да в том и дело, что все эти резюме и сертификаты хе.ня, пока человека не посадишь за комп.
Сейчас резюме научились писать почти все - читаешь и радуешься, что такой алмаз нашел. А на деле все может сложиться иначе.
60 Garykom
 
гуру
25.08.16
10:42
(57) Пф... просто без инета будет долгий поиск по СП/ИТС/конфе или эксперименты.


(58) Как минимум должна быть запись на дату "до этого"
61 igork1966
 
25.08.16
10:45
(60) ты почитай что он писал... типа сделает это проще простым левым соединением... а тм видишь ли усложняют, группировку делают чтобы получить предыдущие записи
62 ProgAL
 
25.08.16
10:47
(60) +1. Причем я не помню как вывести СКД программно, т е создать макет настроек, инициализировать процессор компоновки итд. Поэтому подсмотреть в типовую вполне разумное пожелание.
63 spock
 
25.08.16
10:48
+51 Был кандидат, который выполняя тестовое задание, сделал проведение документа в обработчике ПриЗаписи. Ну как сделал.. У него ничего не работало :) На вопрос науя так делать, ведь есть спец.обработчик, мне было выдано: "В задании четкого критерия способа реализации не было, сделал так нестандартно. Я мыслю нестандартно". Занавес!

И прикинь, взять такой "алмаз" на продакшен?
64 Garykom
 
гуру
25.08.16
10:49
(61) А нельзя соединить по условию "дата получения" >= "дата записи регистра"?
65 igork1966
 
25.08.16
10:50
(51) +1
1С усложнилась настолько что без СП не всегда получается.... особенно если что-то редко в практике использовалось.
66 Nuobu
 
25.08.16
10:51
(63) У меня тоже был когда-то коллега, который печатные формы держал на форме, хотя были подключены типовые механизмы.
(64) Тогда задвоится.
67 spock
 
25.08.16
10:52
(60) Какой долгий поиск? Взял код из списка, нашел по коду в справочнике, из ссылки получил объект, поправил наименование, записал объект.

Да это должен уметь любой 1сник! Ради бога - есть СП, читай параметры и названия методов.
68 igork1966
 
25.08.16
10:52
(64) там будет множество записей по каждой дате+валюта, нужно сначала вычислить последнюю группировкой, потом еще одним соединением выбрать курс
69 Garykom
 
гуру
25.08.16
10:52
(66) Хм задвоение в том же запросе убрать, ну да будет пакетка и что?
70 Nuobu
 
25.08.16
10:53
(69) Задвоение убирается как в (68) описано, а не как ты описал. Ты неправильное значение выведешь, если будешь тупо группировать.
71 spock
 
25.08.16
10:53
(66) Работающее относительно нестандартное решение сильно отличается от неработающего колхоза.
72 igork1966
 
25.08.16
10:53
(68) + еще вариант с программным формированием запроса (где будет использовано соединение с срезом столько раз сколлько различных дат)
73 Garykom
 
гуру
25.08.16
10:54
(67) Гм вот дадут те 1С77 переписанную на прямые запросы и что? "Да это должен уметь любой 1сник!"
74 Garykom
 
гуру
25.08.16
10:55
(73)+ В смысле где даже запись элементов и проведение доков через прямые запросы сделана, а не штатно...
75 Nuobu
 
25.08.16
10:57
(73) А в этой вашей семёрке, если она переписана на прямые запросы, нельзя пользоваться обычными вещами вроде "Справочники.Номенклатура.НайтиПоКоду()"?
76 impulse9
 
25.08.16
10:58
(75) "у нас прошлый программист делал быстрее все работало. А нам Вас рекомендовали как специалиста..."
77 spock
 
25.08.16
10:58
(73) Было бы прикольно попасть в такую ситуацию. Но это задачи несравнимого порядка. Примитивная задача уровня helloworld и хард-продакшен.
78 Garykom
 
гуру
25.08.16
10:58
(75) Хаха, можно но этим ты повесишь базу с 500+ юзерами онлайн
79 DrZombi
 
гуру
25.08.16
10:59
(73) Я буду ликовать... наконец опять нормальные запросы :)
80 spock
 
25.08.16
11:00
+77 скорректирую так: Было бы прикольно вернуться в такую ситуацию.
81 DrZombi
 
гуру
25.08.16
11:00
(75) Можно, но это долго. Переписывают на прямые уже большие БД, которые не шевелятся на обычных запросах от 1С :)
82 Nuobu
 
25.08.16
11:00
(76) (78) Ну, на то я новый программист. А тут - нетиповое решение. Я, например, ваши прямые запросы не знаю. И, если в описании вакансии такое НЕ будет описано, то и не нужно удивляться, что я этого не знаю. Я ОБЯЗАН знать по умолчанию всякие СП.
83 impulse9
 
25.08.16
11:02
(82) "Вы некомпетентны, прощайте. А ведь какое хорошее резюме. Пойду напишу про Вас на мисте"
84 Nuobu
 
25.08.16
11:03
(83) Да, уж, не работать мне в Вашей компании.
85 spock
 
25.08.16
11:04
(84) Да ты погоди отказываться :)
86 Nuobu
 
25.08.16
11:05
(85) Думаешь, на джуна/подавана/развозчика коробок возьмут?
89 Garykom
 
гуру
25.08.16
11:08
(87) (88) Решил съэкономить?
90 Nuobu
 
25.08.16
11:09
(89) без твёрдого знака.
91 impulse9
 
25.08.16
11:10
(87) удаленка?
если да то вышлю резюме )
92 elCust
 
25.08.16
11:11
(87) > (91) +1
93 Garykom
 
гуру
25.08.16
11:12
(90) Это авторское ))
94 spock
 
25.08.16
11:16
(89) Экономить можно, когда есть бюджет. А здесь просто указание: продолжай активный поиск :)

Я эти 2 т.р. на объяву на мисте буду согласовывать год.
95 spock
 
25.08.16
11:17
(91) "Готовы дать масштабные и разнообразные задачи" и удаленка плохо стыкуются.
96 Nuobu
 
25.08.16
11:18
(94) Поэтому решил выложить в чужой ветке?
98 PR
 
25.08.16
11:19
(94) А так теперь год будешь в бане сидеть :))
101 vyaz
 
25.08.16
11:47
(87) я на 70-80 найти не могу, а ты 60 нарисовал
102 impulse9
 
25.08.16
11:47
(101) удаленка? )))
103 vyaz
 
25.08.16
11:49
(102) не подходит, по удаленке красиво дуть в уши пользователям не выйдет :)
104 spock
 
25.08.16
12:36
(101) В Новосибирске?
105 vyaz
 
25.08.16
12:56
(104) именно в нем
106 spock
 
25.08.16
13:15
(105) я вакансий с таким уровнем з/п не вижу на хх.ру. Рынок - 60 т.р.

Есть, конечно, БКС и другие крупняки. Но там деньги и почет :)
107 vyaz
 
25.08.16
13:30
(106) На нгс точно есть, я не в курсе где кадровик их размещает и как.
108 В тылу врага
 
25.08.16
13:35
109 KODin1C
 
25.08.16
13:58
(0)

ВЫБРАТЬ
    ТЗ.Дата КАК Дата,
    ТЗ.Валюта,
    ТЗ.НомерСтроки КАК НомерСтрокиТЧ
ПОМЕСТИТЬ втТабличнаяЧасть
ИЗ
    &ТЗ КАК ТЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КурсыВалют.Период,
    КурсыВалют.Валюта,
    КурсыВалют.Курс,
    КурсыВалют.Кратность
ПОМЕСТИТЬ втКурсы
ИЗ
    РегистрСведений.КурсыВалют КАК КурсыВалют
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВложенныйЗапрос.Дата,
    ВложенныйЗапрос.Валюта,
    ВложенныйЗапрос.НомерСтрокиТЧ,
    ВложенныйЗапрос.Курс
ИЗ
    (ВЫБРАТЬ
        взПериодКурса.Дата КАК Дата,
        взПериодКурса.Валюта КАК Валюта,
        взПериодКурса.НомерСтрокиТЧ КАК НомерСтрокиТЧ,
        ЕСТЬNULL(втКурсы.Курс, 0) КАК Курс
    ИЗ
        (ВЫБРАТЬ
            втТабличнаяЧасть.Дата КАК Дата,
            втТабличнаяЧасть.Валюта КАК Валюта,
            втТабличнаяЧасть.НомерСтрокиТЧ КАК НомерСтрокиТЧ,
            МИНИМУМ(ЕСТЬNULL(втКурсы.Период, ДАТАВРЕМЯ(1, 1, 1))) КАК Период
        ИЗ
            втТабличнаяЧасть КАК втТабличнаяЧасть
                ЛЕВОЕ СОЕДИНЕНИЕ втКурсы КАК втКурсы
                ПО втТабличнаяЧасть.Валюта = втКурсы.Валюта
                    И втТабличнаяЧасть.Дата >= втКурсы.Период
        
        СГРУППИРОВАТЬ ПО
            втТабличнаяЧасть.Дата,
            втТабличнаяЧасть.Валюта,
            втТабличнаяЧасть.НомерСтрокиТЧ) КАК взПериодКурса
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКурсы КАК втКурсы
            ПО взПериодКурса.Валюта = втКурсы.Валюта
                И взПериодКурса.Период = втКурсы.Период) КАК ВложенныйЗапрос
110 skela1c
 
25.08.16
16:15
ТЗ = Новый ТаблицаЗначений;
    ТЗ = ТабличнаяЧасть1.Выгрузить();
    тз.ВыбратьСтроку();
    
        
        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТЗ.Дата,
        |    ТЗ.Валюта,
        |    ТЗ.Курс
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    &ТЗ КАК ТЗ
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    КурсыВалютСрезПоследних.Валюта,
        |    КурсыВалютСрезПоследних.Курс,
        |    КурсыВалютСрезПоследних.Период
        |ИЗ
        |    ВТ КАК ВТ
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ) КАК КурсыВалютСрезПоследних
        |        ПО
        |(ВТ.Валюта = КурсыВалютСрезПоследних.Валюта И
        |                 КурсыВалютСрезПоследних.Период < ВТ.Дата)";
        
только почему-то показывает на тек. дату, если выбрать какой-нибудь 2007 год, то ничего не возвращает . Что не так?
111 2mugik
 
26.08.16
05:18
(88)Зажал 2 рубля.
112 Vladal
 
26.08.16
09:23
(81) На обычных семерочных запросах не шевелятся и небольшие базы. Живой пример - ТиС, на SQL, работа с ней в терминале.
113 Vladal
 
26.08.16
09:23
(112) +ТиС размером 2 ГБ.
114 Vladal
 
модератор
26.08.16
09:25
(87)(88) Размещение вакансий здесь платное.
115 mkalimulin
 
26.08.16
09:28
(110) Виртуальная таблица "СрезПоследних" в такого рода задачах бесполезна.
116 Vladal
 
26.08.16
09:28
(115) Ну да. Иногда дают задачу "курс валют на дату без виртуальных таблиц".
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший