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

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

Что такое обработка в 1С и зачем она нужна

Обработка в 1С:Предприятие — это отдельный объект конфигурации, который выполняет определённые действия с данными, но не хранит их постоянно (в отличие от справочников или документов). Она может:

  • 📊 Формировать отчёты по нестандартным критериям (например, анализ продаж по регионам с учётом скидок).
  • 🔄 Обрабатывать данные — импортировать/экспортировать информацию из Excel, XML или других систем.
  • ⚙️ Автоматизировать операции — массовое изменение цен, перенос данных между базами, отправка email-уведомлений.
  • 🖥️ Интегрироваться с внешними сервисами — работа с API банков, маркетплейсов или государственных порталов.

Главное преимущество обработок — они не изменяют типовую конфигурацию, что упрощает обновление 1С. Например, если вы добавите обработку для выгрузки данных в ФНС, при следующем обновлении платформы она останется работоспособной (при условии, что не задействованы устаревшие методы).

📊 Для чего вы чаще всего создаёте обработки в 1С?
Для отчётов
Для обмена данными
Для автоматизации рутинных задач
Для интеграции с внешними системами

Обработки делятся на два типа:

  • 📄 Внешние обработки — хранятся в отдельных файлах (.epf) и подключаются по мере необходимости. Их удобно передавать между базами или обновлять без вмешательства в конфигурацию.
  • 🏢 Встроенные обработки — создаются прямо в конфигурации и становятся её частью. Используются для задач, тесно связанных с бизнес-логикой компании.
⚠️ Внимание: Если обработка работает с конфиденциальными данными (например, выгружает зарплату сотрудников), убедитесь, что файл .epf хранится в защищённом месте. Внешние обработки можно открыть в любом текстовом редакторе, и их код доступен для просмотра.

Подготовка к созданию обработки: инструменты и права

Прежде чем приступить к созданию обработки, проверьте:

  1. Наличие прав на модификацию конфигурации. Для внешних обработок достаточно прав пользователя, для встроенных — нужны права Администратора.
  2. Версию платформы — некоторые функции могут не поддерживаться в старых версиях 1С 8.3 (например, работа с HTTPСервис появилась в 8.3.10).
  3. Режим запуска — обработки создаются в Конфигураторе, а тестируются в режиме 1С:Предприятие.

Минимальный набор инструментов:

  • 💻 1С:Предприятие 8.3 (любая редакция — Базовая, ПРОФ или Корп).
  • 🔧 Конфигуратор — входит в комплект поставки.
  • 📝 Текстовый редактор (например, Notepad++) для просмотра кода .epf-файлов.

Если вы планируете работать с внешними обработками, создайте папку на диске для их хранения (например, C:\1C_Processing\). Это упростит поиск файлов и обновление версий.

☑️ Подготовка рабочего места

Выполнено: 0 / 4
⚠️ Внимание: Если вы работаете с облачной версией 1С (например, 1С:Фреш), возможности по созданию встроенных обработок могут быть ограничены. Уточните условия в личном кабинете или у поставщика услуг.

Создание новой обработки: пошаговая инструкция

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

Шаг 1. Запуск Конфигуратора

Откройте базу в режиме Конфигуратор (для этого при запуске 1С удерживайте Shift или выберите пункт в меню). Перейдите в Файл → Новая....

Шаг 2. Выбор типа объекта

В окне создания нового объекта выберите Обработка и укажите имя файла (например, ВыгрузкаВExcel.epf). Сохраните файл в подготовленную папку.

Шаг 3. Настройка свойств обработки

В открывшемся окне редактора обработки заполните:

  • 🏷️ Имя — отображается в списке обработок (например, "Выгрузка данных в Excel").
  • 📝 Синоним — краткое описание для пользователей.
  • 🔒 Права — если обработка требует администраторских прав, отметьте соответствующий флажок.

Шаг 4. Добавление формы (опционально)

Если обработка должна взаимодействовать с пользователем (например, запрашивать параметры), создайте форму:

  1. Перейдите на вкладку Формы.
  2. Нажмите Добавить и выберите тип формы (обычно Обработка.Форма.ФормаОбработки).
  3. Разместите на форме элементы управления (кнопки, поля ввода) через палитру инструментов.

Шаг 5. Написание кода

Основная логика обработки пишется в модуле. Перейдите на вкладку Модуль и добавьте процедуры. Пример простейшей обработки для вывода сообщения:

Процедура ПриНачалеРаботыСистемы()

Сообщить("Обработка запущена!");

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

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

Процедура КнопкаВыполнитьНажатие(Элемент)

Сообщить("Нажата кнопка выполнения!");

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

💡

Используйте заготовки кода из типовой конфигурации. Откройте любую стандартную обработку (например, УниверсальныйОтчет.epf) и скопируйте структуру модуля для своей задачи.

