Файл.Имя

Свойства · Name

Тип: Строка. Содержит имя файла, с которым связан объект.

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

Файл.Имя (File.Name)

Файл (File)

Имя (Name)

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

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

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

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

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

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

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

Прочитать паспорт только своего CF, не устанавливая конфигурацию

Реальный собственный CF сохраняется при подготовке стенда. Перед чтением проверяются имя и размер файла, после конструктора — настоящие три readonly-поля снимка.

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

Полный серверный общий модуль собственной файловой Windows-базы 8.5.1.1343; подготовленный вручную свой пустой CF, только чтение. Здесь в 1С не запускался.

Подготовка

  1. Создайте отдельную пустую файловую Windows-базу на платформе 8.5.1.1343. В свойствах корневой конфигурации задайте Имя=УчебнаяКонфигурацияСинтаксиса, Версия=1.0.0.0, Поставщик=УчебныйСтенд85.

  2. Обновите конфигурацию базы данных. Это подготовка своего нового стенда, не изменение УТ/КА2/УНФ/БП. В рабочей базе эти уроки не выполняйте.

  3. Для положительного опыта в Конфигураторе сохраните только собственную пустую конфигурацию через Конфигурация → Сохранить конфигурацию в файл… под именем УчебныйПаспорт85.cf. Не используйте скачанный, рабочий или чужой CF.

  4. Создайте серверный непривилегированный общий модуль УчебныйПаспорт. Вставьте полный модуль одного урока. Клиентские флаги выключены, Глобальный=Ложь.

  5. Для положительного опыта создайте у своей формы строковый реквизит ПутьКУчебномуCF. В него вручную вставьте фактический абсолютный путь только что сохранённого своего CF, не демонстрационный C:/… и не адрес временного хранилища.

  6. Свою клиентскую команду свяжите с серверной процедурой формы; из неё вызовите УчебныйПаспорт.ВыполнитьПример(ПутьКУчебномуCF). Для отрицательного модуля экспортная процедура без параметра: УчебныйПаспорт.ВыполнитьПример().

  7. Используется отдельная файловая база Windows, поэтому путь доступен локальному серверному коду на этой машине. В клиент-серверной базе путь на клиентском ПК не является автоматически серверным: этот урок не загружает файл на сервер и не обходит права доступа.

  8. Файл только читается. Размер ограничен 20 МиБ, имя фиксировано УчебныйПаспорт85.cf, а полученные Имя/Версия/Поставщик проверяются до вывода. Не разбирайте недоверенные файлы: лимит внешнего размера не гарантирует защиту от всех повреждённых форматов.

  9. ОписаниеКонфигурации не устанавливает и не загружает конфигурацию в информационную базу. Конструктор работает с ДвоичныеДанные своего CF; текст XML-выгрузки или обычный TXT не подменяют этот формат.

  10. Три поля описания readonly. Не присваивайте им новую версию/поставщика и не выдавайте изменение локальной переменной за обновление конфигурации.

  11. Конструктор также поддерживает CFE, но данный положительный опыт проверяет именно подготовленный собственный CF. Описания обновления и загрузка расширения этим уроком не выполняются.

  12. В отрицательном опыте берутся только встроенные собственные UTF-16 TXT-байты. Файлов нет; возможная ошибка формата обрабатывается, а отсутствие ошибки фиксируется как неожиданное поведение, не как пригодный CF.

  13. Здесь в 1С конструктор не запускался, CF не сохранялся и базы не обновлялись. Проверены исходник и точный контракт установленной справки; runtime-успех проверяйте вручную только на своём стенде.

