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

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

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

Выбор типа объекта и назначение обработки

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

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

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

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

📊 Какую задачу вы планируете автоматизировать?
Массовое изменение данных
Выгрузка отчетов
Загрузка из файлов
Автоматизация расчетов
Другое

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

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

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

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

💡

Используйте префикс в имени файла (например, "Доп_ВыгрузкаОтчета"), чтобы ваши обработки не терялись среди стандартных файлов, поставляемых с платформой 1С.

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

Проектирование интерфейса и формы

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

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

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

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

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

Написание программного кода

Сердцем любой обработки является её модуль. Перейдите на вкладку "Модуль объекта". Здесь пишется логика на встроенном языке 1С. Основное событие, с которого начинается работа — ПриСозданииНаСервере. В нем обычно инициализируются переменные и заполняются начальные значения полей формы.

Для выполнения основных действий создайте команду, привязанную к кнопке на форме. Например, процедура ВыполнитьОбработку. Внутри этой процедуры описывается алгоритм: выборка данных из базы, их фильтрация, модификация и запись результатов. Используйте конструкцию Выборка.Следующий() для перебора записей регистра или документа.

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

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

Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата МЕЖДУ &НачПериода И &КонПериода";

Запрос.УстановитьПараметр("НачПериода", Объект.ПериодНачала);

Запрос.УстановитьПараметр("КонПериода", Объект.ПериодКонца);

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

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

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

// Логика обработки документа

Док = Выборка.Ссылка.ПолучитьОбъект();

Док.Комментарий = "Обработано внешней обработкой";

Док.Записать();

КонецЦикла;

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

Обязательно разделяйте код на клиентскую и серверную части. Операции с интерфейсом (вывод сообщений, блокировка формы) выполняются на клиенте, а работа с базой данных — на сервере. Для вызова серверной процедуры из клиентского контекста используйте ключевое слово Экспорт и префикс &НаСервере.

☑️ Проверка кода перед запуском

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

⚠️ Внимание: Никогда не выполняйте массовую запись данных в цикле без транзакции или блокировок, если это может повлиять на работу других пользователей. Это может привести к взаимоблокировкам (deadlock) и остановке работы всей базы.

Отладка и тестирование функционала

Написание кода — это только половина дела. Критически важно проверить работу обработки в различных сценариях. Запустите 1С в режиме Предприятие и откройте созданную обработку через меню "Файл - Открыть". Протестируйте её на тестовой копии базы данных, никогда не проводите первые эксперименты на продуктивной базе с реальными данными.

Используйте встроенный отладчик. Установите точки останова (красные кружки слева от номера строки) в критических местах кода. Запустите обработку в режиме отладки. Вы сможете пошагово выполнять код, видеть значения переменных в реальном времени и отслеживать поток выполнения программы.

Обратите особое внимание на обработку ошибок. Пользователь не должен видеть "технический" текст ошибки платформы. Используйте конструкцию Попытка ... Исключение ... КонецПопытки для перехвата сбоев. В блоке исключения выводите понятное сообщение пользователю через объект Сообщить или ПоказатьПредупреждение.

Что делать, если обработка "висит"?

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

Проверьте работу с разными правами доступа. Зайдите под пользователем, у которого нет полных прав, и попробуйте запустить обработку. Если код пытается прочитать объект, на который у пользователя нет прав, выполнение прервется. Явно проверяйте доступность объектов перед работой с ними.

Сохранение, обновление и распространение

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

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

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

💡

Всегда храните исходный код (.epf в режиме конфигуратора) отдельно от скомпилированного файла. Это позволит вносить изменения в будущем, даже если оригинальный разработчик уйдет из компании.

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

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

Можно ли защитить код внешней обработки от просмотра?

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

Почему обработка работает медленно на большой базе?

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

Как сделать так, чтобы обработка открывалась автоматически при старте 1С?

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

Можно ли запустить обработку на мобильном устройстве (1С на телефоне)?

Запуск классических внешних обработок (.epf) на мобильных клиентах 1С ограничен и зависит от версии платформы и типа обработки. Полноценная работа возможна преимущественно на ПК. Для мобильных сценариев рекомендуется использовать специальные мобильные платформы или веб-клиент с адаптированным интерфейсом.

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

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