ДиалогВыбораФайла.ПолноеИмяФайла

Свойства · FullFileName

Тип: Строка. Содержит начальное полное имя файла. После выбора файла содержит имя выбранного файла (кроме режима множественного выбора файлов или выбора каталога).

Полное описание, параметры и ограничения

ДиалогВыбораФайла.ПолноеИмяФайла (FileDialog.FullFileName)

ДиалогВыбораФайла (FileDialog)

ПолноеИмяФайла (FullFileName)

Доступен, начиная с версии 8.0.

Использование:
Чтение и запись.
Описание:
Тип: Строка.
Содержит начальное полное имя файла. После выбора файла содержит имя выбранного файла (кроме режима множественного выбора файлов или выбора каталога).
Доступность:

Тонкий клиент, веб-клиент, толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Выбрать имя отчёта и отделить диалог от записи файла

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

Где и как запускать

Полный модуль своей управляемой формы внешней обработки. Настольный тонкий клиент Windows 8.5.1.1343; файловая система именно клиента. Запуск и отображение в 1С не проверены.

Подготовка

  1. Работайте в отдельной учебной базе 8.5.1.1343. Создайте внешнюю обработку УчебныйВыборФайла85 с новой управляемой формой; рабочие документы, настройки и формы не нужны.

  2. Сами создайте на компьютере клиента собственный каталог C:\1CLab\FileDialog85. Не используйте существующий чужой каталог, сетевой диск, символическую ссылку или папку с рабочими файлами.

  3. В этом каталоге самостоятельно создайте book.txt с единственной строкой Книга: 3 и pen.txt со строкой Ручка: 1. Сохраните как UTF-8. Это собственные маленькие учебные тексты, не выгрузка клиентских данных.

  4. Для каждого урока используйте отдельную копию формы. Вставьте полный код на уровне модуля. Создайте указанную команду, назначьте её Действие точно указанной процедуре и перетащите команду на форму как кнопку.

  5. Примеры не выполнялись. При будущем ручном запуске первый и второй уроки могут только прочитать два подготовленных текста; третий только проверяет каталог, четвёртый только выбирает имя. Код не записывает и не удаляет файлы, не вызывает сервер, сеть или печать.

  6. Windows-клиент указан намеренно: правила масок, доступность методов и поведение свойств различаются на веб-клиенте, Linux, macOS и мобильных платформах. Этот модуль не переносится туда без проверки.

  7. Команда формы: ВыбратьИмяУчебногоОтчета → ВыбратьИмяУчебногоОтчета. Другие обработчики вручную не создавайте.

&НаКлиенте
Асинх Процедура ВыбратьИмяУчебногоОтчета(Команда)
    Каталог = Новый Файл("C:\1CLab\FileDialog85");
    Если Не Каталог.Существует() Тогда
        Сообщить("Сначала создайте свой учебный каталог и два текста по инструкции");
        Возврат;
    КонецЕсли;
    Если Не Каталог.ЭтоКаталог() Тогда
        Сообщить("Учебный путь должен быть собственным каталогом");
        Возврат;
    КонецЕсли;
    ИмяОтчета = "C:\1CLab\FileDialog85\report-preview.txt";
    ФайлОтчета = Новый Файл(ИмяОтчета);
    Если ФайлОтчета.Существует() Тогда
        Сообщить("Этот путь уже существует; урок не предлагает перезапись и не удаляет его");
        Возврат;
    КонецЕсли;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Заголовок = "Только выбрать имя: учебный код ничего не записывает";
    Диалог.Каталог = "C:\1CLab\FileDialog85";
    Диалог.ПолноеИмяФайла = ИмяОтчета;
    Диалог.Фильтр = "Текстовый отчёт (*.txt)|*.txt";
    Диалог.Расширение = "txt";
    Диалог.ПроверятьСуществованиеФайла = Ложь;
    Имена = Ждать Диалог.ВыбратьАсинх();
    Если Имена = Неопределено Тогда
        Сообщить("Выбор имени отменён; записи не было");
        Возврат;
    КонецЕсли;
    Если Имена.Количество() <> 1 Тогда
        Сообщить("Ожидалось одно имя назначения");
        Возврат;
    КонецЕсли;
    Если Диалог.ПолноеИмяФайла <> ИмяОтчета Или Имена[0] <> ИмяОтчета Тогда
        Сообщить("Выбрано другое имя; этот урок его не использует");
        Возврат;
    КонецЕсли;
    Сообщить(Диалог.Режим = РежимДиалогаВыбораФайла.Сохранение);
    Сообщить(Диалог.Расширение = "txt");
    Сообщить("Имя назначения согласовано; записи файла в коде нет");
    Сообщить(Не ФайлОтчета.Существует());
