Обучение и Решения · 11 мин
Что спрашивать у программиста 1С на собеседовании
Какие вопросы задать программисту 1С на собеседовании: язык запросов, СКД, управляемые формы, обмены. Практические задачи, типичные ошибки и критерии оценки.
Собеседование программиста 1С отличается от найма «обычного» разработчика: здесь недостаточно проверить алгоритмическое мышление и знание синтаксиса. Кандидат должен понимать предметную область — учёт, документооборот, регистры, типовые конфигурации, — и уметь работать в рамках платформы, а не изобретать велосипеды. Ошибка при найме дорога: слабый разработчик может «наслоять» доработки, которые сломают обновление конфигурации или замедлят базу до неработоспособности.
Правильно построенное интервью состоит из трёх контуров: вопросы на знание платформы и языка, разбор практических задач и оценка опыта работы с реальными конфигурациями. Ниже — конкретный набор вопросов, признаки хороших и тревожных ответов, а также практические задания, которые быстро отделяют «читал книжку» от «делал руками».
Как оценить знание платформы и встроенного языка
Начните с базовых вопросов, которые отсекают кандидатов с поверхностным опытом. Спрашивайте не определения, а различия и границы применения: «Чем справочник отличается от регистра сведений и когда что выбрать?», «Какие виды регистров накопления существуют и чем остатки отличаются от оборотов?», «Что происходит при проведении документа и можно ли отменить движение по одному регистру?».
Хороший кандидат объясняет, почему для хранения цен выбирают регистр сведений с режимом «Подчинение регистратору» или без него, а не создают табличную часть в справочнике. Слабый — перечисляет объекты метаданных по памяти, но не может обосновать выбор. Просите привести пример из своего опыта: «Расскажите, где вы использовали регистр сведений и почему именно его».
Полезный проверочный вопрос — про блокировки и транзакции: «Что такое управляемые блокировки, чем они отличаются от автоматических и когда возникает взаимоблокировка?». Разработчик, работавший с нагруженными базами, расскажет про избыточность блокировок при проведении документов и способы её снижения. Тот, кто писал только отчёты для небольшой фирмы, скорее всего, растеряется — и это нормально для джуниор-позиции, но не для ведущего разработчика.
Может ли обосновать выбор объекта под задачу
Понимает ли механизм проведения и отмены
Сталкивался ли с конкурентным доступом
Настраивал ли доступ к данным
Вопросы по языку запросов и СКД
Язык запросов — главный рабочий инструмент 1С-разработчика, и именно здесь проще всего отличить практика от теоретика. Попросите устно написать запрос: «Есть регистр накопления "Продажи" с измерениями "Номенклатура" и "Менеджер", ресурсом "Сумма". Выведите топ-5 менеджеров по сумме продаж за период». Сильный кандидат сразу уточнит, нужны ли виртуальные таблицы оборотов, и напишет запрос с отбором по периоду в параметрах виртуальной таблицы, а не в секции ГДЕ.
Обязательные темы: соединения таблиц (чем левое отличается от полного), группировки и итоги, виртуальные таблицы регистров, пакетные запросы и временные таблицы, индексация. Ключевой вопрос на понимание производительности: «Почему отбор лучше накладывать в параметрах виртуальной таблицы, а не в условии ГДЕ?» и «Что произойдёт, если соединить две виртуальные таблицы без отборов?».
По СКД спрашивайте: чем схема компоновки отличается от запроса в отчёте, что такое наборы данных и связи между ними, где писать вычисляемые поля, как вывести ресурс по группировке. Практический маркер опыта: кандидат знает, почему не стоит соединять наборы данных на уровне СКД, если можно собрать всё одним запросом, и что такое «расчёт итогов по группировке» при выводе остатков.
ВЫБРАТЬ
Продажи.Менеджер КАК Менеджер,
СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
СГРУППИРОВАТЬ ПО
Продажи.Менеджер
УПОРЯДОЧИТЬ ПО
Сумма УБЫВ
ПЕРВЫЕ 5Управляемые формы, клиент-сервер и тонкости разработки интерфейса
Если кандидат претендует на уровень выше junior, проверьте понимание управляемых форм: директивы компиляции &НаКлиенте, &НаСервере, &НаСервереБезКонтекста, чем отличается контекстный серверный вызов от вызова вне контекста и почему «БезКонтекста» быстрее. Спросите, как передать данные с сервера на клиент, что такое ДанныеФормыВЗначение и когда оно нужно.
Хороший уточняющий вопрос: «Почему нельзя обратиться к базе данных из клиентской процедуры и как это обходят?». Кандидат с опытом объяснит модель клиент-серверного взаимодействия и расскажет, как минимизирует количество серверных вызовов. Также полезно спросить про динамические списки: как настроить произвольный запрос в списке, что такое основная таблица и почему без неё список тормозит.
Для позиций с интеграциями добавьте вопросы про веб-сервисы и HTTP: как опубликовать HTTP-сервис в 1С, чем план обмена отличается от произвольного обмена через файлы, что такое EnterpriseData и формат JSON в платформе. Практик вспомнит реальные проблемы: кодировки, сериализацию ссылочных типов, разрешение коллизий ссылок при обмене.
Опыт с типовыми конфигурациями и доработками
Большинство вакансий связано с поддержкой типовых решений: «Управление торговлей», «ERP», «Зарплата и управление персоналом», «Бухгалтерия предприятия». Спросите, с какими конфигурациями и релизами работал кандидат, какие подсистемы дорабатывал и как именно. Ключевой вопрос: «Как вы дорабатываете типовую конфигурацию, чтобы не сломать обновление?».
Правильный ответ упоминает расширения конфигурации, механизм «заместо/перед/после» для типовых процедур, работу с БСП (библиотека стандартных подсистем) и минимизацию изменений в типовых модулях. Тревожный сигнал — кандидат привык править типовой код напрямую и снимать конфигурацию с поддержки «потому что так проще».
Попросите рассказать о самой сложной доработке: какая была задача бизнеса, какое решение выбрано, что пошло не так. Развёрнутый рассказ с деталями (названия объектов, проблемы с производительностью, обратная связь пользователей) — признак реального опыта. Размытые формулировки без конкретики обычно означают, что кандидат присутствовал при проекте, но не делал его сам.
Практические задания на собеседовании
Живое задание за 20–30 минут показывает больше, чем час теоретических вопросов. Дайте кандидату ноутбук с демобазой или попросите написать псевдокод на доске. Задание должно быть маленьким, но многослойным: например, «Добавьте в документ "Реализация товаров" проверку: при проведении сумма по каждой строке не должна превышать лимит из регистра сведений "Лимиты по номенклатуре"».
Смотрите не только на результат, но и на ход рассуждений: задаёт ли уточняющие вопросы (что делать, если лимит не задан? в какой валюте лимит?), где размещает проверку (подписка на событие, модуль объекта), как строит запрос (одним запросом по табличной части или в цикле по строкам). Запрос в цикле по строкам табличной части — классический маркер неопытности.
Второй тип задания — отладка: покажите фрагмент кода с типичной ошибкой (неявный серверный вызов в цикле, обращение к незаполненному реквизиту, выборка без упорядочивания там, где важен порядок) и попросите найти проблемы. Это проверяет навык чтения чужого кода — основную работу сопровождающего разработчика.
- 1Подготовьте демобазу и 2–3 задания разной сложности заранее
- 2Дайте простое задание на запрос или обработку проведения — 15–20 минут
- 3Наблюдайте за ходом рассуждений и задавайте уточняющие вопросы
- 4Покажите код с типичной ошибкой и попросите её найти
- 5Обсудите решение: почему выбран такой подход и какие есть альтернативы
Как оценивать ответы и выставлять уровень кандидата
Разделите критерии на обязательные и желательные. Обязательные для middle-уровня: уверенный язык запросов, понимание проведения и регистров, опыт доработки типовой конфигурации через расширения, умение объяснить свой код. Желательные: опыт оптимизации запросов, обмены, механизмы БСП, знание специфики конкретной конфигурации под вашу задачу.
Оценивайте не энциклопедичность, а структуру мышления. Кандидат, который честно говорит «этого не делал, но решил бы так» и предлагает разумный подход, часто ценнее того, кто вызубрил термины, но теряется в нестандартной задаче. Отдельно проверьте «мягкие» навыки: умеет ли задавать вопросы по постановке задачи — в 1С-разработке половина ошибок рождается из непонятого требования учётного отдела.
Как отличить уровни кандидатов
Отбор в параметрах виртуальной таблицы
Отбор в секции ГДЕ после выборки всех оборотов
Один запрос по всей таблице
Запрос внутри цикла по строкам
Расширение, переопределение через аннотации
Прямая правка типовых модулей
Задаёт уточняющие вопросы, предлагает варианты
Молчит или сразу пишет код без уточнений
Типичные ошибки работодателя на собеседовании
Первая ошибка — проверять только теорию. Кандидат может бегло рассказать про виды регистров, но не суметь написать рабочий отчёт. Вторая — гнаться за знанием конкретной конфигурации: опытный разработчик освоит новую типовую подсистему за недели, а вот слабую базу платформы не компенсирует ничто.
Третья ошибка — задавать вопросы-капканы вроде точного синтаксиса редкой функции. Документация и синтакс-помощник существуют именно для этого; важно, чтобы кандидат знал, что инструмент существует и когда его применять. Четвёртая — игнорировать опыт общения с пользователями: разработчику на поддержке придётся разбирать формулировки вида «программа не считает», и навык выяснения реальной проблемы критичен.
FAQ: частые вопросы о собеседовании программистов 1С
Нужно ли тестовое задание перед собеседованием?
Да, но короткое — на 1–2 часа работы. Например, небольшая обработка или отчёт на СКД. Объёмные задания на несколько дней отпугивают сильных кандидатов, у которых есть другие предложения. На собеседовании обязательно обсудите решение: попросите объяснить выбор и предложить улучшения.
Какие сертификаты 1С действительно важны?
«1С:Профессионал» подтверждает базовое знание конкретной конфигурации, «1С:Специалист» — более серьёзный уровень по платформе или прикладному решению. Но сертификат — лишь дополнительный сигнал: практическое задание и разбор опыта говорят о кандидате больше, чем наличие корочек.
Как проверить кандидата, если сам не разбираешься в 1С?
Привлеките действующего разработчика или внешнего консультанта хотя бы к практической части. Самостоятельно вы можете оценить структурированность ответов, умение объяснять простыми словами и реальность опыта: просите конкретные примеры задач с деталями — выдуманный опыт быстро рассыпается на уточнениях.
Что спрашивать у junior-разработчика без опыта?
Проверяйте фундамент: типы данных, различие справочника и документа, простейший запрос, понимание, что такое проведение. Дайте простую задачу и смотрите на логику рассуждений, а не на знание синтаксиса. Важнее всего обучаемость: попросите рассказать, как кандидат самостоятельно разобрался в какой-либо теме.
Стоит ли спрашивать про бухгалтерский и управленческий учёт?
Да, если работа связана с учётными конфигурациями. Разработчику не нужно быть бухгалтером, но понимание базовых понятий — проводки, остатки, взаиморасчёты, НДС — сильно упрощает постановку задач. Спросите, приходилось ли разбираться в учётной схеме под задачу, и попросите привести пример.
Как понять, что кандидат справится с нагруженной базой?
Задайте вопросы про производительность: как искать медленный запрос, что такое план запроса и индексы, как уменьшить блокировки при проведении, что показывает технологический журнал. Кандидат без такого опыта честно в этом признается — и это лучше, чем уверенные общие фразы об «оптимизации».
Что важно запомнить
Стройте собеседование вокруг трёх контуров: платформа и запросы, опыт с типовыми конфигурациями, живое практическое задание. Оценивайте обоснование решений, а не зубрёжку, и проверяйте, как кандидат работает с неопределённостью в постановке задачи. Один хороший практический разбор показывает уровень точнее, чем час теоретических вопросов.