| 
    
            
         
         | 
    
  | 
Справедлива ли оценка выполнения тестового задания? | ☑ | ||
|---|---|---|---|---|
| 
    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) ну и хрен с ними, забейте. Я не фанат Темы Лебедева, но в свое время он приводил хорошее сравнение между начинающим дизайнером и опытным. Начинающий, беседуя с воображаемым заказчиком, вопрошает: "я не мил тебе?", а опытный задает тот же вопрос, читая его задом наперед :)     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |