Папка базы, файл выгрузки, журнал: где их найти и как открыть из 1С
Содержание
Чтобы открыть путь к файлу в 1С, сначала узнайте сам путь, а потом передайте его Проводнику. Путь к файловой базе виден в окне запуска под списком баз. Из кода папку открывает ФайловаяСистемаКлиент.ОткрытьПроводник(Путь) в конфигурациях на БСП или НачатьЗапускПриложения с командой explorer.exe в любой конфигурации.
Дальше всё зависит от того, где лежит файл. Если на компьютере пользователя, его откроет тонкий клиент. Если на сервере 1С, клиент его не увидит. Тогда файл сначала передают на клиент. В веб-клиенте без расширения для работы с файлами локальные пути вообще недоступны.
Где посмотреть путь к базе и файлам без программирования
Чаще всего путь нужен, чтобы найти папку базы, скопировать её или переслать администратору. Для этого хватает интерфейса платформы 1С 8.3.
Окно запуска 1С
- Запустите 1С:Предприятие ярлыком, но базу пока не открывайте.
- Один раз щёлкните нужную базу в списке.
- Внизу окна появится строка подключения:
File="D:\Bases\Buh"для файловой базы илиSrvr="srv1c";Ref="buh"для серверной. - Чтобы скопировать путь, нажмите Изменить. На первом шаге мастера будет поле с каталогом базы.
Окно «О программе» внутри базы
Если база уже открыта, нажмите кнопку главного меню (значок с тремя полосками в левом верхнем углу) и выберите Справка → О программе. В окне показана строка соединения информационной базы, версия платформы и конфигурации.
Файл со списком баз
Список баз на компьютере хранится в файле ibases.v8i. Он лежит в папке %APPDATA%\1C\1CEStart\. Вставьте этот путь в адресную строку Проводника и откройте файл Блокнотом. У каждой базы будет строка Connect= с путём.
Этот файл удобно переносить на новый компьютер: скопировали ibases.v8i — и весь список баз на месте.
Какие папки 1С создаёт на компьютере пользователя
| Что ищете | Где лежит |
|---|---|
| Сама файловая база | Каталог из строки File=, внутри файл 1Cv8.1CD |
| Список баз | %APPDATA%\1C\1CEStart\ibases.v8i |
| Настройки пользователя и кэш | %APPDATA%\1C\1cv8\ и %LOCALAPPDATA%\1C\1cv8\ |
| Программа 1С | C:\Program Files\1cv8\<номер версии>\bin\ |
Системные функции, которые возвращают нужные пути
Хардкодить в обработке C:\Users\Ivanov\Desktop нельзя: у коллеги путь будет другой. У платформы есть функции, которые возвращают стандартные каталоги текущего пользователя.
| Функция | Что возвращает | Где работает |
|---|---|---|
КаталогВременныхФайлов() | Каталог временных файлов | На клиенте — папка клиента, на сервере — сервера |
КаталогДокументов() | Папку «Документы» пользователя | Клиент |
КаталогПрограммы() | Каталог bin запущенной платформы | Клиент и сервер |
РабочийКаталогДанныхПользователя() | Рабочий каталог 1С для данных пользователя | Клиент |
СтрокаСоединенияИнформационнойБазы() | Строку подключения к базе | Клиент и сервер |
ПолучитьРазделительПути() | \ в Windows, / в Linux и macOS | Клиент и сервер |
Путь к файловой базе можно достать из строки соединения. Она выглядит как File="D:\Bases\Buh";. Вот пример, который возвращает каталог или пустую строку для серверной базы:
&НаКлиенте
Функция КаталогФайловойБазы()
Строка = СтрокаСоединенияИнформационнойБазы();
Позиция = СтрНайти(ВРег(Строка), "FILE=""");
Если Позиция = 0 Тогда
Возврат ""; // база серверная
КонецЕсли;
Остаток = Сред(Строка, Позиция + 6);
Возврат Лев(Остаток, СтрНайти(Остаток, """") - 1);
КонецФункции
Путь из частей собирайте через разделитель, а не через голый символ \:
Разделитель = ПолучитьРазделительПути();
ПолныйПуть = КаталогДокументов() + Разделитель + "Выгрузка" + Разделитель + "отчет.xlsx";
Проверьте, заканчивается ли каталог на разделитель. КаталогВременныхФайлов() обычно возвращает путь со слешем в конце, и при склейке получится двойной \\. Windows такое прощает, но в Linux и при сравнении строк это ловушка.
Открываем папку или файл кодом
Есть три рабочих способа. Какой выбрать, зависит от конфигурации и версии платформы.
Способ 1. Через БСП
Все типовые конфигурации (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, ERP) построены на Библиотеке стандартных подсистем. В ней есть готовый клиентский модуль ФайловаяСистемаКлиент:
&НаКлиенте
Процедура ОткрытьПапкуВыгрузки(Команда)
ФайловаяСистемаКлиент.ОткрытьПроводник(Объект.КаталогВыгрузки);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФайлОтчета(Команда)
ФайловаяСистемаКлиент.ОткрытьФайл(Объект.ПутьКФайлу);
КонецПроцедуры
ОткрытьПроводник открывает каталог. Если передать путь к файлу, он выделит этот файл в папке. ОткрытьФайл запускает файл в программе, которая назначена в системе: Excel, просмотрщик PDF и т. п. Библиотека сама учитывает ОС и веб-клиент, поэтому в типовых этот способ первый.
Способ 2. Через запуск Проводника
В самописных конфигурациях без БСП Проводник вызывают напрямую. Ключ /select открывает папку и подсвечивает в ней файл:
&НаКлиенте
Процедура ПоказатьФайлВПапке(Команда)
СтрокаКоманды = "explorer.exe /select,""" + Объект.ПутьКФайлу + """";
Оповещение = Новый ОписаниеОповещения("ПослеЗапускаПроводника", ЭтотОбъект);
НачатьЗапускПриложения(Оповещение, СтрокаКоманды);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗапускаПроводника(КодВозврата, ДополнительныеПараметры) Экспорт
// ничего не делаем: Проводник уже открыт
КонецПроцедуры
Кавычки внутри строки 1С удваиваются. Поэтому путь с пробелами, например C:\Мои документы\отчёт.xlsx, Проводник получит целиком.
Синхронный ЗапуститьПриложение() по-прежнему существует, но в конфигурациях, где синхронные вызовы расширений платформы запрещены, он вызовет ошибку. На платформе 8.3.18 и новее вместо него есть ЗапуститьПриложениеАсинх с оператором Ждать внутри асинхронной процедуры.
Способ 3. Диалог выбора, чтобы пользователь сам указал путь
Если путь заранее неизвестен, дайте пользователю выбрать папку:
&НаКлиенте
Процедура ВыбратьКаталог(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
Диалог.Заголовок = "Куда сохранить выгрузку";
Диалог.Показать(Новый ОписаниеОповещения("ПослеВыбораКаталога", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораКаталога(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы = Неопределено Тогда
Возврат; // пользователь нажал «Отмена»
КонецЕсли;
Объект.КаталогВыгрузки = ВыбранныеФайлы[0];
КонецПроцедуры
Для выбора файла поменяйте режим на РежимДиалогаВыбораФайла.Открытие и задайте Диалог.Фильтр, например "Таблицы Excel (*.xlsx)|*.xlsx".
Внешняя обработка «Открыть папку»: когда она нужна и как подключить
Конфигурацию снимать с поддержки ради одной кнопки не стоит. Удобнее вынести код во внешнюю обработку
.epf. Типичные задачи такой обработки:
- 📂 открыть папку обмена или выгрузки одной кнопкой;
- 🗂 показать каталог файловой базы пользователю, который не знает, где она лежит;
- 🧹 открыть каталог временных файлов, чтобы найти выгруженный и забытый отчёт.
Как сделать:
- В Конфигураторе:
Файл → Новый → Внешняя обработка. - Добавьте форму, на неё реквизит
Путь(строка) и команду Открыть. - В обработчике команды вызовите один из способов из предыдущего раздела.
- Сохраните файл
.epf.
Подключить обработку можно двумя путями:
- Разово. В режиме Предприятия: главное меню →
Файл → Открыть, выберите.epf. Нужно право на интерактивное открытие внешних обработок. - Постоянно. В Бухгалтерии 3.0 и ЗУП 3.1 через
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Так обработка появится в разделе, а пользователю не нужно право на открытие файлов.epf.
Если обработка зарегистрирована в безопасном режиме, запуск внешних программ ей запрещён. Код с НачатьЗапускПриложения упадёт с ошибкой о небезопасной операции. Снимать безопасный режим можно только для обработок, код которых вы проверили сами.
Платформы последних версий при открытии внешней обработки из файла показывают предупреждение о небезопасных действиях. Это защита, а не ошибка. Подтверждайте только для своих файлов.
Где лежит журнал регистрации и как найти в нём путь
Журнал регистрации часто открывают, чтобы понять, куда пользователь выгрузил файл или откуда загрузил обмен. Сначала про сами файлы журнала.
Физическое расположение журнала
| Тип базы | Папка журнала |
|---|---|
| Файловая | Подкаталог 1Cv8Log в каталоге базы |
| Клиент-серверная | srvinfo\reg_1541\<GUID базы>\1Cv8Log на сервере 1С |
Внутри будет либо один файл 1Cv8.lgd (новый формат SQLite), либо пара 1Cv8.lgf и файлы .lgp (старый последовательный формат). Формат переключается в Конфигураторе: Администрирование → Настройка журнала регистрации.
GUID серверной базы показан в консоли кластера в свойствах информационной базы. Сопоставьте его с именем папки в reg_1541.
Поиск пути внутри журнала
Сам журнал смотрите в режиме Предприятия: Администрирование → Обслуживание → Журнал регистрации (в БП 3.0 и ЗУП 3.1). Поставьте отбор по пользователю и периоду, затем:
- Включите отбор по событиям загрузки и выгрузки данных или по нужной обработке.
- Откройте запись двойным щелчком.
- В поле комментария часто записан путь файла, если разработчик обработки его туда пишет.
Если свою обработку пишете вы, фиксируйте путь сами: ЗаписьЖурналаРегистрации("Выгрузка", УровеньЖурналаРегистрации.Информация, , , "Файл: " + ПутьКФайлу). Через полгода это сэкономит поиски по всем дискам.
Журнал не стоит открывать текстовым редактором и тем более править вручную. Для разбора вне 1С есть сторонние утилиты, но работайте с копией файлов.
Тонкий клиент, веб-клиент и сервер: почему путь «есть, но не открывается»
Главная ошибка начинающих: путь формируется в серверной процедуре, а открыть его пытаются на клиенте.
Код на сервере
Процедуры &НаСервере выполняются на сервере 1С. Там КаталогВременныхФайлов() вернёт папку сервера, например C:\Users\USR1CV8\AppData\Local\Temp\. Пользователь эту папку не видит. В файловом варианте клиент и «сервер» — один компьютер, поэтому ошибка проявится только после перехода на клиент-сервер.
Правильная схема:
- На сервере сформируйте файл и положите его двоичные данные во временное хранилище:
ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла), УникальныйИдентификатор). - Удалите временный файл с сервера.
- На клиенте получите файл через
НачатьПолучениеФайловилиФайловаяСистемаКлиент.СохранитьФайлв БСП. - Откройте уже локальный путь.
Тонкий клиент
Тонкий клиент работает с файловой системой компьютера пользователя напрямую. Все примеры выше в нём работают. Ограничение одно: права Windows. Если у пользователя нет доступа к сетевой папке, 1С не откроет её тоже.
Веб-клиент
Браузер не пускает страницу к дискам пользователя. Поэтому в веб-клиенте:
- без расширения для работы с файлами запуск Проводника и открытие файла по пути недоступны;
- расширение подключают кодом:
НачатьПодключениеРасширенияРаботыСФайлами, а при отказе предлагают установку черезНачатьУстановкуРасширенияРаботыСФайлами; - на платформе 8.3.18+ есть асинхронный аналог
ПодключитьРасширениеРаботыСФайламиАсинх(); - БСП делает это за вас:
ФайловаяСистемаКлиентсама предложит установить расширение .
Если пользователь отказался ставить расширение, остаётся только отдать файл на скачивание. Открыть его он сможет из загрузок браузера.
Командная строка: открываем базу по пути и запускаем обработку
Путь к файлу или базе можно передать 1С при запуске. Это удобно для ярлыков и планировщика задач. Основные параметры 1cv8.exe:
| Параметр | Что делает |
|---|---|
ENTERPRISE | Запуск в режиме Предприятия |
DESIGNER | Запуск Конфигуратора |
/F"путь" | Путь к файловой базе |
/S"сервер\база" | Серверная база |
/N"имя" /P"пароль" | Пользователь и пароль |
/Execute"путь.epf" | Сразу открыть внешнюю обработку |
/C"строка" | Передать строку, в коде её вернёт ПараметрЗапуска |
Пример ярлыка, который открывает файловую базу и сразу обработку выгрузки:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Обмен" /Execute"D:\Tools\Vygruzka.epf"
Для серверной базы замените /F на /S"srv1c\buh". В примере использован 1cestart.exe: он сам подберёт установленную версию платформы.
Если нужна просто папка, а не 1С, хватит одной строки в bat-файле:
explorer.exe "D:\Bases\Buh"
Пароль в ярлыке или bat-файле лежит открытым текстом. Для регламентных заданий заведите отдельного пользователя с минимальными правами, а не используйте учётку администратора.
Частые вопросы
Почему путь к сетевой папке работает у меня, но не у сервера 1С?
Как открыть папку с кэшем 1С?
%APPDATA%\1C\1cv8 или %LOCALAPPDATA%\1C\1cv8. Перед очисткой кэша закройте все сеансы 1С на этом компьютере, иначе часть файлов будет занята.Работают ли пути Windows в 1С под Linux?
ПолучитьРазделительПути() и стандартные функции каталогов, тогда код будет работать в обеих системах.Как проверить, что файл существует, до открытия?
Новый Файл(Путь) и проверьте существование. На платформе 8.3.18+ используйте асинхронный СуществуетАсинх(), в старых версиях — НачатьПроверкуСуществования.