Разработка внешних обработок — это один из самых востребованных навыков для специалиста по 1С Предприятие, позволяющий расширять функционал системы без прямого вмешательства в конфигурацию. Такой подход гарантирует сохранение целостности типовых решений при обновлении и позволяет безопасно доставлять новый функционал конечным пользователям. Процесс создания начинается с понимания архитектуры платформы и выбора правильного формата файла для распространения.

В большинстве случаев администраторы и разработчики сталкиваются с необходимостью автоматизировать рутинные операции или выгрузить данные в специфическом формате, который не предусмотрен стандартными отчетами. Внешняя обработка решает эту задачу, работая как автономное приложение внутри интерфейса пользователя. Важно сразу определить цель разработки, так как от этого зависит выбор типа создаваемого объекта и набора используемых механизмов платформы.

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

Выбор формата внешней обработки

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

Наиболее распространенным форматом является .epf (External Processing File), который представляет собой двоичный файл, содержащий модуль обработки и описание форм. Этот формат универсален и поддерживается всеми современными версиями платформы. Альтернативой выступает формат .mxl (Макет), который исторически использовался для простых табличных документов, но сегодня применяется реже из-за ограничений по логике работы.

  • 📁 .epf — стандартный формат для внешних обработок и отчетов, поддерживает полный функционал языка 1С.
  • 📊 .mxl — формат табличного документа, подходит только для простых выгрузок без сложной логики.
  • ⚙️ .ert — формат внешних отчетов, технически схож с epf, но имеет семантическое отличие в назначении.

Стоит отметить, что формат .ot (Обработка Тонкий клиент) устарел и в современных релизах платформы 8.3 практически не используется, уступив место универсальному .epf. При создании новой разработки всегда ориентируйтесь на создание именно файла обработки, если ваша цель — выполнение действий над данными, а не просто визуализация.

⚠️ Внимание: При работе в файловом варианте базы данных права на выполнение внешних обработок регулируются файлом ibases.v8i или настройками пользователя. В клиент-серверном варианте необходимо убедиться, что у роли пользователя установлено право Интерактивное открытие внешних обработок и отчетов.

Создание обработки в режиме Конфигуратора

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

В дереве метаданных найдите ветку Внешние обработки. Если такой ветки нет в вашей конфигурации, это не препятствие для создания файла, так как мы будем сохранять результат сразу на диск, минуя хранение в базе. Однако для удобства разработки часто создают временный объект метаданных. Нажмите правой кнопкой мыши и выберите Добавить, затем дайте объекту имя, например, ВыгрузкаДанных.

Откройте форму созданной обработки. Здесь вы увидите стандартный набор элементов: поле для вывода сообщений, кнопки управления и область для размещения визуальных элементов. Перейдите в модуль объекта, нажав клавишу F9 или выбрав соответствующий пункт в меню. Именно здесь будет содержаться основной алгоритм работы вашей программы.

☑️ Подготовка к разработке

Выполнено: 0 / 4

В модуле объекта необходимо прописать процедуру ОбработкаКоманды, которая является точкой входа при запуске обработки из интерфейса. Эта процедура вызывается автоматически, когда пользователь нажимает кнопку выполнения в форме. Внутри нее вы можете вызывать другие процедуры, работать с запросами и манипулировать наборами записей.

Процедура ОбработкаКоманды()

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

Сообщить("Запуск внешней обработки успешно выполнен");

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

После написания кода необходимо сохранить объект в файл. Для этого перейдите в меню Файл → Сохранить внешнюю обработку или отчет. В открывшемся диалоге укажите путь к папке на вашем компьютере и имя файла. Убедитесь, что в поле "Тип файла" выбрано значение Внешняя обработка (*.epf).

💡

Если вы планируете передавать обработку другим пользователям, избегайте использования абсолютных путей к файлам на вашем локальном диске в коде. Используйте относительные пути или стандартные каталоги пользователя, такие как КаталогДокументов().

Разработка логики и работа с данными

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

Для работы с данными чаще всего используется механизм запросов. Запрос позволяет эффективно выбирать, изменять и удалять информацию из таблиц базы данных. При формировании текста запроса важно учитывать особенности синтаксиса и правильно указывать имена полей и таблиц. Ошибки в тексте запроса приведут к остановке выполнения обработки и выводу сообщения об ошибке пользователю.

Тип операции Объект 1С Описание действия
Чтение данных Запрос Выборка данных из таблиц для анализа или выгрузки
Запись данных НаборЗаписей Пакетная запись изменений в регистры или документы
Создание объектов Документ.Объект Программное создание новых документов или справочников
Вывод результата ТабличныйДокумент Формирование печатной формы или отчета для пользователя

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

⚠️ Внимание: Интерфейсы и методы объектов могут отличаться в зависимости от версии платформы и конфигурации. Всегда проверяйте доступность методов в вашей конкретной версии 1С:Бухгалтерия или 1С:УТ перед использованием в коде внешней обработки.

Для отладки кода непосредственно в режиме предприятия можно использовать встроенный отладчик внешних обработок. Для этого при открытии файла через меню "Файл - Открыть" удерживайте клавишу Shift или выберите опцию "Открыть с отладкой". Это позволит выполнять код по шагам и контролировать значения переменных в реальном времени.

Особенности работы в управляемых формах

В современных версиях 1С все формы являются управляемыми. Это означает, что код, выполняющий длительные операции или обращение к базе данных, должен находиться на стороне сервера (в модуле объекта или серверных процедурах), а не на клиенте. Попытка выполнить запрос в клиентском коде вызовет ошибку выполнения.

Сохранение и компиляция файла

