Ищем внешнюю обработку 1С 8.3: на диске, в справочнике базы и по журналу

· 9 мин

Содержание

Внешняя обработка 1С хранится в одном из двух мест. Либо это отдельный файл .epf (для отчёта — .erf) на диске компьютера или в сетевой папке, либо она загружена в информационную базу — в справочник «Дополнительные отчеты и обработки». В конфигурации её нет: если искать обработку в дереве метаданных Конфигуратора, её не найти.

Частое заблуждение — что обработка, которой пользуются через раздел программы, «лежит где-то в папке с 1С». Нет: после загрузки в справочник файл на диске больше не нужен, обработка живёт внутри базы и копируется вместе с ней.

Два места хранения внешней обработки и как понять, какое ваше

Отличить вариант можно за минуту — по тому, как пользователь её запускает.

  • 📂 Открывает через Главное меню → Файл → Открыть и выбирает файл — обработка хранится на диске. База о ней ничего не знает.
  • 🗂️ Запускает из раздела программы (кнопка «Дополнительные обработки», «Печать» с нестандартной формой, команда «Заполнить» в табличной части) — обработка загружена в базу.
  • 🖨️ Нестандартная печатная форма документа в типовой конфигурации почти всегда подключена через справочник дополнительных обработок.
  • 🧩 Команда есть, но в справочнике её нет — скорее всего, это не внешняя обработка, а расширение конфигурации . Расширения хранятся тоже в базе, но в другом месте.

Если пользователь говорит «она у меня на рабочем столе ярлыком» — ярлык ведёт на файл. Откройте его свойства, в поле «Объект» будет полный путь.

Файл внешней обработки на диске: где искать .epf

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

Быстрый поиск по диску

В командной строке Windows:

dir C:\*.epf /s /b
dir C:\*.erf /s /b

В PowerShell — сразу оба типа и с датой изменения:

Get-ChildItem -Path C:\ -Include *.epf,*.erf -Recurse -ErrorAction SilentlyContinue |
  Select-Object FullName, LastWriteTime |
  Sort-Object LastWriteTime -Descending

Для сетевой папки замените C:\ на путь вида \\server\share. Поиск по всему диску идёт несколько минут — это нормально.

Где обычно оказываются файлы

Где искатьПочему там
%USERPROFILE%\DesktopСкачали от разработчика и бросили на рабочий стол
%USERPROFILE%\DownloadsПолучили по почте или из мессенджера
Сетевая папка отделаОдна обработка на всех пользователей
Каталог файловой базыПоложили «рядом с базой», чтобы не потерять
%TEMP%Временная копия, которую платформа сделала при запуске

Файл из временной папки — копия, а не оригинал. Его можно забрать, если другого нет, но после очистки временных файлов он пропадёт.

Последние открытые файлы

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

Хранение внешних обработок внутри информационной базы

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) загруженные обработки хранятся в справочнике «Дополнительные отчеты и обработки». Сам файл записан в реквизит этого справочника как двоичные данные (тип «Хранилище значения»).

Список открывается так:

  1. Администрирование → Печатные формы, отчеты и обработки.
  2. Проверьте, что включён флажок «Дополнительные отчеты и обработки».
  3. Перейдите по ссылке «Дополнительные отчеты и обработки».

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

Где это физически

  • 🗄️ Файловая база — внутри файла 1Cv8.1CD в каталоге базы. Каталог можно узнать в окне запуска: выделите базу, путь показан внизу списка.
  • 🖥️ Клиент-серверная база — в таблице СУБД (PostgreSQL или MS SQL), которая соответствует справочнику. Имена таблиц служебные, вида _Reference123.

Не пытайтесь вытащить обработку напрямую из таблицы СУБД или из файла 1Cv8.1CD. Данные там в служебном формате, а правка таблиц мимо платформы может испортить базу. Для выгрузки есть штатная команда, о ней ниже.

