Мне часто приходится участвовать в собеседованиях (отборе) кандидата-программиста. Постепенно пришел к выводу, что написание по техническому заданию новой обработки (отчета) – не лучший вариант:
- Требуется существенное время + среда разработки (компьютер)
- Может вызвать негативную реакцию.
- Для проверки требуется сотрудник высокой квалификации.
- Увеличение длительности отбора увеличивают вероятность отказа кандидата от участия.
Поэтому было решено давать кандидату уже написанный код 1С с ошибками, которые он должен найти.
- Поиск ошибок в чужом коде происходит быстро, читать - с листа.
- Повышает самооценку кандидата.
- Результат можно проверить по шаблону ответов
Ниже образец кода 1С с ошибками, применяемый для собеседования. Шаблон ответов приложен к публикации. Цена файла предназначена для крупных корпораций, не для персонального использования )) Этот текст - обладает вескими достоинствами:
1) Короткий
2) Быстрый
3) Самодостаточный. Каждая неточность (ошибка) поясняется самим текстом или ИТС.
4) Дает оценку кандидата по шкале от 0 до 20.
Не каждый ребенок найдет здесь 20 неточностей (ошибок), да ? Кандидат должен сделать максимально глубокий разбор с учётом всех возможных нюансов и контекстов кода 1С.
&НаКлиентеНаСервере
Функция ЗаполнитьЗначенияСвойств() //01
Запрос = Новый Запрос; //03
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ //05
| ВыручкаИСебестоимостьПродажОбороты.Регистратор.АдресДоставки КАК АдресДоставки,
| ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, //07
| ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика КАК ХарактеристикаНоменклатуры,
| ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот * ЦеныНоменклатурыСрезПоследних.Цена КАК СуммаОборот //09
|ИЗ
| РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК ВыручкаИСебестоимостьПродажОбороты //11
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОкончания, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
| ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика //13
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.Номенклатура В(&ГруппаНоменклатуры) //15
| И ВыручкаИСебестоимостьПродажОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг";
//17
Запрос.УстановитьПараметр("ВидЦены", ВидЦены);
Запрос.УстановитьПараметр("ДатаНачала", НачалоМесяца( ТекущаяДата() ) ); //19
Запрос.УстановитьПараметр("ДатаОкончания", КонецДня( ТекущаяДата() ) + 1 );
Запрос.УстановитьПараметр("ГруппаНоменклатуры", ГруппаНоменклатуры); //21
РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузить(); //23
НачатьТранзакцию();
//25
Для Каждого СтрокаДанных ИЗ ТЗ Цикл
Сообщить( СтрокаДанных.АдресДоставки + " " + СтрокаДанных.Номенклатура + " " + СтрокаДанных.СуммаОборот ); //27
КонецЦикла;
//29
ЗафиксироватьТранзакцию();
//31
КонецФункции;