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

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

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

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

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

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

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

Что такое платформа, конфигурация и конфигуратор

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

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

Важное следствие: программист 1С почти не пишет SQL напрямую и не рисует интерфейс «по пикселям». Он описывает структуру данных и поведение, а платформа преобразует это в таблицы СУБД и экранные формы. Это ускоряет разработку, но требует понимания того, как платформа интерпретирует метаданные, — например, чем регистр накопления отличается от регистра сведений и когда какой использовать.

Встроенный язык 1С: особенности и ограничения

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

Главная специфика языка — его ориентация на прикладные объекты. В коде естественно выглядят конструкции вида «Документы.РеализацияТоваров.СоздатьДокумент()» или обращение к реквизитам объекта через точку. Язык содержит встроенные механизмы работы с запросами, транзакциями, датами, файлами, сериализацией, но не предназначен для системных задач: драйверы, работа с железом на низком уровне, высокопроизводительные вычисления — не его область.

bsl
Процедура ОбработкаПроведения(Отказ, Режим)
	Для Каждого СтрокаТовара Из Товары Цикл
		Движение = Движения.ОстаткиТоваров.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = Дата;
		Движение.Номенклатура = СтрокаТовара.Номенклатура;
		Движение.Количество = СтрокаТовара.Количество;
	КонецЦикла;
КонецПроцедуры

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

Объекты метаданных: из чего собирается решение

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

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

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

Типовые задачи программиста 1С на практике

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

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

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

Как выбрать способ доработки

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

Инструменты разработчика и безопасный порядок работы

Основной инструмент — Конфигуратор: редактор метаданных, редактор модулей с подсветкой и синтакс-помощником, отладчик, замер производительности, консоль запросов (в типовых поставках или как внешний инструмент). Дополнительно существует среда 1C:Enterprise Development Tools (EDT) на базе Eclipse — она ориентирована на командную разработку, системы контроля версий и крупные проекты, но требует более мощного рабочего места.

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

Порядок первой доработки
  1. 1
    Сделайте копию рабочей базы и подключитесь к ней в Конфигураторе
  2. 2
    Определите задачу: какой объект меняется и какое поведение ожидается
  3. 3
    Выберите способ: расширение, подписка на событие или внешняя обработка
  4. 4
    Напишите код, проверьте синтаксис (Ctrl+F7 в модуле)
  5. 5
    Протестируйте в режиме «Предприятие» на копии: типовой сценарий и граничные случаи
  6. 6
    Проверьте, что типовая функциональность объекта не сломалась
  7. 7
    Перенесите изменение в рабочую базу после создания резервной копии

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

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

Третья группа ошибок связана с клиент-серверной моделью: попытка вызвать серверную процедуру с несериализуемыми параметрами, обращение к файловой системе сервера из клиентского кода, игнорирование директив компиляции (&НаКлиенте, &НаСервере). Эти ошибки проявляются только в клиент-серверном режиме, поэтому код, «работавший на файловой базе», внезапно падает после переезда на сервер.

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

Как проверить результат доработки

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

Контрольные точки

Как проверить результат

Целевой сценарий
Норма

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

Тревожный признак

Ошибки проведения, нулевые или задвоенные движения

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

Обороты и остатки сходятся с данными до доработки (где изменений не планировалось)

Тревожный признак

Расхождения итогов, пропавшие строки

Права пользователей
Норма

Обычный пользователь выполняет сценарий без ошибок доступа

Тревожный признак

Работает только под полными правами

Производительность
Норма

Время выполнения операции сопоставимо с типовыми операциями

Тревожный признак

Операция выполняется в разы дольше, растёт нагрузка на СУБД

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

Как начать изучение и что потребуется

Для старта достаточно учебной версии платформы, которая распространяется бесплатно и позволяет разрабатывать и отлаживать конфигурации с ограничениями (например, без COM-соединений и с ограничением на объём данных). Учебную версию устанавливают вместе с демонстрационными конфигурациями, на которых удобно разбирать устройство типовых решений.

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

Итог

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

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

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

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

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

Чем файловая база отличается от клиент-серверной для разработчика?

В файловом режиме платформа работает с файлом базы напрямую, в клиент-серверном — через СУБД (MS SQL, PostgreSQL и другие) и сервер приложений 1С. Для разработчика критично, что в клиент-серверном режиме строго разделено исполнение кода на клиенте и сервере, иначе работают блокировки и транзакции. Код, отлаженный только на файловой базе, может вести себя иначе в клиент-серверной среде.

Что такое расширение конфигурации и когда его использовать?

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

Можно ли испортить базу данных кодом в Конфигураторе?

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

Чем 1C:EDT отличается от Конфигуратора и что выбрать новичку?

EDT — среда разработки на базе Eclipse с поддержкой Git, статического анализа и командной работы над проектом; Конфигуратор — классический инструмент, идущий в составе платформы. Новичку проще начать с Конфигуратора: он легче, быстрее запускается и вся базовая документация ориентирована на него. EDT имеет смысл осваивать при переходе к командной разработке и версионированию кода.

Сколько времени нужно, чтобы начать выполнять простые задачи?

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