Первые шаги разработчика 1С: среда, язык, метаданные и отладка

· 10 мин

Содержание

Программирование в 1С выглядит так: вы открываете базу в режиме «Конфигуратор», в дереве слева создаёте объекты (справочник, документ, регистр), а в их модулях пишете код на встроенном языке с русскими ключевыми словами — Если … Тогда, Для Каждого … Из … Цикл, КонецПроцедуры. Большую часть программы вы не пишете, а собираете мышью из метаданных. Код нужен для логики: проверки, проведение документов, расчёты, запросы к данным.

Начать проще всего с учебной версии платформы и пустой конфигурации. За первый вечер реально создать справочник «Товары», документ «Приход» и регистр остатков, который этот документ заполняет. Это и есть минимальная рабочая программа на 1С.

С чего начать программировать в 1С: что установить

Для старта не нужен сервер и покупная лицензия. Достаточно трёх вещей.

  1. 🧩 Учебная версия платформы 1С:Предприятие 8.3. Бесплатная, ставится на обычный компьютер. Ограничена по объёму данных и не предназначена для коммерческой работы, но язык и конфигуратор в ней те же.
  2. 📁 Пустая информационная база. В окне запуска нажмите Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации. Получите чистый лист.
  3. 📘 Учебник с практикой. Классика — «1С:Предприятие 8.3. Практическое пособие разработчика» (М. Г. Радченко, Е. Ю. Хрусталёва). Книга ведёт от пустой базы до работающей конфигурации.

Дальше путь обычно такой:

ЭтапЧто осваиваетеОриентир по времени
1Конфигуратор, справочники, документы, регистры2–4 недели
2Встроенный язык, модули, обработчики событий1–2 месяца
3Язык запросов, отчёты на СКД1–2 месяца
4Типовые конфигурации (БП, ЗУП, УТ), доработки через расширенияот полугода

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

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

Как выглядит среда разработки: Конфигуратор и EDT

Конфигуратор

Это основной инструмент. Запуск: окно запуска 1С → выбрать базу → кнопка Конфигуратор. Затем Конфигурация → Открыть конфигурацию.

Что вы видите на экране:

  • 🌳 Дерево конфигурации слева — все объекты базы по группам: Общие, Константы, Справочники, Документы, Регистры и так далее.
  • ⚙️ Палитра свойств — имя, синоним, типы реквизитов, настройки выбранного объекта.
  • 📝 Окно объекта — вкладки «Данные», «Формы», «Команды», «Макеты», «Прочее». С вкладок открываются модули и редактор форм.
  • 🖊️ Редактор модуля — текстовое окно с подсветкой синтаксиса и контекстной подсказкой по Ctrl+Пробел.

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

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

1С:EDT

1C:Enterprise Development Tools — вторая среда, построенная на Eclipse. Работает с конфигурацией как с набором файлов, поэтому удобна для командной разработки и хранения кода в Git.

КритерийКонфигураторEDT
Порог входаНизкийВыше: проект, рабочая область, связь с базой
Требования к компьютеруСкромныеНужно больше памяти
Командная работаХранилище конфигурацииGit, ветки, слияния
Проверка кодаБазоваяВстроенные проверки по стандартам

Для обучения начинайте с конфигуратора. На EDT переходят, когда появляется команда и нужен контроль версий.

Объекты метаданных: на чём держится любая программа 1С

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

Основные виды объектов:

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

Главная связка, которую нужно понять с самого начала: документ → движения → регистр → отчёт. Документ при проведении записывает строки в регистр. Отчёт читает регистр, а не перебирает документы. Так устроены все типовые конфигурации.

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

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

Язык похож на смесь Pascal и Visual Basic, только с русскими словами. У каждого ключевого слова есть английский вариант (Если — If, Процедура — Procedure), но в типовых конфигурациях пишут по-русски.

Базовые правила:

  • 🔤 Регистр букв не важен: Сумма и СУММА — одна переменная.
  • ➖ Каждый оператор заканчивается точкой с запятой.
  • 💬 Комментарий начинается с //.
  • 🔄 Типизация динамическая: тип переменной определяется присвоенным значением.
  • 📅 Строки в двойных кавычках, даты в одинарных: '20260101'.

