Изучаем программирование в 1С: от учебной платформы до рабочего модуля
Содержание
Начинать стоит с бесплатной учебной версии платформы 1С:Предприятие 8.3 и Конфигуратора — это встроенная среда разработки, где пишут код. Дальше по порядку: встроенный язык (процедуры, модули, директивы компиляции), язык запросов для выборки данных, понимание клиент-серверной модели и работа с отладчиком. Параллельно открыт синтакс-помощник — встроенный справочник по всем методам.
Главная развилка в начале — что именно вы хотите писать. Дорабатывать типовые конфигурации (Бухгалтерия, ЗУП, Управление торговлей) через расширения — один путь, писать конфигурацию с нуля — другой, автоматизировать отчёты — третий. Базовые навыки одни и те же, поэтому фундамент одинаков для всех.
С чего начать: платформа, Конфигуратор и учебная версия
Код 1С нельзя изучать «в вакууме» — нужна установленная платформа и база, на которой пробовать.
- Скачайте и установите платформу
1С:Предприятие 8.3(учебная версия распространяется бесплатно и подходит для обучения, у неё есть ограничения по объёму данных). - Создайте пустую информационную базу в режиме «Создание новой информационной базы без конфигурации».
- Откройте базу в режиме Конфигуратор — это и есть среда разработки. Режим 1С:Предприятие — то, что видит обычный пользователь.
Учебная версия ставит ограничение на число записей и не работает с клиент-серверным вариантом, но для изучения языка, запросов и отладки её хватает полностью.
Рядом с Конфигуратором есть второй инструмент — 1С:EDT (Enterprise Development Tools) на базе Eclipse. Это современная IDE с подсказками по коду, рефакторингом и Git. Новичку проще стартовать в классическом Конфигураторе, а на EDT перейти, когда освоитесь: концепции там те же, отличается только оболочка.
Сразу приучите себя к синтакс-помощнику (меню Справка в Конфигураторе). Это полный справочник по встроенному языку: каждый метод, его параметры и пример. Опытные разработчики держат его открытым постоянно — запоминать все методы наизусть не нужно.
Как устроена конфигурация: метаданные и объекты
Прежде чем писать код, важно понять, вокруг чего он крутится. В 1С почти всё — это объекты метаданных, а не таблицы в чистом виде.
Основные типы объектов:
- 📒 Справочники — списки сущностей: номенклатура, контрагенты, сотрудники.
- 📄 Документы — операции с датой и движениями: поступление, реализация, начисление.
- 📊 Регистры (накопления, сведений, бухгалтерии) — где хранятся итоги: остатки, обороты, проводки.
- 🖨️ Отчёты и обработки — то, что считает и выводит данные либо меняет их.
- 🧩 Общие модули, перечисления, планы видов характеристик — вспомогательные объекты.
Дерево конфигурации открывается в Конфигураторе слева. Каждый объект можно раскрыть и посмотреть его состав: реквизиты, табличные части, формы, модули.
Понимание структуры метаданных важнее знания синтаксиса: код обращается к объектам по имени, и без карты конфигурации вы не поймёте, откуда брать данные и куда их писать.
Отдельно разберитесь с регистрами — новичкам они даются сложнее всего:
- Регистр накопления хранит движения, которые накапливаются: приход и расход товара, деньги. Из него берут остатки и обороты.
- Регистр сведений хранит значения на момент времени: курсы валют, цены номенклатуры, настройки.
- Регистр бухгалтерии хранит проводки по счетам.
Документы не хранят итоги в себе — они пишут движения в регистры, а регистры уже отдают остатки и обороты. Пока это не уложится в голове, половина типового кода будет непонятной.
Полезный приём на старте — открыть типовую демо-конфигурацию и просто «походить» по дереву: посмотреть, как устроены справочники и документы, какие у них реквизиты и в какие регистры они пишут движения. Это быстрее формирует картину, чем чтение теории.
Встроенный язык: модули, процедуры и первый код
Встроенный язык 1С похож на упрощённый Pascal с русскими ключевыми словами (есть и английский синтаксис). Код живёт не в отдельных файлах, а в модулях, привязанных к объектам.
Где именно находится код:
| Модуль | Для чего |
|---|---|
| Модуль формы | обработка действий пользователя на конкретной форме |
| Модуль объекта | логика документа или справочника (например, проведение) |
| Общий модуль | переиспользуемые процедуры и функции |
| Модуль приложения | запуск и завершение сеанса |
Комментарии в коде начинаются с двух слэшей //. Названия переменных, процедур и объектов пишут кириллицей — это норма для 1С, а не исключение. Регистр букв в ключевых словах не важен, но типовой стиль — с заглавной: Процедура, Если, Цикл.
Процедуры и функции — базовые блоки. Процедура выполняет действие, функция возвращает значение:
Процедура ПоказатьПриветствие()
Сообщить("Здравствуй, 1С!");
КонецПроцедуры
Функция СуммаСНДС(Сумма, Ставка) Экспорт
Возврат Сумма + Сумма * Ставка / 100;
КонецФункции
Чтобы процедуру можно было вызвать из другого модуля, в конце её объявления ставят ключевое слово Экспорт.
Отдельная тема, без которой первый же модуль не заработает, — директивы компиляции. Они указывают, где выполняется код:
&НаКлиенте— на компьютере пользователя (реакция на кнопки, диалоги).&НаСервере— на сервере, с доступом к базе данных.&НаСервереБезКонтекста— на сервере, но без передачи данных формы (быстрее).
Запрос к базе и запись объектов выполняются только на сервере. Попытка обратиться к базе из клиентской процедуры — одна из самых частых ошибок новичка.
Чтобы написать первый работающий код, добавьте в конфигурацию обработку, откройте её форму, создайте на форме кнопку и в обработчике нажатия выведите сообщение. Запустите 1С:Предприятие из Конфигуратора (F5) и нажмите кнопку — это и есть ваш первый модуль «вживую».
Язык запросов: как доставать данные из базы
Перебирать справочники циклом в коде — медленно и неправильно. Данные из базы получают запросом на специальном языке, похожем на SQL, но заточенном под объекты 1С.
Простейший запрос — выбрать номенклатуру без пометки удаления:
ВЫБРАТЬ
Номенклатура.Наименование КАК Товар,
Номенклатура.Артикул
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ПометкаУдаления = ЛОЖЬ
УПОРЯДОЧИТЬ ПО
Товар
В коде запрос выполняется так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Номенклатура.Наименование КАК Товар
|ИЗ Справочник.Номенклатура КАК Номенклатура";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Товар);
КонецЦикла;
Что обязательно освоить в языке запросов:
- 🔗 Соединения (
ЛЕВОЕ СОЕДИНЕНИЕ) — связать документы со справочниками. - 🧮 Группировку (
СГРУППИРОВАТЬ ПО,СУММА,КОЛИЧЕСТВО) — считать итоги. - 📦 Виртуальные таблицы регистров — главная особенность 1С. Например,
РегистрНакопления.ТоварыНаСкладах.Остаткисразу отдаёт остатки на нужную дату, не заставляя вас складывать все движения вручную.
Для сложных отчётов пригодится пакетный запрос с временными таблицами: один запрос готовит промежуточный набор данных, следующий использует его результат. Это чище и быстрее, чем тянуть всё в один громоздкий текст с множеством соединений.
Не пишите длинные запросы руками с нуля — используйте конструктор запросов. Он вызывается из редактора кода правой кнопкой и собирает текст запроса визуально: выбираете таблицы, поля, условия и соединения, а конструктор формирует синтаксис. Разбирая собранный им текст, вы заодно учите сам язык — это один из самых быстрых способов освоить запросы.
Клиент и сервер: где выполняется код и как его не замедлить
С версии 8.2 платформа работает по трёхзвенной схеме: тонкий клиент → сервер приложений → СУБД. Код физически выполняется в двух местах, и от того, где он идёт, зависит скорость.
Базовое правило производительности — минимум обращений «клиент → сервер». Каждый вызов серверной процедуры из клиента — это сетевой запрос. Если вызывать сервер в цикле по тысяче строк, форма будет «висеть».
Приёмы, которые отличают рабочий код от учебного:
- Собирайте данные одним запросом, а не множеством точечных обращений в цикле.
- Переносите расчёты на сервер через
&НаСервереБезКонтекста, когда контекст формы не нужен. - Не читайте объекты целиком, если нужен один реквизит — запросом возьмёте только нужные поля.
- Избегайте запросов внутри цикла по выборке другого запроса — классическая причина тормозов.
Управляемые формы (интерфейс «Такси») сами разделяют клиентский и серверный код директивами. Если вы правите типовую конфигурацию на 8.3, вы почти всегда работаете именно с управляемыми формами.
Понимание этой модели — водораздел между тем, кто «что-то пишет», и тем, кто пишет код, выдерживающий реальную нагрузку. Поэтому изучать клиент-серверное взаимодействие нужно не в конце, а как только освоите базовый синтаксис.
Отладка: точки останова, табло и замер производительности
Отладчик встроен в Конфигуратор, и без него разбирать чужой или свой код почти невозможно. Он позволяет остановить выполнение в нужной строке и посмотреть, что происходит.
Как отлаживать пошагово:
- 🔴 Точка останова — щёлкните на поле слева от строки кода (клавиша
F9). Выполнение остановится на этой строке. - 👣 Пошаговое выполнение — после остановки идите по коду построчно:
F11— зайти внутрь вызываемой процедуры,F10— выполнить строку, не заходя внутрь. - 👁️ Табло — окно, куда перетаскивают переменные, чтобы видеть их значения в момент остановки.
- 🧾 Стек вызовов — показывает, из какой процедуры вас вызвали.
Чтобы отладка работала, в свойствах конфигурации и в настройках запуска должна быть разрешена отладка, а запускать 1С:Предприятие нужно именно из Конфигуратора.
У точек останова есть удобная настройка — условие. Можно указать, что остановка срабатывает, только когда переменная приняла определённое значение. Это спасает, когда проблема возникает на одной записи из тысячи: не нужно вручную прощёлкивать весь цикл.
Ещё один практичный приём — вычислить выражение прямо в точке останова. Вы вводите кусок кода или имя переменной, и отладчик показывает результат, не меняя программу. Так проверяют гипотезы «а что, если здесь не то значение», не переписывая код.
Для поиска «узких мест» по скорости есть отдельный инструмент — замер производительности. Он показывает, сколько времени заняла каждая строка кода при выполнении сценария. Так находят ту самую медленную процедуру, которую глазами не вычислить.
На стороне сервера для анализа проблем используют технологический журнал — он пишет подробный лог событий платформы. Это уже уровень не новичка, но знать о его существовании полезно: именно там ищут причины редких и плавающих ошибок.
План обучения: в каком порядке осваивать код 1С
Чтобы не утонуть, двигайтесь по шагам и закрепляйте каждый блок на практике, а не только читая.
Несколько ориентиров по времени и ресурсам:
- Базовый синтаксис и первые модули — реально освоить за пару недель регулярных занятий.
- До уверенной доработки типовых конфигураций — несколько месяцев практики.
- Платные курсы 1С стоят ориентировочно от 10–15 тысяч рублей за базовый блок до 40–60 тысяч за комплексную программу; есть и бесплатные материалы, которых новичку на старте достаточно.
Лучший учебный проект — автоматизировать что-то маленькое и реальное: отчёт по остаткам, обработку заполнения табличной части, печатную форму. Законченная мелкая задача даёт больше, чем десять прочитанных глав.