После того как логика написана и протестирована в режиме конфигуратора, финальным шагом является сохранение файла для передачи пользователям. Процесс сохранения прост, но требует внимания к деталям, чтобы файл корректно открывался на рабочих местах. Несохраненные изменения в модуле или форме не попадут в итоговый файл, поэтому убедитесь, что нажали кнопку записи перед экспортом.

При сохранении через меню Файл → Сохранить внешнюю обработку или отчет система предложит выбрать каталог. Рекомендуется создавать отдельную папку для ваших разработок, чтобы не захламлять рабочие директории. Имя файла должно быть понятным и не содержать кириллических символов, если планируется использование обработки в скриптах автоматизации или на серверах с разной кодировкой.

Важно понимать разницу между сохранением в файл и сохранением в базу данных. Сохранение в базу делает обработку доступной всем пользователям через пункт меню "Отчеты - Дополнительные отчеты и обработки", но требует прав на изменение конфигурации или администрирования. Сохранение в файл .epf делает обработку переносимой: ее можно отправить по почте или разместить в общей папке.

📊 Какой способ распространения обработок вы используете чаще?
Отправка по электронной почте
Размещение в общей сетевой папке
Сохранение в базу данных 1С
Загрузка через веб-сервис

Если вы используете защиту кода или хотите ограничить возможность изменения обработки, на этапе сохранения можно установить пароль. Однако помните, что стандартные средства защиты 1С не являются криптостойкими и служат скорее для предотвращения случайного изменения, чем для защиты от злоумышленного вмешательства.

Запуск и тестирование внешней обработки

После создания файла .epf необходимо проверить его работоспособность в реальном режиме предприятия. Запуск осуществляется через меню Файл → Открыть в режиме 1С:Предприятие. Выберите созданный файл, и система загрузит его форму в отдельном окне. Это стандартный механизм загрузки внешних отчетов и обработок.

При первом запуске обратите внимание на сообщения системы безопасности. Платформа может предупредить о том, что обработка получена из ненадежного источника. Это нормальная реакция системы, направленная на защиту от вредоносного кода. Если вы уверены в авторе файла, подтвердите запуск. В корпоративной среде такие предупреждения можно отключить централизованно через настройки безопасности.

Тестирование должно включать проверку не только основного сценария, но и граничных условий. Попробуйте выполнить обработку на пустой базе, на базе с большим объемом данных, а также с правами разных пользователей. Это поможет выявить ошибки, связанные с правами доступа или производительностью.

  • 🚀 Проверьте скорость выполнения на выборке более 10 000 записей.
  • 🔒 Убедитесь, что обработка не падает при отсутствии прав на запись.
  • 📝 Протестируйте вывод сообщений об ошибках для понятности пользователю.

Если обработка предполагает ввод параметров пользователем (например, период выгрузки или конкретный контрагент), убедитесь, что форма открывается корректно и элементы управления реагируют на действия. Ошибки верстки форм часто встречаются при переносе обработок между версиями платформы с разным интерфейсом.

⚠️ Внимание: При обновлении платформы 1С старые внешние обработки могут требовать конвертации формата или исправления кода, если использовались устаревшие методы. Всегда тестируйте критически важные обработки после обновления платформы.

Частые ошибки и методы их устранения

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

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

💡

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

Ошибки синтаксиса обычно выявляются на этапе компиляции в конфигураторе, но могут возникать и динамически, если используется выполнение кода из строки. Используйте функцию Попытка...Исключение для перехвата ошибок выполнения и вывода понятного текста пользователю, вместо показа технического дампа системы.

Попытка

// Опасная операция

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

Исключение

Сообщить("Ошибка выполнения: " + ОписаниеОшибки());

КонецПопытки;

Также стоит упомянуть проблему с кодировкой при выгрузке данных в текстовые файлы. Если вы формируете CSV или TXT файлы, обязательно указывайте кодировку UTF-8 или Windows-1251 явно при открытии файла для записи. Иначе пользователи с другой локалью системы увидят "кракозябры" вместо текста.

FAQ: Часто задаваемые вопросы

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

Да, это возможно. В режиме предприятия можно создать новую обработку через меню "Файл - Новые - Внешняя обработка", написать код прямо в встроенном редакторе и сохранить файл. Однако этот способ менее удобен для сложной разработки из-за ограниченных возможностей отладки и навигации по коду.

В чем разница между внешней обработкой и внешним отчетом?

Технически файлы .epf и .ert идентичны и взаимозаменяемы. Различие носит семантический характер: обработки предназначены для изменения данных (запись, проведение документов), а отчеты — только для чтения и визуализации информации. Платформа не запрещает менять данные в файле отчета, но это считается нарушением архитектуры.

Как передать параметры во внешнюю обработку при запуске?

Параметры можно передать через командную строку при запуске 1С, используя ключ /RunExternalReport или /RunExternalProcessing. Также параметры можно передавать программно из другой обработки, используя объект ВнешняяОбработка и метод Создать(), присваивая значения переменным перед вызовом команды.

Безопасно ли запускать внешние обработки, полученные из интернета?

Нет, это потенциально опасно. Внешняя обработка имеет полный доступ к вашей базе данных в контексте прав запустившего ее пользователя. Злоумышленник может создать обработку, которая удалит все документы или выгрузит конфиденциальную информацию. Запускайте только файлы от доверенных разработчиков и проверяйте код в режиме конфигуратора перед использованием.

Почему обработка не видит справочники, созданные мной?

Скорее всего, вы работаете в режиме предприятия, где метаданные еще не обновлены, или у вас открыта другая база данных. Убедитесь, что обработка загружена в ту же информационную базу, где были созданы необходимые справочники. Также проверьте, что имена справочников в коде совпадают с именами в метаданных (чувствительно к регистру).