От пользователя к разработчику: первая процедура на встроенном языке 1С 8.3
Содержание
Чтобы перейти к написанию кода в 1С, нужны три вещи: копия базы, запуск в режиме Конфигуратор и внешняя обработка, в модуле которой вы напишете первую процедуру. Рабочую конфигурацию на первых шагах не трогайте — весь код новичка живёт во внешнем файле .epf, который не меняет базу.
Ниже пошаговый маршрут: где взять безопасную среду, как ориентироваться в дереве метаданных, как устроен модуль, как написать и запустить первую процедуру и как пройти её отладчиком. Всё описано для платформы 8.3 с интерфейсом «Такси».
1. Готовим безопасную среду для первых строк кода
Первое правило разработчика 1С: эксперименты — не в рабочей базе. Ошибка в коде проведения документа может испортить движения за месяц.
Варианты песочницы, от простого к удобному:
| Вариант | Как получить | Когда подходит |
|---|---|---|
| 📦 Копия рабочей базы | Выгрузить .dt через Администрирование → Выгрузить информационную базу в Конфигураторе и загрузить в новую пустую базу | Нужно учиться на своих данных |
| 🧪 Демо-база типовой конфигурации | Создать базу из шаблона при установке конфигурации, отметив демо-вариант | Нужны реальные справочники и документы без риска |
| 🎓 Учебная версия платформы | Скачивается бесплатно, работает без лицензии с ограничениями | Учитесь дома, лицензии нет |
| 📄 Пустая база без конфигурации | Создать новую базу «без конфигурации» в окне запуска | Хотите собрать свою конфигурацию с нуля |
Загрузка .dt в базу полностью заменяет её содержимое. Загружайте выгрузку только в новую, специально созданную базу, а не в рабочую.
Доступ к Конфигуратору
В окне запуска 1С выберите базу и нажмите Конфигуратор, а не 1С:Предприятие. Если кнопка не открывает базу, проверьте две вещи:
- 🔑 у пользователя есть роль с правом
Администрирование(в типовых — «Полные права» или «Администратор системы»); - 🧩 у вашей учётной записи нет запрета на запуск Конфигуратора, который иногда ставят администраторы.
После входа откройте дерево: Конфигурация → Открыть конфигурацию. Слева появится окно со всеми объектами базы.
Почему не правим типовую конфигурацию напрямую
Типовые конфигурации (Бухгалтерия, ЗУП, УТ) стоят на поддержке поставщика. Объекты в дереве помечены замочком, и изменить их нельзя без включения возможности изменений. Если её включить и поправить код, каждое обновление превращается в ручное сравнение и объединение.
Правильные пути для своего кода:
- Внешняя обработка или отчёт (
.epf,.erf) — отдельный файл, базу не меняет. Идеален для обучения. - Расширение конфигурации
(
Конфигурация → Расширения конфигурации) — доработка поверх типовой, переживает обновления. Появилось в платформе 8.3.6. - Изменение самой конфигурации — только когда первые два способа не подходят и есть программист, который будет сопровождать обновления.
2. Ориентируемся в дереве метаданных и находим нужный объект
Дерево метаданных — карта конфигурации. Каждая ветка — тип объекта, внутри — конкретные справочники, документы, регистры.
Основные ветки, с которыми встретится новичок:
- 📁 Общие — общие модули, роли, подсистемы, общие формы, подписки на события;
- 📇 Справочники — списки: контрагенты, номенклатура, сотрудники;
- 🧾 Документы — операции с датой и проведением: поступления, реализации, начисления;
- 📊 Регистры сведений, накопления, бухгалтерии — где хранятся итоги и движения;
- ⚙️ Обработки и Отчёты — встроенные инструменты конфигурации.
Как быстро найти объект
Пользователь видит «Реализация (акты, накладные)», а в дереве объект называется иначе. Чтобы не гадать:
- Запомните название формы в режиме 1С:Предприятие: имена объектов в дереве обычно близки к нему, только без пробелов и скобок.
- В Конфигураторе встаньте в дерево и начните набирать имя на клавиатуре — курсор перейдёт к подходящему объекту.
- Если имя не угадывается, воспользуйтесь строкой поиска над деревом конфигурации и ищите по части слова: «Реализация», «Поступление».
У каждого объекта в дереве — контекстное меню. В нём Открыть модуль объекта, Открыть модуль менеджера и список форм. Двойной щелчок открывает окно свойств и вкладки объекта: реквизиты, табличные части, формы, команды, макеты.
Учитесь читать код типовой конфигурации раньше, чем писать свой. Откройте модуль объекта любого документа и найдите процедуру ОбработкаПроведения — это готовый учебник по тому, как формируются движения.
3. Редактор модулей и синтакс-помощник: рабочие инструменты
Код в 1С пишется в модулях. Редактор открывается двойным щелчком по модулю или через контекстное меню объекта.
Что умеет редактор
- 🎨 подсвечивает ключевые слова, строки и комментарии разными цветами;
- 🧠 по
Ctrl+Пробелпоказывает контекстную подсказку: методы, свойства, переменные; - 📐 при вводе
ЕслиилиПроцедурапредлагает шаблон конструкции; - ✅ по
Ctrl+F7выполняет синтаксический контроль модуля и показывает ошибки внизу; - 🧩 в контекстном меню есть конструкторы — например,
Конструктор запроса, который собирает текст запроса мышью.
Синтакс-помощник
Синтакс-помощник — встроенный справочник по языку и объектам платформы. Открывается через Справка → Синтакс-помощник.
Самый быстрый способ попасть в нужную статью — поставить курсор на слово в коде и нажать Ctrl+F1. Откроется описание метода: параметры, тип возвращаемого значения, где он доступен — на клиенте, на сервере, во внешнем соединении.
Строка «Доступность» в описании метода — главное, что нужно читать новичку. Если метод доступен только на сервере, вызвать его в клиентской процедуре не получится.
Кроме синтакс-помощника, в Конфигураторе есть общая справка по платформе (Справка → Содержание справки). Там описаны принципы работы объектов, а не отдельные методы.
4. Как устроен программный модуль и откуда запускается код
Код в 1С не запускается «сам по себе». Он выполняется, когда платформа вызывает обработчик события или когда пользователь нажимает команду.
Виды модулей
| Модуль | Где находится | Когда выполняется |
|---|---|---|
| Модуль формы | Форма → вкладка Модуль | События формы и команды на ней |
| Модуль объекта | Контекстное меню объекта | Запись, проведение, заполнение объекта |
| Модуль менеджера | Контекстное меню объекта | Вызовы вида Справочники.Контрагенты.МояФункция() |
| Общий модуль | Ветка Общие → Общие модули | Вызывается из других модулей |
| Модуль сеанса и приложения | Свойства корня конфигурации | При старте сеанса и программы |
Три раздела модуля
Любой модуль строится в одном порядке:
- Объявление переменных модуля —
Перем ИмяПеременной;. - Процедуры и функции — основная часть кода.
- Основная программа — операторы вне процедур, выполняются при создании модуля. В модулях форм и общих модулях этот раздел обычно пуст.
Процедура выполняет действия, функция возвращает значение через Возврат. Обе заканчиваются строго своим словом: КонецПроцедуры и КонецФункции.
Клиент и сервер: директивы компиляции
В управляемых формах код делится на клиентский и серверный. Перед каждой процедурой формы стоит директива:
&НаКлиенте— выполняется на компьютере пользователя, доступ к форме и диалогам;&НаСервере— выполняется на сервере, доступ к базе и к данным формы;&НаСервереБезКонтекста— на сервере, но без передачи данных формы, поэтому быстрее.
Точка входа для пользовательской команды — клиентская процедура-обработчик. Если нужно прочитать данные из базы, она вызывает серверную функцию и получает результат.
5. Пишем первую процедуру: внешняя обработка с запросом
Задача примера: по кнопке посчитать количество контрагентов в базе и вывести сообщение. В примере справочник называется Контрагенты, как в Бухгалтерии 3.0 и УТ 11. В другой конфигурации подставьте имя своего справочника.
Создаём обработку
- В Конфигураторе выберите
Файл → Новый → Внешняя обработка. - Задайте имя, например
ПерваяОбработка, — без пробелов, латиница или кириллица. - На вкладке
ФормынажмитеДобавитьи пройдите конструктор формы до конца кнопкойГотово. - В редакторе формы откройте вкладку
Команды, добавьте командуПосчитать. - В свойстве команды
Действиенажмите на лупу — платформа спросит, где создать обработчик. Выберите вариант «на клиенте и процедура на сервере без контекста». - Перетащите команду из списка команд в дерево элементов формы — появится кнопка.
Код модуля формы
Перейдите на вкладку Модуль и приведите код к такому виду:
&НаКлиенте
Процедура Посчитать(Команда)
Количество = КоличествоКонтрагентовНаСервере();
Сообщить("В базе контрагентов: " + Формат(Количество, "ЧН=0; ЧГ=0"));
КонецПроцедуры
&НаСервереБезКонтекста
Функция КоличествоКонтрагентовНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(Контрагенты.Ссылка) КАК Количество
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Количество;
КонецЕсли;
Возврат 0;
КонецФункции
Разбор по строкам
- 🖱
Посчитать(Команда)— обработчик кнопки. Работает на клиенте, к базе напрямую не обращается. - 📡
КоличествоКонтрагентовНаСервере()— серверный вызов. Один вызов за нажатие, без лишних обращений. - 🔎
Новый Запрос— объект запроса. Текст многострочный: каждая строка после первой начинается с|. - 🔢
Формат(Количество, "ЧН=0; ЧГ=0")— число в строку без пробелов-разделителей; при нуле выводится «0», а не пустая строка. - 🛡 Возврат
0в конце — страховка, чтобы функция всегда возвращала число.
Нажмите Ctrl+F7 — ошибок быть не должно. Сохраните файл: Файл → Сохранить, расширение .epf.
Запуск
- Запустите базу в режиме 1С:Предприятие.
- Откройте меню
☰→Файл → Открытьи выберите сохранённый.epf. - Платформа может показать предупреждение безопасности о внешнем файле — подтвердите открытие своего файла.
- Нажмите кнопку
Посчитатьи прочитайте сообщение внизу формы.
Сообщить() удобен для учёбы. В типовых конфигурациях на базе БСП для сообщений принято использовать объект СообщениеПользователю или процедуры общих модулей библиотеки — посмотрите, как это сделано в коде вашей конфигурации.
6. Отладка: точки останова и пошаговое выполнение
Отладчик показывает, что реально происходит в коде: какие значения у переменных и по какой ветке пошло выполнение. Учиться программировать без него — всё равно что искать ошибку в отчёте без расшифровки.
Запуск в режиме отладки
- Откройте
.epfв Конфигураторе черезФайл → Открыть. - Поставьте курсор на строку
Количество = КоличествоКонтрагентовНаСервере();и нажмитеF9— слева появится красная точка. - Запустите
Отладка → Начать отладку → 1С:Предприятиеили нажмитеF5. - В открывшемся сеансе откройте тот же файл обработки и нажмите кнопку.
- Выполнение остановится на точке, Конфигуратор выйдет на передний план.
Клавиши отладчика
| Клавиша | Действие |
|---|---|
F9 | Поставить или снять точку останова |
F5 | Начать отладку или продолжить выполнение |
F11 | Шагнуть в процедуру — зайти внутрь вызова |
F10 | Шагнуть через — выполнить строку целиком |
Shift+F11 | Шагнуть из — выйти из текущей процедуры |
Shift+F9 | Вычислить выражение |
Shift+F5 | Завершить отладку |
В окне Вычислить выражение можно ввести любое выражение — например, Выборка.Количество — и увидеть значение. Для постоянного наблюдения за переменными есть Отладка → Табло.
Включите Отладка → Остановка по ошибке. Тогда выполнение остановится на строке, где возникло исключение, и вы увидите состояние переменных в момент ошибки.
Если база клиент-серверная
В файловой базе отладка серверного кода работает сразу. В клиент-серверной серверная часть отлаживается, только если отладка разрешена на сервере 1С: служба агента запускается с ключом -debug. Включать его — задача администратора сервера: изменение параметров службы требует её перезапуска, а значит, оборвутся сеансы всех пользователей. Делать это нужно вне рабочего времени и не на боевом сервере.
Тестирование
Отладка показывает один прогон. Перед тем как отдавать код в работу, проверьте его на разных данных:
- 🔁 пустой справочник — функция должна вернуть 0, а не упасть;
- 👤 запуск под пользователем без полных прав — хватает ли ролей на чтение;
- 📈 большой объём данных — не тормозит ли форма.
7. Ошибки новичка: что означают сообщения и как их исправить
Первые недели почти каждая ошибка — одна из типовых. Найдите свой текст сообщения:
Ошибки, о которых платформа не сообщает
Есть промахи, которые работают, но вредят:
- 🐢 Серверный вызов внутри цикла на клиенте. Сто строк — сто обращений к серверу. Собирайте данные одной серверной функцией.
- 🔓 Правка типовой конфигурации напрямую. Работает до первого обновления. Для доработок используйте расширения.
- 💬 Код без комментариев. Через месяц вы сами не вспомните, зачем нужна проверка. Комментарий начинается с
//. - 🧷 Запросы, собранные склейкой строк из значений. Передавайте значения через
Запрос.УстановитьПараметр("Имя", Значение)— так запрос читается проще и не ломается от кавычек в данных.
8. Что изучать после первой обработки
Когда первая обработка заработала, двигайтесь по нарастающей сложности:
- Запросы — выборки с условиями, соединения таблиц, виртуальные таблицы остатков и оборотов регистров.
- Работа с объектами — создание и запись элементов справочника из кода,
ПолучитьОбъект(),Записать(). - Отчёты на СКД — система компоновки данных, большая часть отчётов типовых конфигураций.
- Расширения конфигурации — заимствование объектов, добавление своей формы или своего реквизита.
- Обработчики событий объектов —
ПередЗаписью,ОбработкаПроведенияв расширении.