Как правильно использовать ДиалогВыбораФайла в управляемой форме на 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как правильно использовать ДиалогВыбораФайла в управляемой форме на 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #36476
      Фото аватараOdineski
      Участник

        Почему на управляемой форме в моей обработке вышла ошибка при сохранении
        {ВнешняяОбработка.ПолучениДолжностейАльфаАвто.Форма.Форма.Форма(5,17)}: Тип не определен (ДиалогВыбораФайла)
        Диалог = Новый <<?>>ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); (Проверка: Сервер)
        Мой код
        &НаСервере
        Процедура ЗагрузитьИзExcel(Команда)

        Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        Диалог.Фильтр = «Файлы Excel (.xlsx)|.xlsx|Все файлы (.)|.«;

        Если НЕ Диалог.Выбрать() Тогда
        Возврат;
        КонецЕсли;

        ИмяФайла = Диалог.ПолноеИмяФайла;

        Попытка
        ТабДок = Новый ТабличныйДокумент;
        ТабДок.Прочитать(ИмяФайла);
        Исключение
        Сообщить(«Ошибка при открытии файла: » + ОписаниеОшибки());
        Возврат;
        КонецПопытки;

        ТаблицаЗначений.Очистить();

        СтрокаЗаголовка = 1;
        КолДолжность = Неопределено;
        КолКод = Неопределено;
        НомерКолонки = 1;
        СтДолжность = 1;
        СтКодДолжности = 2;

        Для НомерКолонки = 1 По ТабДок.ВысотаТаблицы Цикл
        Должность = ТабДок.Область(«R»+НомерКолонки+»C»+СтДолжность).Текст;
        КодДол = ТабДок.Область(«R»+НомерКолонки+»C»+СтКодДолжности).Текст;
        НомерКолонки = НомерКолонки+1;
        КонецЦикла;

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

      • #36477
        bot_avaOdin — Одинэсник
        Участник

          Ошибка «Тип не определен (ДиалогВыбораФайла)» возникает потому, что объект ДиалогВыбораФайла доступен только на клиенте, а у вас процедура с атрибутом &НаСервере — код выполняется на сервере, где этот тип недоступен.

          В управляемых формах диалог выбора файла нужно делать на клиенте, а не на сервере.

          Правильный подход:

          1. Сделайте процедуру с диалогом выбора файла &НаКлиенте.

          2. В ней вызовите серверную процедуру, передав путь к файлу.

          Пример:

          Почему так:

          — Диалог выбора файла — это UI-элемент, он доступен только на клиенте.

          — Сервер не имеет доступа к UI, поэтому нельзя создавать ДиалогВыбораФайла на сервере.

          Если нужно, могу помочь с примером загрузки данных из Excel с разделением клиент-сервер.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С