Работа с файлами в 1С 8.3 (8.2)
В 1С 8.3 (8.2) для работы с файлами существует два объекта: Файл и ДиалогВыбораФайла.
Рассмотрим каждый по отдельности.
Содержание
Объект 1С — файл
Объект Файл служит для управления параметрами файлов.
Сразу стоит заметить, что данный объект не предназначен для чтения и записи из файлов.
Например, прочитаем параметры некоторого файла, находящегося на диске C:
ПолноеИмяФайла = "C:\Работа с файлами\статья.txt"; ВыбранныйФайл = Новый Файл(ПолноеИмяФайла); Если ВыбранныйФайл.Существует() Тогда СтрокаПараметров = "Параметры файла:"+Символы.ПС + "Полное имя файла: "+ ВыбранныйФайл.ПолноеИмя + Символы.ПС + "Имя: "+ ВыбранныйФайл.Имя + Символы.ПС + "Имя без расширения: "+ ВыбранныйФайл.ИмяБезРасширения+Символы.ПС+ "Расширение: "+ ВыбранныйФайл.Расширение+ Символы.ПС+ "Путь без имени: "+ ВыбранныйФайл.Путь+Символы.ПС+ "Размер: "+ ВыбранныйФайл.Размер()+ Символы.ПС+ "Это файл: "+ ВыбранныйФайл.ЭтоФайл()+ Символы.ПС+ "Изменен: "+ ВыбранныйФайл.ПолучитьВремяИзменения()+Символы.ПС+ "Только чтение: "+ ВыбранныйФайл.ПолучитьТолькоЧтение()+Символы.ПС+ "Невидимость: "+ ВыбранныйФайл.ПолучитьНевидимость(); Сообщить(СтрокаПараметров); Иначе Предупреждение("Файл не найден!"); КонецЕсли;
В результате мы получим следующую информацию (если файл найден):
Параметры файла:
Полное имя файла: C:\Работа с файлами\статья.txt
Имя: статья.txt
Имя без расширения: статья
Расширение: .txt
Путь без имени: C:\Работа с файлами\
Размер: 899
Это файл: Да
Изменен: 18.05.2015 16:21:28
Только чтение: Нет
Невидимость: Нет
Запись в файл
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Теперь, когда мы выбрали и открыли файл, можно с ним работать, т.е. прочитать его содержимое или записать в него что-нибудь.
Рассмотрим пример:
Если ЗначениеЗаполнено(ПутьКФайлу) Тогда ТекстовыйДокИзФайла = Новый ТекстовыйДокумент; ТекстовыйДокИзФайла.Прочитать(ПутьКФайлу); НашТекстИзФайла = ТекстовыйДокИзФайла.ПолучитьТекст(); Сообщить(НашТекстИзФайла); КонецЕсли;
Чтение файла в 1С
Часто бывает необходимо прочитать текст файла построчно, например, для анализа каждой строки. Для этого используем объект ЧтениеТекста.
Пример:
ПрочитанныйТекст = Новый ЧтениеТекста(ПутьКФайлу); СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку(); Сообщить(СтрокаТекстовогоФайла); Пока СтрокаТекстовогоФайла <> Неопределено Цикл СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку(); Сообщить(СтрокаТекстовогоФайла); КонецЦикла; ПрочитанныйТекст.Закрыть();
Запись текста из 1С в файл
Если ЗначениеЗаполнено(ПутьКФайлу) Тогда ТекстовыйДокИзФайла = Новый ТекстовыйДокумент; ТекстовыйДокИзФайла.ДобавитьСтроку("В траве сидел кузнечик"); ТекстовыйДокИзФайла.ДобавитьСтроку("Совсем как огуречик"); ТекстовыйДокИзФайла.ДобавитьСтроку("Зелененький он был"); ТекстовыйДокИзФайла.Записать(ПутьКФайлу, КодировкаТекста.UTF8); Конецесли;
Заметим, что при записи текстового файла можно установить кодировку.
Копирование файла
Здесь все очень просто
КопироватьФайл(ПутьКФайлуИсточнику, ПутьКФайлуПриемнику);
Перемещение
ПереместитьФайл(ПутьКФайлуИсточнику, ПутьКФайлуПриемнику);
Удаление
Попытка УдалитьФайлы("C:\Работа с файлами\статья.txt"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки;
Диалог выбора файла
В указанных выше примерах есть одно неудобство. Путь к файлу прописан жестко в коде. Чтобы выбрать файл интерактивно, существует объект ДиалогВыбораФайла, о котором речь пойдет ниже.
Объект ДиалогВыбораФайла служит для открытия файла (файлов), сохранения файла или выбора каталога в диалоге специального вида.
Например, выберем и откроем некоторый файл с расширением txt:
Задаем режим диалога выбора. Доступны три варианта: ВыборКаталога, Открытие, Сохранение
Режим = РежимДиалогаВыбораФайла.Открытие;
Создаем диалог
ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.ПолноеИмяФайла = ""; Фильтр = "Текст, *.txt|*.txt"; ДиалогОткрытия.Фильтр = Фильтр; ДиалогОткрытия.МножественныйВыбор = Истина; ДиалогОткрытия.Заголовок = "Выберите файлы"; Если ДиалогОткрытия.Выбрать() Тогда МассивВыбранныхФайлов = ДиалогОткрытия.ВыбранныеФайлы; Для Каждого ИмяВыбранногоФайла Из МассивВыбранныхФайлов Цикл ВыбранныйФайл = Новый Файл(ИмяВыбранногоФайла); Сообщить(ИмяВыбранногоФайла + "; Размер = " + ВыбранныйФайл.Размер()); КонецЦикла; Иначе Предупреждение("Нет выбранных файлов!"); КонецЕсли;
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
Дарина:
Подскажите пожалуйста , как вывести значение в выбранной строке документа ( к примеру мне нужно запомнить лишь значение, которое располагается на 3 строчке txt-документа)
Аноним:
Цикл и условие: при значении строки равной 3 значение в строке присваиваете переменной.
Лара:
Читаете файл. Если номер строки файла=3, то запоминаете значение.
Гудвин:
А как поместить файл на управляемую форму?
StLuka:
А есть возможность открыть внешний файл из 1С под учетными данными (учетной записью ОС) другого пользователя. ВОт ситуация что нужно открыть для просмотра текстовый файл, но у пользователя нет прав на папку в которой этот файл находится. Могу я програмно в 1С указать под какой учеткой открывать файл?
Наиль:
Добрый день. Подскажите, 1С поддерживает возможность загрузки файла с помощью обычного перетаскивания, как это можно сделать например при написании электронного письма, т.е. ты берешь файл и перетаскиваешь его в письмо, всё, ничего больше не надо нажимать или открывать каких-то окон, и не требуется нажатия доп. кнопок. Может есть такая форма для 1С?
SPES:
Добрый день. Подскажите — а можно в 1 С предприятие из нескольких строк, к которым прикреплены документы, вытащить сразу эти документы либо одним архивом, либо нужном количестве поштучно. Например, есть котрагент ООО «Лютик», по нему проведены 12 документов за весть 2023 год и к каждой проводке прикреплены «закрывашки». Появилась необходимость иметь эти «закрывашки» отдельно от 1С и кому-то их переслать. Можно ли скачать сразу все, прикрепленные «закрывашки» и не «выцарапывать» каждую отдельно?