1с как узнать размер файла
Как восстановить любое значение из файла в 1с 8.3, 8.2
Как записать текстовый файл в 1с 8.3, 8.2
Как прочитать текстовый файл в 1с 8.3, 8.2
Как проверить существование файла в 1С 8.3, 8.2
Как скопировать файл в 1с 8.3, 8.2
Как переместить файл в 1с 8.3, 8.2
Как найти файлы в каталоге в 1с 8.3, 8.2
Как удалить файл в 1с 8.3, 8.2
Как удалить файлы в каталоге по маске в 1с 8.3, 8.2
Как получить имя временного файла в 1с 8.3, 8.2
Как прочитать атрибуты файла в 1с 8.3, 8.2
Как установить атрибуты файла в 1с 8.3, 8.2
Как узнать размер файла в 1с 8.3, 8.2
Как узнать по пути, файл это или каталог в 1с 8.3, 8.2
Как вытащить расширение файла из его пути в 1с 8.3, 8.2
Как вытащить имя файла без расширения в 1с 8.3, 8.2
Как создать каталог в 1с 8.3, 8.2
Как проверить существование каталога в 1с 8.3, 8.2
Как удалить каталог вместе с содержимым в 1с 8.3, 8.2
Как сохранить произвольное значение во временное хранилище в 1с 8.3, 8.2
Как прочитать произвольное значение из временного хранилища в 1с 8.3, 8.2
Как перезаписать уже сохраненное значение во временном хранилище в 1с 8.3, 8.2
Как сохранить значение во временное хранилище на всё время жизни формы в 1с 8.3, 8.2
Как сохранить значение во временное хранилище на всё время сеанса пользователя в 1с 8.3, 8.2
Как удалить значение из временного хранилища в 1с 8.3, 8.2
Как узнать является ли строка адресом во временном хранилище в 1с 8.3, 8.2
Как передать файл с клиента на сервер в 1с 8.3, 8.2
Процедура ВыполнитьПослеПомещенияФайла ( Результат , Адрес , ВыбранноеИмяФайла , ДополнительныеПараметры ) Экспорт
Как прочитать файл на сервере из временного хранилища в 1с 8.3, 8.2
Как передать файл с сервера на клиент в 1с 8.3, 8.2
Поиск по сайту
Okolokompa в Яндекс Дзен
Теперь я переношу эту обработку на серверную рабочую базу, но получается ВыбФайл.Существует() везде Ложь. Я нашла обработку где идет замещение имя файла при обращении с сервера.
Путь = СтрЗаменить(ВыборкаДетальныеЗаписи.Путь, "К:","\\srv-sql\");
Но так все равно не получается..
(1) AlenkaInt, вы файловую базу скопировали в каталог на терминале и оттуда проверку делаете?
Тогда у вас должны быть права на доступ к папке.
Путь физический и через отладку совпадает?
(2) Xershi, нет. Есть рабочая база на сервере и в хранилище, файловая где мы ведем разработку. И у нас есть много баз на поддержке. Надо узнать размер файловых баз и записать эти данные в рабочую, серверную. Когда я сделала обработку в хранилище. то все данные получила. А когда запускаю в рабочей, серверной, то ВыбФайл.Существует() везде Ложь.
(5) AlenkaInt, что значит рабочая база на сервере? У вас клиент-серверная база на терминале или отдельный сервак под 1С клиент-серверную и к нему идет терминал с клиентами 1С?
(6) AlenkaInt, версия платформы везде совпадает? Права еще раз есть на ФС и работу по сети?
Суть всех ваших махинаций в том, что размер файловых баз таким методом вы только вычислите, при наличии прав. Для клиент-серверных нужно другой алгоритм писать.
(7) Xershi, да рабочая на сервере. По поводу терминала даже не знаю, буду уточнять.. Мне нужно только файловые получить. Почему загрузились только часть баз? Причем лежат они в одной папке..
Согласен с предыдущим оратором. У пользователя под которым служба 1С запущена нет прав гулять по сети.
(9) AlenkaInt, берешь отладчик и смотришь.
Ты так и не ответила, что у тебя с правами!
Код выкладывай полный.
А вообще читайте справку по работе с файлами:
Права у меня все есть сказали. Как у администратора.
Сначало я получаю базы и пути к ним. Это в выборке.
(12) Xershi, это не ерунда, с этим все ок было.
Короче все я решила. Не так заменяла путь к файлу на сервере. Теперь все нормально грузится и без подключения. Тогда загадка почему при подключении все таки размер 10 баз получилось загрузить..
Файл (File)
По имени файла
Синтаксис:
Новый Файл()
Параметры:
Тип: Строка.
Полное имя файла или каталога, с которым будет связан конструируемый объект.
Описание:
Создает новый файловый объект, связанный с указанным файлом.
Пример:
ВыбФайл = Новый Файл(ВыбранноеИмяФайла);
Проблемка. Пытаюсь выгрузить размер файлов изображений,которые регистрируются для обмена. Файл.Размер() нормально и верно определяет размер - смотрю в отладчике,но затем выгружает в ТЧ в нужную строку - 99.
Объект языка 1С «Файл» позволяет:
- файл 1С — получить путь к файлу (каталог без имени файла), имя без расширения, только расширение
- файл 1С — проверить наличие файла
- файл 1С — определить файл это или каталог
- файл 1С — получить размер файла
- файл 1С — работать с атрибутами файла (время измененеия, только чтение, скрытые файлы).
Пример файл 1С — проверка наличия каталога на диске:
Функция ПолучитьКаталогПоИмениФайла(ИмяФайла)
//обращаемся к файлу, на этот момент существование файла не проверяется
Файл = Новый Файл(ИмяФайла);
//напрямую проверяем существование
Если не Файл.Существует() Тогда
Сообщить("Ошибка. Файл с именем '" + ИмяФайла + "' не существует");
Возврат ИмяФайла;
КонецЕсли;
//проверка на каталог
Если Файл.ЭтоКаталог() Тогда
//если последняя буква не "\", то добавляем ее
Возврат ?(Прав(СокрП(ИмяФайла), 1) = "\", ИмяФайла, СокрП(ИмяФайла) + "\");
КонецЕсли;
//возвращаем путь (т.е. только каталог из имени файла)
Возврат Файл.Путь;
Пример файл 1С — проверка существования файла на диске:
Функция ФайлМожноЗаписывать(ИмяФайла)
//обращаемся к файлу, на этот момент существование файла не проверяется
Файл = Новый Файл(ИмяФайла);
//напрямую проверяем существование
Если не Файл.Существует() Тогда
Сообщить("Ошибка. Файл с именем '" + ИмяФайла + "' не существует");
Возврат ИмяФайла;
КонецЕсли;
//вернет ИСТИНА, если нельзя записывать (т.е. только чтение "установлен")
Если Файл.ПолучитьТолькоЧтение() Тогда
Попытка
Файл.УстановитьТолькоЧтение(Ложь);
Исключение
//здесь мы окажемся, если у пользователя, под которым работает клиент 1С нет прав снять этот реквизит
Возврат Ложь;
КонецПопытки;
КонецЕсли;
Пример файл 1С — получение размера файла в байтах, килобайтах, мегабайтах:
« Как стать программистом 1С » Язык 1С » ПодключитьРасширениеРаботыСФайлами 1С, УстановитьРасширениеРаботыСФайлами 1С, ПолучитьФайл 1С, ПоместитьФайл 1С, ПолучитьФайлы 1С, ПоместитьФайлы 1С, ПолучитьИзВременногоХранилища 1С, ПоместитьВоВременноеХранилище 1С
ПодключитьРасширениеРаботыСФайлами 1С, УстановитьРасширениеРаботыСФайлами 1С, ПолучитьФайл 1С, ПоместитьФайл 1С, ПолучитьФайлы 1С, ПоместитьФайлы 1С, ПолучитьИзВременногоХранилища 1С, ПоместитьВоВременноеХранилище 1С
В веб-клиенте работа с файлами (чтение/запись) производится только на сервере.
Функция ПодключитьРасширениеРаботыСФайлами() используется в веб-клиенте для включения разрешения работы с файлами (поддерживают не все браузеры), если неудачно – возвращает Ложь. Перед первым использованием функции в этом браузере на этом комьютере требуется установить расширение работы с файлами с помощью функции УстановитьРасширениеРаботыСФайлами()
Функции
• ПоместитьФайл(АдресКудаПомещен, ИмяФайла)
• ПолучитьФайл(АдресОткуда)
• ПоместитьФайлы(МассивИменФайлов, МассивАдресовКудаПомещены)
• ПолучитьФайлы(МассивАдресовОткуда)
позволяют передвать файлы между клиентом и сервером.
Функции ПолучитьИзВременногоХранилища() и ПоместитьВоВременноеХранилище() позволяют получить данные файла из временного хранилища сервера, куда они были помещены с помощью ПолучитьФайл() и ПоместитьФайл().
На клиенте файлы располагаются где требуется в файловой системе. На сервере файлы помещаются в «хранилище» — временный каталог файлов сервера 1С. Напрямую с хранилищем работать нельзя – требуется получить значение из хранилища с помощью функции ПолучитьИзВременногоХранилища() и сохранить во временный файл на сервере с помощью функции ПолучитьИмяВременногоФайла()
Данные функции можно использовать не только в веб-клиенте, но и в остальных клиентах для оптимизации работы с файлами.
При использовании данных функций в веб-клиенте необходимо заранее выполнить функцию ПодключитьРасширениеРаботыСФайлами()
Обратите внимание на различные варианты поведения системы при выполнения данных функций. В некоторых браузерах выполнение кода программы прерывается до закачки файлов на сервер (например, пользователю выводится окно с процентами закачки файла), а в некоторых – выполнение программы продолжается, а загрузка производится фоново.
Для примеров использован текстовый файл на локальной «клиентской» машине по адресу «D:\Текстовый файл.txt» со следующим содержимым:
Привет, мир!
Конец файла
Пример 1. Чтение текстового файла на сервере. Имя файла выбирает пользователь/указывает программист
//перемещаем файл на сервер во "внутреннее хранилище сервера"
ВнутреннийАдресСервера = "";
//если имя файла выбирает пользователь в стандартном диалоговом окне Windows
Результат = ПоместитьФайл(ВнутреннийАдресСервера);
//если имя файла указывает программист напрямую
//Результат = ПоместитьФайл(ВнутреннийАдресСервера, "D:\Текстовый файл.txt",, Ложь);
Если не Результат Тогда
ВызватьИсключение "Ошибка. Не удалось передать файл на сервер. Операция прервана.";
КонецЕсли;
Сообщить(ВнутреннийАдресСервера);
//переводим выполнение на сервер вызовом серверной процедуры
ЧтениеФайла(ВнутреннийАдресСервера);
КонецПроцедуры
//начинаем работать с файлом
//узнаем размер файла в байтах (и переведем размер в мегабайты)
Файл = Новый Файл(ИмяВременногоФайла);
Сообщить(Строка(Окр(Файл.Размер() /1024 /1024, 2)) + "Мб");
//прочитаем первую строку файла
ТекстовыйФайл = Новый ЧтениеТекста(ИмяВременногоФайла);
ТекстПервойСтрокиФайла = ТекстовыйФайл.ПрочитатьСтроку();
Сообщить(ТекстПервойСтрокиФайла);
Пример 2. Передача на сервер нескольких файлов. Имена файлов выбирает пользователь/указывает программист
&НаКлиенте
Процедура КнопкаЧтениеФайла(Команда)
//перемещаем файл на сервер во "внутреннее хранилище сервера"
МассивВнутреннихАдресовСервера = Новый Массив;
//если список имен файлов выбирает пользователь
Результат = ПоместитьФайлы(,МассивВнутреннихАдресовСервера);
//если список имен файлов указывает программист напрямую
//МассивВнутреннихАдресовСервера = Новый Массив;
//МассивИменФайлов = Новый Массив;
//МассивИменФайлов.Добавить(Новый ОписаниеПередаваемогоФайла("D:\Текстовый файл.txt", ""));
//Результат = ПоместитьФайлы(МассивИменФайлов, МассивВнутреннихАдресовСервера,, Ложь);
Если не Результат или МассивВнутреннихАдресовСервера.Количество() = 0 Тогда
ВызватьИсключение "Ошибка. Не удалось передать файл на сервер. Операция прервана.";
КонецЕсли;
Для каждого ИмяФайла из МассивВнутреннихАдресовСервера Цикл
Сообщить(ИмяФайла.Хранение);
//переводим выполнение на сервер вызовом серверной процедуры
//реализацию этой функции см. в примере 1
ЧтениеФайла(ИмяФайла.Хранение);
КонецЦикла;
Пример 3. Запись нового файла на сервере с последующей передачей на клиент. Имя файла выбирает пользователь/формирует программист
&НаКлиенте
Процедура КнопкаЧтениеФайла(Команда)
//вызов серверной процедуры формирования файла, она возвращает "внутренний адрес", передаем его параметром
//куда сохранил пользователь файл и сохранил ли - мы не знаем
//пользователь всегда подтверждает разрешение на получение файла
ПолучитьФайл(ФормированиеФайла());
//вариант с сохранением файла без подтверждения пользователя, имя файла указываем сразу, в веб-клиенте работать не будет
//ПолучитьФайл(ФормированиеФайла(), "D:\Текстовый файл.txt", Ложь);
&НаСервере
Функция ФормированиеФайла()
//получаем файл из "временного хранилища сервера" и сохраняем во временный файл на сервере
ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
//начинаем работать с файлом
//записываем текст в файл
ТекстовыйФайл = Новый ЗаписьТекста(ИмяВременногоФайла);
ТекстовыйФайл.ЗаписатьСтроку("Привет, мир!");
ТекстовыйФайл.ЗаписатьСтроку("Конец файла");
ТекстовыйФайл.Закрыть();
//помещаем во "временное хранилище сервера", система вернет "внутренний адрес"
Возврат ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяВременногоФайла));
« Как стать программистом 1С » Язык 1С » Работа с файловой системой из 1С
Работа с файловой системой из 1С
Следующие функции языка 1С позволяют манипулировать файлами:
- СоздатьКаталог 1С
- НайтиФайлы 1С
- КопироватьФайл 1С
- ПереместитьФайл 1С
- УдалитьФайлы 1С
- РазделитьФайл 1С
- ОбъединитьФайлы 1С.
Работа с каталогами — СоздатьКаталог 1С
//создает недостающие каталоги в указанном пути
//если каталога нет – создаст всю вложенную структуру
//если есть D:\Temp, то создаст подкаталоги
СоздатьКаталог("D:\Temp\1\2\3")
Поиск файлов — НайтиФайлы 1С
//найти все файлы 1С в каталоге «Sc»
НайденныеФайлы = НайтиФайлы("D:\Sc", "*");
//найти все ТЕКСТОВЫЕ файлы 1С в каталоге, включая вложенные подкаталоги
НайденныеФайлы = НайтиФайлы("D:\Sc", "*.txt", Истина);
//найти все файлы 1С в каталоге, в имени которых встречается слово "копия"
НайденныеФайлы = НайтиФайлы("D:\Sc", "*копия*");
//найти все файлы 1С в каталоге, в имени которых встречается любая цифра в скобочках, например "(1)" или "(100)"
НайденныеФайлы = НайтиФайлы("D:\Sc", "*(*)*");
//найти все файлы 1С в каталоге, в имени которых встречается цифра в скобочках меньше 10, например "(1)" или "(9)"
НайденныеФайлы = НайтиФайлы("D:\Sc", "*(?)*");
Для каждого Файл из НайденныеФайлы Цикл
Если Файл.ЭтоКаталог() Тогда
Продолжить;
КонецЕсли;
Копирование, перемещение и удаление файлов — КопироватьФайл 1С, ПереместитьФайл 1С, УдалитьФайлы 1С
ИмяФайла = "Текстовый файл.txt";
КаталогИсточник = "D:\sc\";
КаталогПриемник = "D:\";
//копирование файла
ФайлИсточник = Новый Файл(КаталогИсточник + ИмяФайла);
Если не ФайлИсточник.Существует() или ФайлИсточник.ЭтоКаталог() Тогда
ВызватьИсключение "Файл '" + КаталогИсточник + ИмяФайла + "' не существует или является каталогом";
КонецЕсли;
Попытка
КопироватьФайл(КаталогИсточник + ИмяФайла, КаталогПриемник + ИмяФайла);
Исключение
ВызватьИсключение "Нет прав на копирование файла";
КонецПопытки;
ФайлПриемник = Новый Файл(КаталогПриемник + ИмяФайла);
Если не ФайлПриемник.Существует() или ФайлПриемник.Размер() <> ФайлИсточник.Размер() Тогда
ВызватьИсключение "Не удалось корректно скопировать файл";
КонецЕсли;
//перемещение файла
Попытка
ПереместитьФайл(КаталогИсточник + ИмяФайла, КаталогПриемник + ИмяФайла);
Исключение
ВызватьИсключение "Нет прав на копирование файла";
КонецПопытки;
ФайлПриемник = Новый Файл(КаталогПриемник + ИмяФайла);
Если не ФайлПриемник.Существует() Тогда
ВызватьИсключение "Не удалось корректно перенести файл";
КонецЕсли;
Разделение и слияние файлов — РазделитьФайл 1С, ОбъединитьФайлы 1С
//функция создает каталог с именем файла
//в нем создает разделенные части файла, каждая размером в указанное кол-во мегабайт
//каждую часть сжимает архиватором
//возвращает имя каталога
Читайте также: