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