Пример процедуры и функции:

// Возвращает сумму со скидкой
Функция СуммаСоСкидкой(Сумма, ПроцентСкидки) Экспорт

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

КонецФункции

Процедура ПоказатьИтог()

	Итог = СуммаСоСкидкой(1500, 10);
	Сообщить("К оплате: " + Формат(Итог, "ЧДЦ=2"));

КонецПроцедуры

Здесь СуммаСоСкидкой(1500, 10) вернёт 1350. Число склеивается со строкой через Формат: форматная строка ЧДЦ=2 выводит ровно два знака после запятой, и на экране будет «1 350,00».

Циклы и обработка ошибок:

Итого = 0;
Для Каждого Строка Из Объект.Товары Цикл
	Итого = Итого + Строка.Сумма;
КонецЦикла;

Попытка
	НовыйЭлемент.Записать();
Исключение
	Сообщить("Не удалось записать: " + ОписаниеОшибки());
КонецПопытки;

Кроме Для Каждого есть цикл со счётчиком Для Сч = 1 По 10 Цикл и цикл с условием Пока … Цикл. Универсальные коллекции — Массив, Структура, Соответствие, ТаблицаЗначений — создаются через Новый.

Где живёт код: модули и обработчики событий

В 1С нет одной точки входа вроде main(). Код лежит в модулях и срабатывает на события: открыли форму, записали элемент, провели документ.

Основные модули:

  • 📄 Модуль объекта — события записи и проведения конкретного документа или элемента.
  • 🗂️ Модуль менеджера — действия с объектом в целом, без конкретного экземпляра.
  • 🪟 Модуль формы — реакция на действия пользователя: нажатие кнопки, изменение поля.
  • 🧰 Общие модули — процедуры, которые вызываются из разных мест.
  • 🚀 Модуль сеанса и модуль управляемого приложения — код при старте сеанса и при запуске клиента.

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

Процедура ОбработкаПроведения(Отказ, Режим)

	Движения.ОстаткиТоваров.Записывать = Истина;

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

КонецПроцедуры

Писать этот код вручную не обязательно. На закладке «Движения» документа есть Конструктор движений: выбираете регистр, сопоставляете поля, и конструктор вставляет готовый обработчик. Затем его дорабатывают.

Параметр Отказ — способ остановить действие. Установили Отказ = Истина — документ не проведётся, а пользователь увидит ваше сообщение.

Клиент и сервер в коде 1С: директивы компиляции

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

ДирективаГде выполняетсяДоступ к данным формы
&НаКлиентеНа компьютере пользователяЕсть
&НаСервереНа сервереЕсть, форма передаётся на сервер
&НаСервереБезКонтекстаНа сервереНет, только переданные параметры
&НаКлиентеНаСервереБезКонтекстаТам, откуда вызвалиНет

Пример: кнопка на форме считает сумму по базе.

&НаКлиенте
Процедура ПосчитатьСумму(Команда)

	Сумма = СуммаПоКонтрагентуНаСервере(Объект.Контрагент);
	Сообщить("Сумма: " + Формат(Сумма, "ЧДЦ=2"));

КонецПроцедуры

&НаСервереБезКонтекста
Функция СуммаПоКонтрагентуНаСервере(Контрагент)

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

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

КонецФункции

Каждый вызов с клиента на сервер — это сетевое обращение. Правило практика: один серверный вызов на одно действие пользователя. Пять вызовов подряд в обработчике кнопки — заметная задержка у пользователя на удалённом подключении.

&НаСервереБезКонтекста предпочтительнее &НаСервере, когда данные формы не нужны: на сервер не передаётся вся форма, вызов легче.

Для общих модулей место выполнения задают флажками в свойствах: «Клиент (управляемое приложение)», «Сервер», «Вызов сервера». Флажок «Вызов сервера» разрешает вызывать процедуры модуля с клиента.

Запросы к данным в 1С

Читать данные из базы правильно запросами, а не перебором объектов. Язык запросов похож на SQL, но со своими особенностями: русские слова (ВЫБРАТЬ, ИЗ, ГДЕ, СГРУППИРОВАТЬ ПО), обращение к реквизитам через точку и виртуальные таблицы регистров.

