|
Справедлива ли оценка выполнения тестового задания? | ☑ | ||
---|---|---|---|---|
0
lenkavovka
20.02.23
✎
13:20
|
Делал тестовое на вакансию разработчика. Формат работодателя - дочерняя ИТ-компания, обслуживающая основную. Зарплата по нижней границе рынка.
Задача выглядела так, без каких-либо дополнительных пожеланий: Написать внешнюю обработку для УТ 11, КА 1.1, ЕРП (любой версии): В обработке пользователь выбирает группу номенклатуры, организацию и период. За указанный период обработка ищет всех контрагентов, которым продавались позиции номенклатуры из указанной папки за указанный период по указанной организации. По кнопке «Выполнить» заполняется таблица (в обработке) со следующими колонками: Контрагент – контрагент, Юр. адрес – юридический адрес контрагента, Количество номенклатуры – количество всей проданной номенклатуры (без разбивки по позициям, в единицах хранения), Сумма продажи. Пользователь может отметить галочками необходимые строки, и по кнопке «Печать» - вывести простую печатную форму в виде таблицы с этими колонками (плюс колонка №). Сделал, максимально быстро и компактно. Выборку выгружаем сразу в ТЗ на форме, по кнопке копируем отмеченные галочками строки в отдельную ТЗ, где нумеруем строки и на печать через построитель отчёта, поскольку просили простую форму. Внезапно получаем разгромный отзыв. Теперь гадаю, действительно ли моё решение недостойно? Отписал конечно эйчару предложение указывать в задании требование использовать БСП и макеты, если они ожидают их получить. Обещала донести до руководителя. П.С.: меня не печалит сам отказ, поскольку получил уже более достойные предложение работодателей. Смущает сама оценка. Сам ответ: Задание показывает верный результат, но выполнено с ошибками методологическими и техническими. Используется довольно устаревший метод через построитель запроса, никак не участвует макет, нет использования БСП при выводе, в запросе проблемы с оптимизацией. Моё решение: &НаСервере Процедура ВыполнитьНаСервере() Запрос = Новый Запрос("ВЫБРАТЬ | КлючиАналитикиУчетаПоПартнерам.Ссылка КАК Ссылка, | КлючиАналитикиУчетаПоПартнерам.Контрагент КАК Контрагент |ПОМЕСТИТЬ ВТ_КлючиАналитикиУчетаПоПартнерам |ИЗ | Справочник.КлючиАналитикиУчетаПоПартнерам КАК КлючиАналитикиУчетаПоПартнерам |ГДЕ | КлючиАналитикиУчетаПоПартнерам.Организация = &Организация | И НЕ КлючиАналитикиУчетаПоПартнерам.ПометкаУдаления |; | |//////////////////////////////////////////////////////////////////////////////// | //++-- по рекомендациям 1С разбиваем запрос ключей аналитики номенклатуры на отдельные, чтобы исключить соединение через две точки |ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка |ПОМЕСТИТЬ ВТ_Номенклатура |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ОтборНоменклатуры) | И НЕ Номенклатура.ПометкаУдаления | И НЕ Номенклатура.ЭтоГруппа |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | КлючиАналитикиУчетаНоменклатуры.Ссылка КАК Ссылка |ПОМЕСТИТЬ ВТ_КлючиАналитикиУчетаНоменклатуры |ИЗ | ВТ_Номенклатура КАК ВТ_Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК КлючиАналитикиУчетаНоменклатуры | ПО ВТ_Номенклатура.Ссылка = КлючиАналитикиУчетаНоменклатуры.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_КлючиАналитикиУчетаПоПартнерам.Контрагент КАК Контрагент, | СУММА(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот) КАК КоличествоОборот, | СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК СуммаВыручкиОборот |ПОМЕСТИТЬ ВТ_Продажи |ИЗ | РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &ОкончаниеПериода, , ) КАК ВыручкаИСебестоимостьПродажОбороты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КлючиАналитикиУчетаПоПартнерам КАК ВТ_КлючиАналитикиУчетаПоПартнерам | ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам = ВТ_КлючиАналитикиУчетаПоПартнерам.Ссылка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КлючиАналитикиУчетаНоменклатуры КАК ВТ_КлючиАналитикиУчетаНоменклатуры | ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры = ВТ_КлючиАналитикиУчетаНоменклатуры.Ссылка | |СГРУППИРОВАТЬ ПО | ВТ_КлючиАналитикиУчетаПоПартнерам.Контрагент |; | |//////////////////////////////////////////////////////////////////////////////// | //++-- будем выбирать номер строки самого свежего юр. адреса, чтобы не размножить выборку продаж |ВЫБРАТЬ | КонтрагентыКонтактнаяИнформация.НомерСтроки КАК НомерСтроки, | КонтрагентыКонтактнаяИнформация.Представление КАК ЮрАдрес, | ВТ_Продажи.Контрагент КАК Контрагент |ПОМЕСТИТЬ ВТ_МассивАдресовКонтрагентов |ИЗ | ВТ_Продажи КАК ВТ_Продажи | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация | ПО ВТ_Продажи.Контрагент = КонтрагентыКонтактнаяИнформация.Ссылка | И (КонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МАКСИМУМ(ВТ_МассивАдресовКонтрагентов.НомерСтроки) КАК НомерСтроки, | ВТ_МассивАдресовКонтрагентов.Контрагент КАК Контрагент |ПОМЕСТИТЬ ВТ_МаксимальныеНомераСтрокАдресов |ИЗ | ВТ_МассивАдресовКонтрагентов КАК ВТ_МассивАдресовКонтрагентов | |СГРУППИРОВАТЬ ПО | ВТ_МассивАдресовКонтрагентов.Контрагент |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_МаксимальныеНомераСтрокАдресов.Контрагент КАК Контрагент, | ВТ_МассивАдресовКонтрагентов.ЮрАдрес КАК ЮрАдрес |ПОМЕСТИТЬ ВТ_АдресаКонтрагентов |ИЗ | ВТ_МассивАдресовКонтрагентов КАК ВТ_МассивАдресовКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МаксимальныеНомераСтрокАдресов КАК ВТ_МаксимальныеНомераСтрокАдресов | ПО ВТ_МассивАдресовКонтрагентов.Контрагент = ВТ_МаксимальныеНомераСтрокАдресов.Контрагент | И ВТ_МассивАдресовКонтрагентов.НомерСтроки = ВТ_МаксимальныеНомераСтрокАдресов.НомерСтроки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_Продажи.Контрагент КАК Контрагент, | ВТ_АдресаКонтрагентов.ЮрАдрес КАК ЮрАдрес, | ВТ_Продажи.КоличествоОборот КАК КоличествоНоменклатуры, | ВТ_Продажи.СуммаВыручкиОборот КАК СуммаПродажи |ИЗ | ВТ_Продажи КАК ВТ_Продажи | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_АдресаКонтрагентов КАК ВТ_АдресаКонтрагентов | ПО ВТ_Продажи.Контрагент = ВТ_АдресаКонтрагентов.Контрагент"); Запрос.УстановитьПараметр("НачалоПериода", ПериодОтбора.ДатаНачала); Запрос.УстановитьПараметр("ОкончаниеПериода", ПериодОтбора.ДатаОкончания); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ОтборНоменклатуры", ОтборНоменклатуры); ТЗ.Очистить(); ТЗ.Загрузить(Запрос.Выполнить().Выгрузить()); КонецПроцедуры &НаКлиенте Процедура КомандаВыполнить(Команда) Если ПроверитьЗаполнение() Тогда ВыполнитьНаСервере(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПечатьОтмеченных(Команда) ТабДок = ПечатьОтмеченныхНаСервере(); ТабДок.Показать(); КонецПроцедуры &НаСервере Функция ПечатьОтмеченныхНаСервере() ТЗЗначение = РеквизитФормыВЗначение("ТЗ"); СтрокиНаПечать = ТЗЗначение.НайтиСтроки(Новый Структура("ОтметкаПечать", Истина)); ТЗНаПечать = ТЗЗначение.Скопировать(СтрокиНаПечать, "Номер, Контрагент, ЮрАдрес, КоличествоНоменклатуры, СуммаПродажи"); Для Каждого СтрокаТЗ Из ТЗНаПечать Цикл СтрокаТЗ.Номер = ТЗНаПечать.Индекс(СтрокаТЗ) + 1; КонецЦикла; ПостроительОтчета = Новый ПостроительОтчета; ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗНаПечать); ТабДок = Новый ТабличныйДокумент; ПостроительОтчета.Вывести(ТабДок); Возврат ТабДок; КонецФункции |
|||
1
Жан Пердежон
20.02.23
✎
13:26
|
тебе по делу всё написали
|
|||
2
Обработка
20.02.23
✎
13:26
|
(0) В топку таких работодателей с такими задачами.
Тупя задача. |
|||
3
РусКомп
20.02.23
✎
13:26
|
(0) > Используется довольно устаревший метод через построитель запроса, никак не участвует макет,
Это как? Т.е. надо было текст запроса хранить в макете СКД, а не черным запросом? |
|||
4
magicSan
20.02.23
✎
13:28
|
(1) Используется довольно устаревший метод через построитель запроса - давайц свой вариант,
" никак не участвует макет" - он не был задан от того построитель отчета "нет использования БСП при выводе" - это не ПФ оно и не нужно |
|||
5
Жан Пердежон
20.02.23
✎
13:28
|
(3) в макетах еще табличный документ может хранится
(0) самая грубая ошибка - не используешь параметры вирт.таблицы для отбора |
|||
6
magicSan
20.02.23
✎
13:37
|
" Номенклатура.Ссылка В ИЕРАРХИИ(&ОтборНоменклатуры)" - это засада для тех у кого много вложений и товара
|
|||
7
lenkavovka
20.02.23
✎
13:40
|
(5) А можно подробнее? Это про РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &ОкончаниеПериода, , )? Чего, на твой взгляд, не хватает, и какой может быть более оптимальный запрос? Не могу понять. Ну и "по делу написали" - тоже без аргументов.
|
|||
8
1Снеговик
гуру
20.02.23
✎
13:43
|
(0) вангую:
- это должна была быть внешняя обработка с объявлениями команд через БСП, ну короче должна добавляться как внешняя. - должен был быть макет с заголовком/шапкой/строкой/подвалом, а типа через построитель слишком лениво. - запрос не оптимален только потому, что забыл индексы. 1с рекомендует всегда индексировать поля соединения во временных таблицах. Ну и сейчас контактная информация имеет поле "ДействуетС", по которому и нужно было определять актуальные адреса, а не по номеру строки. В целом, код приемлемый. Я бы тебя на работу взял :) |
|||
9
1ctube
20.02.23
✎
13:44
|
(6) "Номенклатура.Ссылка В ИЕРАРХИИ(&ОтборНоменклатуры)" - это засада для тех у кого много вложений и товара"
Почему? |
|||
10
lenkavovka
20.02.23
✎
13:45
|
(3) Мне самому, если честно, кажется, что проверяющий хотел видеть использование макета печатной формы. Но забыл это обозначить в условии. И вместо запроса, который может быть сложен в понимании, хотел увидеть набор вызовов стандартных функций в коде. И это тоже забыл обозначить.
|
|||
11
Обработка
20.02.23
✎
13:47
|
(10) И сколько время дали на выполнение этой задачи?
|
|||
12
H A D G E H O G s
20.02.23
✎
13:48
|
(0) Все правильно работодатель сказал.
|
|||
13
Мультук
гуру
20.02.23
✎
13:48
|
(0)
| И НЕ Номенклатура.ПометкаУдаления Это было в тех.задании или "самостоятельное творчество" ? Продажи на 2 млн по тем позициям, что продали, вывели и пометили на удаление в прошлом квартале тю-тю из отчета ? |
|||
14
lenkavovka
20.02.23
✎
13:49
|
(8) Да, поле видел. Но в возрастной базе, в которой проверял решение, ДействуетС у старых контрагентов не заполнено. Поэтому более универсальным и надёжным решением посчитал использовать номер строки.
|
|||
15
lenkavovka
20.02.23
✎
13:50
|
(11) Обозначивали до двух часов.
|
|||
16
PR
20.02.23
✎
13:50
|
Мне вот интересно, почему не СКД?
Удобнее же было бы и не нужно никаких выводов, ни на БСП ни на не БСП |
|||
17
ptiz
20.02.23
✎
13:51
|
(7) Прочитайте хотя бы одну книжку по разработке в 1С:Предприятие. По-другому дыры в базовых знаниях не закрыть.
|
|||
18
lenkavovka
20.02.23
✎
13:51
|
(13) Встречал и такое, личный опыт.
|
|||
19
eddy_n
20.02.23
✎
13:52
|
Мой опыт, сын ошибок трудных:
1. Не всякие ещё и отвечают. Это как в консульстве - получаешь отказ без объяснения причин. Так что ты - везунчик можно сказать. 2. Во всех подобных задачах отсутствует чёткая формализация. Иногда может быть намеренно, а иногда - по неопытности того, кто давал задачу. Миллион вопросов задашь, перед тем как начнёшь выполнять этот опус. |
|||
20
PR
20.02.23
✎
13:53
|
(18) Что встречал, что личный опыт?
Тебе говорят, что ты накосячил, а ты в ответ ну да, был у меня такой опыт |
|||
21
eddy_n
20.02.23
✎
13:55
|
Есть конечно спорный момент по-поводу индексирования полей во временных таблицах, по которым будет потом вестить соединение.
|
|||
22
Fedor-1971
20.02.23
✎
13:55
|
(7) РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &ОкончаниеПериода, , ) имеет смысл поставить отбор по ключу аналитики, чай уже их выбрал
|
|||
23
1Снеговик
гуру
20.02.23
✎
13:58
|
(22) внутреннее соединение ничуть не хуже, даже лучше. Иначе в условиях виртуальной таблицы надо делать запросы через ВЫБРАТЬ, что не очень красиво, да и 1С не рекомендует.
|
|||
24
magicSan
20.02.23
✎
14:00
|
(9) потому что .РОдитель.родитель пропорционально количеству вложений будет работать быстрей
|
|||
25
Fedor-1971
20.02.23
✎
14:01
|
(23) зависит от объёма данных, иногда внутреннее соединение быстрее, иногда через Выбрать быстрее (нужно смотреть на данные)
|
|||
26
Fedor-1971
20.02.23
✎
14:03
|
25+ Причём, не угадать заранее, только в работе вылазят косяки по мере накопления данных
|
|||
27
eddy_n
20.02.23
✎
14:03
|
(22) + Конечно, напрямую измерения Организация нет в этом регистре. Но договорами можно было бы наверное сыграть в отборе в вирт. таблице.
Лучше бы вначале вытащить всё из вирт. таблицы оптимальным запросом. Поместить во временную, потом с ней работать. Спасибо, что хотя бы не делашь соединения с этой вирт. таблицей. |
|||
28
lenkavovka
20.02.23
✎
14:04
|
(20) Почему же является косяком нежелание таскать с собой охапку удалённых позиций номенклатуры? Я работал в базе, где при внедрении интернет-магазина с доставкой "под заказ" зачем-то залили в базу несколько десятков тысяч карточек номенклатуры, потом пометили на удаление, чтобы не мешала менеджерам. Но факт, если кто-то зачем-то пометит ранее продававшийся товар, отчёт покажет неверные данные. Спасибо! Впрочем, в оценке замечаний как раз к верности результата нет.
|
|||
29
eddy_n
20.02.23
✎
14:04
|
От построителя надо уходить. Не модная сегодня вещь.
|
|||
30
eddy_n
20.02.23
✎
14:05
|
Сегодня рулит СКД.
|
|||
31
АгентБезопасной Нацио
20.02.23
✎
14:06
|
(27) в аналитике по партнерам
|
|||
32
magicSan
20.02.23
✎
14:08
|
(29) там нет построителя запроса - в терминлогии проверяющий путается
|
|||
33
lenkavovka
20.02.23
✎
14:09
|
(30) А как в СКД использовать БСП? Точнее при желании использовать можно, но зачем? Работодатель же выкатил претензию по БСП в том числе.
|
|||
34
eddy_n
20.02.23
✎
14:10
|
(33) Согласен. Это из той серии, что кое-кто сам не знает, чего хочет.
|
|||
35
eddy_n
20.02.23
✎
14:11
|
Если тебе предлагают принести то, не знамо что, отнести туда, не знамо куда - не связывайся. Себе дороже потом будет.
|
|||
36
Xapac
20.02.23
✎
14:11
|
(0)
в ТЗ есть: Не использовать "метод через построитель запроса" Делать с помощью "макета" Использовать "БСП при выводе"? (запрос не смотрел подробно ибо лень, на первый взгляд "ПОМЕСТИТЬ ВТ_Номенклатура" - лишнее действие) Если нет. то ищи другого работодателя. |
|||
37
eddy_n
20.02.23
✎
14:14
|
ЭТО ЗАГАДОЧНОЕ СЛОВО - ПРОДАВАЛИСЬ? По 45 уходили на консигнацию?
|
|||
38
Злопчинский
20.02.23
✎
14:18
|
(37) продажа - переход права собственности. как-то так...
|
|||
39
magicSan
20.02.23
✎
14:25
|
(33) неее, тебе надо было вместо построителя отчета выкатить программное создание СКД со схемами запроса )))
|
|||
40
eddy_n
20.02.23
✎
14:27
|
(39) + 1. Построитель отчёта в связке с Табличным документом - красивое решение ВЧЕРАШНЕГО дня.
|
|||
41
eddy_n
20.02.23
✎
14:30
|
Сегодня без СКД в булочную не сходишь.
|
|||
42
Pprog151713
20.02.23
✎
14:33
|
Построитель твой не понравился. Нафига он вообще.
|
|||
43
eddy_n
20.02.23
✎
14:33
|
(39) + 1. Да. Объект, полученный с использованием БСП. А дальше - ручками компоновать. ЭТОГО ОНИ ХОТЕЛИ!
|
|||
44
eddy_n
20.02.23
✎
14:35
|
Тогда бы и овцы были цели и волки сыты. И БСП бы задействовал и СКД бы применил.
|
|||
45
eddy_n
20.02.23
✎
14:38
|
Короче: тебе ставилась задача решить оптимально неоптимальным методом. ВСЁ!
|
|||
46
Новиков
20.02.23
✎
14:42
|
(0) думаю тебе везде поставить индексировать, сделать вызов печ.формы БСП из внешней обработки, с автонумерацией - либо в тч, либо через СКД с простой компновкой. В целом, не вижу разгромного поражения, но и актуального решения текущего момента тоже. ЗАпрос сделал, что не индексировал, жалко что ли? Печать придумал, так что не через стандартную бспшную форму? Т.е. просто тупо поспешил и не дожал. С другой стороны, если бы я тебя собесил, я бы все это голосом вспросил да и все. Если ты сам все делал и не дурачок - устно бы ответил. Ну или в текст задачи вписал бы это в явном виде. В целом, это хорошо что ты туда не попал, т.к. с таким подходом тебя там зае.
|
|||
47
NorthWind
20.02.23
✎
14:49
|
(0) ну и хрен с ними, забейте. Я не фанат Темы Лебедева, но в свое время он приводил хорошее сравнение между начинающим дизайнером и опытным. Начинающий, беседуя с воображаемым заказчиком, вопрошает: "я не мил тебе?", а опытный задает тот же вопрос, читая его задом наперед :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |