Работа с табличными документами в 1С:Предприятие часто сопровождается необходимостью анализировать большие массивы данных. Когда отчёт содержит сотни строк, его восприятие усложняется — глаза «разбегаются», а поиск ключевой информации занимает слишком много времени. Сворачивание табличного документа решает эту проблему, позволяя группировать данные по заданным критериям и отображать только итоговые или обобщённые строки.
Но как правильно свернуть документ, чтобы не потерять важные детали? В этой статье мы разберём все доступные способы — от стандартных инструментов платформы до программных методов для разработчиков. Вы узнаете, как настроить автоматическую группировку, вручную свернуть строки по условию, а также избежать типичных ошибок при работе с большими таблицами.
Особое внимание уделим нюансам, которые не описаны в официальной документации. Например, почему после сворачивания могут пропадать данные или как вернуть исходный вид документа, если группировка была применена ошибочно. Все инструкции сопровождаются скриншотами и примерами кода для 1С 8.3 (актуально для последних релизов платформы).
1. Что такое сворачивание табличного документа и зачем оно нужно
Сворачивание табличного документа — это механизм группировки строк по одному или нескольким признакам с отображением только итоговых или заголовков групп. В 1С этот процесс аналогичен функции «Группировка» в Excel, но имеет свои особенности реализации.
Основные задачи, которые решает сворачивание:
- 📊 Упрощение анализа — вместо сотен строк вы видите обобщённые данные (например, итоги по контрагентам или месяцам).
- 🔍 Фокус на ключевых показателях — скрываются промежуточные расчёты, оставляя только значимые итоги.
- ⚡ Ускорение работы — уменьшается нагрузка на интерфейс при прокрутке больших таблиц.
- 📑 Подготовка к печати — свернутые отчёты занимают меньше места на бумаге.
В 1С 8.3 сворачивание доступно как в пользовательском режиме (через меню), так и программно (с помощью встроенного языка). Однако не все табличные документы поддерживают эту функцию «из коробки». Например, в отчётах с динамическим формированием данных может потребоваться дополнительная настройка.
Важно понимать разницу между сворачиванием и фильтрацией:
- 🔄 Сворачивание группирует данные, но не удаляет их — их всегда можно развернуть обратно.
- ✂️ Фильтрация скрывает строки по условию, и они не отображаются до сброса фильтра.
Если вам нужно временно скрыть ненужные строки без потери данных, используйте фильтрацию. Сворачивание удобнее, когда требуется анализировать итоги по группам (например, по периодам или контрагентам).
2. Способ 1: Сворачивание через контекстное меню (для пользователей)
Самый простой способ свернуть табличный документ — использовать встроенные инструменты 1С. Этот метод не требует знания программирования и подходит для большинства стандартных отчётов (например, «Оборотно-сальдовая ведомость» или «Анализ счёта»).
Пошаговая инструкция:
- Откройте табличный документ, который нужно свернуть (например, сформируйте отчёт).
- Выделите строку или столбец, по которому хотите сгруппировать данные. Для этого кликните на заголовок столбца (например, «Контрагент» или «Месяц»).
- Нажмите правой кнопкой мыши и выберите пункт
Группировка → Сгруппировать по выделенному. - Система автоматически свернёт данные, оставив только заголовки групп и итоговые строки.
Чтобы развернуть данные обратно, кликните правой кнопкой на заголовок группы и выберите Разгруппировать.
Выделить столбец для группировки|
Проверить, что в документе нет заблокированных ячеек|
Сохранить исходный вариант (на случай ошибки)|
Убедиться, что отчёт полностью сформирован (нет статуса "Формируется...")
-->
Ограничения метода:
- ❌ Не работает в документах с фиксированной структурой (например, в печатных формах договоров).
- ❌ Нельзя задать сложные условия группировки (например, «сгруппировать по контрагенту, но только для сумм больше 100 000»).
- ❌ В некоторых конфигурациях (например, 1С:Бухгалтерия 3.0) может потребоваться предварительная настройка отчёта.
⚠️ Внимание: Если после сворачивания пропали данные, проверьте, не включён ли в отчёте режим «Только итоги». В этом случае развернуть строки можно через меню Действия → Показать детализацию.
3. Способ 2: Программное сворачивание (для разработчиков)
Если стандартные инструменты не подходят (например, нужно свернуть документ по сложному условию или автоматизировать процесс), можно использовать встроенный язык 1С. Этот метод требует прав на изменение конфигурации или работы в режиме «1С:Предприятие» с отладочными скриптами.
Базовый код для сворачивания строк по значению в колонке:
// Получаем табличный документ (например, из отчёта)
ТабличныйДокумент = Отчёт.ТабличныйДокумент;
// Сворачиваем строки по первому столбцу (индекс 0)
ТабличныйДокумент.СвернутьСтроки(0);
// Альтернативный вариант: свернуть по нескольким столбцам
МассивСтолбцов = Новый Массив;
МассивСтолбцов.Добавить(0); // Первый столбец
МассивСтолбцов.Добавить(2); // Третий столбец
ТабличныйДокумент.СвернутьСтроки(МассивСтолбцов);
Для разворачивания используйте метод:
ТабличныйДокумент.РазвернутьСтроки();
Продвинутые возможности:
- 📌 Условное сворачивание — можно свернуть только строки, соответствующие определённому критерию (например, сумма > 50 000).
- 🔄 Рекурсивная группировка — свернуть данные сначала по одному признаку, затем по другому (аналог многоуровневой группировки в Excel).
- 📊 Сохранение промежуточных итогов — при сворачивании можно автоматически рассчитывать суммы, средние значения или другие агрегаты.
Пример кода для условного сворачивания:
Процедура СвернутьПоУсловию(ТабличныйДокумент, НомерСтолбца, Условие)
// Проходим по строкам и свернём только те, что удовлетворяют условию
Для Каждого Строка Из ТабличныйДокумент.Область("R1C1:R" + ТабличныйДокумент.ВысотаТаблицы() + "C1") Цикл
Если Условие(Строка.Текст) Тогда
ТабличныйДокумент.СвернутьСтроки(НомерСтолбца, Строка.Индекс);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
⚠️ Внимание: При программном сворачивании больших таблиц (более 10 000 строк) может возникнуть зависание интерфейса. Рекомендуется предварительно фильтровать данные или использовать фоновые задачи.
Как ускорить сворачивание больших таблиц?
Для ускорения работы с большими документами (от 50 000 строк) используйте следующие приёмы:
1. Предварительная фильтрация данных на уровне запроса (если документ формируется через СКД).
2. Разбивка документа на части (например, по годам или алфавиту) с последующим объединением результатов.
3. Использование временных таблиц для промежуточных расчётов.
4. Отключение визуальных эффектов во время сворачивания (например, анимации).
4. Способ 3: Использование системы компоновки данных (СКД)
Если табличный документ формируется через систему компоновки данных (СКД), сворачивание можно настроить непосредственно в схеме отчёта. Этот метод гибче, чем ручная группировка, и позволяет сохранять настройки для повторного использования.
Как настроить сворачивание в СКД:
- Откройте схему компоновки данных в конфигураторе (
Файл → Открытьи выберите файл схемы с расширением.erf). - Перейдите на вкладку
Настройкии найдите разделГруппировки. - Добавьте новую группировку по нужному полю (например, «Контрагент» или «Период»).
- В свойствах группировки установите флаг
Свернуть при выводе. - Сохраните схему и обновите отчёт.
Преимущества этого способа:
- 🔧 Гибкость — можно настроить многоуровневую группировку с вложенными итогами.
- 📱 Сохранение настроек — пользователи могут сохранять свои варианты отчётов.
- 📈 Автоматические итоги — СКД самостоятельно рассчитывает суммы, количества и другие агрегаты.
Пример настройки группировки в СКД для отчёта по продажам:
| Поле группировки | Тип итога | Свернуть при выводе | Пример результата |
|---|---|---|---|
| Контрагент | Сумма | Да | Итоги по каждому покупателю |
| Месяц | Количество | Нет | Данные по месяцам без сворачивания |
| Номенклатура (группа) | Сумма и количество | Да | Итоги по категориям товаров |
| Менеджер | Среднее | Нет | Средние продажи по сотрудникам |
Если в вашей конфигурации отчёт формируется не через СКД, а через ТабличныйДокумент.Вывести(), этот метод не подойдёт. В таком случае используйте программное сворачивание (см. Способ 2).
5. Способ 4: Сворачивание с сохранением промежуточных итогов
Иногда требуется не просто свернуть строки, но и сохранить промежуточные расчёты (например, суммы по группам или проценты). В 1С это можно сделать двумя способами:
- Через настройки СКД (если отчёт формируется системой компоновки).
- Программно, с ручным расчётом итогов перед сворачиванием.
Пример программного расчёта итогов перед сворачиванием:
Процедура СвернутьСИтогами(ТабличныйДокумент, НомерСтолбцаДляГруппировки, НомерСтолбцаСуммы)
// 1. Проходим по строкам и рассчитываем итоги по группам
Группы = Новый Соответствие;
Для Инд = 1 По ТабличныйДокумент.ВысотаТаблицы() Цикл
КлючГруппы = ТабличныйДокумент.ПолучитьТекст(Инд, НомерСтолбцаДляГруппировки);
Если НЕ Группы.СодержитКлюч(КлючГруппы) Тогда
Группы.Вставить(КлючГруппы, 0);
КонецЕсли;
Группы[КлючГруппы] = Группы[КлючГруппы] + ТабличныйДокумент.ПолучитьЧисло(Инд, НомерСтолбцаСуммы);
КонецЦикла;
// 2. Добавляем строки с итогами в конец документа
Для Каждого Ключ Из Группы.Ключи() Цикл
НоваяСтрока = ТабличныйДокумент.ВысотаТаблицы() + 1;
ТабличныйДокумент.УстановитьТекст(НоваяСтрока, НомерСтолбцаДляГруппировки, "ИТОГО: " + Ключ);
ТабличныйДокумент.УстановитьЧисло(НоваяСтрока, НомерСтолбцаСуммы, Группы[Ключ]);
КонецЦикла;
// 3. Сворачиваем строки по группировочному столбцу
ТабличныйДокумент.СвернутьСтроки(НомерСтолбцаДляГруппировки);
КонецПроцедуры
Этот код добавляет в конец таблицы строки с итогами по каждой группе, а затем сворачивает исходные данные. Такой подход удобен для финансовых отчётов, где важно видеть как детализацию, так и обобщённые показатели.
Важно: Если в таблице уже есть строки с итогами (например, добавленные вручную), программное сворачивание может дублировать их. Перед выполнением кода рекомендуется очистить документ от предыдущих расчётов.
6. Способ 5: Сворачивание в печатных формах и внешних отчётах
Работа с печатными формами (например, актами или счетами-фактурами) имеет свои особенности. В большинстве случаев такие документы формируются через ТабличныйДокумент с фиксированной структурой, и стандартные методы сворачивания к ним не применяются. Однако есть обходные пути:
Варианты решения:
- 📄 Изменение макета — если печатная форма создаётся через СКД, настройте группировку в схеме (аналогично Способу 4).
- 🖨️ Экспорт в Excel — сверните данные в Excel после выгрузки (
ТабличныйДокумент.Записать("файл.xls")). - 🛠️ Программная модификация — если документ формируется через код, добавьте логику сворачивания перед выводом на печать.
Пример модификации печатной формы:
Процедура ПечатьСчётаФактуры(Документ)
ТабличныйДокумент = Новый ТабличныйДокумент;
Макет = Документы.СчётФактура.ПечатнаяФорма();
// Формируем документ по макету
ТабличныйДокумент.Очистить();
Макет.Вывести(ТабличныйДокумент, Документ);
// Сворачиваем строки с номенклатурой по группам
Если Макет.Имя = "СчётФактура" Тогда
ТабличныйДокумент.СвернутьСтроки(2); // Сворачиваем по столбцу "Номенклатура"
КонецЕсли;
// Выводим на печать
ТабличныйДокумент.Показать();
ТабличныйДокумент.Печать();
КонецПроцедуры
Ограничения:
- ❌ Не все печатные формы поддерживают динамическое изменение структуры.
- ❌ В документах с подписями и печатями сворачивание может нарушить форматирование.
⚠️ Внимание: Перед модификацией печатных форм проверьте, не нарушаются ли требования законодательства (например, для счёт-фактур или актов). В некоторых случаях изменение структуры документа может привести к его недействительности.
7. Типичные ошибки и их решения
При работе со сворачиванием табличных документов пользователи и разработчики часто сталкиваются с типичными проблемами. Рассмотрим самые распространённые из них и способы их устранения.
Ошибка 1: Данные пропадают после сворачивания
- 🔹 Причина: Включён режим «Только итоги» или строки были отфильтрованы до сворачивания.
- 🔹 Решение: Проверьте настройки отчёта (
Действия → Показать детализацию) или сбросьте фильтры.
Ошибка 2: Нельзя свернуть строки — пункт меню неактивен
- 🔹 Причина: Документ защищён от изменений или сформирован без поддержки группировки.
- 🔹 Решение: Попробуйте программное сворачивание или экспортируйте данные в Excel.
Ошибка 3: Сворачивание работает слишком долго
- 🔹 Причина: Большой объём данных (более 50 000 строк) или сложные формулы в ячейках.
- 🔹 Решение: Предварительно отфильтруйте данные или разбейте документ на части.
Ошибка 4: Итоги рассчитываются неправильно
- 🔹 Причина: В данных есть пустые ячейки или нечисловые значения в столбцах с суммами.
- 🔹 Решение: Очистите данные от мусора или используйте функцию
ЗначениеЗаполнено()при расчётах.
Ошибка 5: После сворачивания нарушилось форматирование
- 🔹 Причина: В документе использовались объединённые ячейки или условное форматирование.
- 🔹 Решение: Перед сворачиванием сбросьте объединение (
ТабличныйДокумент.ОбъединитьЯчейки()) или перенастройте стили.
Если ни один из способов не помог, проверьте:
- 🔸 Версию платформы 1С:Предприятие (в старых релизах могут отсутствовать некоторые методы).
- 🔸 Права доступа (для программного сворачивания требуются права на изменение данных).
- 🔸 Наличие обновлений конфигурации (в новых версиях могут быть исправлены баги со сворачиванием).
Перед массовым сворачиванием данных всегда делайте резервную копию документа или сохраняйте его в отдельный файл. Это позволит быстро отменить изменения, если результат окажется неудовлетворительным.
8. Альтернативные способы работы с большими таблицами
Если сворачивание не решает вашу задачу (например, нужно не просто сгруппировать данные, а полностью трансформировать отчёт), рассмотрите альтернативные подходы:
Способ 1: Использование отчётов на СКД с настройкой выводов
- 📌 Настройте условное оформление для выделения важных строк.
- 📌 Используйте вложенные группировки для многоуровневого анализа.
- 📌 Экспортируйте данные в Excel или PDF с сохранением структуры.
Способ 2: Разбивка на несколько документов
- 📂 Разделите большой отчёт на несколько файлов (например, по годам или подразделениям).
- 📊 Используйте сводные таблицы в Excel для дальнейшего анализа.
Способ 3: Автоматизация через внешние инструменты
- 🤖 Напишите скрипт на Python с использованием библиотеки
py1cдля обработки данных. - 📈 Подключите 1С к Power BI или Tableau для визуализации.
Способ 4: Оптимизация запросов
- 🔧 Перепишите запрос, формирующий отчёт, чтобы он сразу возвращал сгруппированные данные.
- 📉 Используйте индексы в базе данных для ускорения выборки.
Пример оптимизированного запроса для группировки данных:
ВЫБРАТЬ
Контрагент,
СУММА(СуммаДокумента) КАК ИтоговаяСумма
ИЗ
Документ.РеализацияТоваровУслуг
ГДЕ
Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
Контрагент
УПОРЯДОЧИТЬ ПО
ИтоговаяСумма УБЫВ
Этот запрос сразу вернёт данные в свернутом виде, что избавит от необходимости пост-обработки в табличном документе.
FAQ: Частые вопросы по сворачиванию табличных документов
Можно ли свернуть табличный документ в 1С 7.7?
В 1С 7.7 функционал сворачивания ограничен. Вы можете:
- Использовать ручную группировку в отчётах, поддерживающих это (например, в «Оборотно-сальдовой ведомости»).
- Экспортировать данные в Excel и свернуть их там.
- Написать обработку на встроенном языке для имитации сворачивания (скрытие строк через
УстановитьВысотуСтроки(0)).
Полноценное программное сворачивание, как в 1С 8.x, в 7.7 отсутствует.
Почему после сворачивания пропали цвета в ячейках?
Это типичная проблема при работе с условным оформлением. При сворачивании 1С может сбрасывать пользовательские стили. Решения:
- Перед сворачиванием зафиксируйте цвета через
ТабличныйДокумент.УстановитьЦветЯчейки(). - Используйте СКД для настройки оформления — в этом случае стили сохранятся.
- После сворачивания примените стили заново программно.
Как свернуть таблицу по нескольким столбцам одновременно?
Для этого используйте метод СвернутьСтроки() с массивом номеров столбцов:
МассивСтолбцов = Новый Массив;
МассивСтолбцов.Добавить(1); // Первый столбец для группировки
МассивСтолбцов.Добавить(3); // Третий столбец для группировки
ТабличныйДокумент.СвернутьСтроки(МассивСтолбцов);
Если нужно задать приоритет группировки (например, сначала по контрагенту, затем по месяцу), сверните данные последовательно:
ТабличныйДокумент.СвернутьСтроки(1); // По контрагенту
ТабличныйДокумент.СвернутьСтроки(2); // По месяцу внутри групп контрагентов
Можно ли свернуть табличный документ в мобильном приложении 1С?
В мобильной версии 1С:Предприятие функционал сворачивания ограничен. Возможные варианты:
- 📱 В некоторых отчётах доступна базовая группировка (зависит от конфигурации).
- 📤 Экспортируйте документ в Excel и сверните его на устройстве.
- 🖥️ Используйте веб-клиент или тонкий клиент для полноценной работы с таблицами.
Для сложных операций рекомендуется работать с десктопной версией.
Как отменить сворачивание, если нет пункта «Разгруппировать»?
Если стандартный способ не работает:
- Закройте документ без сохранения и откройте его заново.
- Используйте программный метод
ТабличныйДокумент.РазвернутьСтроки(). - Экспортируйте документ в Excel и разверните группы там.
- Восстановите исходный вариант из истории (если включено ведение версий).