Работа с отчетами в 1С:Предприятие часто требует гибкой настройки отображаемых данных. Ненужные колонки, лишние строки или конфиденциальная информация могут усложнять восприятие документа или нарушать корпоративные стандарты безопасности. Скрытие полей в отчетах — одна из самых востребованных операций как среди обычных пользователей, так и среди разработчиков.
В этой статье мы разберем все доступные методы: от элементарных действий в интерфейсе пользовательского режима до сложных программных решений с использованием 1С:Предприятие 8.3 и встроенного языка. Вы узнаете, как временно убрать колонку из вида, навсегда исключить поле из макета отчета, настроить динамическое скрытие по условию или ограничить доступ к данным через права пользователей.
Особое внимание уделим типичным ошибкам, которые приводят к потере данных при редактировании макетов или неправильной работе отчетов после изменений. Все инструкции сопровождаются скриншотами (условными описаниями) и примерами кода, адаптированными под актуальные версии платформы.
1. Скрытие полей в пользовательском режиме (без программирования)
Если вам нужно временно убрать колонку из отчета без изменения конфигурации, используйте стандартные инструменты 1С. Этот метод подходит для разовых задач и не требует прав администратора.
Самый простой способ — воспользоваться функцией Настройка списка (или Настройка отчета, в зависимости от версии). Алгоритм действий:
- 📊 Откройте нужный отчет через меню
Отчеты → [Название отчета]. - 🔧 Нажмите кнопку
Ещё → Настроить список(илиНастроить отчет). - 👁️ В открывшемся окне перейдите на вкладку
Колонки(илиПоля). - ✅ Снимите галочки напротив полей, которые нужно скрыть.
- 💾 Сохраните настройки (опционально: установите флажок
Сохранять для всех пользователей, если требуется применить изменения глобально).
Этот метод работает для большинства стандартных отчетов (Оборотно-сальдовая ведомость, Анализ субконто, Ведомость по товарам и др.). Однако у него есть ограничения:
- ⚠️ Настройки сбрасываются после обновления конфигурации.
- ⚠️ Не все отчеты поддерживают динамическую настройку колонок (например, отчеты с жестко заданным макетом).
- ⚠️ Скрытые поля остаются доступны при экспорте в
ExcelилиPDF.
Если кнопка Настроить список неактивна, проверьте права доступа вашего пользователя в разделе Администрирование → Пользователи.
2. Редактирование макета отчета в конфигураторе
Для постоянного удаления полей из отчета необходимо отредактировать его макет в режиме Конфигуратор. Этот метод требует прав на изменение конфигурации и подходит для администраторов или разработчиков.
Инструкция по шагам:
- Откройте конфигуратор (
Файл → Конфигураторили через ярлык запуска с ключом/Config). - Найдите нужный отчет в дереве объектов:
Отчеты → [Имя отчета]. - Откройте макет отчета (обычно это вкладка
Макетыили отдельный объектМакетв составе отчета). - Удалите или закомментируйте ненужные поля в таблице. Например, для макета типа
Табличный документнайдите строку с именем колонки и удалите её:
// Пример кода макета (упрощенно)
Таблица.Колонки.Удалить("НаименованиеКонтрагента");
Таблица.Колонки.Добавить("КодКонтрагента", Новый ОписаниеТипов("Строка"));
Для отчетов на СКД (Система Комповедения Данных) процесс сложнее:
- 🔹 Откройте схему компоновки данных (
Отчет → Схема компоновки данных). - 🔹 Перейдите на вкладку
Настройки→Структура. - 🔹 В разделе
Поля и ресурсыснимите флажки с ненужных полей или перенесите их в разделДоступные поля.
Сделать резервную копию конфигурации|Проверить права доступа|Записать текущие настройки отчета|Просмотреть зависимые объекты-->
⚠️ Внимание: Изменение макетов в конфигураторе может привести к ошибкам при обновлении конфигурации. Всегда тестируйте изменения на копии базы!
3. Условное скрытие полей с помощью СКД
Если поле нужно скрывать динамически (например, для определенных пользователей или при выполнении условий), используйте механизм условного оформления в СКД.
Алгоритм настройки:
- Откройте отчет в режиме
1С:Предприятиеи перейдите вНастройки → Условное оформление. - Добавьте новое правило (
Добавить→Оформление ячеек). - В поле
Условиеукажите логическое выражение. Примеры:Пользователь.Имя <> "Иванов"— скрыть для всех, кроме Иванова.ДатаНачала >= ТекущаяДата()— скрыть будущие периоды.СуммаОборота = 0— скрыть нулевые значения.
Оформление выберите Скрыть или установите прозрачный цвет текста.Для программного управления условным оформлением используйте обработчик события ПриКомпоновкеРезультата:
Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
Если Пользователь.Имя = "Администратор" Тогда
КомпоновщикМакетов.ПараметрыОтчета.УстановитьПараметр("СкрытьКонфиденциальныеДанные", Истина);
КонецЕсли;
КонецПроцедуры
| Метод скрытия | Требуются права администратора | Сохраняется после обновления | Поддерживает условия |
|---|---|---|---|
| Настройка списка (пользовательский режим) | ❌ Нет | ❌ Нет | ❌ Нет |
| Редактирование макета в конфигураторе | ✅ Да | ✅ Да | ❌ Нет |
| Условное оформление (СКД) | ❌ Нет (но нужны права на настройку отчетов) | ✅ Да | ✅ Да |
| Программное скрытие (в коде) | ✅ Да | ✅ Да | ✅ Да |
4. Скрытие полей через права доступа
Если задача — ограничить доступ к определенным данным для групп пользователей, используйте механизм прав доступа. Это самый безопасный способ скрыть конфиденциальную информацию (например, зарплаты, себестоимость, маржу).
Инструкция:
- Откройте конфигуратор и перейдите в
Администрирование → Пользователи. - Выберите роль (например,
БухгалтерилиМенеджер по продажам). - На вкладке
Праванайдите разделОтчетыи установите ограничения:- 🔒 Запретите просмотр конкретных отчетов.
- 🔒 Ограничьте доступ к полям через
Роли → [Имя роли] → Права на данные.
RLS (Record Level Security) — ограничение на уровне записей.Пример настройки RLS для скрытия поля Себестоимость:
Процедура ПриОпределенииПравДоступа(Права, Объект, ТипОбъекта)
Если Пользователь.НаходитсяВРоли("Менеджеры") Тогда
Права.Чтение = Ложь; // Запрет на просмотр
КонецЕсли;
КонецПроцедуры
⚠️ Внимание: Ограничения RLS действуют только на данные в базе, но не на экспортированные отчеты. Для полной защиты используйте дополнительное шифрование!
5. Программное скрытие полей в коде отчета
Для сложных сценариев (например, скрытие полей в зависимости от внешних условий или интеграции с другими системами) используйте встроенный язык 1С. Этот метод требует знания программирования, но дает максимальную гибкость.
Рассмотрим два подхода:
5.1. Модификация макета на лету
Используйте обработчик ПриКомпоновкеДанных для динамического изменения структуры отчета:
Процедура ПриКомпоновкеДанных(ДанныеРасшифровки, СтандартнаяОбработка)
Макет = КомпоновщикМакетов.ПолучитьМакет("Основной");
Если НЕ ЗначениеЗаполнено(Параметры.ПоказыватьДетализацию) Тогда
Макет.Поля.Удалить("Детализация");
КонецЕсли;
КонецПроцедуры
5.2. Фильтрация данных перед выводом
Если нужно скрыть не колонку, а конкретные значения (например, нулевые суммы), используйте обработчик ПриФормированииРезультата:
Процедура ПриФормированииРезультата(Результат, СтандартнаяОбработка)
Для Каждого Строка Из Результат Выборка Цикл
Если Строка.Сумма = 0 Тогда
Строка.ПометкаУдаления = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Как отладить код отчета?
Для отладки кода отчета используйте точки останова в конфигураторе:
1. Откройте модуль отчета (Отчет → Модуль объекта).
2. Установите точку останова на нужной строке (кликните слева от номера строки).
3. Запустите отчет в режиме 1С:Предприятие с ключом /Debug.
4. При достижении точки выполнение приостановится, и вы сможете проанализировать переменные в окне Отладчик.
6. Типичные ошибки и их решение
При скрытии полей в отчетах 1С пользователи сталкиваются с рядом типичных проблем. Разберем самые распространенные:
- 🔴 Ошибка "Поле не найдено" — возникает при редактировании макета, если поле было переименовано или удалено в источнике данных. Проверьте актуальность схемы компоновки.
- 🔴 Отчет не открывается после изменений — чаще всего связано с синтаксическими ошибками в коде. Используйте
Проверка модуляв конфигураторе. - 🔴 Скрытые поля видны в экспорте — это особенность 1С. Для полного скрытия модифицируйте процедуру экспорта или используйте постобработку файла.
- 🔴 Настройки не сохраняются — проверьте права на запись в каталог пользовательских настроек (
%APPDATA%\1C\1Cv8\).
Если после скрытия поля отчет перестал работать корректно:
- Вернитесь к исходной версии макета (используйте резервную копию).
- Проверьте
Журнал регистрациина наличие ошибок (Администрирование → Журнал регистрации). - Запустите тестирование и исправление базы (
Администрирование → Тестирование и исправление).
Перед любыми изменениями в конфигураторе всегда создавайте резервную копию базы через Администрирование → Выгрузить информационную базу!
7. Альтернативные способы: внешние обработки и расширения
Если редактировать конфигурацию нельзя (например, в облачной версии 1С:Фреш), используйте внешние обработки или расширения конфигурации.
Внешняя обработка позволяет:
- 📄 Создать альтернативный отчет с нужной структурой.
- 🔄 Подменить стандартный отчет своей версией.
- 🔒 Ограничить доступ к оригинальному отчету.
Пример подключения внешней обработки:
- Создайте обработку в конфигураторе (
Файл → Новый → Внешняя обработка). - Добавьте команду вызова отчета в модуль обработки:
Процедура Команда1(Команда)
Отчет = Отчеты.ОборотноСальдоваяВедомость.Создать();
Отчет.КомпоновщикНастроек.Настройки.Структура.Поля.Удалить("Валюта");
Отчет.Скомпоновать();
Отчет.Показать();
КонецПроцедуры
Расширение конфигурации (доступно с версии 8.3.6) позволяет модифицировать отчеты без изменения основной конфигурации:
- Создайте расширение (
Конфигуратор → Файл → Новый → Расширение конфигурации). - Добавьте в него копию отчета с нужными изменениями.
- Подключите расширение к базе (
Администрирование → Печатные формы, отчеты и обработки).
⚠️ Внимание: В облачных версиях 1С (например, 1С:Фреш) возможности редактирования отчетов ограничены. Уточняйте актуальные ограничения в документации вашего тарифа.
FAQ: Частые вопросы по скрытию полей в 1С
Можно ли скрыть поле в отчете только для конкретного пользователя?
Да, для этого используйте условное оформление в СКД с проверкой имени пользователя или права доступа (RLS). Например, в настройках отчета добавьте правило:
Если Пользователь.Имя = "Петров" Тогда
Оформление.Скрыть = Истина;
КонецЕсли;
Или настройте роль пользователя, запретив просмотр определенных полей.
Почему после скрытия поля в макете отчет перестал открываться?
Это типичная ошибка при удалении поля, которое используется в вычислениях или группировках. Проверьте:
- 🔹 Зависимости в схеме компоновки данных (вкладка
Настройки → Структура). - 🔹 Формулы в вычисляемых полях (
Настройки → Вычисляемые поля). - 🔹 Ошибки в журнале регистрации (
Администрирование → Журнал регистрации).
Восстановите поле и проверьте его участие в логике отчета.
Как скрыть поле в отчете, экспортируемом в Excel?
Стандартные методы скрытия (через настройки или СКД) не всегда работают при экспорте. Решения:
- Используйте постобработку файла Excel через
COM-объект:
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Open(ИмяФайла);
Лист = Книга.Worksheets(1);
Лист.Columns("D:D").Hidden = Истина; // Скрываем колонку D
Книга.Save();
Excel.Quit();
2. Модифицируйте процедуру экспорта в модуле отчета, удаляя ненужные колонки перед сохранением.
Можно ли скрыть поле в отчете на управляемых формах?
Да, для отчетов на управляемых формах используйте:
- 🔹 Настройку динамического списка (кнопка
Ещё → Настроить список). - 🔹 Серверные процедуры в модуле формы:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементыФормы.ТаблицаОтчета.Колонки.Удалить("НенужнаяКолонка");
КонецПроцедуры
Как вернуть скрытое поле обратно?
Способ зависит от метода скрытия:
- 🔄 Если поле скрыто через настройки пользователя — верните галочку в
Настроить список. - 🔄 Если поле удалено из макета — восстановите его через конфигуратор или резервную копию.
- 🔄 Если поле скрыто через условное оформление — удалите или измените правило в настройках СКД.
Для восстановления макета из резервной копии используйте:
ЗагрузитьКонфигурациюИзФайла("C:\Backup\config.cf", Ложь);