Первая обработка: «Привет, мир»

Пора написать первый работающий код. В мире 1С «Привет, мир» удобнее всего сделать в виде внешней обработки.

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

Обработка — объект 1С, предназначенный для действий над данными (в отличие от отчёта, который данные только показывает). Внешняя обработка хранится отдельным файлом и подключается к любой базе.

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

В Конфигураторе: меню «Файл» → «Новый» → «Внешняя обработка». Платформа создаст пустую обработку и предложит дать ей имя, например ПриветМир. Теперь добавим ей форму: в дереве обработки правой кнопкой на «Формы» → «Добавить» → «Форма обработки». Откроется конструктор управляемой формы.

Добавляем кнопку и код

На форму добавим команду с кнопкой. В редакторе формы на вкладке «Команды» создаём команду Поздороваться, перетаскиваем её на форму (появляется кнопка), и по двойному щелчку на команде платформа создаёт заготовку обработчика в модуле формы. Пишем внутри:

&НаКлиенте
Процедура Поздороваться(Команда)
    Сообщить("Привет, мир!");
КонецПроцедуры

Результат (после запуска и нажатия кнопки внизу окна появится служебное сообщение):

Привет, мир!

Разбираем построчно

  • &НаКлиенте — директива компиляции. Она говорит платформе: этот код выполняется на стороне клиента (на компьютере пользователя). Обработчики кнопок почти всегда клиентские, потому что кнопку нажимает пользователь.
  • Процедура Поздороваться(Команда) — объявление процедуры. Команда — параметр, который платформа передаёт автоматически (сама команда, вызвавшая обработчик).
  • Сообщить("Привет, мир!"); — вызов глобального метода Сообщить, который выводит текст в окно служебных сообщений. Обратите внимание на точку с запятой в конце оператора — в 1С она обязательна.
  • КонецПроцедуры — закрывающая конструкция. В 1С у каждой открывающей конструкции есть парная закрывающая: Процедура…КонецПроцедуры, Если…КонецЕсли.

Как это работает

Запускаем режим «Предприятие» (F5), открываем нашу обработку (Файл → Открыть → выбрать .epf). Пользователь видит форму с кнопкой. Нажатие кнопки вызывает клиентскую процедуру Поздороваться, и метод Сообщить выводит строку в панель сообщений внизу окна. Никакого обращения к базе данных здесь нет — всё происходит на клиенте, поэтому директивы &НаСервере не потребовалось.

Частые ошибки

Забытая точка с запятой в конце оператора — классика, платформа сразу подчеркнёт ошибку. Пропущенная директива &НаКлиенте перед процедурой-обработчиком приведёт к тому, что платформа не поймёт, где выполнять код. И ещё: Сообщить() — устаревающий способ, в современных решениях для показа сообщений пользователю применяют объект СообщениеПользователю, но для первого знакомства Сообщить нагляднее всего.

Итоги

  • Внешняя обработка (.epf) — отдельный файл, удобный полигон для экспериментов
  • Обработчик кнопки — клиентская процедура с директивой &НаКлиенте
  • Сообщить("текст"); выводит сообщение пользователю; точка с запятой обязательна
  • Каждой открывающей конструкции (Процедура) соответствует закрывающая (КонецПроцедуры)
Проверьте себя
1. Что делает директива &НаКлиенте перед процедурой-обработчиком кнопки?
AУказывает, что код выполняется на компьютере пользователя (клиенте)
BЗапрещает выполнение процедуры
CСохраняет данные в базу
DДелает процедуру доступной другим обработкам
2. Что обязательно ставится в конце оператора в языке 1С?
AДвоеточие
BТочка с запятой
CКосая черта
DНичего не ставится