Внешние и встроенные обработки 1С 8.3: где лежит файл и как его найти
Содержание
Ответ зависит от вида обработки. Внешняя обработка — это обычный файл .epf в любой папке, которую выбрал пользователь: у платформы нет «своего» каталога для таких файлов. Если внешнюю обработку
подключили через справочник «Дополнительные отчеты и обработки», её двоичная копия хранится уже внутри информационной базы. Встроенная обработка — часть конфигурации: в файловой базе она лежит в файле 1Cv8.1CD, в клиент-серверной — в служебных таблицах СУБД.
Отдельным файлом на диске встроенная обработка не существует никогда. Достать её можно только через Конфигуратор. Ниже разобрано, где искать каждый вариант, как добраться до него программно и почему обработка иногда «есть, но не открывается».
Карта хранения обработок в 1С 8.3
Сначала определите, с чем вы имеете дело. Это сразу сужает поиск.
| Вид обработки | Где физически хранится | Как найти |
|---|---|---|
📄 Внешняя, открытая через Файл → Открыть | Файл .epf на диске пользователя или в сетевой папке | Поиск по диску *.epf |
| 🗂 Подключённая через «Дополнительные отчеты и обработки» | Внутри базы, в реквизите элемента справочника | Карточка в справочнике, выгрузка в файл |
| 🧩 Встроенная (объект конфигурации) | Конфигурация базы: 1Cv8.1CD или таблицы Config/ConfigSave в СУБД | Ветка «Обработки» в Конфигураторе |
| 🔌 Обработка из расширения | В базе, вместе с расширением | Конфигуратор → Конфигурация → Расширения конфигурации |
| 📑 Внешний отчёт | Файл .erf — по тем же правилам, что и .epf | Поиск по диску *.erf |
Внешние отчёты устроены так же, как внешние обработки. Всё, что сказано дальше про .epf, относится и к .erf.
Файловая база: всё внутри 1Cv8.1CD
Файловая информационная база — это каталог с файлом 1Cv8.1CD. В нём лежат и данные, и конфигурация целиком. Все встроенные обработки, справочник дополнительных обработок с их двоичными копиями, расширения — внутри этого одного файла.
Как узнать, где лежит каталог базы:
- Откройте окно запуска 1С.
- Выделите базу в списке.
- Внизу окна появится строка вида
File="D:\Bases\Buh"— это и есть путь.
Тот же путь записан в файле списка баз ibases.v8i. Он лежит в профиле пользователя, в папке %APPDATA%\1C\1CEStart\. Откройте его Блокнотом и найдите строку Connect=File=... под названием нужной базы.
Что ещё бывает в каталоге файловой базы:
- 📁
1Cv8.1CD— сама база; - 🔒
1Cv8.1CL— файл блокировки, появляется, пока с базой кто-то работает; - 📁 папка
1Cv8Log— журнал регистрации.
Открыть 1Cv8.1CD сторонними утилитами и «вытащить» обработку руками — плохая идея. Формат внутренний, а повреждённый файл не всегда восстанавливается. Для выгрузки есть Конфигуратор.
Иногда пользователи держат внешние обработки рядом с базой, в том же каталоге. Платформа этого не требует. Это просто договорённость конкретной организации.
Клиент-серверная база: таблицы СУБД
В клиент-серверном варианте база живёт в СУБД — MS SQL Server или PostgreSQL. Конфигурация хранится в служебных таблицах:
Config— конфигурация базы данных, то есть то, с чем сейчас работают пользователи;ConfigSave— основная конфигурация, если её изменили в Конфигураторе, но ещё не обновили конфигурацию базы данных.
Встроенные обработки — внутри этих таблиц. Строки там названы идентификаторами объектов, а содержимое хранится в упакованном двоичном виде. Прочитать модуль обработки SQL-запросом нельзя.
Для справки можно посмотреть, сколько записей и какого размера лежит в таблице:
SELECT FileName, DataSize, Modified
FROM Config
ORDER BY Modified DESC;
Ничего не меняйте в таблицах Config и ConfigSave средствами СУБД. Ручная правка или удаление строк ломает конфигурацию, и база перестаёт запускаться.
Подключённые дополнительные обработки — это уже не конфигурация, а данные. Они лежат в обычной таблице справочника. Имя таблицы в СУБД обезличено: что-то вроде _Reference123, а реквизит с файлом — колонка вида _Fld456. Как сопоставить эти имена с понятными, разобрано в следующем разделе.
На сервере 1С (в каталоге кластера) обработки постоянно не хранятся. Там лежат служебные файлы кластера и временные данные сеансов.
Как найти обработку через Конфигуратор и структуру хранения
Встроенная обработка
- Запустите базу в режиме Конфигуратор.
- Откройте дерево:
Конфигурация → Открыть конфигурацию. - Раскройте ветку «Обработки».
- Если обработок много, встаньте в дерево и начните печатать имя — сработает быстрый поиск.
Чтобы получить встроенную обработку отдельным файлом, щёлкните по ней правой кнопкой и выберите «Сохранить как внешнюю обработку, отчет…». Получится .epf, который можно открыть в любой базе с подходящей конфигурацией.
В пользовательском режиме встроенную обработку тоже можно найти: Главное меню → Все функции → Обработки. Если пункта «Все функции» нет, включите его в Главное меню → Сервис → Параметры флажком «Отображать команду “Все функции”».
Имя таблицы в СУБД
Чтобы понять, в какой таблице SQL лежит справочник дополнительных обработок, используйте метод ПолучитьСтруктуруХраненияБазыДанных(). Его можно выполнить в любой внешней обработке на сервере:
&НаСервере
Процедура ПоказатьТаблицыНаСервере()
Объекты = Новый Массив;
Объекты.Добавить(Метаданные.Справочники.ДополнительныеОтчетыИОбработки);
Структура = ПолучитьСтруктуруХраненияБазыДанных(Объекты, Истина);
Для Каждого Строка Из Структура Цикл
Сообщить(Строка.Метаданные + " -> " + Строка.ИмяТаблицыХранения);
КонецЦикла;
КонецПроцедуры
Второй параметр Истина возвращает имена в формате СУБД. Без него вы получите имена в терминах платформы.
Справочник «Дополнительные отчеты и обработки»
В типовых конфигурациях на Библиотеке стандартных подсистем внешнюю обработку можно подключить к базе. После этого файл на диске больше не нужен: копия сохраняется в элементе справочника.
Где открыть список:
| Конфигурация | Путь |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки |
| ЗУП 3.1 | Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки |
| Управление торговлей 11 | НСИ и администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки |
Если ссылки нет, в том же разделе «Печатные формы, отчеты и обработки» включите флажок «Дополнительные отчеты и обработки».
Как достать файл обратно:
- Откройте карточку нужной обработки.
- В командах карточки найдите выгрузку в файл (в меню «Ещё», если на панели её не видно).
- Сохраните
.epfв нужную папку.
Загрузка новой версии делается там же — командой загрузки из файла. Старая копия при этом заменяется, поэтому сначала выгрузите её.
Подключённые обработки переезжают вместе с базой: при выгрузке в .dt и загрузке в другую базу они сохраняются. Внешние .epf, открытые просто с диска, — нет.
Папки профиля Windows: что 1С держит у пользователя
Сами внешние обработки платформа в профиль не копирует. Но там лежат файлы, которые часто путают с «местом хранения»:
| Папка | Что внутри |
|---|---|
%APPDATA%\1C\1CEStart\ | ibases.v8i — список баз в окне запуска, настройки стартера |
%APPDATA%\1C\1cv8\ | Пользовательские настройки клиента, подпапки с идентификаторами баз |
%LOCALAPPDATA%\1C\1cv8\ | Кэш конфигурации: клиент хранит здесь копии форм и модулей, в том числе встроенных обработок |
%TEMP% | Временные файлы, которые создаются при работе |
Кэш в %LOCALAPPDATA% — не источник для восстановления. Там служебные файлы в формате платформы, обработку из них не собрать.
Чтобы найти потерянный .epf, ищите по маске на всём компьютере:
- 🔍 в Проводнике —
*.epfв строке поиска; - 🔍 в командной строке:
dir C:\*.epf /s /b
dir D:\*.epf /s /b
Частые места, куда пользователи кладут обработки: «Загрузки», «Документы», «Рабочий стол», сетевая папка отдела. Если файл присылал программист, проверьте вложения в почте.
Программный доступ к обработкам
Встроенная обработка
К объекту конфигурации обращаются по имени:
// на сервере
Обработка = Обработки.ИмяОбработки.Создать();
// на клиенте — открыть форму
ОткрытьФорму("Обработка.ИмяОбработки.Форма");
Навигационная ссылка вида e1cib/app/Обработка.ИмяОбработки открывает её из адресной строки клиента или из ссылки в тексте. Список всех встроенных обработок даёт коллекция Метаданные.Обработки.
Внешняя обработка из файла
На сервере есть два пути. Первый — по полному имени файла:
Обработка = ВнешниеОбработки.Создать("\\server\share\Obrabotka.epf");
Файл должен быть доступен самому серверу 1С, а не компьютеру пользователя. Второй путь надёжнее: передать двоичные данные во временное хранилище и подключить их.
Обработка из справочника дополнительных обработок
&НаСервере
Функция ПодключитьИзСправочника(Ссылка)
Данные = Ссылка.ХранилищеОбработки.Получить();
Адрес = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);
Имя = ВнешниеОбработки.Подключить(Адрес, , Истина);
Возврат Имя;
КонецФункции
Функция возвращает имя подключённой обработки. Дальше форма открывается так: ОткрытьФорму("ВнешняяОбработка." + Имя + ".Форма"). Третий параметр Истина — безопасный режим. Отключайте его только для обработок, которым вы доверяете.
Права и доступ к файлам: почему обработка не открывается
Найти файл — половина дела. Дальше мешают права в 1С и права Windows.
Права в 1С
Чтобы открыть внешнюю обработку через Файл → Открыть, у пользователя должно быть право «Интерактивное открытие внешних обработок». В типовых конфигурациях его дают через профили групп доступа: Администрирование → Настройки пользователей и прав → Группы доступа. Если права нет, открытие файла заканчивается ошибкой Нарушение прав доступа!.
Подключённые через справочник обработки работают иначе. Им не нужно право на открытие внешних файлов. Доступ задаётся в карточке обработки — для каких разделов и каких пользователей она видна.
С версии платформы 8.3.9 при открытии внешней обработки срабатывает защита от опасных действий: появляется предупреждение. Его отключают в свойствах пользователя в Конфигураторе, флажком «Защита от опасных действий». Делайте это только для опытных пользователей.
Права Windows
В клиент-серверной базе код на сервере работает от имени учётной записи службы 1С. Это не пользователь, который сидит за компьютером. Отсюда типовые сбои:
- 🚫 путь на подключённый диск вроде
Z:\— у службы нет этого диска, нужен UNC-путь\\server\share\; - 🚫 у учётной записи службы нет прав на чтение сетевой папки;
- 🚫 файл открыт в Конфигураторе у программиста и заблокирован на запись;
- 🚫 на кластере включён профиль безопасности, который запрещает доступ к внешним модулям.
Как узнать учётную запись службы:
- Нажмите
Win + R, введитеservices.msc. - Найдите службу агента сервера 1С:Предприятия 8.3.
- Откройте её свойства, вкладку «Вход в систему». Там указан пользователь, от имени которого работает сервер.
Именно этому пользователю выдавайте права на чтение папки с обработками.