Подключение и тестирование обработки

После создания обработки её нужно подключить к базе и проверить работоспособность. Для внешней обработки:

  1. Запустите 1С в режиме Предприятие.
  2. Перейдите в Файл → Открыть... и выберите созданный .epf-файл.
  3. Обработка откроется в отдельном окне. Нажмите Выполнить (или кнопку, которую вы добавили на форму).

Для встроенной обработки:

  1. В Конфигураторе сохраните изменения (Конфигурация → Сохранить конфигурацию).
  2. Обновите базу (Конфигурация → Обновить конфигурацию базы данных).
  3. Запустите 1С в режиме Предприятие и найдите обработку в меню Операции → Обработки.

Типичные ошибки при тестировании:

Ошибка Причина Решение
Ошибка при вызове метода контекста Неверное имя процедуры или опечатка Проверьте регистр и синтаксис в модуле
Недостаточно прав Обработка требует администраторских прав Запустите 1С от имени администратора или измените права в конфигураторе
Форма не найдена Неправильное имя формы в коде Убедитесь, что имя формы в модуле совпадает с именем в свойствах
Ошибка доступа к файлу Путь к внешней обработке содержит кириллицу Переместите файл в папку с латинским названием (например, C:\1C_Proc\)
⚠️ Внимание: Если обработка работает с большими объёмами данных (например, выгружает историю документов за год), тестируйте её на копии базы. Длительные операции могут заблокировать работу других пользователей.

Примеры готовых обработок для разных задач

Чтобы быстрее разобраться в механике, рассмотрим три типовых сценария с готовыми фрагментами кода.

1. Выгрузка данных в Excel

Обработка для экспорта таблицы документов РеализацияТоваровУслуг в файл .xlsx:

Процедура ВыгрузитьВExcel(Команда)

Таблица = Новый ТаблицаЗначений;

Таблица.Колонки.Добавить("Дата");

Таблица.Колонки.Добавить("Номер");

Таблица.Колонки.Добавить("Сумма");

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Дата, Номер, СуммаДокумента ИЗ Документ.РеализацияТоваровУслуг";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

НоваяСтрока = Таблица.Добавить();

НоваяСтрока.Дата = Выборка.Дата;

НоваяСтрока.Номер = Выборка.Номер;

НоваяСтрока.Сумма = Выборка.СуммаДокумента;

КонецЦикла;

Excel = Новый ExcelДокумент;

Excel.ЗаписатьТаблицу(Таблица);

Excel.СохранитьКак("C:\Отчеты\Реализация.xlsx");

Сообщить("Выгрузка завершена!");

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

2. Массовое изменение цен номенклатуры

Обработка для увеличения цен на 10%:

Процедура ИзменитьЦены(Команда)

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

ТекущаяЦена = Выборка.Цена;

НоваяЦена = ТекущаяЦена * 1.1;

Выборка.Цена = НоваяЦена;

Выборка.Записать();

КонецЦикла;

Сообщить("Цены обновлены!");

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

3. Интеграция с API банка (запрос курса валют)

Обработка для получения курса доллара с сайта ЦБ РФ:

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

HTTP = Новый HTTPСоединение("www.cbr.ru");

Ответ = HTTP.Получить("/scripts/XML_daily.asp");

XML = Новый ЧтениеXML;

XML.УстановитьСтроку(Ответ.ПолучитьТекст());

Пока XML.Прочитать() Цикл

Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Valute" Тогда

Если XML.Атрибуты.Найти("ID") = "R01235" Тогда

Пока XML.Прочитать() Цикл

Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Value" Тогда

Курс = XML.ПолучитьЗначение();

Сообщить("Курс доллара: " + Курс);

Прервать;

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЕсли;

КонецЦикла;

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

Как защитить обработку от несанкционированного использования?

Для ограничения доступа к обработке используйте проверку прав пользователя в модуле:

Процедура ПриОткрытии()

Если НЕ Пользователь.ИмеетРоль("Администратор") Тогда

Сообщить("Доступ запрещён!");

Закрыть();

КонецЕсли;

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

Также можно шифровать код обработки с помощью сторонних утилит (например, 1C:Enterprise Development Tools), но это усложнит поддержку.

Типичные ошибки и как их избежать

Даже опытные разработчики сталкиваются с проблемами при создании обработок. Вот наиболее распространённые ошибки и способы их решения:

1. Ошибки синтаксиса

Причины:

  • 🔹 Пропущенная точка с запятой или скобка.
  • 🔹 Неверное имя переменной (например, использование кириллицы без кавычек).
  • 🔹 Опечатки в названиях методов (например, Сообщить вместо Сообщить).

Решение: используйте Синтакс-помощник в Конфигураторе (Текст → Проверка модуля).

2. Проблемы с правами доступа

Если обработка не запускается с ошибкой "Недостаточно прав":

  • 🔹 Проверьте роль пользователя в Администрирование → Пользователи.
  • 🔹 Для внешних обработок установите флажок "Требует полных прав" в свойствах файла.

3. Зависание при выполнении

Длительные операции (например, обход большого справочника) могут "подвесить" 1С. Чтобы избежать этого:

  • 🔹 Разбивайте задачи на части с помощью ПрерватьПроверкуПользователя().
  • 🔹 Используйте ФоновоеЗадание для ресурсоёмких операций.
Процедура ДлительнаяОперация()

ФоновоеЗадание = ФоновыеЗадания.Создать("Обработка.Модуль.ВыполнитьФоновуюЗадачу");

ФоновоеЗадание.Выполнить();

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

4. Ошибки при работе с файлами

Если обработка не может сохранить файл:

  • 🔹 Проверьте путь — он должен быть доступен для записи (например, не C:\Program Files\).
  • 🔹 Используйте относительные пути или переменную КаталогДокументов().
💡

Всегда тестируйте обработки на копии рабочей базы. Даже простая ошибка в коде может привести к потере данных или блокировке системы.

Как распределить обработку среди пользователей

Если обработка предназначена для коллективного использования, важно организовать её распространение и обновление. Способы распределения:

1. Внешние обработки (.epf)

  • 📤 Общий сетевой ресурс — разместите файл в общей папке и дайте пользователям ссылку.
  • 📧 Email-рассылка — отправьте файл по почте с инструкцией по установке.
  • 🌐 Облачное хранилище — загрузите на Яндекс.Диск или Google Drive (убедитесь, что ссылка не доступна посторонним).

2. Встроенные обработки

  • 🔄 Обновление конфигурации — распространите .cf-файл с изменениями.
  • 📦 Расширения конфигурации — если обработка универсальна, оформите её как расширение (доступно с версии 8.3.10).

Для автоматизации обновлений:

  • 🔄 Создайте обработку-менеджер, которая будет проверять версию файла и скачивать обновления с сервера.
  • 📅 Используйте Планы обмена для синхронизации обработок между базами.

Пример кода для проверки версии обработки:

Процедура ПроверитьОбновление()

ТекущаяВерсия = "1.0";

HTTP = Новый HTTPСоединение("your-server.ru");

Ответ = HTTP.Получить("/versions/processing_version.txt");

НоваяВерсия = Ответ.ПолучитьТекст();

Если НоваяВерсия > ТекущаяВерсия Тогда

Сообщить("Доступно обновление до версии " + НоваяВерсия);

СкачатьОбновление();

КонецЕсли;

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

⚠️ Внимание: Если обработка содержит конфиденциальную логику (например, алгоритмы расчёта зарплаты), избегайте распространения исходного кода. Используйте компиляцию в .erf-файл или защиту через лицензирование.

FAQ: Ответы на частые вопросы

Можно ли создать обработку без знания программирования?

Да, для простых задач (например, выгрузка в Excel по шаблону) можно использовать Конструктор обработок в 1С. Он позволяет собирать обработки из готовых блоков без написания кода. Однако для сложных сценариев (интеграция с API, работа с регистрами) потребуются знания 1С:Предприятие и языка запросов.

Как перенести обработку из одной базы в другую?

Для внешних обработок достаточно скопировать .epf-файл. Для встроенных:

  1. В исходной базе откройте обработку в Конфигураторе.
  2. Нажмите Файл → Сохранить как... и сохраните как .epf.
  3. В целевой базе импортируйте файл через Файл → Открыть.

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

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

Частые причины:

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

Решение: тестируйте обработку в режиме Отладка (1С:Предприятие) в Конфигураторе — это имитирует реальную работу.

Как защитить код обработки от изменений?

Способы защиты:

  • 🔒 Компиляция в .erf — файл нельзя редактировать, но можно декомпилировать.
  • 🔐 Лицензирование — привязка к серийному номеру базы или пользователя.
  • 🛡️ Шифрование — с помощью сторонних инструментов (например, 1C:Enterprise Development Tools).

Для максимальной защиты комбинируйте эти методы.

Можно ли запускать обработку по расписанию?

Да, для этого используйте регламентные задания:

  1. В Конфигураторе создайте новое регламентное задание (Операции → Регламентные задания).
  2. Укажите обработку в свойстве Используемая процедура.
  3. Настройте расписание (ежедневно, еженедельно и т. д.).

Пример кода для регламентного задания:

Процедура ВыполнитьЗадание() Экспорт

// Ваш код здесь

Сообщить("Задание выполнено в " + ТекущаяДата());

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