Внешние обработки в 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 в регистр сведений ЦеныНоменклатуры, найти номенклатуру по артикулу, проверить положительность цены и совпадение валюты, показать расхождения и записать только подтверждённые строки.

Сценарий пользователя:

  1. Выбирает файл с прайсом.
  2. Видит таблицу с распознанными строками и статусом проверки.
  3. Исправляет или исключает проблемные строки.
  4. Нажимает «Загрузить» и получает отчёт о записанных позициях.

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

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

  1. Создать новый объект: «Файл» - «Новый» - «Внешняя обработка». Платформа присвоит имя и создаст файл .epf.
  2. Добавить реквизиты: адрес файла во временном хранилище, таблицу значений для предпросмотра, счётчики строк.
  3. Разместить на форме поле выбора файла, таблицу предпросмотра и команды «Загрузить» и «Очистить».
  4. Настроить модуль формы: обработчики команд, вызовы серверных процедур, вывод ошибок.

Форма управляемая: реквизиты описываются в конфигураторе, а внешний вид собирается из элементов на форме. Команды размещают в командной панели формы, при необходимости добавляют кнопки в саму таблицу предпросмотра.

Распределение логики между клиентом и сервером

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

Директивы компиляции задают контекст выполнения:

&НаКлиенте
Процедура ВыбратьФайл(Команда)
    Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайла", ЭтотОбъект);
    НачатьПомещениеФайла(Оповещение);
КонецПроцедуры

&НаСервереБезКонтекста
Функция РазобратьФайл(АдресВХранилище)
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВХранилище);
    // разбор файла, проверки, возврат таблицы значений
КонецФункции

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

Алгоритмика: загрузка цен из Excel в 1С:Управление нашей фирмой

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

Чтение данных из Excel и CSV

Файл читают двумя способами. Через COM-объект Excel.Application работают с книгой напрямую: доступны листы, ячейки, формулы. Способ требует установленного Excel на машине, где выполняется код, и зависит от разрядности: 32-битный COM-объект несовместим с 64-битной платформой. Второй способ, через ADODB, читает книгу как базу данных и не требует установленного офиса, но нужен подходящий драйвер.

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

Текст = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
ТаблицаДанных = Новый ТаблицаЗначений;
ТаблицаДанных.Колонки.Добавить("Артикул");
ТаблицаДанных.Колонки.Добавить("Цена");

Пока Истина Цикл
    Строка = Текст.ПрочитатьСтроку();
    Если Строка = Неопределено Тогда
        Прервать;
    КонецЕсли;
    Части = СтрРазделить(Строка, ";");
    НоваяСтрока = ТаблицаДанных.Добавить();
    НоваяСтрока.Артикул = СокрЛП(Части[0]);
    НоваяСтрока.Цена = Число(СтрЗаменить(СокрЛП(Части[1]), ",", "."));
КонецЦикла;
Текст.Закрыть();

Пример сокращённый: в рабочем коде добавляют проверку числа колонок, обработку пустых строк и строки заголовка.

Проверка данных перед записью

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

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

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

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

Предварительный просмотр и запись в транзакции

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

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

НачатьТранзакцию();
Попытка
    Для Каждого СтрокаТаблицы Из ТаблицаПредпросмотра Цикл
        Если СтрокаТаблицы.Ошибка Тогда
            Продолжить;
        КонецЕсли;
        Запись = РегистрыСведений.ЦеныНоменклатуры.СоздатьМенеджерЗаписи();
        Запись.Период = ТекущаяДатаСеанса();
        Запись.Номенклатура = СтрокаТаблицы.Номенклатура;
        Запись.Цена = СтрокаТаблицы.Цена;
        Запись.Записать();
    КонецЦикла;
    ЗафиксироватьТранзакцию();
Исключение
    ОтменитьТранзакцию();
    ЗаписьЖурналаРегистрации("Загрузка цен", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
    Сообщить("Загрузка отменена: " + ОписаниеОшибки());
КонецПопытки;

Транзакцию держат короткой: разбор файла и проверки выполняют до её начала, внутри только запись. Иначе блокировки таблиц растягиваются на всё время чтения прайса.

Подключение внешней обработки через БСП

Библиотека стандартных подсистем даёт готовый механизм: справочник «Дополнительные отчёты и обработки». Через него файл .epf добавляют в базу без конфигуратора, назначают права и размещают команду в нужном разделе интерфейса.

Регистрация обработки в справочнике дополнительных отчётов и обработок

  1. Открыть раздел «Администрирование» и справочник «Дополнительные отчёты и обработки».
  2. Создать новый элемент и выбрать файл .epf с диска.
  3. Платформа проверит файл и предложит заполнить наименование и вид обработки.
  4. Указать размещение: раздел программы, команду, при необходимости группу.
  5. Настроить, кому доступна обработка: всем пользователям или отдельным ролям.

Чтобы механизм БСП подхватил файл, обработка должна соответствовать требованиям библиотеки: содержать модуль объекта с нужными процедурами и выполнять соглашения по имени команды. Обработка без зависимостей от БСП тоже работает, но её запускают вручную через «Файл» - «Открыть», и в интерфейсе программы она не появится.

Права доступа и безопасный режим

Безопасный режим запрещает обработке обращаться к внешним ресурсам: запускать приложения, читать произвольные файлы, работать с 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 года: к моменту покупки они могут измениться, поэтому условия стоит уточнять у организатора.

С чего начать: рекомендации для начинающих разработчиков

Порядок действий, который экономит месяцы:

  1. Освоить конфигуратор: создание внешней обработки, реквизиты, формы, команды.
  2. Написать простейшую обработку без данных: форма с полем и сообщением по кнопке.
  3. Добавить чтение CSV и вывод таблицы на форму, пока без записи в базу.
  4. Добавить проверки и предварительный просмотр.
  5. Освоить транзакции и запись в регистр сведений.
  6. Зарегистрировать обработку через БСП и передать её пользователю.

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

Если основы встроенного языка ещё не закреплены, сначала стоит пройти базовую подготовку. Пошаговый план освоения профессии с нуля собран в статье с чего начать в 1С в 2026 году, а ближайший базовый курс для новичков описан в материале о курсе «Азы программирования в системе 1С:Предприятие 8».

Похожие статьи

Перенос выходных дней в 2027 году: что проверить бухгалтеру в 1С до начала года

Постановление № 1187 утвердило переносы выходных на 2027 год: каникулы 11 дней, майские праздники 6 дней, а 5 ноября и 31 декабря стали выходными. Разбираем, где в 1С проверить производственный календарь, графики работы и расчёт зарплаты, отпускных и отчётности, чтобы не пришлось пересчитывать декабрь и январь.

Дисциплинарное взыскание в 1С: как оформить приказ по разъяснениям Роструда

Роструд подтвердил: приказ о дисциплинарном взыскании можно составить в свободной форме и не указывать невыполненную задачу. Разбираем, как отразить взыскание в 1С: кадровый учёт, зафиксировать ознакомление или отказ и не пропустить трёхдневный срок по статье 193 ТК РФ.

Оплата селекторных совещаний как сверхурочной работы: разбор определения Седьмого кассационного суда и настройка в 1С:ЗУП

Седьмой кассационный суд признал участие в селекторных совещаниях до начала рабочего дня сверхурочной работой. Разбираем критерии из определения от 13.08.2026 №88-11508/2026, считаем оплату по ст. 99 и 152 ТК РФ и настраиваем начисление в 1С:ЗУП.