Какие задачи дают на собеседовании Junior-разработчикам 1С по отчетам и обработкам?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Собеседование на позицию стажера или джуниор-разработчика 1С часто включает в себя проверку базовых навыков написания запросов, понимания работы системы компоновки данных (СКД) и умения создавать инструменты для автоматизации рутинных задач. Разберем наиболее популярные и эффективные задачи, которые помогут оценить уровень кандидата, и проанализируем правильные подходы к их решению.

Задачи на написание запросов и работу с данными

Запросы — это фундамент разработки в 1С. Опытные интервьюеры часто предлагают задачи с «подвохом», чтобы проверить внимательность и знание архитектуры таблиц. Рассмотрим классический пример:

Задача №1: Поиск номенклатуры по коду. Напишите запрос, который возвращает наименование номенклатуры с кодом «00021». На первый взгляд это кажется простым, но давайте проанализируем возможные ошибки. Многие кандидаты забывают о типе данных (строка или число) и о том, что в справочнике могут быть группы.

Разберем правильный подход с использованием параметров:


ВЫБРАТЬ
    Номенклатура.Наименование КАК Наименование
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Код = &Код
    И НЕ Номенклатура.ЭтоГруппа

Здесь важно использовать параметр &Код, так как жесткое прописывание строки в тексте запроса считается плохим тоном. Также условие НЕ ЭтоГруппа гарантирует, что мы получим именно товарную позицию, а не папку.

Задача №2: Проверка отсутствия товара в документах. Напишите запрос, возвращающий все документы определенного вида, в табличной части которых нет конкретной номенклатуры (передается параметром). Для решения этой задачи мы воспользуемся левым соединением с проверкой на NULL.

Рассмотрим пример реализации:


ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка КАК Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары
    ПО РеализацияТоваровУслуг.Ссылка = РеализацияТовары.Ссылка
    И РеализацияТовары.Номенклатура = &ИскомаяНоменклатура
ГДЕ
    РеализацияТовары.Ссылка ЕСТЬ NULL

Разработка сложных отчетов в СКД

Для Junior-разработчика крайне важно понимать механизмы СКД, так как большинство отчетов в современных конфигурациях строятся именно на этой технологии. Проанализируем несколько типовых задач.

Задача №3: Остатки на каждый день периода. Создайте отчет, выводящий остатки по товару на каждый день выбранного месяца, даже если в этот день не было движений. Выясним причину, почему обычный запрос к виртуальной таблице остатков не подойдет: он вернет данные только на те даты, когда были операции.

Для решения мы воспользуемся механизмом дополнения периодов в СКД. Разберем по шагам:

  1. Создаем набор данных — запрос к виртуальной таблице ОстаткиИОбороты регистра накопления.
  2. В поле периода выбираем периодичность «День».
  3. В настройках СКД на вкладке «Роли» для поля периода указываем тип дополнения «День» и выбираем границы периода.
  4. Это заставит систему автоматически «дорисовать» строки для дат с нулевыми или неизменными остатками.

Задача №4: Цены всех типов для всей номенклатуры. Вывести список всей номенклатуры и цены для каждого типа цен. Если цена не назначена, вывести текст «нет цены». Проанализируем ситуацию: здесь нам поможет функция ЕСТЬNULL или условное оформление в СКД.

Посмотрим на пример выражения в запросе:


ВЫБРАТЬ
    Номенклатура.Ссылка КАК Товар,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    Справочник.Номенклатура КАК Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
    ПО Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура

В настройках оформления поля «Цена» мы можем задать текст для пустых значений: «нет цены».

Разработка обработок и работа с формами

Обработки часто требуют навыков работы с внешними данными и понимания клиент-серверного взаимодействия.

Задача №5: Загрузка из внешнего файла. Создать обработку для загрузки данных из Excel в периодический регистр сведений. Это комплексная задача, проверяющая умение работать с объектами COMОбъект (для Excel) или современными средствами чтения файлов.

Важные моменты, которые стоит обсудить с кандидатом:

Задача №6: Конфликты периодов. Реализовать отчет или обработку, которая находит пересекающиеся периоды в документах (например, «Резервирование переговорных»).

Проанализируем логику условия пересечения двух периодов (Начало1, Конец1) и (Начало2, Конец2). Периоды пересекаются, если выполняется условие:

Начало1 < Конец2 И Начало2 < Конец1

Этот математический факт позволяет написать элегантный запрос без сложных вложенных условий ЕСЛИ.

Архитектурные вопросы и «хороший стиль»

Кроме написания кода, на собеседовании часто проверяют общую эрудицию в рамках платформы 1С:

Дополнительные задачи для самопроверки

Если вы готовитесь к собеседованию, попробуйте реализовать следующие кейсы:

  1. Срез последних вручную: Получите последние записи регистра сведений без использования виртуальной таблицы СрезПоследних (через группировку по максимальной дате и вложенный запрос).
  2. Дерево спецификаций: Постройте иерархический отчет по составу изделия, используя рекурсию в запросе (доступно в последних версиях платформы через ВЫБРАТЬ ИЕРАРХИЮ) или механизмы СКД.
  3. Программное создание документов: Напишите обработку, которая на основании выбранной папки номенклатуры создает документ «Инвентаризация», заполняя его всеми остатками товаров из этой папки.

Подводя итог, можно сказать, что для успешного прохождения собеседования на позицию Junior-разработчика 1С не обязательно знать все тонкости БСП, но критически важно владеть языком запросов, понимать логику работы СКД и уметь обосновать свои технические решения с точки зрения производительности и удобства пользователя.

← На главную