Как реализовать выгрузку документа в DBF с выбором пути сохранения пользователем?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При автоматизации обмена данными часто возникает необходимость выгружать отчеты или табличные части документов в файлы форматов DBF. По умолчанию многие разработчики жестко прописывают путь к папке в коде, например: C:\Выгрузка ДБФ\Vigru.dbf. Это делает обработку негибкой, так как при смене компьютера или прав доступа процедура перестает работать. В этом руководстве мы разберем, как позволить пользователю самостоятельно выбирать папку для сохранения файла с помощью стандартных инструментов 1С:Предприятие.

Использование объекта ДиалогВыбораФайла

Для реализации интерактивного выбора места сохранения файла в 1С используется объект ДиалогВыбораФайла. Он позволяет вызывать стандартное системное окно выбора каталога или файла. Рассмотрим, как правильно настроить этот диалог для нашей задачи.

Для того чтобы предоставить пользователю возможность выбрать папку, в которой будет создан файл, нам необходимо использовать режим РежимДиалогаВыбораФайла.ВыборКаталога. Это предотвратит ошибки, связанные с попыткой записи в защищенные системные директории.

Давайте посмотрим на базовый пример реализации вызова диалога:


// Создаем объект диалога выбора файла
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
Диалог.Заголовок = "Выберите папку для сохранения файла";

// Открываем диалог и проверяем, нажал ли пользователь кнопку выбора
Если Диалог.Выбрать() Тогда
    // Получаем выбранный путь к каталогу
    ИмяКаталога = Диалог.Каталог;
    
    // Формируем полное имя файла
    ПутьКФайлу = ОбъединитьПути(ИмяКаталога, "Vigru.dbf");
    
    // Здесь будет происходить вызов процедуры создания DBF-файла
КонецЕсли;

Особенности работы в управляемых формах

Важно помнить, что в архитектуре управляемых форм 1С:Предприятия существует строгое разделение на клиентскую и серверную части. Работа с файловой системой на стороне клиента (где находится пользователь) и на стороне сервера (где работает база данных) различается.

Основные правила разработки:

  1. Вызов ДиалогВыбораФайла возможен только на клиенте.
  2. Метод XBase, который отвечает за непосредственную запись данных в DBF, обычно выполняется на сервере.

Если вы разрабатываете решение для веб-клиента или тонкого клиента, необходимо учитывать асинхронность. В современной платформе 1С 8.3.18 рекомендуется использовать асинхронные методы (с использованием ключевого слова Асинх и Ждать), что делает код чистым и предсказуемым.

Пошаговый алгоритм реализации

Чтобы наша задача была решена профессионально, проанализируем процесс по шагам:

  1. Клиентская часть: Вызываем диалог для получения пути сохранения файла от пользователя. Используем ДиалогВыбораФайла в режиме сохранения, чтобы пользователь мог не только выбрать папку, но и задать имя файла при необходимости.
  2. Передача данных: Передаем выбранный путь в серверную процедуру, которая будет выполнять основной цикл обхода табличной части и формирование XBase.
  3. Серверная часть: Формируем файл во временном хранилище. Это позволит избежать проблем с правами доступа к локальным дискам сервера.
  4. Завершение: Сохраняем сформированный файл из временного хранилища на компьютер пользователя с помощью метода НачатьПолучениеФайла (или ПолучитьФайлы для синхронных вызовов в толстом клиенте).

Рекомендации по кодированию

При формировании DBF-файла не забывайте про кодировку. Часто для совместимости со сторонним программным обеспечением требуется кодировка КодировкаXBase.ANSI или КодировкаXBase.OEM. Всегда указывайте это свойство объекта XBase перед созданием файла:


БД = Новый XBase;
БД.Кодировка = КодировкаXBase.ANSI;
// Добавление полей
БД.Поля.Добавить("Nomenkl", "S", 30);
// ... дальнейшая настройка

Использование функции ОбъединитьПути(Каталог, ИмяФайла) является предпочтительным способом склейки строк с путями, так как платформа автоматически расставляет необходимые разделители в зависимости от операционной системы.

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

← На главную