Где писать программный код в 1С 8.3 и как запустить его в работу

· 10 мин

Содержание

Код в 1С 8.3 вводят в Конфигураторе: открываете базу кнопкой Конфигуратор в окне запуска, затем Конфигурация → Открыть конфигурацию, находите объект в дереве и открываете его модуль. В режиме 1С:Предприятие напрямую в модули писать нельзя — там код запускают через внешнюю обработку (.epf), расширение (.cfe) или готовую консоль кода.

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

Как открыть Конфигуратор и подготовить конфигурацию к правке

Порядок такой:

  1. Запустите 1С, выберите базу в списке.
  2. Нажмите кнопку Конфигуратор справа от списка.
  3. Введите пользователя с полными правами (роль «Полные права» или «Администратор системы»).
  4. В меню выберите Конфигурация → Открыть конфигурацию. Слева появится дерево объектов.

Если дерево открылось, а модули не редактируются — конфигурация стоит на поддержке. Это нормально для типовых решений: Бухгалтерии, ЗУП, УТ.

Вариантов два:

СпособКогда подходитЧем платите
Расширение конфигурацииДоработка типовой, которую регулярно обновляютПочти ничем: обновления ставятся без ручного сравнения
Снятие с поддержки (включение возможности изменения)Глубокая переделка, которую расширением не сделатьКаждое обновление — сравнение и объединение вручную
Внешняя обработкаРазовая операция с данными, отчёт, проверкаКод живёт вне базы, его надо открывать отдельно

Чтобы разрешить правку основной конфигурации: Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения. Затем для нужного объекта ставят правило «Объект поставщика редактируется с сохранением поддержки».

Перед первой правкой рабочей базы сделайте выгрузку: Администрирование → Выгрузить информационную базу (файл .dt). Откат правок в модулях без копии превращается в ручной поиск по сотням строк.

Расширение создают так: Конфигурация → Расширения конфигурации, кнопка «Добавить». Расширения появились в платформе 8.3.6. На свежих релизах платформы в них можно заимствовать почти любые объекты типовой.

Куда именно вводить программный код: виды модулей

Главный вопрос новичка — не «как написать», а «где». Один и тот же код в разных модулях ведёт себя по-разному.

  • 📄 Модуль объекта — код самого документа или справочника: обработчики ПередЗаписью, ОбработкаПроведения, ОбработкаЗаполнения. Открывается правой кнопкой по объекту → «Открыть модуль объекта».
  • 🗂 Модуль менеджера — процедуры, которые не привязаны к конкретному экземпляру: печать, получение данных по всему списку. Там же, в контекстном меню.
  • 🖼 Модуль формы — обработка кнопок и полей на форме. Откройте форму из ветки «Формы» объекта и переключитесь на вкладку «Модуль» внизу редактора.
  • 🧩 Общий модуль — ветка Общие → Общие модули. Сюда выносят процедуры, которые вызывают из разных мест. В свойствах модуля флажками задают, где он доступен: клиент, сервер, внешнее соединение, вызов сервера.
  • ⚙️ Модуль приложения и модуль сеанса — правой кнопкой по корню дерева: «Открыть модуль управляемого приложения», «Открыть модуль сеанса». Код здесь срабатывает при каждом запуске, поэтому ошибка в нём не пустит в базу никого.

Как быстро найти нужное место в конфигурации

  • 🔎 Строка поиска над деревом объектов фильтрует его по имени.
  • 🌐 Глобальный поиск Ctrl+Shift+F ищет текст во всех модулях сразу. Полезно, когда известен текст сообщения, а не имя процедуры.
  • ↪️ F12 на имени процедуры переносит к её определению, даже если она в другом модуле.
  • 📋 В открытом модуле список процедур показывает кнопка «Процедуры и функции» на панели или Ctrl+Alt+P.

💡 Если не понимаете, какой код отвечает за кнопку на форме, откройте форму, выделите кнопку и посмотрите её свойство «Действие». Через лупу рядом перейдёте прямо в обработчик.

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

