При работе с внешними файлами формата Excel часто возникает необходимость импортировать данные не из всего файла целиком, а только с определенного листа. Разберем по шагам, как устроена работа с многолистными табличными документами в 1С и как эффективно управлять этими данными.
Когда мы используем метод Прочитать() для объекта ТабличныйДокумент, платформа 1С выполняет автоматическую конвертацию файла. Важно понимать, что при чтении файла, содержащего несколько листов, 1С не теряет структуру — каждый лист Excel становится именованной областью внутри созданного ТабличныйДокумент.
Давайте рассмотрим, как получить доступ к этим данным:
Области.ТабличныйДокумент при чтении файла соответствуют названиям листов, которые были заданы в исходном файле Excel.Существует два основных способа обращения к нужному листу:
1. Обращение по индексу
Если нам нужен всегда первый лист (или лист с конкретным порядковым номером), мы можем обратиться к коллекции Области по индексу:
// Получаем первый лист файла
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("ПутьКФайлу.xlsx");
НужныйЛист = ТабДок.Области[0];
2. Обращение по имени
Этот способ является более надежным, так как порядок листов в файле может быть изменен пользователем, что приведет к ошибке при использовании индексов. Если вы знаете точное название листа, используйте следующий подход:
// Получаем лист по его имени в Excel
НужныйЛист = ТабДок.Области["Лист1"];
Часто после получения нужной области мы хотим работать с ней как с независимым объектом (например, чтобы сохранить в отдельный файл или отобразить пользователю в форме). Само по себе значение, полученное из коллекции Области, является типом ОбластьЯчеекТабличногоДокумента. Чтобы превратить его в полноценный документ, выполним следующие действия:
ТабличныйДокумент.Посмотрим на пример кода для реализации этой задачи:
// Предположим, у нас уже есть загруженный документ ТабДок
// Получаем нужную область
ИсходнаяОбласть = ТабДок.ПолучитьОбласть("Лист1");
// Создаем новый пустой документ
НовыйДокумент = Новый ТабличныйДокумент;
// Выводим область в новый документ
// Используем параметры для корректного переноса форматирования и структуры
НовыйДокумент.Вывести(ИсходнаяОбласть);
Работая с многолистными документами, полезно учитывать следующие нюансы:
Прочитать(): Помните, что ТабличныйДокумент предназначен для табличного отображения. Если в исходном Excel-файле есть сложные внедренные объекты (графики, макросы, диаграммы), при чтении они могут отобразиться некорректно или быть пропущены.Вывести() является основным инструментом для переноса данных между табличными документами. Убедитесь, что вы работаете именно с объектами типа ОбластьЯчеекТабличногоДокумента, которые возвращает метод ПолучитьОбласть().Таким образом, использование встроенных средств 1С позволяет достаточно просто решать задачи по разбору многостраничных Excel-файлов, извлекая необходимые данные и превращая их в удобные для обработки структуры.