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

Разработка и Конфигурация · 12 мин

Программирование 1С: что это и как оно устроено

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

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

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

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

Из чего состоит разработка на платформе 1С

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

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

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

Как устроен встроенный язык 1С

Встроенный язык 1С — предметно-ориентированный язык с русскоязычным синтаксисом (допустимы и английские ключевые слова). Код пишется в модулях: модуле объекта, модуле формы, общих модулях, модуле менеджера. Язык не требует ручного управления памятью, не имеет классов в привычном объектно-ориентированном смысле — вместо них используются типы платформы: СправочникОбъект, ДокументОбъект, Запрос, ТаблицаЗначений.

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

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

Важная особенность — разделение кода на клиентский и серверный. Модуль формы выполняется на клиенте, а обращение к данным и тяжёлые вычисления должны идти на сервере. Директивы &НаКлиенте и &НаСервере определяют контекст выполнения. Новички часто игнорируют это разделение и получают лишние серверные вызовы, из-за которых формы «тормозят» у пользователей.

Какие задачи решает программист 1С на практике

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

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

Доработка печатной формыОбычно часы

Нужен макет, запрос данных и вывод в табличный документ

Новый отчёт на СКДЧасы — день

Зависит от сложности запроса и настроек группировок

Обмен с внешней системойДни и больше

Требует согласования форматов, API и обработки ошибок

Изменение проведения документаЗависит от регистров

Нужно проверить все затрагиваемые регистры и отчёты

Типовая конфигурация и собственная разработка: в чём разница

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

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

Сравнение подходов

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

Подходит для большинства доработок типовых решений; ограничение — не все объекты и методы доступны для переопределения

Прямая доработка конфигурации

Даёт полный доступ к коду, но усложняет обновления и требует снятия с полной поддержки

Внешние отчёты и обработки

Идеальны для отчётов, печатных форм и разовых операций; не подходят для изменения проведения документов

Конфигурация с нуля

Оправдана для нестандартных задач; требует проектирования всех механизмов самостоятельно

С чего начать обучение и как не навредить рабочей базе

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

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

Порядок безопасной доработки
  1. 1
    Сделайте резервную копию базы или работайте на копии
  2. 2
    Определите, решается ли задача расширением или внешней обработкой
  3. 3
    Реализуйте изменение и протестируйте на копии под разными ролями
  4. 4
    Проверьте отчёты и регистры, которые затрагивает доработка
  5. 5
    Перенесите изменение в рабочую базу и проверьте результат на контрольном примере

Типичные ошибки начинающих разработчиков

Большинство проблем новичков связано не с синтаксисом, а с непониманием архитектуры платформы. Запросы в цикле, изменение типового кода вместо расширения, игнорирование разделения клиент-сервер — классические источники медленной работы и конфликтов при обновлении.

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

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

Чем программирование 1С отличается от других языков

Главное отличие — связка «язык + платформа + предметная область». Разработчик на 1С не выбирает базу данных, не пишет ORM и не проектирует интерфейс с нуля: платформа предоставляет готовые механизмы. Взамен она диктует архитектуру: данные живут в объектах метаданных, аналитика — в регистрах, бизнес-операции оформляются документами с проведением.

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

Маршрут решения

Как выбрать действие

Нужно добавить отчёт или печатную форму без изменения логикиИспользуйте внешний отчёт или обработку — база не меняется вообще
Нужно изменить поведение типового документаДелайте расширение конфигурации, сохраняя поддержку поставщика
Задача не укладывается в типовую схему учётаРассмотрите собственные объекты в расширении или отдельную конфигурацию
Нужен обмен с сайтом или другой системойИспользуйте HTTP-сервисы, веб-сервисы или планы обмена — не прямой доступ к базе

FAQ: частые вопросы о программировании 1С

Нужно ли высшее образование, чтобы стать программистом 1С?

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

Сложно ли выучить встроенный язык 1С?

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

Можно ли дорабатывать 1С без программирования?

Частично да. Настройка отчётов на СКД в пользовательском режиме, дополнительные реквизиты и сведения, настройка прав и рабочих мест не требуют кода. Но изменение логики проведения, нестандартные расчёты и интеграции без программирования не реализовать.

Чем расширение лучше прямой доработки конфигурации?

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

Что такое СКД и зачем её изучать?

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

Опасно ли запускать чужие обработки в своей базе?

Да. Обработка — это исполняемый код с полным доступом к данным базы в рамках прав пользователя. Вредоносная или содержащая ошибку обработка может изменить или удалить данные. Запускайте обработки только из проверенных источников, предварительно изучив код, и всегда на копии базы.

Итог

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

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