Встроенный язык 1С нечувствителен к регистру и понимает английские синонимы (Если = If). Остальные правила простые, но строгие.

  • ✅ Каждый оператор заканчивается точкой с запятой ;.
  • ✅ Блоки закрываются парными словами: Если … КонецЕсли;, Для … КонецЦикла;, Процедура … КонецПроцедуры.
  • ✅ Комментарий начинается с // и идёт до конца строки.
  • ✅ Строки — в двойных кавычках, перенос строки внутри литерала — символом | в начале следующей строки.
  • ✅ В модуле формы перед процедурой ставят директиву: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста.

Пример обработчика команды формы, который считает сумму строк табличной части на сервере и выводит результат:

&НаКлиенте
Процедура ПосчитатьИтог(Команда)
	Итог = ИтогНаСервере();
	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = СтрШаблон("Сумма по строкам: %1", Формат(Итог, "ЧДЦ=2"));
	Сообщение.Сообщить();
КонецПроцедуры

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

Здесь клиентская процедура вызывает серверную функцию. Обратный порядок — сервер вызывает клиентскую процедуру — не работает : сервер не видит клиентский код.

Объекты базы (Справочники, Документы, Запрос) доступны только на сервере. Попытка обратиться к ним в процедуре с &НаКлиенте — самая частая причина ошибок у тех, кто пришёл из 8.2 с обычными формами.

Приёмы редактора: подсказки, шаблоны, конструкторы

Редактор Конфигуратора сам дописывает большую часть кода. Набирать всё руками — медленно и с опечатками.

КлавишиЧто делает
Ctrl+SpaceКонтекстная подсказка: методы, свойства, переменные
Ctrl+Shift+SpaceПодсказка по параметрам метода, когда курсор внутри скобок
Ctrl+QШаблоны текста: набираете «Если», выбираете шаблон, получаете готовый блок
Ctrl+F1Открывает слово под курсором в синтакс-помощнике
F12Переход к определению процедуры
Ctrl+F7Синтаксический контроль текущего модуля
Alt+Shift+FФорматирование выделенного блока (отступы)

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

Конструкторы вместо ручного набора

  • 🧱 Конструктор запроса — правой кнопкой внутри модуля → «Конструктор запроса» (или «Конструктор запроса с обработкой результата»). Поля и условия выбираются мышкой, текст запроса вставляется в код.
  • 🖨 Конструктор движений — в окне документа на вкладке «Движения». Выбираете регистры, сопоставляете поля, и конструктор сам пишет процедуру ОбработкаПроведения в модуле объекта.

💡 Если конструктор запроса не открывается по правой кнопке, поставьте курсор внутрь строки с текстом запроса. Тогда редактор откроет конструктор с уже разобранным запросом, а не пустой.

Код без правки конфигурации: что доступно в режиме Предприятия

Если прав на Конфигуратор нет или трогать типовую нельзя, код запускают из пользовательского режима. Писать его всё равно придётся в Конфигураторе (или в EDT), а вот выполнять — в Предприятии.

Внешняя обработка

  1. В Конфигураторе: Файл → Новый → Внешняя обработка.
  2. Добавьте форму, на неё — команду, в модуле формы — код.
  3. Сохраните файл с расширением .epf.
  4. В Предприятии: Файл → Открыть (в интерфейсе «Такси» — через главное меню с иконкой в заголовке окна) и выберите файл.

Для открытия нужно право «Интерактивное открытие внешних обработок». В типовых на БСП обработку можно ещё и зарегистрировать: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Тогда она появится в нужном разделе меню у пользователей.

Расширение конфигурации

Расширение подключается без снятия поддержки. В расширение заимствуют объект, добавляют свой обработчик с аннотацией &После("ИмяПроцедуры") или &Перед("ИмяПроцедуры") — и код выполняется вместе с типовым. Загрузить готовый .cfe можно и в Предприятии: Все функции → Стандартные → Управление расширениями конфигурации.

Консоль кода

