1С 8.3 Диалог выбора файла - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Диалог выбора файла

Данные > Примеры кода 1С > 1С 8.3 Диалоги
В группах и на форумах встречаются советы с кодом из типовой - устаревшего стандартного диалога выбора файла (пример №2). Как же всё-таки корректно выполнить программную обработку выбора пользователя пути к файлу для УФ? Делайте правильно - используйте асинхронные методы (пример №1).
Пример №1.1 (рекомендуется): Асинхронный диалог выбора файла на клиенте в 1С 8.3:
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

  // Свойство КнопкаВыбора элемента формы установим в значение Да
  // и будем обрабатывать событие НачалоВыбора этого элемента
  СтандартнаяОбработка = Ложь;// Отказываемся от стандартной обработки процедуры

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

  // Создаем объект ОписаниеОповещения, который будет передан в метод Показать
  ОповещениеЗавершения = Новый ОписаниеОповещения("ПриВыбореФайла", ЭтотОбъект);
  // Также можно задать и третий параметр - Диалог. Тогда в процедуре ПриВыбореФайла из параметра ДополнительныеПараметры
  // можно получить каталог (в котором хранится выбранный файл), и фильтр (которому соответствует файл)
  // Пример: ОповещениеЗавершения = Новый ОписаниеОповещения("ПриВыбореФайла", ЭтотОбъект, Диалог);

  Диалог.Показать(ОповещениеЗавершения); // Открываем окно выбора файла

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

// Эта процедура будет вызвана после закрытия окна выбора файла:
&НаКлиенте
Процедура ПриВыбореФайла(ВыбФайлы, ДополнительныеПараметры) Экспорт

  Если ВыбФайлы <> Неопределено Тогда
      ПутьКФайлу = ВыбФайлы[0];
  КонецЕсли;

КонецПроцедуры
Пример №1.2 (рекомендуется): Асинхронный диалог выбора каталога на клиенте в 1С 8.3:
&НаКлиенте
Процедура ПапкаЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   // Свойство КнопкаВыбора элемента формы установим в значение Да
   // и будем обрабатывать событие НачалоВыбора этого элемента
   СтандартнаяОбработка = Ложь;// Отказываемся от стандартной обработки процедуры

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

   // Создаем объект ОписаниеОповещения, который будет передан в метод Показать
   ОповещениеЗавершения = Новый ОписаниеОповещения("ПриВыбореКаталога", ЭтотОбъект);

   Диалог.Показать(ОповещениеЗавершения); // Открываем окно выбора каталога
КонецПроцедуры

// Процедура будет вызвана после закрытия окна выбора каталога:
&НаКлиенте
Процедура ПриВыбореКаталога(ВыбКаталог, ДополнительныеПараметры) Экспорт
   Если ВыбКаталог <> Неопределено Тогда
       ПапкаЗагрузки = ВыбКаталог[0];
   КонецЕсли;
КонецПроцедуры
Пример №2: Диалог выбора файла на клиенте в 1С 8.3:
&НаКлиенте
Функция ПриВыбореФайла()

  Режим = РежимДиалогаВыбораФайла.Открытие;//(ВыборКаталога, Открытие, Сохранение)

  ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
  ДиалогОткрытияФайла.ПолноеИмяФайла = "";

  Текст = "ru = ""Текст""; en = ""Text""";
  //Текст = "ru = ""Таблица""; en = ""Excel""";
  //Текст = "ru = ""Документ PDF""; en = ""Adobe Acrobat PDF""";

  Фильтр = НСтр(Текст)+"(*.txt)|*.txt"; // Строка с файловыми фильтрами
  //Фильтр = НСтр(Текст)+"(*.xlsx)|*.xlsx| (*.xls)|*.xls (*.xlsb)|*.xlsb|";
  //Фильтр = НСтр(Текст)+"(*.pdf)|*.pdf";

  ДиалогОткрытияФайла.Фильтр = Фильтр;
  ДиалогОткрытияФайла.МножественныйВыбор = Истина;// Ложь - Если нужен один фай
  ДиалогОткрытияФайла.Заголовок = "Выберите файлы";// "Выберите файл"

  Если ДиалогОткрытияФайла.Выбрать() Тогда
      Текст = "ru = ""; Размер = ""; en = ""; Size = """;

      // МножественныйВыбор = Истина:
      МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
      Для Каждого ИмяФайла Из МассивФайлов Цикл
          ВыбФайл = Новый Файл(ИмяФайла);
          Сообщить(ИмяФайла+НСтр(Текст)+ВыбФайл.Размер());
      КонецЦикла;
      // МножественныйВыбор = Ложь:
      // ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
      // Сообщить(ПутьКФайлу+ДиалогОткрытияФайла.Размер());
  Иначе
      Текст = "ru = ""Файл(ы) не выбран!""; en = ""File(s) not selected!""";
      Предупреждение(НСтр(Текст));
  КонецЕсли;

КонецФункции
Пример №3: Диалог выбора файла в 1С 8.3:
// Процедура - Имя каталога начало выбора
// Обработка события НачалоВыбора поля ввода для выбора каталога
// В процедуре определяется имя реквизита по Элементу куда нужно записать полученный каталог
// Имя ПоляВвода должно совпадать с именем реквизита формы
 &НаКлиенте
Процедура ИмяКаталогаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

   ИмяПоля = Элемент.Имя;

   ДиалогВыборКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);

   //Если пользователь не нажал кнопку ОТМЕНА в диалоге
   Если ДиалогВыборКаталога.Выбрать() Тогда
       ЭтаФорма[ИмяПоля] = ДиалогВыборКаталога.Каталог;
   КонецЕсли;

КонецПроцедуры
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 05.09.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому