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

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

Как разобраться в языке 1С: с чего начать и как читать код

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

Встроенный язык 1С — это предметно-ориентированный язык программирования, заточенный под задачи учёта: документы, справочники, регистры, отчёты. Он проще универсальных языков вроде C# или Java, потому что многие сложные вещи (хранение данных, проведение документов, формирование отчётов) платформа берёт на себя. Поэтому разобраться в нём реально даже без профильного образования — при системном подходе.

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

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

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

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

Важная особенность: язык не существует отдельно от контекста исполнения. Один и тот же код может выполняться на клиенте (в интерфейсе пользователя) или на сервере, и от этого зависят доступные объекты. В модулях это явно размечается директивами &НаКлиенте и &НаСервере.

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

Базовый синтаксис: что нужно знать в первую очередь

Минимальный набор для чтения простого кода: переменные, условия, циклы, процедуры и функции. Переменные объявляются неявно — достаточно присвоения: Сумма = 100;. Тип значения определяется в момент присваивания и может меняться.

Условия записываются через Если ... Тогда ... Иначе ... КонецЕсли;, циклы — через Пока ... Цикл ... КонецЦикла; и Для Каждого ... Из ... Цикл ... КонецЦикла;. Процедуры не возвращают значение, функции возвращают через оператор Возврат.

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

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

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

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

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

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

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

Язык запросов: главный инструмент работы с данными

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

Типовая схема работы с запросом: создать объект Запрос, задать текст, установить параметры через УстановитьПараметр, выполнить и обойти результат через Выбрать() или Выгрузить() в таблицу значений. Параметры в тексте запроса обозначаются амперсандом: &Контрагент.

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

Как читать чужой код и где он находится

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

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

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

Как разобрать незнакомый фрагмент кода
  1. 1
    Определите, в каком модуле находится код и какое событие его запускает
  2. 2
    Найдите точку входа — обработчик события (ПриЗаписи, ОбработкаПроведения, ПриОткрытии)
  3. 3
    Проследите цепочку вызовов через глобальный поиск по имени процедуры
  4. 4
    Поставьте точку останова в начале обработчика и пройдите код отладчиком, наблюдая значения переменных
  5. 5
    Сопоставьте код со структурой метаданных: какие объекты читаются и куда пишутся данные

Отладка: самый быстрый способ понять, что делает код

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

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

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

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

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

Прогноз результата
Норма

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

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

Понимание только на уровне «тут что-то считается»

Поведение в отладчике
Норма

Значения переменных на каждом шаге совпадают с вашими ожиданиями

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

Переменные содержат неожиданные значения — значит, логика понята неверно

Изменение кода
Норма

Вы можете внести небольшую правку и предсказать её эффект

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

Любая правка даёт неожиданные ошибки или меняет не то поведение

Безопасная практика и порядок изучения

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

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

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

Итог

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

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

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

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

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

Сколько времени занимает базовое освоение языка?

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

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

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

Где искать описание встроенных функций и объектов?

Прямо в конфигураторе: меню Справка → Синтакс-помощник содержит полное описание языка, объектов и методов с примерами. Также работает контекстная подсказка: поставьте курсор на имя функции и нажмите Ctrl+F1.

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

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

Почему код в модуле формы не видит функцию из общего модуля?

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