Как прочитать файл 1с
« Как стать программистом 1С » Язык 1С » Текстовый файл 1С — ЧтениеТекста 1С, ЗаписьТекста 1С, ЗначениеВФайл 1С, ЗначениеИзФайла 1С
Текстовый файл 1С — ЧтениеТекста 1С, ЗаписьТекста 1С, ЗначениеВФайл 1С, ЗначениеИзФайла 1С
Для работы с текстовыми файлами 1С предназначены объекты ЧтениеТекста 1С и ЗаписьТекста 1С. Функция ЗначениеВФайл() позволяет быстро и просто сохранить в текстовый файл 1С «любое» значение 1С, в том числе такие объекты как таблица значений и прочие.
Чтение текстового файла 1С
Пример чтения текстового файла (про строки и работу с символами переноса строки см. подробнее «Работа со строками»).
Пример 1. Чтение текстового файла 1С целиком с помощью ЧтениеТекста 1С (в одну «строку с переносами»)
Файл = Новый ЧтениеТекста(«D:\Текстовый файл.txt»);
ВесьФайлОднойСтрокой = Файл.Прочитать();
Файл.Закрыть();
Пример 2. Чтение текстового файла 1С построчно с помощью ЧтениеТекста 1С (в данном примере в массив строк)
мСтрокФайла = Новый Массив();
Файл = Новый ЧтениеТекста(«D:\Текстовый файл.txt»);
//прочитать строку считывает одну строку из файла
//если достигнут конец файла, то возвращается значение НЕОПРЕДЕЛЕНО
Строка = Файл.ПрочитатьСтроку();
//а не был ли файл пуст?
Если Строка <> Неопределено Тогда
мСтрокФайла.Добавить(Строка);
КонецЕсли;
//цикл пока чтение строки не вернет НЕОПРЕДЕЛЕНО
//внутри цикла повторяем чтение
Пока Строка <> Неопределено Цикл
Строка = Файл.ПрочитатьСтроку();
Если Строка <> Неопределено Тогда
мСтрокФайла.Добавить(Строка);
КонецЕсли;
КонецЦикла;
Запись текстового файла 1С
Пример 3. Запись текстового файла 1С с помощью ЗаписьТекста 1С (пример – формирование xml файла текстом)
Получившийся текстовый файл 1С с помощью ЗаписьТекста 1С:
Пример 4. Сохранение значения 1С в текстовый файл 1С с помощью ЗначениеВФайл 1С, чтение с помощью ЗначениеИзФайла 1С
//запросом выбираем все документы поступления товара
Запрос = Новый Запрос(«ВЫБРАТЬ * ИЗ Документ.ПоступлениеТоваров»);
//Запрос.Выполнить().Выгрузить() — выгружает в таблицу значений все выбранные запросом документы
//ЗначениеВФайл 1С — сохраняет таблицу значений в файл
ЗначениеВФайл(«D:\Текстовый файл.txt», Запрос.Выполнить().Выгрузить());
//ЗначениеИзФайла — считывает значение из файла обратно, в то значение, которое было сохранено, в данном случае в таблицу значений
//если выполнить этот код в другой базе, то ссылки на объекты не сохранятся, а простые типы данных (строка, число, дата, булево) — сохраняться
//вариант — проходить таблицу перед сохранением в цикле, заменяя все ссылочные значения на простые типы (подробнее см. «Работа с типами»)
тЗначений = ЗначениеИзФайла(«D:\Текстовый файл.txt»);
тЗначений.ВыбратьСтроку();
Чтение текстового файла в 1С 8.3 — разные способы с примерами
Как прочитать текстовый файл средствами платформы 1С 8.3 и как работать с ними в целом? Если не брать во внимание чтение специализированных форматов текстовых файлов то, по сути, во встроенном языке для этих целей реализованы два объекта: ЧтениеТекста и ТекстовыйДокумент. Рассмотрим на примерах, какие возможности предоставляет каждый из них.
ЧтениеТекста()
Объект ЧтениеТекста() предназначен для последовательного чтения текстовых файлов (большой длины)
Пример №1 — Прочитать файл по строкам
В данном примере осуществляется последовательное чтение строк и последовательный вывод всех символов после разделителя до символа перевода строки в окно сообщений.
Пример №2 — Чтение через «Файл»
Если требуется предварительно проанализировать параметры файла или параметры каталога, в котором он расположен необходимо использовать совместно с объектом Файл(). Пример кода, который перед чтением проверяет текстовый файл на существование, может выглядеть так:
Пример №3 — Выбираем файл на диске и читаем его
Зачастую требуется возможность интерактивного выбора файла. Тогда необходимо использовать объект ДиалогВыбораФайла().Доступны три режима роботы объекта: ВыборКаталога, Открытие, Сохранение. Пример кода:
Пример №4 — Чтение текста «порциями»
Если есть необходимость контролировать длину читаемых строк текстового файла, стоит заменить метод ПрочитатьСтроку() на Прочитать(). Однако отметим, что при указании параметра <РазмерСтроки>, заданное число может включать в себя символы переноса строки. То есть символы переноса строки идут в счёт параметра. Пример кода:
ТекстовыйДокумент()
Объект ТекстовыйДокумент() предназначен для работы с текстами. Позволяет получать и сохранять текст в файле, работать со строками, открывать текст в текстовом редакторе 1С:Предприятия. Обладает более богатым набором методов и свойств в отличие от объекта ЧтениеТекста(). При необходимости к нему так же применимы объекты Файл() и ДиалогВыбораФайла().
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Таким образом, с помощью данных объектов разработчику предоставляются широкие возможности для анализа и обработки текстовых документов.
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Чтение файла Excel в 1С
Чтение файла Excel в 1С 8.х может проводиться несколькими способами. Одним из самых простых способов программного чтения файлов Excel в 1С является подключение через COMобъект.
Перед тем как перейти к процедурам чтения файла Excel, нужно найти его адрес. Для этого удобно воспользоваться стандартным диалогом открытия файла. Нужно создать текстовое поле с достаточной длиной (адреса бывают длинные). В обработчике события НачалоВыбора нужно прописать следующую процедуру.
Процедура ФайлНачалоВыбора ( Элемент , ДанныеВыбора , СтандартнаяОбработка )
Диалог = Новый ДиалогВыбораФайла ( РежимДиалогаВыбораФайла . Открытие ) ;
Диалог . ПредварительныйПросмотр = Ложь ;
Диалог . Фильтр = "(*.xls)|*.xls" ;
Если ЗначениеЗаполнено ( Файл ) Тогда
Диалог . ПолноеИмяФайла = Файл ;
КонецЕсли ;
Если Диалог . Выбрать ( ) Тогда
Файл = Диалог . ПолноеИмяФайла ;
После этого в реквизите Файл должен находить полный адрес файла Excel.
Допустим, файл содержит две колонки:
- Артикул.
- Наименование товара.
Данные начинаются с 4 строки. Всего строк в файле 5000.
Процедура будет выглядеть так:
Ехсел = Новый COMObject ( "Excel.Application" ) ;
Книга = Ехсел . Workbooks ;
Книга . Open ( Файл ) ;
ТЗ = новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( "Артикул" ) ;
ТЗ . Колонки . Добавить ( "Наименование" ) ;
Для СчетчикЦикла = 4 По 5000 Цикл
НоваяСтрока = ТЗ . Добавить ( ) ;
НоваяСтрока . Артикул = СокрЛП ( Ехсел . Cells ( СчетчикЦикла , 1 ) . value ) ;
НоваяСтрока . Наименование = СокрЛП ( Ехсел . Cells ( СчетчикЦикла , 2 ) . value ) ;
КонецЦикла ;
Ехсел . Application . Quit ( ) ; // Если этого не сделать, процесс EXCEL останется в памяти
Пустые ячейки файла Excel имеют значение Неопределено. Поэтому, если количество строк в файле заранее не известно, но есть уверенность, что записи идут одна за другой и не прерываются пустыми строками, то процедуру можно модифицировать так.
Ехсел = Новый COMObject ( "Excel.Application" ) ;
Книга = Ехсел . Workbooks ;
Книга . Open ( Файл ) ;
ТЗ = новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( "Артикул" ) ;
ТЗ . Колонки . Добавить ( "Наименование" ) ;
Пока СокрЛП ( Ехсел . Cells ( СчетчикЦикла , 1 ) . value ) <> Неопределено Цикл
НоваяСтрока = ТЗ . Добавить ( ) ;
НоваяСтрока . Артикул = СокрЛП ( Ехсел . Cells ( СчетчикЦикла , 1 ) . value ) ;
НоваяСтрока . Наименование = СокрЛП ( Ехсел . Cells ( СчетчикЦикла , 2 ) . value ) ;
СчетчикЦикла = СчетчикЦикла + 1 ;
Ехсел . Application . Quit ( ) ; // Если этого не сделать, процесс EXCEL останется в памяти
Кроме того, можно определить количество строк в файле Excel. Это делается так:
После этого можно применять полученные значения количества строк и колонок в коде, аналогичном описанному выше.
Ехсел = Новый COMObject ( "Excel.Application" ) ;
Книга = Ехсел . Workbooks ;
Книга . Open ( Файл ) ;
Если Версия = "8" тогда
ФайлСтрок = Ехсел . Cells . CurrentRegion . Rows . Count ;
ФайлКолонок = Макс ( Ехсел . Cells . CurrentRegion . Columns . Count , 13 ) ;
Иначе
ФайлСтрок = Ехсел . Cells ( 1 , 1 ) . SpecialCells ( 11 ) . Row ;
ФайлКолонок = Ехсел . Cells ( 1 , 1 ) . SpecialCells ( 11 ) . Column ;
Конецесли ;
ТЗ = новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( "Артикул" ) ;
ТЗ . Колонки . Добавить ( "Наименование" ) ;
Для СчетчикЦикла = 4 По ФайлСтрок Цикл
НоваяСтрока = ТЗ . Добавить ( ) ;
НоваяСтрока . Артикул = СокрЛП ( Ехсел . Cells ( СчетчикЦикла , 1 ) . value ) ;
НоваяСтрока . Наименование = СокрЛП ( Ехсел . Cells ( СчетчикЦикла , 2 ) . value ) ;
КонецЦикла ;
Ехсел . Application . Quit ( ) ; // Если этого не сделать, процесс EXCEL останется в памяти
Как прочитать файл 1с
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
- Как записать текстовый файл
- Как прочитать текстовый файл
- Как использовать текстовый макет для формирования печатной формы
- Как использовать параметры полей при оформлении текстового макета
- Скачать и выполнить эти примеры на компьютере
Работа с текстовым документом в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.