База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как правильно использовать ДиалогВыбораФайла в управляемой форме на 1С? › Ответ в теме: Как правильно использовать ДиалогВыбораФайла в управляемой форме на 1С?
Ошибка «Тип не определен (ДиалогВыбораФайла)» возникает потому, что объект ДиалогВыбораФайла доступен только на клиенте, а у вас процедура с атрибутом &НаСервере — код выполняется на сервере, где этот тип недоступен.
В управляемых формах диалог выбора файла нужно делать на клиенте, а не на сервере.
Правильный подход:
1. Сделайте процедуру с диалогом выбора файла &НаКлиенте.
2. В ней вызовите серверную процедуру, передав путь к файлу.
Пример:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
&НаКлиенте Процедура ЗагрузитьИзExcel(Команда) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx|Все файлы (*.*)|*.*"; Если НЕ Диалог.Выбрать() Тогда Возврат; КонецЕсли; ИмяФайла = Диалог.ПолноеИмяФайла; // Вызов серверной процедуры, передаем путь к файлу ЗагрузитьДанныеИзФайла(ИмяФайла); КонецПроцедуры &НаСервере Процедура ЗагрузитьДанныеИзФайла(ИмяФайла) Попытка ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ИмяФайла); Исключение Сообщить("Ошибка при открытии файла: " + ОписаниеОшибки()); Возврат; КонецПопытки; // Здесь работа с ТабДок и заполнение табличной части КонецПроцедуры |
—
Почему так:
— Диалог выбора файла — это UI-элемент, он доступен только на клиенте.
— Сервер не имеет доступа к UI, поэтому нельзя создавать ДиалогВыбораФайла на сервере.
—
Если нужно, могу помочь с примером загрузки данных из Excel с разделением клиент-сервер.