От первого справочника до сложных периодических расчетов: отзыв о курсе «Разработчик 1С»

Защита диплома позади, база выгружена в .dt, финальное ревью пройдено, и курс успешно завершен. Когда утихают первые эмоции после напряженной работы над итоговым проектом, появляется потребность трезво оглянуться назад и полумать над прожитым опытом. Профессия «Разработчик 1С» в последнее время привлекает многих, но вокруг нее традиционно ходит масса стереотипов. Я выбрал этот путь осознанно, а в качестве образовательного партнера остановился на Яндекс Практикуме.

Хочу поделиться подробным и непредвзятым взглядом на программу: с ее сильными сторонами, ощутимыми шероховатостями и реальным объемом практики.

О чем курс и как выстроена программа

Программа охватывает полный цикл прикладной разработки на платформе «1С:Предприятие 8.3». Обучение построено по спринтам вокруг сквозных кейсов: сначала мы шаг за шагом автоматизировали процессы барбершопа, параллельно закрепляя материал на домашнем проекте груминг-салона, а завершили все масштабным двухэтапным дипломным проектом салона ногтевого сервиса.

Материал стартует с фундамента: объектная модель, типы данных, клиент-серверное разделение контекста и управляемые формы. Довольно быстро интенсивность нарастает. Курс последовательно погружает в:

  • Оперативный учет и язык запросов: понимание разницы между физическими и виртуальными таблицами, работа с временными таблицами, индексация, механизм управляемых блокировок и партионный учет (включая FIFO и FEFO).
  • Систему компоновки данных (СКД): от простых списков до кросс-таблиц, составных отборов и тонкой настройки условного оформления.
  • Регламентированный (бухгалтерский) учет: двойная запись, корреспонденция, план счетов, виды субконто, регистры бухгалтерии и формирование оборотно-сальдовых ведомостей.
  • Сложные периодические расчеты (СПР): планы видов расчета, регистры расчета, алгоритмы вытеснения по периоду действия (больничные и оклады) и расчеты по базе (премии). Например, для мастеров салона настраивался расчет оклада по сменному графику ("два через два") с механизмом фактического периода действия. Когда мастер уходит на больничный, в регистре расчета запись больничного автоматически вытесняет базовый период оклада. Научиться понимать, почему регистрация документа задним числом требует перерасчета связанных записей регистра и как платформа обрабатывает таблицы перерасчетов — один из самых ценных навыков этого блока.
  • Интеграции и мобильную разработку: парсинг табличных документов Excel, обмен через JSON/XML, создание HTTP-сервисов (REST) и SOAP/XDTO, подключение мобильного клиента и работа с внешними API.

Что действительно порадовало

1. Глубокое погружение в архитектуру и производительность

Здесь не просто учат кликать мышкой в конфигураторе. С первых недель нам прививали привычки промышленной разработки: почему нельзя делать запросы в цикле, зачем вводить НоменклатураПредставление вместо обращения через точку к ссылке в сообщениях пользователю, как минимизировать серверные вызовы (&НаСервереБезКонтекста) и чем старая методика проведения документов принципиально отличается от новой. Уроки по разбору планов запросов в MS SQL Profiler и настройке кластера серверов 1С стали приятным откровением, которого обычно не ждешь от базовых программ.

Чтобы не быть голословным, покажу паттерн проведения документа реализации, который от нас требовали в дипломе. Здесь совмещены сразу три промышленных стандарта: превентивная управляемая блокировка по табличной части, пакетный запрос с временной таблицей остатков и исключение разыменования ссылок через точку в коде:

// 1. Управляемая блокировка только по тем позициям, которые есть в документе Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.УстановитьЗначение("Склад", Склад); ЭлементБлокировки.ИсточникДанных = Товары; ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура"); Блокировка.Заблокировать(); // 2. Пакетный запрос с временной таблицей для исключения обращений в цикле Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("МоментВремени", Новый Граница(МоментВремени(), ВидГраницы.Включая)); Запрос.Текст = "ВЫБРАТЬ | РеализацияТовары.Номенклатура КАК Номенклатура, | РеализацияТовары.Ссылка.Склад КАК Склад, | СУММА(РеализацияТовары.Количество) КАК Количество, | СУММА(РеализацияТовары.Сумма) КАК Сумма |ПОМЕСТИТЬ ВТ_Товары |ИЗ | Документ.Реализация.Товары КАК РеализацияТовары |ГДЕ | РеализацияТовары.Ссылка = &Ссылка |СГРУППИРОВАТЬ ПО | РеализацияТовары.Номенклатура, | РеализацияТовары.Ссылка.Склад |ИНДЕКСИРОВАТЬ ПО | Номенклатура, Склад |; |ВЫБРАТЬ | ВТ_Товары.Номенклатура КАК Номенклатура, | ВТ_Товары.Номенклатура.Представление КАК НоменклатураПредставление, | ВТ_Товары.Количество КАК КоличествоВДокументе, | ЕСТЬNULL(ТоварыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток |ИЗ | ВТ_Товары КАК ВТ_Товары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( | &МоментВремени, | (Номенклатура, Склад) В (ВЫБРАТЬ Номенклатура, Склад ИЗ ВТ_Товары) | ) КАК ТоварыОстатки | ПО ВТ_Товары.Номенклатура = ТоварыОстатки.Номенклатура | И ВТ_Товары.Склад = ТоварыОстатки.Склад";

2. Фокус на логику сложных механизмов

Блок по расчету зарплаты и сложным периодическим расчетам пугает многих новичков. В курсе этот раздел преподнесен очень наглядно: на живых примерах с графиками пятидневки и сменности («два через два» и «три через три») становится понятно, как именно связываются периоды действия, базовые периоды и механизм вытеснения.

3. Разнообразие прикладных задач

Курс не замыкается на типовой торговле. Задачи по созданию графических мониторов руководителя, кастомных планировщиков загрузки мастеров, мобильного приложения для предварительной записи и интеграции с внешними REST-сервисами через Postman позволяют ощутить платформу как полноценный, гибкий инструмент разработки.

Ложка дегтя: что вызывало вопросы и раздражение

Идеальных курсов не бывает, и здесь тоже есть над чем работать.

1. Рассинхронизация именования метаданных

Пожалуй, самая частая причина потери времени на первых спринтах — нестыковки в терминологии между теоретическим уроком, текстом технического задания и проверочными автотестами. В теории реквизит назван Плательщик, в ТЗ к домашке он внезапно становится Контрагентом или Клиентом, а в макете формы фигурирует как Покупатель. Где-то используется Сотрудник, а через страницу — Мастер. Приходится постоянно сверяться с контекстом, чтобы случайно не поломать валидацию из-за одного несовпавшего символа в коде.

2. Неровность стиля изложения

Очень заметно, что разные модули писались разными авторами. Если блок по оперативному учету подан с легким юмором, жизненными метафорами и подробным объяснением каждого нюанса, то модули по администрированию или некоторым интеграциям порой скатываются в сухой пересказ документации с ИТС. Перепады от формата «разжевываем на пальцах» к «вот листинг на 200 строк, разбирайтесь сами» иногда выбивают из колеи.

3. Отставание части теории от изменений платформы

В ряде тем разбираются методики или примеры под более ранние релизы платформы, тогда как в практической среде студенты работают на версиях 8.3.25 и выше. Например, отдельные моменты со сборщиком мобильных приложений, регистрацией прав доступа к параметрам сеанса или поведением веб-сервера Apache требовали поиска решений в тредах базы знаний и студенческих чатах, так как базовый текст уроков содержал устаревшие скриншоты или неактуальные команды.

Дипломный проект и финальное впечатление

В дипломе проект салона ногтевого сервиса заставил поломать голову над смешанным проведением: в одном документе "Реализация" клиент может одновременно купить лак для ногтей (материальный товар со склада) и оплатить маникюр (нематериальная услуга). В запросе мы типизируем строки через конструкцию ВЫБОР КОГДА ... ТипНоменклатуры = ЗНАЧЕНИЕ(...), чтобы алгоритм списания себестоимости и контроль остатков отрабатывали строго по товарам, а регистр заказов и взаиморасчетов закрывался по всему объему.

Еще один нюанс, на котором многие сыпались на ревью: создание документов на основании. Если администратор салона по ошибке нажимает "Создать реализацию" на основании уже закрытой предварительной записи, система не должна плодить дубли. В процедуре ОбработкаЗаполнения и ПроверитьДубликатРеализации мы блокируем попытку через проверку существующих проведенных связок, предотвращая рассинхрон остатков в регистре "ЗаказыКлиентов".

Проект по ногтевому сервису собрал воедино всю пройденную цепочку: от первичных документов поступления и реализации до проводок на плане счетов, расчета зарплаты с больничными, загрузки прайс-листов из Excel через построитель запроса и создания мобильного клиента. Это не абстрактная «синтетическая» задача, а законченная конфигурация, архитектурные решения которой можно аргументированно защищать перед техлидом.

Оглядываясь назад, могу сказать: это не легко. Курс требует усидчивости, готовности отлаживать код по ночам и самостоятельно докапываться до сути ошибок. Но если ваша цель — не просто поверхностно познакомиться с конфигуратором, а сформировать крепкую инженерную базу и научиться мыслить архитектурно в экосистеме 1С, этот курс дает необходимый фундамент.

11