Первая программа на 1С с нуля: конфигуратор, язык, запросы и отладка

· 9 мин

Содержание

Чтобы писать программы в 1С, нужны три вещи: платформа 1С:Предприятие 8.3, пустая информационная база и конфигуратор. Код пишут не в отдельных файлах, а в модулях объектов конфигурации: справочников, документов, форм, обработок. Первую работающую программу новичок собирает за 15–20 минут, если идти по шагам ниже.

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

Что нужно для старта: платформа, учебная база и конфигуратор

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

Порядок подготовки

  1. Установите платформу 1С:Предприятие 8.3 (учебную или полную, если лицензия уже есть).
  2. Запустите 1cestart.exe — откроется окно со списком информационных баз.
  3. Нажмите «Добавить» → «Создание новой информационной базы».
  4. Выберите вариант «Создание информационной базы без конфигурации для разработки новой конфигурации или загрузки выгруженной информационной базы».
  5. Укажите имя, например «Учебная», и вариант «На данном компьютере» — получится файловая база в папке на диске.
  6. Выделите базу в списке и нажмите кнопку «Конфигуратор».
  7. В конфигураторе откройте дерево: Конфигурация → Открыть конфигурацию.

Слева появится дерево метаданных. В пустой базе там только корень «Конфигурация» и пустые ветки.

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

Чем ещё пишут код

ИнструментКогда подходитСложность для новичка
КонфигураторОбучение, мелкие доработки, большинство франчайзи🟢 Низкая
1С:EDT (Enterprise Development Tools)Командная разработка, Git, крупные проекты🟠 Выше: нужен опыт работы с Eclipse

Начинайте с конфигуратора. Все примеры ниже — для него.

Из чего состоит конфигурация: объекты метаданных и модули

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

Основные объекты

  • 📚 Справочник — списки: номенклатура, контрагенты, сотрудники.
  • 📄 Документ — факт хозяйственной операции с датой и номером: приход, реализация.
  • 📊 Регистр накопления — остатки и обороты: товары на складе, взаиморасчёты.
  • 🗂️ Регистр сведений — значения во времени или по измерениям: цены, курсы.
  • 🔢 Перечисление — фиксированный набор значений: ставки НДС, виды операций.
  • ⚙️ Обработка — программа без собственных данных: загрузка, групповая правка, расчёт.
  • 📈 Отчёт — вывод данных, обычно на системе компоновки данных.
  • 🧩 Общий модуль — общая библиотека процедур для всей конфигурации.
  • 🔐 Роль — права доступа к объектам.
  • 🗃️ Подсистема — раздел интерфейса, в который попадают объекты.

Где живёт код

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

МодульЧто в нём пишутПример
Модуль объектаСобытия записи и проведения одного экземпляраОбработкаПроведения, ПередЗаписью
Модуль менеджераПроцедуры для всего вида объектовПечатные формы, заполнение по шаблону
Модуль формыРеакция на действия пользователяНажатие кнопки, изменение поля
Общий модульФункции, которые зовут из разных местРасчёт скидки, проверка ИНН
Модуль сеансаДействия при старте сеансаУстановка параметров сеанса

Модуль открывают из контекстного меню объекта в дереве: правой кнопкой по документу → «Открыть модуль объекта» или «Открыть модуль менеджера».

Пишем первую программу в 1С по шагам

Самый быстрый путь увидеть результат — обработка с одной кнопкой.

  1. В дереве правой кнопкой по ветке «Подсистемы» → «Добавить». Имя — Учеба. Это будет раздел в интерфейсе.
  2. Правой кнопкой по ветке «Обработки» → «Добавить». Имя — Тренировка.
  3. На вкладке «Подсистемы» окна обработки отметьте флажком Учеба.
  4. На вкладке «Формы» нажмите кнопку добавления формы и пройдите конструктор до конца.
  5. В редакторе формы откройте вкладку «Команды», добавьте команду Поздороваться.
  6. В свойстве «Действие» команды нажмите кнопку с лупой — платформа создаст пустую процедуру в модуле формы.
  7. Перетащите команду мышью из списка команд на форму — появится кнопка.
  8. Впишите код процедуры:
&НаКлиенте
Процедура Поздороваться(Команда)
	
	Имя = "мир";
	Сообщить("Привет, " + Имя + "!");
	
КонецПроцедуры
  1. Нажмите F7 (Конфигурация → Обновить конфигурацию базы данных) и подтвердите изменения.
  2. Нажмите F5 — запустится 1С:Предприятие в режиме отладки. Откройте раздел «Учеба», обработку «Тренировка» и нажмите кнопку.

Внизу формы появится сообщение «Привет, мир!». Это и есть первая программа.

Если после F5 раздела нет — проверьте шаг 3. Объект, не включённый ни в одну подсистему, в разделах не показывается.

Язык программирования 1С: синтаксис для первого месяца

Встроенный язык 1С похож на Паскаль и Бейсик. Ключевые слова — русские, есть английские синонимы. Регистр букв не важен: Сообщить и СООБЩИТЬ — одно и то же. Каждая инструкция заканчивается точкой с запятой.

Базовые конструкции

// Комментарий начинается с двух косых черт
Функция СуммаСоСкидкой(Сумма, ПроцентСкидки) Экспорт
	
	Если ПроцентСкидки <= 0 Тогда
		Возврат Сумма;
	ИначеЕсли ПроцентСкидки >= 100 Тогда
		Возврат 0;
	Иначе
		Возврат Сумма - Сумма * ПроцентСкидки / 100;
	КонецЕсли;
	
КонецФункции

Процедура ВывестиЧисла()
	
	Для Номер = 1 По 3 Цикл
		Сообщить("Строка " + Формат(Номер, "ЧГ=0"));
	КонецЦикла;
	
КонецПроцедуры

Проверка арифметики: СуммаСоСкидкой(1000, 15) вернёт 1000 − 150 = 850.

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

  • 🔹 Процедура ничего не возвращает, функция возвращает значение через Возврат.
  • 🔹 Слово Экспорт делает процедуру видимой из других модулей.
  • 🔹 Переменные объявлять необязательно: переменная появляется при первом присваивании.
  • 🔹 Типы динамические. Основные примитивы — Число, Строка, Дата, Булево, плюс Неопределено и NULL.
  • 🔹 Строки склеивают через +. Число перед склейкой оборачивайте в Формат(..., "ЧГ=0"), иначе 1500 превратится в «1 500» с пробелом.

Коллекции

КоллекцияДля чегоПример
МассивСписок значений по индексу с нуляСписок выбранных товаров
СтруктураИменованные поляПараметры функции
СоответствиеКлюч → значениеКод товара → цена
ТаблицаЗначенийТаблица в памятиРезультат расчёта с колонками

Обход любой коллекции — циклом Для Каждого Элемент Из Коллекция Цикл ... КонецЦикла;.

Ошибки ловят конструкцией Попытка ... Исключение ... КонецПопытки;. Внутри блока Исключение текст ошибки отдаёт функция ОписаниеОшибки().

Полный справочник по встроенному языку есть прямо в конфигураторе: Справка → Синтакс-помощник. Там описан каждый метод, его параметры и где он доступен — на клиенте или на сервере.

Формы и клиент-серверная архитектура: где выполняется код

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

ДирективаГде выполняетсяЧто доступно
&НаКлиентеНа компьютере пользователяЭлементы формы, диалоги, сообщения
&НаСервереНа сервере, с данными формыЗапросы, объекты базы, данные формы
&НаСервереБезКонтекстаНа сервере, без данных формыТолько переданные параметры — быстрый вызов
&НаКлиентеНаСервереБезКонтекстаТам, откуда вызвалиОбщая логика без обращения к базе

Главное правило: к базе данных обращаются только на сервере. Запрос на клиенте не выполнится. Типичная пара процедур выглядит так:

&НаКлиенте
Процедура ПоказатьКоличество(Команда)
	
	Количество = КоличествоТоваровНаСервере();
	Сообщить("Товаров в справочнике: " + Формат(Количество, "ЧГ=0; ЧН=0"));
	
КонецПроцедуры

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

Пример предполагает, что в конфигурации есть справочник Номенклатура. Каждый вызов сервера с клиента — это обмен по сети. Поэтому собирайте всё, что нужно, за один вызов, а не дёргайте сервер в цикле.

Данные открытой формы доступны через Объект: например, Объект.Дата в форме документа. Элементы — через Элементы: Элементы.Товары.Видимость = Ложь;.

Запросы и работа с данными

Читать данные из базы в 1С принято запросами, а не перебором объектов. Язык запросов похож на SQL, но обращается к объектам конфигурации, а не к таблицам СУБД.