Процедура ВыполнитьПример(ПутьКУчебномуCF) Экспорт
    ПроверитьУчебнуюПлатформу();
    Если ТипЗнч(ПутьКУчебномуCF) <> Тип("Строка") Тогда
        ВызватьИсключение "Нужен фактический путь к собственному сохранённому CF";
    КонецЕсли;
    Если ПустаяСтрока(ПутьКУчебномуCF) Тогда
        ВызватьИсключение "Сначала сохраните свой учебный CF и укажите его путь";
    КонецЕсли;
    ФайлСнимка = Новый Файл(ПутьКУчебномуCF);
    Если ФайлСнимка.Имя <> "УчебныйПаспорт85.cf" Тогда
        ВызватьИсключение "Разрешён только свой заранее подготовленный УчебныйПаспорт85.cf";
    КонецЕсли;
    Если НЕ ФайлСнимка.Существует() Или НЕ ФайлСнимка.ЭтоФайл() Тогда
        ВызватьИсключение "Собственный CF недоступен в этом серверном файловом контексте";
    КонецЕсли;
    Если ФайлСнимка.Размер() <= 0 Или ФайлСнимка.Размер() > 20 * 1024 * 1024 Тогда
        ВызватьИсключение "Нужен непустой CF собственной пустой конфигурации не больше 20 МиБ";
    КонецЕсли;
    ДанныеCF = Новый ДвоичныеДанные(ПутьКУчебномуCF);
    Паспорт = Новый ОписаниеКонфигурации(ДанныеCF);
    Если Паспорт.Имя <> "УчебнаяКонфигурацияСинтаксиса"
        Или Паспорт.Версия <> "1.0.0.0"
        Или Паспорт.Поставщик <> "УчебныйСтенд85" Тогда
        ВызватьИсключение "Снимок не соответствует собственному учебному паспорту; данные не выводятся";
    КонецЕсли;
    Сообщить("Имя снимка: " + Паспорт.Имя);
    Сообщить("Версия снимка: " + Паспорт.Версия);
    Сообщить("Поставщик снимка: " + Паспорт.Поставщик);
    Сообщить("Это только чтение собственного CF. Ничего не установлено и конфигурация базы не обновлялась.");
КонецПроцедуры
Процедура ПроверитьУчебнуюПлатформу()
    Система = Новый СистемнаяИнформация;
    Если Система.ТипПлатформы <> ТипПлатформы.Windows_x86
        И Система.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
        ВызватьИсключение "Этот пример использует Windows CryptoAPI";
    КонецЕсли;
КонецПроцедуры

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

  1. Подготовить свою пустую конфигурацию с точными Имя/Версия/Поставщик и сохранить фактический CF.

  2. Передать его настоящий путь серверной процедуре формы; путь и байты — разные значения.

  3. Ограничить имя, проверить существование, что это файл, и непустой размер не больше 20 МиБ.

  4. Получить ДвоичныеДанные своего файла и передать их конструктору ОписаниеКонфигурации.

  5. Сравнить три поля с подготовленным учебным снимком до их вывода. Не делать readonly-присваиваний.

  6. Вывести только подтверждённый собственный паспорт. Загрузка, установка и обновление базы не вызываются.

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

  1. Виден УчебнаяКонфигурацияСинтаксиса, 1.0.0.0, УчебныйСтенд85.

  2. Пустой путь, другое имя/версия/поставщик, каталог, отсутствие файла или превышение размера останавливают опыт.

  3. Сохранённый CF не удаляется и не меняется; сведения рабочей конфигурации не выдаются за содержимое этого файла.

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

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

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

  1. Имя файла УчебныйПаспорт85.cf не доказывает его содержимое. После чтения дополнительно сверяются три поля настоящего описания.

  2. Реквизит формы — путь на стороне исполнения. Он не является ДвоичныеДанные и не переносит файл с клиентского компьютера на произвольный сервер.

  3. CF — двоичный формат конфигурации; файл Configuration.xml из XML-выгрузки не равен сохранённому CF.

  4. Readonly Версия/Имя/Поставщик описывают снимок файла, а не состояние рабочей базы. Чтение описания не выполняет обновление.

  5. Отрицательный опыт не обещает текст конкретного сообщения об ошибке на всех машинах. При неожиданном принятии TXT результат не объявляется корректным учебным CF.

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

Спланировать собственный отчёт в стандартном каталоге документов

Получаем каталог документов, настроенный в текущей системе, а не строим C:\Users по имени пользователя. Проверяем будущий собственный путь и сумму отчёта без записи.

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

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

Подготовка

  1. В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебныйПланФайла с пустой управляемой основной формой. Для этого урока используйте тонкий клиент Windows.

  2. В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте весь код на уровне модуля формы, включая Перем Занято и асинхронный обработчик команды.

  3. Не создавайте кнопку вручную: она добавляется серверным обработчиком. Каждый урок запускайте в отдельной копии формы, сохранённой в своей EPF.

  4. Кнопка получает настоящий каталог клиентского компьютера и составляет план собственного текстового отчёта о трёх книгах по 250. Она не записывает, не открывает и не удаляет этот файл.

  5. Объект Файл описывает путь, но его создание в коде не создаёт файл на диске. Проверки существования и типа каталога используют асинхронные методы с Ждать.

  6. РабочийКаталогДанныхПользователяАсинх может сам создать отсутствующий пользовательский каталог этой базы. Для соответствующего урока сначала показывается вопрос с Нет по умолчанию.

  7. Веб-клиенту для этих методов нужно предварительно подключённое расширение работы с файлами; данный урок не устанавливает его и не обещает работу в браузере без расширения.

  8. Запуск в 1С не проверен. Пути зависят от текущего клиента и пользователя; не копируйте чужой абсолютный путь и не публикуйте личные пути из сообщений.