КонецПроцедуры

Разбор по шагам

  1. Сначала проверяем точное собственное имя report-preview.txt. Если оно уже существует, диалог вообще не показываем и не предлагаем удалить файл.

  2. Режим Сохранение задаётся конструктором, readonly-свойство не присваивается. Расширение txt — расширение по умолчанию, не команда записи и не смена типа содержимого.

  3. Ждать возвращает результат выбора. Отмена проверяется до обращения к массиву; количество — до Имена[0].

  4. Сопоставляем и одиночное ПолноеИмяФайла, и имя результата с точным собственным назначением. Для другого имени дальнейшего использования нет.

  5. Проверка Существует после выбора показывает фактическое состояние. Если файл появился из-за внешнего действия, последняя проверка Ложь: урок не объявляет это своей записью и не удаляет его.

Как проверить результат

  1. При исходно отсутствующем имени и выборе report-preview.txt: Истина режима, Истина расширения, сообщение согласования и Истина отсутствия файла.

  2. Отмена: сообщение отмены. Если путь уже существует: сообщение до показа диалога, существующий файл остаётся.

  3. Проверьте свой каталог вручную: у кода нет вызова записи. Не принимайте успешный выбор имени за созданный отчёт.

Ожидаемый результат

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

На что обратить внимание

  1. Согласование имени не гарантирует право записи, свободное место или отсутствие файла в момент будущей записи.

  2. Для настоящего отчёта нужна отдельная реализация безопасной записи; добавлять её в этот урок не требуется.

  3. МножественныйВыбор в режиме сохранения не применяется. Урок не притворяется сохранением нескольких файлов.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Выбрать и прочитать один собственный текст с обработкой отмены

ПолноеИмяФайла задаёт исходное имя, а после успешного одиночного выбора содержит результат. Фильтр помогает человеку, но допуск к чтению проверяет отдельная процедура собственного урока.

Где и как запускать

Полный модуль своей управляемой формы внешней обработки. Настольный тонкий клиент Windows 8.5.1.1343; файловая система именно клиента. Запуск и отображение в 1С не проверены.

Подготовка

  1. Работайте в отдельной учебной базе 8.5.1.1343. Создайте внешнюю обработку УчебныйВыборФайла85 с новой управляемой формой; рабочие документы, настройки и формы не нужны.

  2. Сами создайте на компьютере клиента собственный каталог C:\1CLab\FileDialog85. Не используйте существующий чужой каталог, сетевой диск, символическую ссылку или папку с рабочими файлами.

  3. В этом каталоге самостоятельно создайте book.txt с единственной строкой Книга: 3 и pen.txt со строкой Ручка: 1. Сохраните как UTF-8. Это собственные маленькие учебные тексты, не выгрузка клиентских данных.

  4. Для каждого урока используйте отдельную копию формы. Вставьте полный код на уровне модуля. Создайте указанную команду, назначьте её Действие точно указанной процедуре и перетащите команду на форму как кнопку.

  5. Примеры не выполнялись. При будущем ручном запуске первый и второй уроки могут только прочитать два подготовленных текста; третий только проверяет каталог, четвёртый только выбирает имя. Код не записывает и не удаляет файлы, не вызывает сервер, сеть или печать.

  6. Windows-клиент указан намеренно: правила масок, доступность методов и поведение свойств различаются на веб-клиенте, Linux, macOS и мобильных платформах. Этот модуль не переносится туда без проверки.

  7. Команда формы: ВыбратьОдинУчебныйТекст → ВыбратьОдинУчебныйТекст. Другие обработчики вручную не создавайте.

  8. Только для этого исторического синхронного варианта разрешите модальные вызовы в своей учебной конфигурации. Для обычного нового кода предпочтительны ВыбратьАсинх или Показать.

