Часто при сохранении отчетов или печатных форм из 1С в формате Excel пользователи сталкиваются с неприятной особенностью: в открытом файле не видно ярлыков листов (вкладок «Лист1», «Лист2» и т.д.). Кажется, что в документе всего одна страница, хотя данных может быть гораздо больше. В рамках этой статьи мы подробно разберем, почему это происходит, и изучим все возможные способы решения — от простых манипуляций мышкой до автоматизации через программный код 1С.
Проблема обычно кроется в том, как платформа 1С формирует структуру файла при записи ТабличныйДокумент в формат .xls. В некоторых случаях настройки окна Excel устанавливаются таким образом, что горизонтальная полоса прокрутки перекрывает область ярлыков листов, либо свойство видимости вкладок принудительно отключается. Проанализируем ситуацию: файл содержит листы, но их интерфейсное отображение сведено к минимуму. Рассмотрим, как это исправить.
Если файл уже сформирован и передан пользователю, первым делом стоит проверить положение разделителя полосы прокрутки. Разберем по шагам, как это сделать:
Важный нюанс: Иногда 1С при сохранении максимально сдвигает полосу прокрутки влево, полностью скрывая область вкладок. Это самый простой и быстрый способ вернуть видимость листов без изменения самого файла.
Бывают случаи, когда вкладки листов отключены в самих настройках приложения. Проверим это на примере MS Office 2007 и выше:
Если мы хотим быстро создать новый лист или переключиться между существующими, когда вкладок не видно, можно воспользоваться стандартными средствами Excel. Разберем полезные сочетания клавиш:
Alt+Shift+F1 — быстрое создание нового листа в книге.Ctrl+PgUp и Ctrl+PgDown — переключение между листами документа.Также проанализируем еще один прием: если нажать правой клавишей мыши на стрелки навигации (которые находятся слева от места, где должны быть листы), Excel выведет список всех доступных листов в отдельном окне. Это поможет быстро перейти к нужной странице, даже если ярлыки скрыты.
Если вы разработчик 1С и хотите, чтобы у пользователей файл сразу открывался корректно, необходимо использовать программную постобработку файла Excel. После того как метод Записать() отработал, мы можем подключиться к файлу через COMОбъект и принудительно задать параметры отображения.
Рассмотрим пример кода, который открывает сохраненный файл, настраивает видимость вкладок и соотношение ширины полосы прокрутки:
// Предположим, файл уже записан по адресу ПутьКФайлу
Попытка
Эксель = Новый COMОбъект("Excel.Application");
Эксель.Visible = 0;
Эксель.DisplayAlerts = 0;
Книга = Эксель.Workbooks.Open(ПутьКФайлу);
// Делаем ярлычки видимыми
Эксель.ActiveWindow.DisplayWorkbookTabs = 1;
// Устанавливаем ширину полосы прокрутки (0.6 - это 60% под ярлыки, 40% под прокрутку)
Эксель.ActiveWindow.TabRatio = 0.6;
Книга.Save();
Книга.Close();
Эксель.Quit();
Исключение
Сообщить("Не удалось настроить отображение листов: " + ОписаниеОшибки());
КонецПопытки;
В данном примере свойство DisplayWorkbookTabs отвечает за саму возможность видеть вкладки, а TabRatio определяет пропорцию распределения места между вкладками и полосой прокрутки. Значение 0.6 является оптимальным для большинства случаев.
Для разработчиков на платформе 1С версии 8.3.10 и выше существует более изящный способ создания многолистовых документов без использования медленных COM-объектов. Рассмотрим объект ПакетОтображаемыхДокументов. Он позволяет объединить несколько объектов ТабличныйДокумент в один файл .xlsx, при этом каждый документ автоматически станет отдельным листом с корректно отображаемым ярлыком.
Посмотрим на пример логики:
ПакетОтображаемыхДокументов.Состав.Добавить().Записать() для всего пакета, указывая формат ТипФайлаПакетОтображаемыхДокументов.XLSX.Этот метод работает значительно быстрее, не требует установленного Excel на сервере и избавляет от проблем с «пропавшими» листами, так как структура XLSX (основанная на XML) формируется платформой более корректно, чем старый двоичный формат XLS.
Мы проанализировали проблему исчезновения ярлыков листов в Excel при выгрузке из 1С и разобрали решения для разных ролей. Для пользователей достаточно сдвинуть разделитель полосы прокрутки или проверить настройки в параметрах Excel. Для разработчиков лучшим решением будет использование программной настройки через COM-объект (свойства TabRatio и DisplayWorkbookTabs) или переход на использование объекта ПакетОтображаемыхДокументов для формирования современных файлов .xlsx.