Запрос с параметром

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|	Номенклатура.Наименование КАК Наименование
|ИЗ
|	Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|	НЕ Номенклатура.ПометкаУдаления
|	И Номенклатура.Наименование ПОДОБНО &Шаблон";
Запрос.УстановитьПараметр("Шаблон", "%бумага%");

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить(Выборка.Наименование);
КонецЦикла;

Значения всегда передавайте через параметры &Имя, а не вклеивайте в текст запроса строкой.

Как писать запросы быстрее

  • 🛠️ Конструктор запроса. В модуле правой кнопкой → «Конструктор запроса». Таблицы и поля выбираются мышью, текст платформа соберёт сама.
  • 📦 Виртуальные таблицы регистров. Для остатков на дату не считайте приход минус расход вручную: у регистра накопления есть таблица Остатки(&Период).
  • 🗄️ Временные таблицы. Сложный запрос разбивают на пакет: результат первого запроса кладут во временную таблицу и используют дальше.
  • 🧪 Консоль запросов. Обработка, где можно выполнить текст запроса и сразу увидеть результат, не трогая конфигурацию.

Запись данных: проведение документа

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

Процедура ОбработкаПроведения(Отказ, Режим)
	
	Движения.ОстаткиТоваров.Записывать = Истина;
	
	Для Каждого СтрокаТЧ Из Товары Цикл
		Движение = Движения.ОстаткиТоваров.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
		Движение.Период = Дата;
		Движение.Номенклатура = СтрокаТЧ.Номенклатура;
		Движение.Количество = СтрокаТЧ.Количество;
	КонецЦикла;
	
КонецПроцедуры

Эту процедуру можно не набирать руками: в окне документа на вкладке «Движения» есть кнопка «Конструктор движений», которая генерирует похожий код.

Отладка и проверка кода

Отладчик в 1С встроен в конфигуратор. Для файловой базы дополнительно ничего настраивать не нужно.

Основные клавиши

ДействиеКлавиша
Поставить или снять точку остановаF9
Запустить отладкуF5
Шагнуть с заходом в процедуруF11
Шагнуть через процедуруF10
Вычислить выражениеShift+F9

Как искать ошибку

  1. Поставьте точку останова (F9) на строке перед подозрительным местом.
  2. Запустите F5 и повторите действие пользователя.
  3. Когда выполнение остановится, наведите курсор на переменную — увидите её значение.
  4. Для коллекций и объектов используйте Shift+F9: окно покажет содержимое по полям.
  5. Идите по шагам (F10/F11) до строки, где значение становится не тем, что ожидали.

Перед сдачей доработки запустите Конфигурация → Проверка конфигурации. Проверка найдёт синтаксические ошибки во всех модулях, обращения к несуществующим реквизитам и вызовы серверных методов с клиента.

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

Тестирование

Для начала хватает ручной проверки по сценарию: создать документ , провести, сверить остатки отчётом. Когда проект растёт, подключают автоматические тесты. Распространённый инструмент — открытый фреймворк Vanessa Automation: сценарии пишут на языке Gherkin, и они прогоняют пользовательские действия в интерфейсе.

Перед тем как отдать доработку
Выполнено: 0 / 6

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

Можно ли учиться программированию в 1С без лицензии?
Да. Учебная версия платформы бесплатна и запускается без ключа. Ограничения по объёму данных для учебных задач не мешают.
Как дорабатывать типовую конфигурацию, не ломая обновления?
Через расширения конфигурации — они появились в платформе 8.3.6. Расширение подключается к базе поверх типовой и не снимает её с поддержки, поэтому обновления ставятся штатно.
Нужно ли знать бухгалтерию, чтобы писать на 1С?
Для учебных задач — нет. Для работы с типовыми конфигурациями вроде Бухгалтерии нужно понимать хотя бы план счетов и логику проведения документов, иначе сложно разобраться, что делает чужой код.
Можно ли писать код на английском?
Да. У всех ключевых слов и методов есть английские синонимы: Procedure, If, Message. Но типовые конфигурации написаны по-русски, поэтому в командах обычно придерживаются русского варианта.
Сколько времени уходит, чтобы начать писать рабочий код?
Простые обработки и отчёты новичок пишет после 1–2 месяцев регулярной практики. Самостоятельные доработки типовых конфигураций — обычно через полгода работы с реальными задачами.