&НаКлиенте
Процедура ВыбратьОдинУчебныйТекст(Команда)
    Каталог = Новый Файл("C:\1CLab\FileDialog85");
    Если Не Каталог.Существует() Тогда
        Сообщить("Сначала создайте свой учебный каталог и два текста по инструкции");
        Возврат;
    КонецЕсли;
    Если Не Каталог.ЭтоКаталог() Тогда
        Сообщить("Учебный путь должен быть собственным каталогом");
        Возврат;
    КонецЕсли;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Открыть только собственный учебный текст";
    Диалог.Каталог = "C:\1CLab\FileDialog85";
    Диалог.ПолноеИмяФайла = "C:\1CLab\FileDialog85\book.txt";
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Фильтр = "Учебные тексты (*.txt)|*.txt|Все файлы (*.*)|*.*";
    Диалог.ПредварительныйПросмотр = Ложь;
    Диалог.ПроверятьСуществованиеФайла = Истина;
    Если Не Диалог.Выбрать() Тогда
        Сообщить("Выбор отменён; ничего не читаем");
        Возврат;
    КонецЕсли;
    Если Диалог.ВыбранныеФайлы.Количество() <> 1 Тогда
        Сообщить("Ожидался ровно один выбранный файл");
        Возврат;
    КонецЕсли;
    Сообщить(Диалог.Режим = РежимДиалогаВыбораФайла.Открытие);
    Сообщить("Фактический индекс выбранного фильтра: " + Строка(Диалог.ИндексФильтра));
    ПрочитатьСвойТекст(Диалог.ПолноеИмяФайла);
КонецПроцедуры

&НаКлиенте
Процедура ПрочитатьСвойТекст(ИмяФайла)
    Если ИмяФайла = "C:\1CLab\FileDialog85\book.txt" Тогда
        ОжидаемыйТекст = "Книга: 3";
    ИначеЕсли ИмяФайла = "C:\1CLab\FileDialog85\pen.txt" Тогда
        ОжидаемыйТекст = "Ручка: 1";
    Иначе
        Сообщить("Этот урок не читает файлы вне двух собственных учебных текстов");
        Возврат;
    КонецЕсли;
    ФайлНаДиске = Новый Файл(ИмяФайла);
    Если Не ФайлНаДиске.Существует() Тогда
        Сообщить("Выбранный учебный файл уже отсутствует; восстановите свой образец");
        Возврат;
    КонецЕсли;
    Если ФайлНаДиске.ЭтоКаталог() Тогда
        Сообщить("Ожидался свой текстовый файл, а не каталог");
        Возврат;
    КонецЕсли;
    Текст = Новый ТекстовыйДокумент;
    Попытка
        Текст.Прочитать(ИмяФайла, "UTF-8");
    Исключение
        Сообщить("Не удалось прочитать собственный образец; проверьте его наличие и права клиента");
        Возврат;
    КонецПопытки;
    СтрокаОбразца = СтрЗаменить(СтрЗаменить(Текст.ПолучитьТекст(), Символы.ВК, ""), Символы.ПС, "");
    Сообщить(СтрокаОбразца);
    Сообщить(СтрокаОбразца = ОжидаемыйТекст);
КонецПроцедуры

Разбор по шагам

  1. Сначала проверяется существование именно своего каталога. ЭтоКаталог вызывается только после Существует: по справке он требует реально существующий объект.

  2. Режим передаётся конструктору и затем только читается. Режим — readonly; присваивания Диалог.Режим нет.

  3. Выбрать возвращает Булево. При Ложь процедура выходит до чтения результата и файла. Синхронный метод показан для понимания старых модулей.

  4. ВыбранныеФайлы — readonly-массив выбранных полных имён. При одиночном выборе ожидаем один элемент, после чего используем ПолноеИмяФайла.

  5. ИндексФильтра читается после ручного выбора. Урок не угадывает начальную базу индексов и не использует его как разрешение читать файл.

  6. ПрочитатьСвойТекст принимает только два точных подготовленных имени. Маска *.txt сама по себе не защищает от чужого текста. Существование перепроверяется, а ошибка чтения обработана отдельно.

  7. Образец читается в UTF-8. Удаление переводов строки нужно только для сравнения однострочного образца; это не универсальный парсер документов.

Как проверить результат

  1. book.txt → Истина режима, фактический индекс фильтра, Книга: 3 и Истина сравнения. pen.txt → Ручка: 1 и Истина.

  2. Нажмите Отмена: только сообщение отмены. Выберите другой файл: сообщение запрета до Прочитать.

  3. Измените текст своего book.txt: сравнение честно станет Ложь; это не считается успешным контрольным образцом.

Ожидаемый результат

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

На что обратить внимание

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

  2. ПолноеИмяФайла не является результатом множественного выбора или выбора каталога.

  3. Имя и фильтр не доказывают происхождение или безопасность содержимого. Подготовка исключает чужие файлы и ссылки, но код не объявляется файловой песочницей.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.