От пользователя к разработчику: первая процедура на встроенном языке 1С 8.3

· 11 мин

Содержание

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

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

1. Готовим безопасную среду для первых строк кода

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

Варианты песочницы, от простого к удобному:

ВариантКак получитьКогда подходит
📦 Копия рабочей базыВыгрузить .dt через Администрирование → Выгрузить информационную базу в Конфигураторе и загрузить в новую пустую базуНужно учиться на своих данных
🧪 Демо-база типовой конфигурацииСоздать базу из шаблона при установке конфигурации, отметив демо-вариантНужны реальные справочники и документы без риска
🎓 Учебная версия платформыСкачивается бесплатно, работает без лицензии с ограничениямиУчитесь дома, лицензии нет
📄 Пустая база без конфигурацииСоздать новую базу «без конфигурации» в окне запускаХотите собрать свою конфигурацию с нуля

Загрузка .dt в базу полностью заменяет её содержимое. Загружайте выгрузку только в новую, специально созданную базу, а не в рабочую.

Доступ к Конфигуратору

В окне запуска 1С выберите базу и нажмите Конфигуратор, а не 1С:Предприятие. Если кнопка не открывает базу, проверьте две вещи:

  • 🔑 у пользователя есть роль с правом Администрирование (в типовых — «Полные права» или «Администратор системы»);
  • 🧩 у вашей учётной записи нет запрета на запуск Конфигуратора, который иногда ставят администраторы.

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

Почему не правим типовую конфигурацию напрямую

Типовые конфигурации (Бухгалтерия, ЗУП, УТ) стоят на поддержке поставщика. Объекты в дереве помечены замочком, и изменить их нельзя без включения возможности изменений. Если её включить и поправить код, каждое обновление превращается в ручное сравнение и объединение.

Правильные пути для своего кода:

  1. Внешняя обработка или отчёт (.epf, .erf) — отдельный файл, базу не меняет. Идеален для обучения.
  2. Расширение конфигурации (Конфигурация → Расширения конфигурации) — доработка поверх типовой, переживает обновления. Появилось в платформе 8.3.6.
  3. Изменение самой конфигурации — только когда первые два способа не подходят и есть программист, который будет сопровождать обновления.

2. Ориентируемся в дереве метаданных и находим нужный объект

Дерево метаданных — карта конфигурации. Каждая ветка — тип объекта, внутри — конкретные справочники, документы, регистры.

Основные ветки, с которыми встретится новичок:

  • 📁 Общие — общие модули, роли, подсистемы, общие формы, подписки на события;
  • 📇 Справочники — списки: контрагенты, номенклатура, сотрудники;
  • 🧾 Документы — операции с датой и проведением: поступления, реализации, начисления;
  • 📊 Регистры сведений, накопления, бухгалтерии — где хранятся итоги и движения;
  • ⚙️ Обработки и Отчёты — встроенные инструменты конфигурации.

Как быстро найти объект

Пользователь видит «Реализация (акты, накладные)», а в дереве объект называется иначе. Чтобы не гадать:

  1. Запомните название формы в режиме 1С:Предприятие: имена объектов в дереве обычно близки к нему, только без пробелов и скобок.
  2. В Конфигураторе встаньте в дерево и начните набирать имя на клавиатуре — курсор перейдёт к подходящему объекту.
  3. Если имя не угадывается, воспользуйтесь строкой поиска над деревом конфигурации и ищите по части слова: «Реализация», «Поступление».

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

Учитесь читать код типовой конфигурации раньше, чем писать свой. Откройте модуль объекта любого документа и найдите процедуру ОбработкаПроведения — это готовый учебник по тому, как формируются движения.

3. Редактор модулей и синтакс-помощник: рабочие инструменты

Код в 1С пишется в модулях. Редактор открывается двойным щелчком по модулю или через контекстное меню объекта.

Что умеет редактор

  • 🎨 подсвечивает ключевые слова, строки и комментарии разными цветами;
  • 🧠 по Ctrl+Пробел показывает контекстную подсказку: методы, свойства, переменные;
  • 📐 при вводе Если или Процедура предлагает шаблон конструкции;
  • ✅ по Ctrl+F7 выполняет синтаксический контроль модуля и показывает ошибки внизу;
  • 🧩 в контекстном меню есть конструкторы — например, Конструктор запроса, который собирает текст запроса мышью.

Синтакс-помощник

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