Как выгрузить обработку из базы в файл

  1. Откройте карточку нужной обработки в справочнике.
  2. В командной панели формы (при необходимости через «Ещё») найдите команду выгрузки в файл.
  3. Укажите папку — платформа сохранит .epf или .erf с исходным именем файла.

Выгруженный файл открывается в Конфигураторе через Файл → Открыть как обычная внешняя обработка. Так её можно изучить или доработать, а потом загрузить обратно командой загрузки из файла в той же карточке.

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

Как определить расположение через Конфигуратор и саму обработку

В Конфигураторе

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

  • 🔎 Открыть найденный файл. Файл → Открыть, выберите .epf. Откроется отдельное дерево объекта: формы, макеты, модуль. В заголовке окна видно имя файла.
  • 👤 Проверить, кто может открывать файлы. В Администрирование → Пользователи откройте пользователя. Право интерактивно открывать внешние обработки задаётся ролями, а флажок «Защита от опасных действий» отвечает за предупреждение при запуске.

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

Из открытой обработки

Самый точный способ узнать, откуда запущена обработка, — спросить её саму. У объекта внешней обработки есть свойство ИспользуемоеИмяФайла. Добавьте в модуль формы временную команду:

&НаСервере
Функция ПутьКФайлуНаСервере()
    Возврат РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;
КонецФункции

&НаКлиенте
Процедура ПоказатьПуть(Команда)
    Сообщить(ПутьКФайлуНаСервере());
КонецПроцедуры

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

Журнал регистрации: кто и когда загрузил обработку

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

  1. Администрирование → Обслуживание → Журнал регистрации (или Администрирование → Журнал регистрации в Конфигураторе).
  2. Нажмите «Установить отбор».
  3. В поле «Метаданные» выберите справочник «Дополнительные отчеты и обработки».
  4. Задайте период и примените отбор.

Вы увидите события добавления и изменения элементов справочника: дату, пользователя, компьютер. Столбец «Данные» показывает, какую обработку затронули.

Журнал хранит записи за срок, заданный в настройках журнала регистрации. Если там стоит короткий период или «Не регистрировать», старых событий не будет.

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

Сравнение способов хранения обработок

СпособГде физическиПлюсыМинусы
Файл .epf / .erfДиск или сетевая папкаПросто менять и отлаживатьТеряется, у каждого своя версия, нужно право открывать файлы
Справочник «Дополнительные отчеты и обработки»В базе (1Cv8.1CD или СУБД)Одна версия для всех, копируется с базой, есть безопасный режимКаждую правку нужно выгрузить, изменить и загрузить
Расширение конфигурацииВ базе, отдельно от справочникаМожно менять типовые объекты, переживает обновленияЭто уже не внешняя обработка, нужна установка и обновление структуры
Обработка в составе конфигурацииВ конфигурации базыВидна в дереве метаданныхСнятие с поддержки, сложнее обновление

Что выбрать на практике:

  • ✅ Разовая обработка для администратора — файл, хранящийся в одной папке с понятным именем.
  • ✅ Печатные формы и обработки для пользователей — справочник. Не будет ситуации «у бухгалтера одна версия, у кладовщика другая».
  • ✅ Исходники всех внешних обработок держите ещё и в отдельной папке или системе контроля версий. Хранилище конфигурации внешние файлы не версионирует.
Где искать вашу внешнюю обработку?

Программный поиск путей и списка обработок

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

ВЫБРАТЬ
    ДОР.Наименование,
    ДОР.ИмяОбъекта,
    ДОР.ИмяФайла,
    ДОР.Вид,
    ДОР.Версия,
    ДОР.Публикация,
    ДОР.ПометкаУдаления
ИЗ
    Справочник.ДополнительныеОтчетыИОбработки КАК ДОР
УПОРЯДОЧИТЬ ПО
    ДОР.Наименование

ИмяФайла — имя, с которым файл когда-то загрузили. Путь на компьютере загрузившего оно не содержит, но помогает найти оригинал поиском по диску.