Пример: остатки товаров на дату, только отрицательные.

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

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

Виртуальная таблица Остатки считает остатки на дату сама, без суммирования приходов и расходов. У регистров накопления есть ещё Обороты и ОстаткиИОбороты.

Текст запроса удобно собирать в Конструкторе запроса: щёлкните правой кнопкой внутри строки текста запроса в модуле и выберите конструктор. Он показывает таблицы, поля, связи и условия на вкладках, а на выходе вставляет готовый текст.

Три ошибки, которые замедляют конфигурацию сильнее всего:

  • 🐢 Запрос в цикле. Сто строк — сто обращений к базе. Соберите параметры в массив и сделайте один запрос с условием В (&Список).
  • 🔗 Чтение через точку от ссылки в коде. Документ.Контрагент.ИНН на сервере читает из базы весь объект контрагента. Получайте нужные поля в запросе.
  • 📦 Отбор по измерениям в ГДЕ вместо параметров виртуальной таблицы. Условие лучше ставить в параметре самой таблицы Остатки(&НаДату, Склад = &Склад): платформа отфильтрует до расчёта.

Отчёты в 1С строят на системе компоновки данных (СКД). В схеме пишется тот же запрос, а группировки, отборы и оформление пользователь настраивает сам, без программиста.

Отладка и тестирование конфигурации

Отладчик

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

  • 🔴 F9 — поставить или снять точку останова на строке.
  • ⏭️ F10 — шаг через: выполнить строку целиком.
  • ⤵️ F11 — шаг с заходом внутрь вызываемой процедуры.
  • 🧮 Shift+F9 — вычислить выражение: посмотреть значение переменной, содержимое таблицы значений или результат запроса.

Когда выполнение остановилось на точке останова, окно «Вычислить выражение» показывает переменные и позволяет раскрыть коллекции. Окно «Стек вызовов» показывает цепочку процедур, которая привела к этой строке.

Для поиска медленных мест есть Отладка → Замер производительности. Включаете замер, выполняете действие, выключаете — получаете список строк с числом вызовов и временем выполнения. Сразу видно, какой запрос или цикл съедает секунды.

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

Ручная проверка — проводите документы в пользовательском режиме и смотрите движения через отчёт или форму регистра. Для регулярных проверок используют инструменты автотестов:

  • ✅ Vanessa Automation — сценарные тесты на языке Gherkin: «Дано… Когда… Тогда…». Тест кликает по формам как пользователь.
  • 🧪 YAxUnit — модульные тесты для EDT: проверяют отдельные функции общих модулей.

Начинающему достаточно отладчика и привычки проверять каждую процедуру на краевых случаях: пустая табличная часть, нулевая сумма, незаполненная ссылка.

Проверьте себя
Где нужно разместить код, который читает данные из базы по нажатию кнопки на форме?
Что нужно сделать в конфигураторе, чтобы новый справочник появился в пользовательском режиме?
Какой объект хранит остатки товаров на складах?

Частые вопросы о программировании в 1С

Нужно ли знать другой язык программирования, чтобы начать?
Нет. Встроенный язык 1С осваивают с нуля. Опыт с SQL помогает быстрее понять язык запросов, но не обязателен.
Можно ли писать код 1С на английском?
Да, у каждого ключевого слова и метода есть английский вариант. Но типовые конфигурации написаны по-русски, и в командах принято придерживаться русского синтаксиса.
Чем учебная версия отличается от полной?
Язык и конфигуратор те же. Ограничены объём данных и сценарии работы: учебная версия предназначена для обучения, вести в ней реальный учёт нельзя.
Что важнее знать: бухгалтерию или язык?
Для старта — язык и метаданные. Для работы с типовыми конфигурациями понимание учёта становится обязательным: без него не разобраться, почему документ делает именно такие проводки.
Где брать задачи для практики?
Перенесите в 1С то, что ведёте в таблицах: домашний бюджет, учёт книг, склад небольшого магазина. Справочники, документ, регистр и отчёт — полный цикл на реальной задаче.