При автоматизации обмена данными часто возникает необходимость выгружать отчеты или табличные части документов в файлы форматов DBF. По умолчанию многие разработчики жестко прописывают путь к папке в коде, например: C:\Выгрузка ДБФ\Vigru.dbf. Это делает обработку негибкой, так как при смене компьютера или прав доступа процедура перестает работать. В этом руководстве мы разберем, как позволить пользователю самостоятельно выбирать папку для сохранения файла с помощью стандартных инструментов 1С:Предприятие.
Для реализации интерактивного выбора места сохранения файла в 1С используется объект ДиалогВыбораФайла. Он позволяет вызывать стандартное системное окно выбора каталога или файла. Рассмотрим, как правильно настроить этот диалог для нашей задачи.
Для того чтобы предоставить пользователю возможность выбрать папку, в которой будет создан файл, нам необходимо использовать режим РежимДиалогаВыбораФайла.ВыборКаталога. Это предотвратит ошибки, связанные с попыткой записи в защищенные системные директории.
Давайте посмотрим на базовый пример реализации вызова диалога:
// Создаем объект диалога выбора файла
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
Диалог.Заголовок = "Выберите папку для сохранения файла";
// Открываем диалог и проверяем, нажал ли пользователь кнопку выбора
Если Диалог.Выбрать() Тогда
// Получаем выбранный путь к каталогу
ИмяКаталога = Диалог.Каталог;
// Формируем полное имя файла
ПутьКФайлу = ОбъединитьПути(ИмяКаталога, "Vigru.dbf");
// Здесь будет происходить вызов процедуры создания DBF-файла
КонецЕсли;
Важно помнить, что в архитектуре управляемых форм 1С:Предприятия существует строгое разделение на клиентскую и серверную части. Работа с файловой системой на стороне клиента (где находится пользователь) и на стороне сервера (где работает база данных) различается.
Основные правила разработки:
ДиалогВыбораФайла возможен только на клиенте.XBase, который отвечает за непосредственную запись данных в DBF, обычно выполняется на сервере.Если вы разрабатываете решение для веб-клиента или тонкого клиента, необходимо учитывать асинхронность. В современной платформе 1С 8.3.18 рекомендуется использовать асинхронные методы (с использованием ключевого слова Асинх и Ждать), что делает код чистым и предсказуемым.
Чтобы наша задача была решена профессионально, проанализируем процесс по шагам:
ДиалогВыбораФайла в режиме сохранения, чтобы пользователь мог не только выбрать папку, но и задать имя файла при необходимости.XBase.НачатьПолучениеФайла (или ПолучитьФайлы для синхронных вызовов в толстом клиенте).При формировании DBF-файла не забывайте про кодировку. Часто для совместимости со сторонним программным обеспечением требуется кодировка КодировкаXBase.ANSI или КодировкаXBase.OEM. Всегда указывайте это свойство объекта XBase перед созданием файла:
БД = Новый XBase;
БД.Кодировка = КодировкаXBase.ANSI;
// Добавление полей
БД.Поля.Добавить("Nomenkl", "S", 30);
// ... дальнейшая настройка
Использование функции ОбъединитьПути(Каталог, ИмяФайла) является предпочтительным способом склейки строк с путями, так как платформа автоматически расставляет необходимые разделители в зависимости от операционной системы.
Следуя этим рекомендациям, вы сможете сделать вашу обработку не только удобной для пользователя, но и технически грамотной, соответствующей современным стандартам разработки 1С.