Разработка и Конфигурация · 10 мин
Как написать код в 1С: практическое руководство
Как написать код в 1С: настройка конфигуратора, синтаксис встроенного языка, модули, процедуры, запросы, отладка и типичные ошибки начинающих разработчиков.
Код в 1С пишется на встроенном языке платформы — его часто называют «язык 1С» или «встроенный язык». Синтаксис допускает ключевые слова как на русском, так и на английском, но в типовых конфигурациях и в большинстве команд принят русский вариант. Весь прикладной код размещается в модулях: модулях объектов, форм, общих модулях и модулях менеджеров.
Работа ведётся в конфигураторе — отдельном инструменте, который поставляется вместе с платформой 1С:Предприятие. Именно там создаются объекты конфигурации, пишутся процедуры и функции, настраиваются формы и запускается отладка. Пользовательский режим «1С:Предприятие» для написания кода не предназначен.
Прежде чем писать первую строку, важно понять базовую модель: код в 1С почти всегда привязан к событию — записи документа, нажатию кнопки, проведению, открытию формы. Поэтому эффективное обучение строится не на абстрактном синтаксисе, а на связке «событие → обработчик → действие с данными».
Что нужно подготовить перед написанием кода
Для начала потребуется установленная платформа 1С:Предприятие и информационная база. Если база рабочая, сделайте выгрузку через пункт «Администрирование → Выгрузить информационную базу» в конфигураторе — это страховка на случай ошибочного изменения структуры данных.
Запустите конфигуратор, откройте конфигурацию через меню «Конфигурация → Открыть конфигурацию». Дерево объектов появится в левой части окна. Если конфигурация находится на поддержке, для изменения типовых объектов потребуется включить возможность изменения — делайте это осознанно, так как это усложнит последующие обновления.
Определите, где должен жить ваш код. Если логика относится к конкретному документу — это модуль объекта или модуль формы документа. Если код нужен в нескольких местах — создайте общий модуль. Код, который должен выполняться на сервере, помещайте в общие модули с признаками «Сервер» и, при необходимости, «Вызов сервера».
Где именно пишется код: виды модулей
Модуль — это контейнер для кода. У каждого объекта конфигурации может быть несколько модулей, и выбор правильного определяет, когда и где код выполнится.
| Вид модуля | Где находится | Когда использовать |
|---|---|---|
| Модуль объекта | Документ, справочник и др. | Логика записи, проведения, проверки заполнения |
| Модуль формы | Форма объекта или списка | Реакция на действия пользователя, работа с элементами формы |
| Общий модуль | Ветка «Общие → Общие модули» | Переиспользуемые процедуры и функции |
| Модуль менеджера | Объект конфигурации | Серверная логика, не привязанная к конкретному экземпляру |
| Модуль приложения | Корень конфигурации | Обработчики запуска и завершения системы |
Чтобы открыть модуль, щёлкните правой кнопкой по объекту в дереве конфигурации и выберите нужный пункт, например «Открыть модуль объекта». Для формы сначала откройте её двойным щелчком, затем перейдите на вкладку «Модуль» внизу редактора.
Основы синтаксиса: первая процедура
Минимальная единица кода — процедура или функция. Процедура выполняет действия, функция дополнительно возвращает значение через оператор «Возврат». Имена пишутся по-русски, без пробелов, в едином стиле.
Процедура ПриЗаписи(Отказ)
Если Не ЗначениеЗаполнено(Комментарий) Тогда
Комментарий = "Заполнено автоматически";
КонецЕсли;
КонецПроцедуры
Функция ПолучитьОстаток(Номенклатура) Экспорт
// здесь логика получения остатка
Возврат Остаток;
КонецФункции
Ключевые конструкции языка: условие «Если … Тогда … Иначе … КонецЕсли», циклы «Для Каждого … Из … Цикл … КонецЦикла» и «Пока … Цикл», попытка обработки ошибок «Попытка … Исключение … КонецПопытки». Точка с запятой завершает каждый оператор — её пропуск вызывает синтаксическую ошибку.
Комментарии начинаются с двойного слэша «//». Переменные объявлять заранее не обязательно, но для читаемости сложных процедур используйте «Перем» в начале модуля или процедуры.
- 1Откройте конфигуратор и дерево конфигурации
- 2Найдите нужный объект, откройте его модуль
- 3Напишите процедуру с обработчиком события или свою функцию
- 4Выполните синтаксическую проверку модуля (кнопка с галочкой)
- 5Обновите конфигурацию базы данных через F7
- 6Запустите отладку F5 и проверьте поведение в режиме предприятия
Работа с данными: запросы и объекты
Есть два способа получить данные: объектный (через методы вроде «Справочники.Номенклатура.НайтиПоКоду()») и запросный. Для выборки больших наборов данных всегда используйте запросы — они выполняются на стороне СУБД и работают на порядки быстрее перебора в цикле.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Ссылка КАК Товар,
| Товары.Цена КАК Цена
|ИЗ
| Справочник.Номенклатура КАК Товары
|ГДЕ
| Товары.Родитель = &Группа";
Запрос.УстановитьПараметр("Группа", ТекущаяГруппа);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Товар);
КонецЦикла;
Текст запроса удобно собирать конструктором запроса: правый клик в модуле → «Конструктор запроса». Он избавляет от ошибок в именах таблиц и полей. Параметры передавайте только через «УстановитьПараметр» — подстановка строк напрямую в текст запроса опасна и считается грубой ошибкой.
Отладка и проверка результата
Отладка запускается клавишей F5 из конфигуратора. Точки останова ставятся кликом по полю слева от строки кода или клавишей F9. Когда выполнение остановится, можно смотреть значения переменных в окне «Вычислить выражение» (Shift+F9) и пошагово идти по коду клавишами F10/F11.
Перед запуском убедитесь, что конфигурация базы данных обновлена: «Конфигурация → Обновить конфигурацию базы данных» или F7. Классическая ситуация новичка — код написан, но в режиме предприятия работает старая версия, потому что обновление не выполнено.
Как проверить результат
Ошибок нет, доработки подсвечены только предупреждения
Красные сообщения о неопределённых переменных или пропущенных операторах
Документ записывается, данные меняются как ожидалось
Молчаливая запись без изменений или окно с текстом ошибки
Выполнено без диалогов реструктуризации либо реструктуризация прошла успешно
Предупреждения об удалении данных или ошибки реструктуризации
Типичные ошибки начинающих
Большинство проблем у новичков повторяются. Знание их заранее экономит часы отладки.
Отдельно выделю работу с транзакциями. Если процедура изменяет несколько объектов, оборачивайте изменения в «НачатьТранзакцию() … ЗафиксироватьТранзакцию()» с отменой в ветке исключения. Иначе при сбое в середине часть данных сохранится, а часть нет — рассинхронизацию потом сложно искать.
Как выбрать подход к доработке
Не всякая задача требует правки конфигурации. Часто тот же результат достигается внешней обработкой, расширением или настройкой без кода.
Как выбрать способ реализации
Расширения — предпочтительный путь для большинства доработок типовых решений: они накладываются поверх конфигурации и не мешают обновлениям. Прямое изменение типовых объектов оставляйте как крайний вариант.
Что важно запомнить
Код в 1С пишется в конфигураторе внутри модулей на встроенном языке. Выбирайте правильный модуль, используйте запросы вместо переборов, проверяйте результат отладкой на копии базы и по возможности реализуйте доработки через расширения, а не изменение типовой конфигурации.
Частые вопросы
Нужно ли знать другой язык программирования, чтобы писать в 1С?
Нет. Встроенный язык 1С самодостаточен и рассчитан на прикладные задачи учёта. Знание основ логики и SQL-подобных запросов помогает, но не является обязательным — язык запросов 1С осваивается параллельно.
Можно ли писать код 1С на английском?
Да, синтаксис поддерживает английские ключевые слова (If, Then, Procedure и т.д.), и их можно смешивать с русскими. Однако в типовых конфигурациях и большинстве команд принят русский вариант — для совместимости и читаемости лучше придерживаться его.
Чем расширение отличается от внешней обработки?
Внешняя обработка — отдельный файл, который пользователь запускает вручную или через подсистему дополнительных отчётов. Расширение подключается к конфигурации и изменяет поведение её объектов: форм, модулей, ролей. Для автоматической логики, срабатывающей при записи документов, подходит только расширение или доработка конфигурации.
Почему мой код не выполняется, хотя ошибок нет?
Чаще всего конфигурация базы данных не обновлена после изменений — нажмите F7. Другие причины: код написан не в том модуле (клиентский вместо серверного), обработчик события не привязан к событию формы, либо процедура без ключевого слова «Экспорт» вызывается из другого модуля.
Как научиться писать запросы в 1С?
Начните с конструктора запроса: выбирайте таблицы и поля мышкой, а затем изучайте сгенерированный текст. Освойте выборку с условиями, соединения таблиц, группировки и итоги — этого покрывает большинство прикладных задач. Виртуальные таблицы регистров (Остатки, Обороты) разбирайте отдельно, с параметрами периода.
Безопасно ли дорабатывать типовую конфигурацию самостоятельно?
Безопасно при соблюдении трёх условий: работа ведётся на копии базы, изменения минимальны и задокументированы комментариями, а по возможности используются расширения вместо правки типовых модулей. Перед переносом в рабочую базу обязательно сделайте выгрузку и проверьте ключевые сценарии: проведение документов, формирование отчётов, обмены данными.