Самый быстрый способ попасть в нужную статью — поставить курсор на слово в коде и нажать Ctrl+F1. Откроется описание метода: параметры, тип возвращаемого значения, где он доступен — на клиенте, на сервере, во внешнем соединении.

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

Кроме синтакс-помощника, в Конфигураторе есть общая справка по платформе (Справка → Содержание справки). Там описаны принципы работы объектов, а не отдельные методы.

4. Как устроен программный модуль и откуда запускается код

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

Виды модулей

МодульГде находитсяКогда выполняется
Модуль формыФорма → вкладка МодульСобытия формы и команды на ней
Модуль объектаКонтекстное меню объектаЗапись, проведение, заполнение объекта
Модуль менеджераКонтекстное меню объектаВызовы вида Справочники.Контрагенты.МояФункция()
Общий модульВетка Общие → Общие модулиВызывается из других модулей
Модуль сеанса и приложенияСвойства корня конфигурацииПри старте сеанса и программы

Три раздела модуля

Любой модуль строится в одном порядке:

  1. Объявление переменных модуля — Перем ИмяПеременной;.
  2. Процедуры и функции — основная часть кода.
  3. Основная программа — операторы вне процедур, выполняются при создании модуля. В модулях форм и общих модулях этот раздел обычно пуст.

Процедура выполняет действия, функция возвращает значение через Возврат. Обе заканчиваются строго своим словом: КонецПроцедуры и КонецФункции.

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

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

  • &НаКлиенте — выполняется на компьютере пользователя, доступ к форме и диалогам;
  • &НаСервере — выполняется на сервере, доступ к базе и к данным формы;
  • &НаСервереБезКонтекста — на сервере, но без передачи данных формы, поэтому быстрее.

Точка входа для пользовательской команды — клиентская процедура-обработчик. Если нужно прочитать данные из базы, она вызывает серверную функцию и получает результат.

5. Пишем первую процедуру: внешняя обработка с запросом

Задача примера: по кнопке посчитать количество контрагентов в базе и вывести сообщение. В примере справочник называется Контрагенты, как в Бухгалтерии 3.0 и УТ 11. В другой конфигурации подставьте имя своего справочника.

Создаём обработку

  1. В Конфигураторе выберите Файл → Новый → Внешняя обработка.
  2. Задайте имя, например ПерваяОбработка, — без пробелов, латиница или кириллица.
  3. На вкладке Формы нажмите Добавить и пройдите конструктор формы до конца кнопкой Готово.
  4. В редакторе формы откройте вкладку Команды, добавьте команду Посчитать.
  5. В свойстве команды Действие нажмите на лупу — платформа спросит, где создать обработчик. Выберите вариант «на клиенте и процедура на сервере без контекста».
  6. Перетащите команду из списка команд в дерево элементов формы — появится кнопка.

Код модуля формы

Перейдите на вкладку Модуль и приведите код к такому виду:

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

	Количество = КоличествоКонтрагентовНаСервере();
	Сообщить("В базе контрагентов: " + Формат(Количество, "ЧН=0; ЧГ=0"));

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

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

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	КОЛИЧЕСТВО(Контрагенты.Ссылка) КАК Количество
	|ИЗ
	|	Справочник.Контрагенты КАК Контрагенты";

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

	Возврат 0;

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

Разбор по строкам

  • 🖱 Посчитать(Команда) — обработчик кнопки. Работает на клиенте, к базе напрямую не обращается.
  • 📡 КоличествоКонтрагентовНаСервере() — серверный вызов. Один вызов за нажатие, без лишних обращений.
  • 🔎 Новый Запрос — объект запроса. Текст многострочный: каждая строка после первой начинается с |.
  • 🔢 Формат(Количество, "ЧН=0; ЧГ=0") — число в строку без пробелов-разделителей; при нуле выводится «0», а не пустая строка.
  • 🛡 Возврат 0 в конце — страховка, чтобы функция всегда возвращала число.

Нажмите Ctrl+F7 — ошибок быть не должно. Сохраните файл: Файл → Сохранить, расширение .epf.

Запуск

  1. Запустите базу в режиме 1С:Предприятие.
  2. Откройте меню ☰ → Файл → Открыть и выберите сохранённый .epf.
  3. Платформа может показать предупреждение безопасности о внешнем файле — подтвердите открытие своего файла.
  4. Нажмите кнопку Посчитать и прочитайте сообщение внизу формы.

Сообщить() удобен для учёбы. В типовых конфигурациях на базе БСП для сообщений принято использовать объект СообщениеПользователю или процедуры общих модулей библиотеки — посмотрите, как это сделано в коде вашей конфигурации.

6. Отладка: точки останова и пошаговое выполнение

Отладчик показывает, что реально происходит в коде: какие значения у переменных и по какой ветке пошло выполнение. Учиться программировать без него — всё равно что искать ошибку в отчёте без расшифровки.

Запуск в режиме отладки

  1. Откройте .epf в Конфигураторе через Файл → Открыть.
  2. Поставьте курсор на строку Количество = КоличествоКонтрагентовНаСервере(); и нажмите F9 — слева появится красная точка.
  3. Запустите Отладка → Начать отладку → 1С:Предприятие или нажмите F5.
  4. В открывшемся сеансе откройте тот же файл обработки и нажмите кнопку.
  5. Выполнение остановится на точке, Конфигуратор выйдет на передний план.

Клавиши отладчика

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

В окне Вычислить выражение можно ввести любое выражение — например, Выборка.Количество — и увидеть значение. Для постоянного наблюдения за переменными есть Отладка → Табло.

Включите Отладка → Остановка по ошибке. Тогда выполнение остановится на строке, где возникло исключение, и вы увидите состояние переменных в момент ошибки.

Если база клиент-серверная

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

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

Отладка показывает один прогон. Перед тем как отдавать код в работу, проверьте его на разных данных:

  • 🔁 пустой справочник — функция должна вернуть 0, а не упасть;
  • 👤 запуск под пользователем без полных прав — хватает ли ролей на чтение;
  • 📈 большой объём данных — не тормозит ли форма.

7. Ошибки новичка: что означают сообщения и как их исправить

Первые недели почти каждая ошибка — одна из типовых. Найдите свой текст сообщения:

Диагностика: выберите симптом

Ошибки, о которых платформа не сообщает

Есть промахи, которые работают, но вредят:

  • 🐢 Серверный вызов внутри цикла на клиенте. Сто строк — сто обращений к серверу. Собирайте данные одной серверной функцией.
  • 🔓 Правка типовой конфигурации напрямую. Работает до первого обновления. Для доработок используйте расширения.
  • 💬 Код без комментариев. Через месяц вы сами не вспомните, зачем нужна проверка. Комментарий начинается с //.
  • 🧷 Запросы, собранные склейкой строк из значений. Передавайте значения через Запрос.УстановитьПараметр("Имя", Значение) — так запрос читается проще и не ломается от кавычек в данных.

8. Что изучать после первой обработки

Когда первая обработка заработала, двигайтесь по нарастающей сложности:

  1. Запросы — выборки с условиями, соединения таблиц, виртуальные таблицы остатков и оборотов регистров.
  2. Работа с объектами — создание и запись элементов справочника из кода, ПолучитьОбъект(), Записать().
  3. Отчёты на СКД — система компоновки данных, большая часть отчётов типовых конфигураций.
  4. Расширения конфигурации — заимствование объектов, добавление своей формы или своего реквизита.
  5. Обработчики событий объектов — ПередЗаписью, ОбработкаПроведения в расширении.
Нужно ли знать английский, чтобы программировать в 1С?
Нет. Встроенный язык поддерживает русские ключевые слова, и типовые конфигурации написаны на них. У каждого оператора есть английский вариант, но смешивать их в одном модуле не принято.
Можно ли писать код в 1С без лицензии?
Для учёбы есть бесплатная учебная версия платформы. Она работает без ключа, но с ограничениями по объёму данных и функциям, для коммерческого учёта не подходит.
Чем Конфигуратор отличается от 1С:EDT?
Конфигуратор встроен в платформу и подходит для старта. 1С:Enterprise Development Tools — отдельная среда на основе Eclipse с работой через Git; её обычно осваивают после базовых навыков.
Сколько времени нужно, чтобы написать первую полезную обработку?
Простую обработку с запросом и сообщением новичок пишет за вечер. Групповое изменение реквизитов или выгрузку в файл — после пары недель регулярной практики с запросами.
Где смотреть примеры кода, кроме синтакс-помощника?
В коде самих типовых конфигураций: общие модули, модули документов, формы. Это рабочий код, который прошёл проверку на тысячах баз.