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