Состав реквизитов справочника зависит от версии БСП. Если запрос ругается на поле, откройте справочник в Конфигураторе и сверьте имена.

Массовая выгрузка всех обработок в папку

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

&НаСервереБезКонтекста
Процедура ВыгрузитьВсеОбработки(Каталог)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ДОР.Ссылка,
    |    ДОР.ИмяФайла
    |ИЗ
    |    Справочник.ДополнительныеОтчетыИОбработки КАК ДОР
    |ГДЕ
    |    НЕ ДОР.ПометкаУдаления";

    Выборка = Запрос.Выполнить().Выбрать();
    Номер = 0;
    Пока Выборка.Следующий() Цикл
        Данные = Выборка.Ссылка.ХранилищеОбработки.Получить();
        Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
            Продолжить;
        КонецЕсли;
        Номер = Номер + 1;
        ИмяФайла = СтрШаблон("%1_%2", Формат(Номер, "ЧГ=0"), Выборка.ИмяФайла);
        Данные.Записать(Каталог + "\" + ИмяФайла);
    КонецЦикла;

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

Номер в начале имени нужен, чтобы два элемента с одинаковым именем файла не перезаписали друг друга. Если имя файла в справочнике пустое, добавьте расширение вручную по виду: отчёт — .erf, остальное — .epf.

Поиск файлов на нескольких компьютерах

Для сети удобнее PowerShell с выгрузкой результата в таблицу:

Get-ChildItem -Path "\\server\share" -Include *.epf,*.erf -Recurse -ErrorAction SilentlyContinue |
  Select-Object FullName, Length, LastWriteTime |
  Export-Csv -Path "C:\temp\epf_list.csv" -Encoding UTF8 -NoTypeInformation

Файл открывается в Excel. По дате изменения видно, какая копия свежая.

Что проверить в найденной обработке, прежде чем запускать

Нашли несколько копий одной обработки — не запускайте первую попавшуюся. Внешняя обработка выполняет код с правами пользователя и может менять данные.

  1. Сравните даты. Свежая копия обычно та, у которой позднее дата изменения файла или выше версия в карточке справочника.
  2. Сравните содержимое. В Конфигураторе есть сравнение внешних обработок: откройте одну и через меню Файл найдите команду сравнения с другим файлом. Различия в модулях покажут, какая копия доработана.
  3. Проверьте релиз базы. Обработка, написанная под старый релиз, может обращаться к реквизитам, которых уже нет. Ошибка вида Поле объекта не обнаружено — типичный признак.
  4. Посмотрите на безопасный режим. В карточке справочника видно, работает ли обработка в безопасном режиме. Если нет — она получает полный доступ к файлам и внешним ресурсам сервера, и запускать её стоит, только если вы знаете автора.

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

Частые вопросы

Удалится ли обработка, если удалить исходный файл после загрузки в базу?
Нет. При загрузке файл копируется в справочник. Исходник на диске можно удалить, обработка продолжит работать.
Переносится ли загруженная обработка вместе с выгрузкой .dt?
Да. Справочник «Дополнительные отчеты и обработки» — обычные данные базы, они попадают в выгрузку .dt и в копию каталога файловой базы.
Сохранятся ли обработки при обновлении конфигурации?
Загруженные в справочник — да, обновление их не удаляет. Но обработка, написанная под старый релиз, может перестать работать, если поменялись реквизиты объектов.
Почему обработку нельзя открыть через «Файл → Открыть», а из справочника она запускается?
Для открытия файлов у пользователя должно быть право интерактивно открывать внешние обработки. Для запуска из справочника достаточно ролей на использование дополнительных отчётов и обработок, а право открывать файлы не требуется.
Можно ли хранить внешние обработки в хранилище конфигурации?
Нет, хранилище версионирует только конфигурацию. Исходники внешних обработок держат в отдельной папке или системе контроля версий.