Добавление новой обработки в 1С:Предприятие — одна из самых востребованных задач среди разработчиков и пользователей, которым требуется расширить функционал типовой конфигурации. Обработки позволяют автоматизировать рутинные операции, интегрировать внешние данные или создавать специализированные отчёты без глубокой модификации основной базы. Но если вы никогда не занимались разработкой в 1С 8.3, процесс может показаться сложным: где создать файл, как правильно написать код, куда его разместить и как избежать ошибок при запуске?
В этой статье мы разберём процесс добавления обработки с нуля — от выбора типа обработки до её подключения и тестирования. Вы узнаете, какие инструменты понадобятся (включая Конфигуратор и Редактор обработок), как работать с модулем и формами, а также какие типичные ошибки приводят к падению системы при первом запуске новой обработки. Материал ориентирован на начинающих, но будет полезен и опытным пользователям для систематизации знаний.
Что такое обработка в 1С и зачем она нужна
Обработка в 1С:Предприятие — это отдельный объект конфигурации, который выполняет определённые действия с данными, но не хранит их постоянно (в отличие от справочников или документов). Она может:
- 📊 Формировать отчёты по нестандартным критериям (например, анализ продаж по регионам с учётом скидок).
- 🔄 Обрабатывать данные — импортировать/экспортировать информацию из Excel, XML или других систем.
- ⚙️ Автоматизировать операции — массовое изменение цен, перенос данных между базами, отправка email-уведомлений.
- 🖥️ Интегрироваться с внешними сервисами — работа с API банков, маркетплейсов или государственных порталов.
Главное преимущество обработок — они не изменяют типовую конфигурацию, что упрощает обновление 1С. Например, если вы добавите обработку для выгрузки данных в ФНС, при следующем обновлении платформы она останется работоспособной (при условии, что не задействованы устаревшие методы).
Обработки делятся на два типа:
- 📄 Внешние обработки — хранятся в отдельных файлах (
.epf) и подключаются по мере необходимости. Их удобно передавать между базами или обновлять без вмешательства в конфигурацию. - 🏢 Встроенные обработки — создаются прямо в конфигурации и становятся её частью. Используются для задач, тесно связанных с бизнес-логикой компании.
⚠️ Внимание: Если обработка работает с конфиденциальными данными (например, выгружает зарплату сотрудников), убедитесь, что файл .epf хранится в защищённом месте. Внешние обработки можно открыть в любом текстовом редакторе, и их код доступен для просмотра.
Подготовка к созданию обработки: инструменты и права
Прежде чем приступить к созданию обработки, проверьте:
- Наличие прав на модификацию конфигурации. Для внешних обработок достаточно прав пользователя, для встроенных — нужны права Администратора.
- Версию платформы — некоторые функции могут не поддерживаться в старых версиях 1С 8.3 (например, работа с
HTTPСервиспоявилась в 8.3.10). - Режим запуска — обработки создаются в Конфигураторе, а тестируются в режиме
1С:Предприятие.
Минимальный набор инструментов:
- 💻 1С:Предприятие 8.3 (любая редакция — Базовая, ПРОФ или Корп).
- 🔧 Конфигуратор — входит в комплект поставки.
- 📝 Текстовый редактор (например, Notepad++) для просмотра кода
.epf-файлов.
Если вы планируете работать с внешними обработками, создайте папку на диске для их хранения (например, C:\1C_Processing\). Это упростит поиск файлов и обновление версий.
☑️ Подготовка рабочего места
⚠️ Внимание: Если вы работаете с облачной версией 1С (например, 1С:Фреш), возможности по созданию встроенных обработок могут быть ограничены. Уточните условия в личном кабинете или у поставщика услуг.
Создание новой обработки: пошаговая инструкция
Рассмотрим процесс на примере внешней обработки — наиболее универсального варианта. Для создания встроенной обработки шаги будут аналогичными, но выполняются внутри конфигурации.
Шаг 1. Запуск Конфигуратора
Откройте базу в режиме Конфигуратор (для этого при запуске 1С удерживайте Shift или выберите пункт в меню). Перейдите в Файл → Новая....
Шаг 2. Выбор типа объекта
В окне создания нового объекта выберите Обработка и укажите имя файла (например, ВыгрузкаВExcel.epf). Сохраните файл в подготовленную папку.
Шаг 3. Настройка свойств обработки
В открывшемся окне редактора обработки заполните:
- 🏷️ Имя — отображается в списке обработок (например,
"Выгрузка данных в Excel"). - 📝 Синоним — краткое описание для пользователей.
- 🔒 Права — если обработка требует администраторских прав, отметьте соответствующий флажок.
Шаг 4. Добавление формы (опционально)
Если обработка должна взаимодействовать с пользователем (например, запрашивать параметры), создайте форму:
- Перейдите на вкладку
Формы. - Нажмите
Добавитьи выберите тип формы (обычноОбработка.Форма.ФормаОбработки). - Разместите на форме элементы управления (кнопки, поля ввода) через палитру инструментов.
Шаг 5. Написание кода
Основная логика обработки пишется в модуле. Перейдите на вкладку Модуль и добавьте процедуры. Пример простейшей обработки для вывода сообщения:
Процедура ПриНачалеРаботыСистемы()
Сообщить("Обработка запущена!");
КонецПроцедуры
Для обработки с формой код размещают в модуле формы. Например, обработчик кнопки:
Процедура КнопкаВыполнитьНажатие(Элемент)
Сообщить("Нажата кнопка выполнения!");
КонецПроцедуры
Используйте заготовки кода из типовой конфигурации. Откройте любую стандартную обработку (например, УниверсальныйОтчет.epf) и скопируйте структуру модуля для своей задачи.
Подключение и тестирование обработки
После создания обработки её нужно подключить к базе и проверить работоспособность. Для внешней обработки:
- Запустите 1С в режиме
Предприятие. - Перейдите в
Файл → Открыть...и выберите созданный.epf-файл. - Обработка откроется в отдельном окне. Нажмите
Выполнить(или кнопку, которую вы добавили на форму).
Для встроенной обработки:
- В Конфигураторе сохраните изменения (
Конфигурация → Сохранить конфигурацию). - Обновите базу (
Конфигурация → Обновить конфигурацию базы данных). - Запустите 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-файл. Для встроенных:
- В исходной базе откройте обработку в Конфигураторе.
- Нажмите
Файл → Сохранить как...и сохраните как.epf. - В целевой базе импортируйте файл через
Файл → Открыть.
Если обработка зависит от специфичных справочников, может потребоваться адаптация кода.
Почему обработка работает в Конфигураторе, но не запускается в режиме Предприятие?
Частые причины:
- 🔹 В коде используются методы, доступные только в Конфигураторе (например,
МетодГлобальногоКонтекста()). - 🔹 Не хватает прав пользователя на выполнение операции (проверьте роли).
- 🔹 Обработка зависит от объектов, которые не существуют в рабочей базе (например, тестовых справочников).
Решение: тестируйте обработку в режиме Отладка (1С:Предприятие) в Конфигураторе — это имитирует реальную работу.
Как защитить код обработки от изменений?
Способы защиты:
- 🔒 Компиляция в
.erf— файл нельзя редактировать, но можно декомпилировать. - 🔐 Лицензирование — привязка к серийному номеру базы или пользователя.
- 🛡️ Шифрование — с помощью сторонних инструментов (например, 1C:Enterprise Development Tools).
Для максимальной защиты комбинируйте эти методы.
Можно ли запускать обработку по расписанию?
Да, для этого используйте регламентные задания:
- В Конфигураторе создайте новое регламентное задание (
Операции → Регламентные задания). - Укажите обработку в свойстве
Используемая процедура. - Настройте расписание (ежедневно, еженедельно и т. д.).
Пример кода для регламентного задания:
Процедура ВыполнитьЗадание() Экспорт
// Ваш код здесь
Сообщить("Задание выполнено в " + ТекущаяДата());
КонецПроцедуры