Это внешняя обработка с полем для текста и кнопкой «Выполнить». Удобна для разовых правок данных: пересчитать реквизит, найти объекты по условию. Такие консоли распространяются как инструменты разработчика и открываются тем же Файл → Открыть.

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

Отладка: как проверить введённый код до запуска у пользователей

Синтаксический контроль Ctrl+F7 ловит только ошибки написания. Логические ошибки ищут отладчиком.

  1. Поставьте курсор на строку и нажмите F9 — слева появится точка останова.
  2. Запустите отладку: F5 или Отладка → Начать отладку. Откроется 1С:Предприятие.
  3. Выполните действие, которое вызывает код: нажмите кнопку, проведите документ.
  4. Конфигуратор остановится на точке. Дальше шагайте по коду.
КлавишиДействие
F11Шаг с заходом внутрь вызываемой процедуры
F10Шаг через вызов, без захода внутрь
Shift+F11Выйти из текущей процедуры
Shift+F9Вычислить выражение: значение переменной, результат функции

💡 Значения переменных удобно держать в окне «Табло» (меню Отладка). Туда добавляют выражения, и они пересчитываются на каждом шаге.

Особенности клиент-серверной базы

В файловой базе отладка работает сразу. В клиент-серверной серверный код отлаживается, только если сервер 1С запущен с разрешённой отладкой (ключ -debug у службы агента). Без него точки останова в процедурах &НаСервере срабатывать не будут.

Включение отладки требует перезапуска службы сервера 1С. При перезапуске службы обрываются сеансы всех пользователей — делайте это вне рабочего времени и предупредив людей.

Протокол отладки (TCP или HTTP) выбирают в Конфигураторе: Сервис → Параметры → Отладка. Подключиться к уже запущенному клиенту можно через Отладка → Подключение.

Сохранение и обновление базы данных: F7 и что происходит дальше

В Конфигураторе две конфигурации: основная (та, что вы правите) и конфигурация базы данных (та, с которой работают пользователи). Пока вы не обновили вторую, люди ваших правок не видят.

  • 💾 Ctrl+S или Конфигурация → Сохранить — записывает изменения в основную конфигурацию.
  • 🔄 F7 или Конфигурация → Обновить конфигурацию базы данных — переносит их в рабочую.

Если правились только модули, обновление проходит быстро. Если добавлены реквизиты, измерения регистров или новые объекты — меняется структура таблиц. Программа покажет окно «Реорганизация информации» со списком изменений и попросит подтвердить.

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

Если запустить Предприятие из Конфигуратора без F7, появится вопрос о том, что конфигурация базы данных не соответствует сохранённой. Ответ «Нет» запустит базу со старым кодом — и вы будете искать ошибку, которой уже нет.

С расширением то же самое: после правки его дерево тоже нужно сохранить и обновить в базе, иначе в Предприятии будет работать прежняя версия.

Ошибки при вводе кода и как их снять

Ниже — тексты, которые выдаёт синтаксический контроль или Предприятие при выполнении. Выберите свой симптом.

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

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

Можно ли ввести код в 1С без Конфигуратора?
Писать код удобнее всего в Конфигураторе или в EDT. Выполнить готовый код можно и в режиме Предприятия — через внешнюю обработку, расширение или консоль кода.
Чем EDT отличается от Конфигуратора?
1C:Enterprise Development Tools — отдельная среда разработки на базе Eclipse. Удобна для командной работы и Git, но требует больше памяти и времени на освоение. Для разовой правки модуля хватает Конфигуратора.
Почему подсказка Ctrl+Space ничего не показывает?
Редактор не знает тип переменной. Так бывает со значениями, полученными из функций. Помогает присвоить переменной значение явно (например, Новый ТаблицаЗначений) или искать методы в синтакс-помощнике по Ctrl+F1.
Как вернуть всё назад, если код сломал базу?
Загрузите выгрузку .dt, сделанную до правки: Администрирование → Загрузить информационную базу. Для основной конфигурации без копии можно вернуться к конфигурации базы данных: Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД.