К статье
Практический материал

Обучение и Решения · 12 мин

Что должен знать начинающий 1С-программист

Какие знания нужны начинающему 1С-программисту: встроенный язык, запросы, объекты конфигурации, отладка, типовые ошибки и порядок освоения платформы с нуля.

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

Базовый минимум включает четыре направления: встроенный язык 1С, язык запросов, структуру объектов конфигурации и механизмы платформы (проведение, СКД, подсистемы). Поверх этого накладываются навыки отладки, работы с хранилищем конфигурации и понимание типовых решений вроде «Управление торговлей» или «Бухгалтерия предприятия». Без этой основы любая доработка превращается в метод проб и ошибок.

Практический ориентир для старта — уверенно выполнять задачи уровня: добавить реквизит в документ, вывести его на форму и в печатную форму, написать запрос по остаткам, собрать отчёт на СКД, найти причину ошибки проведения через отладчик. Если эти пять действий выполняются без подсказок, фундамент сформирован.

Встроенный язык 1С: что учить в первую очередь

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

Далее нужно освоить работу со ссылками и объектами. Ключевое различие, которое путает новичков: ссылка — это идентификатор объекта в базе, а объект — редактируемая копия данных, полученная методом ПолучитьОбъект(). Изменения через объект сохраняются только после вызова Записать(). Чтение реквизитов возможно и через ссылку, но массовое обращение к реквизитам через точку в цикле порождает множество запросов к базе и резко замедляет код.

Отдельная тема — директивы компиляции модулей: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. В тонком клиенте серверные вызовы — это обращения по сети, поэтому важно минимизировать их количество и не передавать на сервер данные, которые можно обработать на клиенте. Понимание границы клиент–сервер отличает аккуратного разработчика от того, кто «пишет, пока не заработает».

Язык запросов: главный инструмент повседневной работы

Запросы в 1С — основной способ получения данных, и владение ими важнее знания тонкостей языка. Синтаксис напоминает SQL, но имеет специфику: виртуальные таблицы регистров (Остатки, Обороты, СрезПоследних), соединения, группировки с итогами, параметры и пакетные запросы с временными таблицами.

Освоить нужно в первую очередь: выборку с отбором через ГДЕ, левое соединение таблиц, группировку с агрегатными функциями, обращение к виртуальным таблицам с параметрами и конструкцию ВЫБОР КОГДА. Консоль запросов — обязательный рабочий инструмент: в ней запрос отлаживается на реальных данных до вставки в код.

Типичная ошибка новичков — получать данные перебором объектов в цикле вместо одного запроса. Если задача «выбрать все документы за период с суммами по контрагентам», правильное решение — один запрос с группировкой, а не цикл по выборке с вычислениями внутри. Разница в скорости на больших базах измеряется порядками.

1c
ВЫБРАТЬ
	Продажи.Контрагент КАК Контрагент,
	СУММА(Продажи.Сумма) КАК Сумма
ИЗ
	Документ.РеализацияТоваровУслуг КАК Продажи
ГДЕ
	Продажи.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	И Продажи.Проведен
СГРУППИРОВАТЬ ПО
	Продажи.Контрагент

Объекты конфигурации: как устроена учётная система

Конфигурация строится из типовых сущностей, и нужно чётко понимать назначение каждой. Справочники хранят нормативно-справочную информацию (номенклатура, контрагенты), документы фиксируют хозяйственные операции, регистры накопления хранят остатки и обороты, регистры сведений — значения в разрезе измерений (цены, курсы валют), регистры бухгалтерии — проводки по плану счетов.

Критически важно понимать разницу между регистром накопления вида «Остатки» и «Обороты». В остаточном регистре движения бывают приходными и расходными, и платформа хранит итоги на каждый период; в оборотном хранится только сумма движений за период. Выбор неправильного вида регистра при проектировании — ошибка, которую потом дорого исправлять на базе с данными.

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

Учебный мини-проект для старта
  1. 1
    Создайте справочник Номенклатура с реквизитами Артикул и ЕдиницаИзмерения
  2. 2
    Создайте регистр накопления ОстаткиТоваров (вид Остатки, измерение Номенклатура)
  3. 3
    Создайте документ Поступление с табличной частью и напишите движения Приход в обработке проведения
  4. 4
    Создайте документ Расход с движениями Расход и контролем остатков перед записью
  5. 5
    Постройте отчёт по остаткам на СКД и проверьте цифры вручную на 3-4 документах

Проведение документов и движения по регистрам

Обработка проведения — процедура ОбработкаПроведения в модуле объекта документа, где формируются движения. Стандартный подход: сначала запросом выбираются данные табличной части (часто с соединением со справочниками и остатками), затем в цикле по выборке заполняются записи наборов движений, и в конце вызывается Движения.ИмяРегистра.Записать().

Контроль остатков — классическая задача, на которой проверяют зрелость разработчика. Правильная схема: сначала записать движения, затем запросом проверить отрицательные остатки и при их наличии отказаться от проведения с понятным сообщением пользователю. Проверка остатков «до» записи движений без учёта собственных движений документа даёт ложные срабатывания при перепроведении.

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

Отчёты на СКД и отладка кода

Система компоновки данных — стандартный способ построения отчётов в 1С, и писать отчёты «вручную» через табличный документ нужно только в исключительных случаях. В СКД разработчик задаёт запрос-источник, ресурсы, группировки и настройки, а пользователь получает возможность менять отборы и структуру отчёта без программиста. Освоить нужно: набор данных «Запрос», вычисляемые поля, параметры с периодами, ресурсы и иерархические группировки.

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

Замеры производительности через отладчик показывают, какие строки кода занимают время. Если доработка «тормозит», сначала смотрят замер, а не переписывают код наугад: чаще всего причина — запрос в цикле или обращение к реквизитам через точку.

Типичные ошибки новичков
01
Запрос внутри цикла — на больших объёмах код работает в десятки раз медленнее; решение — один запрос с соединениями
02
Правка типового кода вместо расширений и подписок — обновление конфигурации превращается в ручную работу на часы
03
Чтение реквизитов через точку от ссылки в цикле — каждое обращение генерирует отдельный запрос к базе
04
Отсутствие контроля отрицательных остатков — склад уходит в минус, и учёту перестают доверять
05
Тестирование на рабочей базе — испорченные движения требуют восстановления из копии и останавливают работу пользователей

Расширения, типовые конфигурации и рабочий процесс

Расширения конфигурации — механизм доработки без изменения типового кода: можно добавлять реквизиты, формы, процедуры и переопределять обработчики с помощью аннотаций &ИзменениеИКонтроль и &Вместо. Современный подход — максимум доработок выносить в расширения, оставляя основную конфигурацию на полной поддержке. Это резко упрощает обновления.

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

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

Как дорабатывать типовую конфигурацию

Расширение конфигурации

Подходит для большинства доработок: реквизиты, формы, печатные формы, обработчики. Обновление типового релиза почти не затрагивается. Ограничение — не всё можно изменить через расширение

Подписки на события

Подходят для дополнительных проверок и движений без изменения типового кода. Требуют снятия конфигурации с полной поддержки в части добавления подписки

Прямая правка типового кода

Крайняя мера, когда расширение не справляется. Каждое обновление потребует сравнения и переноса правок вручную

Как выстроить обучение: порядок освоения тем

Эффективная последовательность: сначала объекты конфигурации и простой проведение в учебной конфигурации, затем язык запросов до уверенного уровня, потом СКД, после этого — чтение и доработка типовой конфигурации через расширения. Параллельно с первых недель стоит пользоваться отладчиком и консолью запросов, а не откладывать их «на потом».

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

Итог

Что важно запомнить

Фундамент начинающего 1С-программиста: объекты конфигурации и проведение, язык запросов, СКД, отладчик и дисциплина работы с базами. Дорабатывайте типовое через расширения, избегайте запросов в циклах, тестируйте только на копиях. Учитесь на реальных учётных задачах с ручной проверкой результата.

Частые вопросы

Нужно ли знать другие языки программирования перед изучением 1С?

Нет, 1С нередко осваивают как первый язык, и его синтаксис для этого подходит. Однако базовое понимание SQL заметно ускорит изучение языка запросов, а общие представления о клиент-серверной архитектуре помогут разобраться с директивами компиляции и производительностью.

Сколько времени нужно, чтобы выйти на уровень junior?

При регулярной практике по несколько часов в день базовые задачи (реквизиты, печатные формы, простые отчёты, несложные доработки проведения) обычно начинают получаться через 3–6 месяцев. Срок сильно зависит от объёма практики на реальных базах: только чтение теории результата почти не даёт.

Что важнее для трудоустройства — сертификат 1С или практика?

Работодатели чаще смотрят на умение решать задачи: на собеседовании просят написать запрос, объяснить контроль остатков или найти ошибку в коде. Сертификат «1С:Профессионал» полезен как структурированная проверка знаний и плюс к резюме, но без практических навыков он не заменяет опыт.

С какой конфигурации лучше начинать практику?

Оптимально — с собственной учебной конфигурации «с нуля», чтобы понять механику проведения и регистров без чужого кода. Затем стоит перейти к типовой «Управление торговлей» или «Бухгалтерии предприятия»: именно с ними чаще всего работают на реальных проектах, и умение ориентироваться в их коде — ключевой рабочий навык.

Как искать ошибку, если документ «неправильно проводится»?

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

Когда стоит использовать расширение, а когда внешнюю обработку?

Расширение подходит, когда нужно изменить поведение конфигурации: добавить реквизит, колонку на форму, логику в обработчики. Внешняя обработка уместна для разовых сервисных задач — загрузки данных, группового изменения реквизитов, тестирования — и не требует изменения конфигурации вообще.