1С 8.3 Диалог выбора файла
Данные > Примеры кода 1С > 1С 8.3 Диалоги
Перейти в раздел примеры кода 1С 8.3:

В группах и на форумах встречаются советы с кодом из типовой - устаревшего стандартного диалога выбора файла (пример №2). Как же всё-таки корректно выполнить программную обработку выбора пользователя пути к файлу для УФ? Делайте правильно - используйте асинхронные методы (пример №1).
Пример №1 (рекомендуется): Асинхронный диалог выбора файла на клиенте в 1С 8.3:
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
// Свойство КнопкаВыбора элемента формы установим в значение Да
// и будем обрабатывать событие НачалоВыбора этого элемента
СтандартнаяОбработка = Ложь;// Отказываемся от стандартной обработки процедуры
// Создаем диалог выбора файла и указываем для чего он будет использоваться
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); // или ВыборКаталога или Сохранение
Диалог.Фильтр = "Документ PDF (*.pdf)|*.pdf"; // Строка с файловыми фильтрами
Диалог.Заголовок = "Выберите документ PDF"; // Текст заголовка окна выбора
// Создаем объект ОписаниеОповещения, который будет передан в метод Показать
ОповещениеЗавершения = Новый ОписаниеОповещения("ПриВыбореФайла", ЭтотОбъект);
// Также можно задать и третий параметр - Диалог. Тогда в процедуре ПриВыбореФайла из параметра ДополнительныеПараметры
// можно получить каталог (в котором хранится выбранный файл), и фильтр (которому соответствует файл)
// Пример: ОповещениеЗавершения = Новый ОписаниеОповещения("ПриВыбореФайла", ЭтотОбъект, Диалог);
Диалог.Показать(ОповещениеЗавершения); // Открываем окно выбора файла
КонецПроцедуры
// Эта процедура будет вызвана после закрытия окна выбора файла:
&НаКлиенте
Процедура ПриВыбореФайла(ВыбФайлы, ДополнительныеПараметры) Экспорт
Если ВыбФайлы <> Неопределено Тогда
ПутьКФайлу = ВыбФайлы[0];
КонецЕсли;
КонецПроцедуры
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
// Свойство КнопкаВыбора элемента формы установим в значение Да
// и будем обрабатывать событие НачалоВыбора этого элемента
СтандартнаяОбработка = Ложь;// Отказываемся от стандартной обработки процедуры
// Создаем диалог выбора файла и указываем для чего он будет использоваться
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); // или ВыборКаталога или Сохранение
Диалог.Фильтр = "Документ PDF (*.pdf)|*.pdf"; // Строка с файловыми фильтрами
Диалог.Заголовок = "Выберите документ PDF"; // Текст заголовка окна выбора
// Создаем объект ОписаниеОповещения, который будет передан в метод Показать
ОповещениеЗавершения = Новый ОписаниеОповещения("ПриВыбореФайла", ЭтотОбъект);
// Также можно задать и третий параметр - Диалог. Тогда в процедуре ПриВыбореФайла из параметра ДополнительныеПараметры
// можно получить каталог (в котором хранится выбранный файл), и фильтр (которому соответствует файл)
// Пример: ОповещениеЗавершения = Новый ОписаниеОповещения("ПриВыбореФайла", ЭтотОбъект, Диалог);
Диалог.Показать(ОповещениеЗавершения); // Открываем окно выбора файла
КонецПроцедуры
// Эта процедура будет вызвана после закрытия окна выбора файла:
&НаКлиенте
Процедура ПриВыбореФайла(ВыбФайлы, ДополнительныеПараметры) Экспорт
Если ВыбФайлы <> Неопределено Тогда
ПутьКФайлу = ВыбФайлы[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!""";
Предупреждение(НСтр(Текст));
КонецЕсли;
КонецФункции
Функция ПриВыбореФайла()
Режим = РежимДиалогаВыбораФайла.Открытие;//(ВыборКаталога, Открытие, Сохранение)
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Текст = "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
отзывы
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник