Внешние обработки в 1С: от проектирования до подключения через БСП на примере загрузки цен из Excel
Разбираем полный путь создания внешней обработки в 1С: выбор между обработкой, отчётом и расширением, проектирование формы и команд, загрузка цен из Excel с проверками и записью в транзакции, подключение через БСП и безопасный режим. Плюс обзор курса 1С:Учебного центра №1, который пройдёт 19, 21 и 23 октября 2026 года.
Внешняя обработка в 1С - это отдельный файл с расширением .epf, который решает конкретную прикладную задачу и подключается к типовой конфигурации без снятия её с поддержки. Файл живёт отдельно от базы: его передают пользователю, дорабатывают и обновляют независимо от релиза конфигурации.
Онлайн-курс «Внешние обработки в 1С: проектирование, алгоритмика и БСП» в 1С:Учебном центре №1 пройдёт 19, 21 и 23 октября 2026 года: три учебных дня, 12 академических часов, занятия с 09:00 до 12:00 по московскому времени. Сквозной пример - загрузка цен из Excel в «1С:Управление нашей фирмой»: от постановки задачи и проектирования формы до регистрации обработки в типовой программе через Библиотеку стандартных подсистем (БСП). Стоимость участия - 4 290 рублей для физических лиц и 6 720 рублей для юридических лиц. Описание курса в информационном выпуске 1С.
Дальше разобран весь путь целиком: как выбрать инструмент, как спроектировать форму и алгоритм, как проверить данные до записи и как безопасно подключить готовый файл к рабочей базе.
Что такое внешняя обработка в 1С и когда её выбирать
Внешняя обработка хранится в файле .epf и не входит в состав конфигурации. Платформа подключает её на время сеанса: обработка открывает свои формы, читает и записывает объекты, выполняет запросы к базе. Для типовых решений это основной способ добавить функцию, не трогая саму конфигурацию.
Инструмент выбирают по действию, которое нужно выполнить с данными. Загрузить прайс поставщика и пересчитать цены означает запись, для этого нужна обработка. Показать динамику цен по номенклатуре означает чтение, здесь хватит внешнего отчёта. Добавить в справочник новый реквизит можно только расширением.
Чем внешняя обработка отличается от отчёта и расширения
| Критерий | Внешняя обработка (.epf) | Внешний отчёт (.erf) | Расширение конфигурации (.cfe) |
|---|---|---|---|
| Изменяет данные | Да, читает и записывает | Нет, только читает | Да, включая структуру |
| Меняет структуру метаданных | Нет | Нет | Да, добавляет и меняет объекты |
| Влияние на обновляемость типовой базы | Нет | Нет | Требует проверки совместимости при обновлении |
| Способ запуска | Через БСП или вручную из меню «Файл» | Справочник дополнительных отчётов и обработок | Установка расширения в базу |
| Типовая задача | Загрузка цен из Excel | Анализ динамики цен | Новый реквизит «Код поставщика» |
Различие видно и по формату файла. Внешняя обработка сохраняется как .epf, внешний отчёт как .erf, расширение как .cfe и ставится в базу из конфигуратора.
Преимущества внешних обработок для типовых решений
- Типовая конфигурация остаётся на поддержке, обновления ставятся штатно.
- Решение передаётся одним файлом, без доступа к серверу и к конфигуратору рабочей базы.
- Логику меняют отдельно от релиза: правка обработки не требует обновления всей базы.
- Обработку удобно проверять на копии базы и откатывать простым удалением файла.
Ограничения тоже есть, и о них лучше знать заранее. Для запуска может понадобиться роль на чтение и изменение нужных объектов, безопасный режим закрывает доступ к внешним ресурсам, а COM-объекты Excel зависят от версии офиса и разрядности платформы. Как выбирать между расширением, внешней обработкой и правкой типового кода в конкретном проекте, разобрано в статье о практике программирования в типовых решениях 1С.
Проектирование внешней обработки: от задачи до формы
Работа начинается с текста задачи и заканчивается готовой формой, на которой пользователь выполняет все действия. Код пишется последним: сначала сценарий, потом реквизиты, потом алгоритм.
Постановка задачи и сценарий пользователя
Формализованная постановка выглядит так: загрузить цены из файла Excel в регистр сведений ЦеныНоменклатуры, найти номенклатуру по артикулу, проверить положительность цены и совпадение валюты, показать расхождения и записать только подтверждённые строки.
Сценарий пользователя:
- Выбирает файл с прайсом.
- Видит таблицу с распознанными строками и статусом проверки.
- Исправляет или исключает проблемные строки.
- Нажимает «Загрузить» и получает отчёт о записанных позициях.
Из сценария вытекает список реквизитов формы и состав проверок. Пропущенный шаг здесь обходится дороже всего: переделка постановки после написания кода означает переделку формы и алгоритма.
Создание формы и команд в конфигураторе
- Создать новый объект: «Файл» - «Новый» - «Внешняя обработка». Платформа присвоит имя и создаст файл .epf.
- Добавить реквизиты: адрес файла во временном хранилище, таблицу значений для предпросмотра, счётчики строк.
- Разместить на форме поле выбора файла, таблицу предпросмотра и команды «Загрузить» и «Очистить».
- Настроить модуль формы: обработчики команд, вызовы серверных процедур, вывод ошибок.
Форма управляемая: реквизиты описываются в конфигураторе, а внешний вид собирается из элементов на форме. Команды размещают в командной панели формы, при необходимости добавляют кнопки в саму таблицу предпросмотра.
Распределение логики между клиентом и сервером
Правило простое: клиент отвечает за интерфейс и интерактивные действия, сервер за работу с базой, файлами и транзакциями. Выбор файла, открытие формы, показ сообщений выполняет клиент. Чтение файла, запросы, запись объектов выполняет сервер.
Директивы компиляции задают контекст выполнения:
&НаКлиенте
Процедура ВыбратьФайл(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение);
КонецПроцедуры
&НаСервереБезКонтекста
Функция РазобратьФайл(АдресВХранилище)
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВХранилище);
// разбор файла, проверки, возврат таблицы значений
КонецФункции
Серверные процедуры без контекста не видят данные формы, зато результат передаётся клиенту в сериализованном виде. Тяжёлую обработку файла выгоднее держать на сервере: клиенту не придётся получать весь объём данных по каналу.
Алгоритмика: загрузка цен из Excel в 1С:Управление нашей фирмой
Алгоритм состоит из четырёх шагов: прочитать файл, преобразовать данные в таблицу значений, проверить каждую строку, записать подтверждённые строки. Каждый шаг возвращает пользователю понятный результат.
Чтение данных из Excel и CSV
Файл читают двумя способами. Через COM-объект Excel.Application работают с книгой напрямую: доступны листы, ячейки, формулы. Способ требует установленного Excel на машине, где выполняется код, и зависит от разрядности: 32-битный COM-объект несовместим с 64-битной платформой. Второй способ, через ADODB, читает книгу как базу данных и не требует установленного офиса, но нужен подходящий драйвер.
CSV разбирается штатными средствами платформы, без внешних компонентов:
Текст = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
ТаблицаДанных = Новый ТаблицаЗначений;
ТаблицаДанных.Колонки.Добавить("Артикул");
ТаблицаДанных.Колонки.Добавить("Цена");
Пока Истина Цикл
Строка = Текст.ПрочитатьСтроку();
Если Строка = Неопределено Тогда
Прервать;
КонецЕсли;
Части = СтрРазделить(Строка, ";");
НоваяСтрока = ТаблицаДанных.Добавить();
НоваяСтрока.Артикул = СокрЛП(Части[0]);
НоваяСтрока.Цена = Число(СтрЗаменить(СокрЛП(Части[1]), ",", "."));
КонецЦикла;
Текст.Закрыть();
Пример сокращённый: в рабочем коде добавляют проверку числа колонок, обработку пустых строк и строки заголовка.
Проверка данных перед записью
Проверки делятся на формальные и предметные. Формальные: цена распознана как число, значение положительное, артикул заполнен. Предметные: номенклатура найдена в справочнике, валюта совпадает с валютой регистра, в файле нет дублей по артикулу.
Поиск номенклатуры выполняют одним запросом по списку артикулов, а не в цикле: на файлах в несколько тысяч строк разница измеряется минутами.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка, Номенклатура.Артикул КАК Артикул
|ИЗ Справочник.Номенклатура КАК Номенклатура
|ГДЕ Номенклатура.Артикул В (&СписокАртикулов)";
Запрос.УстановитьПараметр("СписокАртикулов", МассивАртикулов);
Результат = Запрос.Выполнить().Выгрузить();
Результат проверки показывают в таблице предпросмотра: строку с ошибкой помечают цветом и текстом причины, чтобы пользователь сразу видел, что именно нужно исправить.
Предварительный просмотр и запись в транзакции
Предпросмотр решает главную задачу: пользователь видит последствия до изменения базы. В таблице на форме отображаются артикул, наименование, старая цена, новая цена и статус проверки.
Запись выполняют одной транзакцией. Если хотя бы одна строка не записалась, изменения откатываются целиком, и база остаётся в прежнем состоянии.
НачатьТранзакцию();
Попытка
Для Каждого СтрокаТаблицы Из ТаблицаПредпросмотра Цикл
Если СтрокаТаблицы.Ошибка Тогда
Продолжить;
КонецЕсли;
Запись = РегистрыСведений.ЦеныНоменклатуры.СоздатьМенеджерЗаписи();
Запись.Период = ТекущаяДатаСеанса();
Запись.Номенклатура = СтрокаТаблицы.Номенклатура;
Запись.Цена = СтрокаТаблицы.Цена;
Запись.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации("Загрузка цен", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
Сообщить("Загрузка отменена: " + ОписаниеОшибки());
КонецПопытки;
Транзакцию держат короткой: разбор файла и проверки выполняют до её начала, внутри только запись. Иначе блокировки таблиц растягиваются на всё время чтения прайса.
Подключение внешней обработки через БСП
Библиотека стандартных подсистем даёт готовый механизм: справочник «Дополнительные отчёты и обработки». Через него файл .epf добавляют в базу без конфигуратора, назначают права и размещают команду в нужном разделе интерфейса.
Регистрация обработки в справочнике дополнительных отчётов и обработок
- Открыть раздел «Администрирование» и справочник «Дополнительные отчёты и обработки».
- Создать новый элемент и выбрать файл .epf с диска.
- Платформа проверит файл и предложит заполнить наименование и вид обработки.
- Указать размещение: раздел программы, команду, при необходимости группу.
- Настроить, кому доступна обработка: всем пользователям или отдельным ролям.
Чтобы механизм БСП подхватил файл, обработка должна соответствовать требованиям библиотеки: содержать модуль объекта с нужными процедурами и выполнять соглашения по имени команды. Обработка без зависимостей от БСП тоже работает, но её запускают вручную через «Файл» - «Открыть», и в интерфейсе программы она не появится.
Права доступа и безопасный режим
Безопасный режим запрещает обработке обращаться к внешним ресурсам: запускать приложения, читать произвольные файлы, работать с COM-объектами. Для загрузки из Excel это ограничение существенное, поэтому доступ к внешним файлам выдают осознанно и по решению администратора.
Права настраивают по минимуму: чтение справочника номенклатуры, чтение и изменение регистра цен. Полные права администратора обработке не нужны. Первый запуск проводят на копии базы: ошибка в транзакции или запросе на рабочей базе обходится дороже тестового прогона.
Отладка, тестирование и передача решения пользователю
Типичные ошибки и способы их устранения
- Клиентский код обращается к базе напрямую. Лечится переносом работы с данными в серверную процедуру.
- Запись идёт без транзакции. При сбое в середине часть строк уже записана, и откатить их нельзя.
- Проверки выполняются в цикле отдельными запросами. На файле в 5000 строк это минуты вместо секунд.
- Обработка запускается в безопасном режиме, но пытается читать внешний файл. Пользователь видит отказ без понятного объяснения.
- Файл собран на одной версии платформы, а открывается на более старой. Перед передачей уточняют версию платформы у заказчика.
Отладку ведут в конфигураторе: точки останова в модуле обработки, просмотр значений таблицы предпросмотра, отдельные прогоны для корректного файла, файла с пустыми ценами и файла с неизвестными артикулами.
Как передать обработку пользователю
В поставку входят файл .epf, инструкция с пошаговым запуском и, если нужно, файл настроек или образец прайса. Передают решение одним из трёх способов: зарегистрировать через БСП в типовой программе, отдать как внешний файл для ручного открытия или включить в расширение конфигурации.
Инструкция отвечает на три вопроса: как открыть обработку, как выбрать файл и что делать, если часть строк отмечена ошибками. Без этого пользователь вернётся с вопросом при первой же загрузке.
Курс «Внешние обработки в 1С: проектирование, алгоритмика и БСП»: кому и зачем
Темы этой статьи разбираются на онлайн-курсе 1С:Учебного центра №1. Занятия пройдут 19, 21 и 23 октября 2026 года, с 09:00 до 12:00 по московскому времени.
Программа курса: три блока обучения
- Проектирование и основа внешней обработки: выбор между обработкой, отчётом и расширением, постановка задачи, реквизиты, команды, формы и модули .epf, распределение работы между клиентом и сервером.
- Алгоритмы и работа с данными: запросы, выборки, таблицы значений, декомпозиция и валидация, транзакции, предварительный просмотр, загрузка и выгрузка файлов, обработка ошибок.
- Чистая конфигурация, БСП и типовое решение: обработка без зависимостей от БСП, дополнительные отчёты и обработки, адаптация к «1С:Управление нашей фирмой», права, безопасный режим, отладка и поставка.
Сквозной пример один на все три дня: загрузка цен из Excel в «1С:Управление нашей фирмой». Программа курса на сайте 1С.
Формат обучения и стоимость
Курс рассчитан на начинающих разработчиков, знакомых с основами программирования в 1С. В обучение входят три онлайн-занятия с возможностью задавать вопросы преподавателю в чате, доступ к видеозаписи на 90 дней, электронный учебник и презентация, исходники обработок и контрольные файлы для самостоятельного повторения примера, домашние задания и свидетельство о прохождении курса.
Стоимость участия: 4 290 рублей для физических лиц и 6 720 рублей для юридических лиц. Доступ приобретают через интернет-магазин 1С:Учебного центра №1, вопросы по обучению принимают по адресу edu@1c.ru и телефону +7 (495) 688-90-02. Условия участия и запись на курс.
Сведения о расписании, стоимости и составе программы приведены по информационному выпуску от 18 сентября 2026 года: к моменту покупки они могут измениться, поэтому условия стоит уточнять у организатора.
С чего начать: рекомендации для начинающих разработчиков
Порядок действий, который экономит месяцы:
- Освоить конфигуратор: создание внешней обработки, реквизиты, формы, команды.
- Написать простейшую обработку без данных: форма с полем и сообщением по кнопке.
- Добавить чтение CSV и вывод таблицы на форму, пока без записи в базу.
- Добавить проверки и предварительный просмотр.
- Освоить транзакции и запись в регистр сведений.
- Зарегистрировать обработку через БСП и передать её пользователю.
Каждый шаг даёт работающий результат, и на нём становятся видны ошибки следующего уровня. Отдельная привычка, которая сохраняет данные и нервы: любые эксперименты проводить на копии, а не на рабочей базе.
Если основы встроенного языка ещё не закреплены, сначала стоит пройти базовую подготовку. Пошаговый план освоения профессии с нуля собран в статье с чего начать в 1С в 2026 году, а ближайший базовый курс для новичков описан в материале о курсе «Азы программирования в системе 1С:Предприятие 8».