Собеседование на позицию стажера или джуниор-разработчика 1С часто включает в себя проверку базовых навыков написания запросов, понимания работы системы компоновки данных (СКД) и умения создавать инструменты для автоматизации рутинных задач. Разберем наиболее популярные и эффективные задачи, которые помогут оценить уровень кандидата, и проанализируем правильные подходы к их решению.
Запросы — это фундамент разработки в 1С. Опытные интервьюеры часто предлагают задачи с «подвохом», чтобы проверить внимательность и знание архитектуры таблиц. Рассмотрим классический пример:
Задача №1: Поиск номенклатуры по коду. Напишите запрос, который возвращает наименование номенклатуры с кодом «00021». На первый взгляд это кажется простым, но давайте проанализируем возможные ошибки. Многие кандидаты забывают о типе данных (строка или число) и о том, что в справочнике могут быть группы.
Разберем правильный подход с использованием параметров:
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Код = &Код
И НЕ Номенклатура.ЭтоГруппа
Здесь важно использовать параметр &Код, так как жесткое прописывание строки в тексте запроса считается плохим тоном. Также условие НЕ ЭтоГруппа гарантирует, что мы получим именно товарную позицию, а не папку.
Задача №2: Проверка отсутствия товара в документах. Напишите запрос, возвращающий все документы определенного вида, в табличной части которых нет конкретной номенклатуры (передается параметром). Для решения этой задачи мы воспользуемся левым соединением с проверкой на NULL.
Рассмотрим пример реализации:
ВЫБРАТЬ
РеализацияТоваровУслуг.Ссылка КАК Ссылка
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары
ПО РеализацияТоваровУслуг.Ссылка = РеализацияТовары.Ссылка
И РеализацияТовары.Номенклатура = &ИскомаяНоменклатура
ГДЕ
РеализацияТовары.Ссылка ЕСТЬ NULL
Для Junior-разработчика крайне важно понимать механизмы СКД, так как большинство отчетов в современных конфигурациях строятся именно на этой технологии. Проанализируем несколько типовых задач.
Задача №3: Остатки на каждый день периода. Создайте отчет, выводящий остатки по товару на каждый день выбранного месяца, даже если в этот день не было движений. Выясним причину, почему обычный запрос к виртуальной таблице остатков не подойдет: он вернет данные только на те даты, когда были операции.
Для решения мы воспользуемся механизмом дополнения периодов в СКД. Разберем по шагам:
ОстаткиИОбороты регистра накопления.Задача №4: Цены всех типов для всей номенклатуры. Вывести список всей номенклатуры и цены для каждого типа цен. Если цена не назначена, вывести текст «нет цены». Проанализируем ситуацию: здесь нам поможет функция ЕСТЬNULL или условное оформление в СКД.
Посмотрим на пример выражения в запросе:
ВЫБРАТЬ
Номенклатура.Ссылка КАК Товар,
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
ПО Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
В настройках оформления поля «Цена» мы можем задать текст для пустых значений: «нет цены».
Обработки часто требуют навыков работы с внешними данными и понимания клиент-серверного взаимодействия.
Задача №5: Загрузка из внешнего файла. Создать обработку для загрузки данных из Excel в периодический регистр сведений. Это комплексная задача, проверяющая умение работать с объектами COMОбъект (для Excel) или современными средствами чтения файлов.
Важные моменты, которые стоит обсудить с кандидатом:
Вопрос() или Предупреждение() запрещено. Нужно использовать описание оповещения (ОписаниеОповещения).Задача №6: Конфликты периодов. Реализовать отчет или обработку, которая находит пересекающиеся периоды в документах (например, «Резервирование переговорных»).
Проанализируем логику условия пересечения двух периодов (Начало1, Конец1) и (Начало2, Конец2). Периоды пересекаются, если выполняется условие:
Начало1 < Конец2 И Начало2 < Конец1
Этот математический факт позволяет написать элегантный запрос без сложных вложенных условий ЕСЛИ.
Кроме написания кода, на собеседовании часто проверяют общую эрудицию в рамках платформы 1С:
Перечисление, а в каких — Справочник с предопределенными элементами? Выясним причину: справочник позволяет пользователю добавлять новые элементы без изменения конфигурации, а перечисление — это жесткая структура для логики кода.ПодключитьОбработчикОжидания().Если вы готовитесь к собеседованию, попробуйте реализовать следующие кейсы:
СрезПоследних (через группировку по максимальной дате и вложенный запрос).ВЫБРАТЬ ИЕРАРХИЮ) или механизмы СКД.Подводя итог, можно сказать, что для успешного прохождения собеседования на позицию Junior-разработчика 1С не обязательно знать все тонкости БСП, но критически важно владеть языком запросов, понимать логику работы СКД и уметь обосновать свои технические решения с точки зрения производительности и удобства пользователя.