Разработка и Конфигурация · 12 мин
Что программируется в 1С: полный обзор объектов и задач разработки
Что программируется в 1С: встроенный язык, объекты конфигурации, формы, отчёты, обмены и интеграции. Практические примеры кода и типичные ошибки разработчика.
Вопрос «что программируется в 1С» возникает у тех, кто только подходит к платформе со стороны других языков, и у бухгалтеров, которые хотят понять, что вообще может изменить разработчик в их программе. Ответ шире, чем кажется: в 1С программируется не только «логика расчётов», но и интерфейс, печатные формы, отчёты, обмены с внешними системами и даже поведение базы данных.
Программирование в 1С ведётся на встроенном языке (его часто называют «язык 1С» или «1С:Скрипт» по аналогии). Синтаксис близок к паскалеподобным языкам, ключевые слова можно писать на русском или английском. Весь код хранится внутри конфигурации и привязан к объектам: документам, справочникам, регистрам, отчётам и обработкам.
Важная особенность платформы: разработчик не пишет SQL-запросы напрямую и не создаёт таблицы вручную. Структуру базы данных платформа строит сама на основе описанных в конфигураторе объектов. Задача программиста — описать метаданные и дополнить их кодом там, где стандартного поведения недостаточно.
Что представляет собой встроенный язык 1С
Встроенный язык 1С — предметно-ориентированный язык, заточенный под учётные задачи. В нём есть привычные конструкции: условия, циклы, процедуры и функции, попытка/исключение, работа со строками, датами, массивами и коллекциями. Одновременно в язык встроены понятия предметной области: запросы к данным, ссылки на объекты, движения по регистрам.
Код исполняется в двух контекстах — на клиенте и на сервере. Клиентский код работает с интерфейсом: открывает формы, реагирует на действия пользователя. Серверный код выполняет обращения к базе данных, расчёты и проведение документов. Деление обозначается директивами компиляции &НаКлиенте, &НаСервере, &НаСервереБезКонтекста.
Типичный фрагмент кода выглядит так:
Функция ПолучитьОстаток(Номенклатура, Склад) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Остатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
|ГДЕ
| Остатки.Номенклатура = &Номенклатура
| И Остатки.Склад = &Склад";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Остаток;
КонецЕсли;
Возврат 0;
КонецФункции
Объекты конфигурации, которые дополняются кодом
Основная масса программирования в 1С — это разработка и доработка объектов метаданных. Каждый тип объекта отвечает за свою часть учёта и имеет собственные модули, куда помещается код.
- Справочники — хранят нормативно-справочную информацию: номенклатуру, контрагентов, договоры. Программируются проверки при записи, автозаполнение реквизитов, обработчики создания элементов.
- Документы — отражают хозяйственные операции. Главные точки программирования: обработка проведения (формирование движений по регистрам), контроль остатков, заполнение на основании других документов.
- Регистры — накопления, сведений, бухгалтерии и расчёта. К ним пишутся процедуры формирования записей, перерасчёты, получение остатков и оборотов.
- Отчёты — строятся на системе компоновки данных (СКД). Программируется запрос, настройки отбора, расшифровка и программное формирование без открытия формы.
- Обработки — сервисные инструменты: загрузка данных, групповые изменения, консоли. Здесь код — основное содержимое объекта.
- Планы обмена, web-сервисы, HTTP-сервисы — интеграционная часть, где программируется приём и передача данных между системами.
Код размещается в модулях: модуле объекта (логика данных), модуле формы (логика интерфейса), модуле менеджера (операции над всем объектом целиком) и общих модулях (переиспользуемые процедуры). Правильный выбор места для кода — отдельный навык: бизнес-логику в форме размещать нельзя, иначе она перестанет работать при программном вызове без интерфейса.
Что программируется в формах и интерфейсе
Формы в 1С декларативные: разработчик описывает состав элементов, а платформа сама рисует интерфейс под толстый, тонкий и веб-клиент. Тем не менее программирования здесь много. В модуле формы пишутся обработчики событий: ПриСозданииНаСервере, ПриОткрытии, ПередЗаписью, обработчики изменения полей и команд.
Типовые задачи в формах: условное оформление (подсветить строки с отрицательным остатком), динамическое управление видимостью и доступностью элементов, программное создание колонок динамических списков, проверка введённых данных до записи объекта. Для табличных частей программируется пересчёт суммы при изменении цены или количества — классический пример связки клиентского и серверного кода.
Отдельная область — печатные формы. Макет строится из областей и параметров, а код заполняет их данными объекта и выводит в табличный документ. Программируется также формирование офисных документов через COM-объекты или формирование файлов Excel и PDF.
- 1Откройте форму документа в конфигураторе и добавьте команду формы с понятным именем
- 2Разместите кнопку команды в командной панели или на форме
- 3В модуле формы создайте клиентский обработчик команды и вызовите из него серверную процедуру, если нужны данные базы
- 4Проверьте работу кнопки в режиме предприятия под пользователем с ограниченными правами
Отчёты и система компоновки данных
Большинство отчётов в 1С строится на СКД — механизме, который берёт запрос и настройки пользователя, а затем сам формирует итоговую таблицу, диаграмму или сводную таблицу. Программист пишет запрос на встроенном языке запросов (диалект, похожий на SQL, но работающий с объектами конфигурации), настраивает ресурсы, группировки и варианты отчёта.
Программная часть появляется, когда стандартных возможностей не хватает: собственные вычисляемые поля, программная установка отборов перед формированием, расшифровка по двойному щелчку, выгрузка результата в файл или отправка по расписанию через регламентное задание. Для сложных случаев используется объектная модель СКД, где весь процесс формирования управляется из кода.
Прежде чем писать программную обработку результата запроса в цикле, проверьте, не решается ли задача настройками СКД. Группировки, итоги, отборы и условное оформление компоновщик делает быстрее и без ошибок, а поддерживать такой отчёт проще.
Интеграции, обмены и регламентные задания
Заметная доля разработки в 1С — это обмен данными. Программируются планы обмена между базами 1С, загрузка и выгрузка через XML и JSON, обращения к внешним HTTP API, публикация собственных HTTP- и web-сервисов, работа с файлами обмена банков и маркетплейсов. Для интеграций критичны обработка ошибок, журналирование и повторная отправка — всё это тоже реализуется кодом.
Регламентные задания — механизм фонового выполнения кода по расписанию. В них программируется ночная свёртка данных, синхронизация с сайтом, рассылка отчётов, очистка устаревших данных. Код регламентного задания всегда серверный и не имеет интерфейса, поэтому все ошибки нужно фиксировать в журнале регистрации или собственном журнале.
Расширения и доработка типовых конфигураций
Типовые решения (1С:Бухгалтерия, 1С:Управление торговлей, 1С:Зарплата и управление персоналом) дорабатываются двумя способами: прямым изменением конфигурации со снятием с поддержки либо через расширение. Расширение — отдельный слой, где можно добавлять свои объекты, формы, печатные формы и обработчики, не трогая основной код. При обновлении типовой конфигурации расширение сохраняется, что резко снижает стоимость сопровождения.
В расширении программируются аннотации-перехватчики: &Перед, &После, &Вместо — они позволяют вклиниться в типовую процедуру до, после её выполнения или полностью заменить её. Ограничение: расширять можно не всё — например, изменение состава измерений регистров или типов реквизитов через расширение недоступно и требует доработки основной конфигурации.
Как выбрать способ доработки
Где проходят границы безопасной самостоятельной доработки
Безопасная зона для начинающего разработчика — внешние отчёты и обработки, дополнительные печатные формы, отчёты на СКД без изменения данных. Эти доработки не меняют структуру базы и легко откатываются удалением объекта. Любую работу выполняйте на копии базы, а перенос в рабочую среду делайте после проверки под учётной записью с правами обычного пользователя, а не администратора.
К задачам, требующим опыта, относятся: изменение процедур проведения документов, доработка закрытия месяца и расчёта себестоимости, исправление движений по регистрам за закрытые периоды, миграция и свёртка данных. Ошибка здесь приводит к искажению учёта, которое может обнаружиться через месяцы. Перед такими доработками обязательна резервная копия и тест на копии с реальным объёмом данных.
Как проверить результат доработки
Документ проводится, движения по регистрам соответствуют ожидаемым суммам
Ошибки при проведении, лишние или отсутствующие записи в регистрах
Функция работает под рядовым пользователем, недоступные данные скрыты
Работает только под полными правами или открывает чужие данные
После обновления типовой версии расширение загружается без ошибок
Расширение отключается, доработки пропадают
Часто задаваемые вопросы
Нужно ли знать SQL, чтобы программировать в 1С?
Нет. В 1С используется собственный язык запросов, похожий на SQL по синтаксису, но работающий с объектами конфигурации, а не с таблицами СУБД. Понимание принципов SQL (соединения, группировки, вложенные запросы) заметно помогает, но прямой доступ к СУБД платформой не используется и не рекомендуется.
Можно ли программировать в 1С на английском синтаксисе?
Да, встроенный язык имеет два варианта синтаксиса — русский и английский, и их можно смешивать в одном модуле. Однако в типовых конфигурациях и большинстве команд принят русский синтаксис, поэтому для совместной работы и чтения чужого кода русский вариант фактически обязателен.
Что нельзя запрограммировать в расширении конфигурации?
Расширение не позволяет менять типы существующих реквизитов, состав измерений и ресурсов регистров, ряд свойств планов счетов и видов расчёта, а также некоторые объекты, недоступные для заимствования. Если доработка упирается в эти ограничения, придётся изменять основную конфигурацию или пересматривать архитектуру решения.
Чем отличается внешняя обработка от расширения?
Внешняя обработка — отдельный файл, который открывается или подключается к базе и не меняет конфигурацию; она подходит для разовых операций, загрузок и дополнительных отчётов. Расширение становится частью прикладного решения: оно может менять поведение типовых форм и процедур, добавлять реквизиты и объекты, видимые всем пользователям постоянно.
С чего начать изучение программирования в 1С новичку?
Начните с учебной версии платформы и простой самостоятельной конфигурации: создайте справочник, документ с проведением по регистру и отчёт на СКД. Затем освойте отладчик, язык запросов и устройство модулей. Только после этого переходите к доработке типовых конфигураций через расширения — там выше требования к аккуратности и пониманию чужого кода.
Можно ли интегрировать 1С с сайтом или внешним сервисом?
Да, платформа поддерживает работу с HTTP-запросами, JSON и XML, публикацию собственных HTTP- и web-сервисов, планы обмена и работу с файлами. Типовой сценарий: регламентное задание обращается к API внешнего сервиса, получает данные и создаёт документы или обновляет справочники с фиксацией ошибок в журнале.
Что важно запомнить
В 1С программируется поведение объектов конфигурации: проведение документов, формы, печать, отчёты на СКД, обмены и регламентные задания. Код пишется на встроенном языке в модулях с разделением на клиент и сервер. Типовые решения дорабатывайте через расширения и внешние обработки, а изменения учётных механизмов выполняйте только на копии с резервной копией рабочей базы.