Перем Занято;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Составить собственный план файла без записи";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Асинх Процедура УчебноеДействие(Команда)
    Если Занято = Истина Тогда
        Возврат;
    КонецЕсли;
    Занято = Истина;
    Элементы.КнопкаУчебноеДействие.Доступность = Ложь;
    Попытка
        ИмяКаталога = Ждать КаталогДокументовАсинх();
        Если ТипЗнч(ИмяКаталога) <> Тип("Строка") Тогда
            ВызватьИсключение "Каталог должен быть строкой, а не объектом Обещание";
        КонецЕсли;
        Если ПустаяСтрока(ИмяКаталога) Тогда
            ВызватьИсключение "Клиент не вернул каталог для учебного плана";
        КонецЕсли;
        Каталог = Новый Файл(ИмяКаталога);
        СуществуетКаталог = Ждать Каталог.СуществуетАсинх();
        Если Не СуществуетКаталог Тогда
            ВызватьИсключение "Полученный каталог отсутствует: вручную создавать его этот урок не будет";
        КонецЕсли;
        ЭтоКаталог = Ждать Каталог.ЭтоКаталогАсинх();
        Если Не ЭтоКаталог Тогда
            ВызватьИсключение "Полученный путь не соответствует каталогу";
        КонецЕсли;
        Разделитель = ПолучитьРазделительПутиКлиента();
        Если Разделитель <> "\" И Разделитель <> "/" Тогда
            ВызватьИсключение "Неожиданный разделитель клиентского пути";
        КонецЕсли;
        Если Прав(ИмяКаталога, 1) <> Разделитель Тогда
            ИмяКаталога = ИмяКаталога + Разделитель;
        КонецЕсли;
        СобственноеИмя = "guide-owned-" + Строка(Новый УникальныйИдентификатор) + ".txt";
        ПолноеИмя = ИмяКаталога + СобственноеИмя;
        ПланФайла = Новый Файл(ПолноеИмя);
        ИмяЗанято = Ждать ПланФайла.СуществуетАсинх();
        Если ИмяЗанято Тогда
            ВызватьИсключение "Имя уже занято: не открываем и не перезаписываем чужой файл";
        КонецЕсли;
        Количество = 3;
        Цена = 250;
        Сумма = Количество * Цена;
        ТекстОтчета = СтрШаблон("Учебные книги: %1 шт. по %2; сумма %3", Количество, Цена, Сумма);
        Сообщить(Сумма = 750);
        Сообщить(ПланФайла.Имя = СобственноеИмя);
        Сообщить(ПланФайла.Расширение = ".txt");
        Сообщить("Планируемый собственный путь, файл не создан: " + ПланФайла.ПолноеИмя);
        Сообщить(ТекстОтчета);
        Сообщить("Проверка свободного имени не резервирует его. Перед будущей записью требуется безопасное создание нового файла");
    Исключение
        Занято = Ложь;
        Элементы.КнопкаУчебноеДействие.Доступность = Истина;
        ВызватьИсключение;
    КонецПопытки;
    Занято = Ложь;
    Элементы.КнопкаУчебноеДействие.Доступность = Истина;
КонецПроцедуры

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

  1. Запускаем асинхронную команду собственного учебного модуля. Кнопка блокируется только на время получения и проверки путей.

  2. Функция возвращает стандартный каталог документов клиента. Он может быть перенаправлен системой и не обязан называться Documents.

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

  4. К возвращённому каталогу добавляем собственное UUID-имя с расширением txt, учитывая присутствующий конечный разделитель.

  5. При занятости имени прекращаем проход. Иначе считаем собственные 750 и показываем содержимое будущего отчёта, не создавая его.

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

  1. Ожидаются три Истина, сумма 750 и планируемый собственный путь внутри стандартного каталога документов клиента.

  2. Сравните начало пути со стандартным каталогом документов вашей Windows. Никакой гарантии C:\Users или фиксированной папки на всех машинах нет.

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

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

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

  1. Каталог может быть перенаправлен на сеть или синхронизируемое хранилище. Получение пути не доказывает доступность записи.

  2. Наличие каталога не означает достаточные права для создания файла. Этот урок их не проверяет записью.

  3. Расширение работы с файлами в веб-клиенте — отдельное требование, а не автоматически установленная часть примера.

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

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

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

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

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