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

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

Код 1С: что это и как с ним работать

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

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

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

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

Что представляет собой встроенный язык 1С

Встроенный язык 1С — это предметно-ориентированный язык, созданный специально для автоматизации учёта и бизнес-процессов. Его главная особенность — синтаксис на русском языке: ключевые слова выглядят как «Если», «Тогда», «КонецЕсли», «Процедура», «Функция». Для тех, кто привык к англоязычным языкам, существует полный английский аналог синтаксиса (If, Then, EndIf, Procedure, Function), и оба варианта можно смешивать в одной конфигурации.

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

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

Где физически хранится и пишется код

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

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

Как открыть и посмотреть код в конфигураторе
  1. 1
    Запустите ярлык 1С и выберите режим «Конфигуратор» для нужной базы
  2. 2
    Откройте конфигурацию через меню «Конфигурация → Открыть конфигурацию»
  3. 3
    В дереве конфигурации найдите нужный объект, например документ «Реализация товаров»
  4. 4
    Щёлкните правой кнопкой и выберите «Открыть модуль объекта» или «Открыть модуль формы»
  5. 5
    Изучите текст: процедуры и функции идут друг за другом, обработчики событий имеют стандартные имена

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

Как выглядит типичный код: пример и разбор

Проще всего понять природу кода 1С на небольшом примере. Ниже — функция, которая проверяет заполненность контрагента в документе и возвращает результат проверки.

Функция КонтрагентЗаполнен(ДокументОбъект)

Если Не ЗначениеЗаполнено(ДокументОбъект.Контрагент) Тогда

Сообщить("Не указан контрагент в документе!");

Возврат Ложь;

КонецЕсли;

Возврат Истина;

КонецФункции

Здесь видно несколько характерных черт языка. Каждая функция начинается со слова «Функция» и заканчивается «КонецФункции». Условие строится через «Если … Тогда … КонецЕсли». Точка с запятой завершает каждый оператор — её пропуск является самой частой синтаксической ошибкой у новичков. Комментарии пишутся после двойного слэша «//».

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

Отдельного внимания заслуживает язык запросов 1С. Он похож на SQL, но тоже допускает русские ключевые слова (ВЫБРАТЬ, ИЗ, ГДЕ) и работает не с физическими таблицами базы, а с объектами конфигурации. Запросы встраиваются прямо в код как текст, что видно в примере выше.

Обработчики событий: когда код выполняется сам

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

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

Клиентский и серверный код: в чём разница

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

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

Где размещать логику

Клиентский код

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

Серверный код

Подходит для запросов, записи объектов, расчётов. Ограничение: нельзя показывать пользователю интерактивные окна.

Общий модуль

Подходит для логики, нужной в нескольких местах. Флаги «Сервер» и «Клиент» в свойствах модуля определяют, где он исполняется.

Как читать чужой код и искать нужное место

Чтение чужого кода в типовой конфигурации — навык сам по себе: объёмы там большие, и листать модули целиком бессмысленно. Основной инструмент — глобальный поиск по конфигурации (Ctrl+Shift+F в конфигураторе), который находит все вхождения процедуры, реквизита или фрагмента текста по всем модулям сразу.

Полезно начинать не с кода, а с объекта: открыть форму или документ, найти кнопку или действие, которое вас интересует, и посмотреть, какой обработчик к нему привязан. От обработчика по цепочке вызовов (команда «Перейти к определению» по F12) можно пройти вглубь логики до нужного места.

Как найти код, отвечающий за действие в программе
  1. 1
    Определите объект: документ, справочник или отчёт, где происходит действие
  2. 2
    Откройте модуль формы этого объекта в конфигураторе
  3. 3
    Найдите обработчик команды или кнопки — обычно имя совпадает с названием кнопки
  4. 4
    Через F12 перейдите к вызываемым процедурам и функциям
  5. 5
    Используйте глобальный поиск, если логика ушла в общие модули

Типичные ошибки при работе с кодом 1С

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

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

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

Как проверить, что код работает правильно

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

Для быстрой проверки отдельных выражений удобна команда «Вычислить выражение» (Shift+F9) в момент остановки. Перед переносом доработки в рабочую базу стоит пройти типовой сценарий целиком: создать документ, заполнить, провести, отменить проведение — и убедиться, что ни на одном шаге нет ошибок и данные в отчётах сходятся.

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

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

Синтаксис модуля
Норма

Проверка конфигурации (Ctrl+F7) не выдаёт ошибок

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

Сообщения о неизвестных именах, пропущенных операторах

Выполнение обработчика
Норма

В отладчике точка останова в процедуре срабатывает

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

Точка не срабатывает — событие не наступает или процедура названа неверно

Данные после операции
Норма

Отчёты и движения документа соответствуют ожиданию

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

Движения отсутствуют, суммы не сходятся, появляются дубли

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

Ответы на частые вопросы

Код 1С — это язык программирования или что-то другое?

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

Можно ли писать код 1С на английском?

Да. У встроенного языка есть полный английский синтаксис: If, Then, EndIf, Procedure, Function и так далее. Оба варианта равнозначны и могут соседствовать в одной конфигурации. В типовых российских конфигурациях используется русский синтаксис.

Где посмотреть код, если я обычный пользователь, а не программист?

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

Чем отличается код в модуле объекта от кода в модуле формы?

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

Безопасно ли самостоятельно менять код в типовой конфигурации?

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

Что делать, если после изменения кода программа выдаёт ошибку?

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

Итог

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

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