Работа с дополнительными листами в 1С:Предприятие — одна из самых востребованных задач при настройке документов, справочников и отчетов. Чаще всего необходимость добавить доп.лист возникает, когда стандартных полей формы недостаточно для бизнес-процессов компании: нужно разместить дополнительную аналитику, комментарии, расширенные реквизиты или связать данные из разных разделов программы. При этом подходы к созданию листов радикально отличаются в зависимости от того, работаете ли вы с управляемыми формами (1С 8.3) или обычными формами (1С 8.2).
В этой статье разберем три основных способа добавления дополнительных листов — от простого редактирования через конструктор до программного создания с использованием языка 1С:Предприятие. Особое внимание уделим типичным ошибкам, которые приводят к потере данных при обновлении конфигурации или конфликтам с типовыми механизмами. Все примеры актуальны для последних релизов платформы 8.3.22+ и проверены на конфигурациях 1С:Бухгалтерия 3.0, 1С:Управление торговлей 11 и 1С:Зарплата и управление персоналом 3.1.
1. Способ: Добавление доп.листа через конструктор форм (без программирования)
Самый быстрый метод, который подойдет пользователям без навыков программирования. Работает для управляемых форм в режиме 1С:Предприятие (не путать с режимом конфигуратора!). Основное ограничение: новые листы будут доступны только в текущей базе и могут исчезнуть после обновления типовой конфигурации.
Алгоритм действий:
- 📌 Откройте документ или справочник, для которого нужен доп.лист (например,
Заказ покупателяилиНоменклатура). - 🔧 Перейдите в меню
Все действия → Изменить форму(или нажмитеShift+F2). - 📄 В открывшемся конструкторе выберите вкладку
Элементыи нажмитеДобавить группу→Страница. - ✏️ Задайте название новой страницы (например, "Доп.информация") и перетащите на неё нужные реквизиты из палитры элементов.
Важно: если в палитре нет требуемых реквизитов, их придется предварительно добавить в конфигураторе (раздел Объекты конфигурации → [Ваш документ/справочник] → Реквизиты). Без этого шага новые поля просто не отобразятся в конструкторе.
Если после добавления листа он не отображается в рабочем режиме, проверьте права пользователя: в ролях должна быть галочка "Изменение форм" для соответствующего объекта.
2. Способ: Программное создание доп.листа в конфигураторе
Для постоянного добавления листов, которые не исчезнут после обновлений, потребуется редактирование конфигурации. Этот метод подходит администраторам и разработчикам, которые имеют доступ к конфигуратору. Рассмотрим процесс на примере документа Реализация товаров и услуг в 1С:Управление торговлей 11.
Пошаговая инструкция:
- Откройте конфигуратор (
1Cv8.exe /Config) и найдите нужный объект в дереве метаданных. - Перейдите на вкладку
Формы→ выберите форму документа (обычно этоФормаДокумента). - В открывшемся редакторе форм добавьте новую
Страницучерез панель элементов. - Настройте свойства страницы:
- 📌
Имя:ДополнительнаяИнформация(латиницей, без пробелов) - 📌
Заголовок: "Доп. данные" (отобразится пользователю) - 📌
Видимость: установите условие, если лист должен показываться не всегда (например, только для определенных видов документов)
- 📌
Реквизиты объекта.Критически важный момент: если вы добавляете новые реквизиты, не забудьте указать их Тип значения и при необходимости связать с другими объектами конфигурации (например, со справочником Контрагенты или документом Счета на оплату).
Доп.лист отображается в превью формы|Все реквизиты имеют корректные типы данных|Указаны права доступа для ролей|Сделан бэкап конфигурации перед изменениями
-->
3. Способ: Динамическое создание листов через код (1С 8.3)
Для гибкого управления листами, которые должны появляться только при определенных условиях (например, для конкретного вида документа или пользователя), используется программный код. Этот метод требует знания языка 1С:Предприятие и обычно применяется для управляемых форм.
Пример кода для добавления доп.листа в форму документа ПоступлениеТоваров:
&НаКлиенте
Процедура ДокументОбъект_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(Объект.ВидДокумента) Тогда
Возврат;
КонецЕсли;
// Добавляем страницу только для поступлений от поставщика "Рога и Копыта"
Если Объект.Контрагент.Наименование = "Рога и Копыта" Тогда
ЭлементыФормы.Вставить("ДопЛистПоставщик", Тип("Страница"));
ЭлементыФормы.ДопЛистПоставщик.Заголовок = "Спец.условия поставщика";
// Добавляем реквизит "Срок действия скидки"
ЭлементыФормы.Вставить("ПолеСкидка", Тип("ПолеВвода"));
ЭлементыФормы.ПолеСкидка.ПутьКДанным = "Объект.СрокДействияСкидки";
ЭлементыФормы.ПолеСкидка.Родитель = ЭлементыФормы.ДопЛистПоставщик;
КонецЕсли;
КонецПроцедуры
Особенности этого подхода:
- 🔄 Лист создается динамически при открытии формы, поэтому не требует правки конфигурации.
- 🔒 Код выполняется на клиенте, но критические проверки (например, доступ к реквизитам) лучше выносить на сервер.
- ⚡ Подходит для сложной логики, когда visibility листа зависит от нескольких условий.
Через конструктор форм|В конфигураторе|Программно через код|Не добавляю листы
-->
4. Типичные ошибки и как их избежать
Даже опытные пользователи 1С сталкиваются с проблемами при работе с дополнительными листами. Вот наиболее распространенные ошибки и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Лист исчез после обновления | Изменения сделаны только через конструктор форм | Перенести изменения в конфигуратор или использовать расширения |
| Данные не сохраняются | Реквизиты не добавлены в объект метаданных | Проверить наличие реквизитов в разделе Реквизиты документа/справочника |
| Лист не отображается у других пользователей | Не хватает прав в ролях | Настроить права на изменение форм в ролях (Администрирование → Роли) |
| Конфликт с типовыми механизмами | Использовано зарезервированное имя страницы | Давать листам уникальные имена (например, ДопЛист_Наименование) |
Особая категория ошибок связана с обновлениями типовой конфигурации. Если вы добавили лист через конструктор форм, при следующем обновлении он будет перезаписан стандартной формой. Чтобы этого избежать, используйте:
- 🛠 Расширения конфигурации (рекомендуемый способ для типовых решений)
- 📦 Внешние обработки с подключаемыми формами
- 🔄 Механизм сравнения и объединения при обновлении
Что делать если после обновления исчезли все дополнительные листы?
Если вы не использовали расширения, единственный способ вернуть листы — восстановить конфигурацию из бэкапа, сделанного ДО обновления. В дальнейшем рекомендуется:
1. Выгрузить измененные формы в .epf файл через меню Файл → Сохранить данные формы как...
2. После обновления загрузить их обратно через Файл → Открыть
3. Или перенести изменения в расширение конфигурации.
5. Расширения конфигурации: безопасный способ добавить доп.листы
С выходом платформы 1С:Предприятие 8.3.6 появился механизм расширений конфигурации, который позволяет модифицировать типовые решения без внесения изменений в саму конфигурацию. Это идеальный вариант для добавления дополнительных листов, так как:
- 🔄 Расширения не затираются при обновлении типовой конфигурации.
- 🛡 Изменения изолированы от основной конфигурации, что снижает риск ошибок.
- 🔧 Можно отключать/включать расширения без перезапуска базы.
Инструкция по добавлению доп.листа через расширение:
- В конфигураторе выберите
Конфигурация → Расширения → Создать расширение. - Укажите имя (например,
ДопЛистыДляДокументов) и сохраните. - В дереве расширения найдите нужный объект (например,
Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента). - Добавьте новую страницу и реквизиты аналогично работе в основной конфигурации.
- Сохраните расширение и обновите конфигурацию базы данных (
Конфигурация → Обновить конфигурацию базы данных).
Преимущество этого метода в том, что вы можете экспортировать расширение в файл .cfe и переносить его между базами. Например, если у вас несколько идентичных баз 1С:Бухгалтерия 3.0 для разных организаций, достаточно один раз создать расширение с доп.листами и затем импортировать его в остальные базы.
Расширения конфигурации — единственный официально поддерживаемый фирмой 1С способ модификации типовых решений без потери изменений при обновлениях.
6. Особенности работы с доп.листами в отчетах и обработках
Дополнительные листы часто требуются не только в документах, но и в отчетах (например, для детализации данных) или обработках (для ввода параметров). Здесь есть свои нюансы:
Для управляемых форм отчетов:
- 📊 Листы добавляются в разделе
ФормаобъектаОтчет. - 🔗 Для связи с данными используйте параметры отчета или временные таблицы.
- 📌 Пример: в отчете
Оборотно-сальдовая ведомостьможно добавить лист "Детализация по контрагенту" с дополнительными фильтрами.
Для обработок:
- 🛠 Листы создаются в основной форме обработки (
ОсновнаяФорма). - 💾 Данные с листов сохраняются в реквизитах обработки или передаются в экспортируемые файлы.
- ⚠️ Внимание: если обработка используется для загрузки данных, убедитесь, что доп.листы не конфликтуют с основной логикой обмена.
Пример кода для добавления листа в отчет Анализ продаж:
&НаКлиенте
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Добавляем страницу для дополнительных фильтров
ЭлементыФормы.Вставить("СтраницаДопФильтры", Тип("Страница"));
ЭлементыФормы.СтраницаДопФильтры.Заголовок = "Расширенные фильтры";
// Добавляем поле для фильтра по менеджеру
ЭлементыФормы.Вставить("ПолеМенеджер", Тип("ПолеВвода"));
ЭлементыФормы.ПолеМенеджер.ПутьКДанным = "Объект.ФильтрМенеджер";
ЭлементыФормы.ПолеМенеджер.Родитель = ЭлементыФормы.СтраницаДопФильтры;
КонецПроцедуры
Для отчетов с большим количеством доп.листов рекомендуется использовать механизм Компоновка данных — он позволяет гибко настраивать вывод информации без перегрузки формы.
7. Оптимизация производительности при работе с доп.листами
Чрезмерное количество дополнительных листов и реквизитов может замедлить работу 1С, особенно в крупных базах с тысячами документов. Следующие рекомендации помогут избежать проблем с производительностью:
- 🚀 Ленивая загрузка: если лист содержит тяжелые данные (например, таблицы с тысячами строк), загружайте их только при открытии листа, а не при открытии формы. Используйте событие
ПриАктивизации:
&НаКлиенте
Процедура ДопЛист_ПриАктивизации(Элемент)
Если НЕ ЗначениеЗаполнено(Объект.ДанныеДопЛиста) Тогда
Объект.ЗагрузитьДанныеДопЛиста();
КонецЕсли;
КонецПроцедуры
- 🗃 Кэширование: для часто используемых данных (например, справочники регионов или типы номенклатуры) используйте кэш на клиенте:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если НЕ ЗначениеЗаполнено(КэшСправочников) Тогда
КэшСправочников = Новый Соответствие();
КэшСправочников.Вставить("Регионы", Справочники.Регионы.Выбрать());
КонецЕсли;
КонецПроцедуры
- 📉 Ограничение видимости: скрывайте листы, которые используются редко, с помощью свойства
Видимость:
ЭлементыФормы.ДопЛист.Видимость = (ТекущийПользователь.Имя = "Администратор");
Для баз с более чем 10 000 документов в месяц также рекомендуется:
- 🔄 Переносить исторические данные в архивные базы.
- 🗂 Использовать
Регламентные заданиядля очистки временных данных с доп.листов. - 📊 Оптимизировать запросы, которые загружают данные для отображения на листах.
Как проверить нагрузку от доп.листов?
Включите Монитор производительности (Администрирование → Тестирование и исправление → Монитор производительности) и отслеживайте время выполнения процедур, связанных с открытием форм. Если загрузка формы занимает более 2 секунд, требуется оптимизация.
8. Примеры реальных задач с доп.листами
Рассмотрим практические кейсы, где дополнительные листы решают бизнес-задачи:
Кейс 1: Доп.лист для комментариев в заказах покупателей
В компании требуется фиксировать историю переговоров с клиентом прямо в документе Заказ покупателя. Решение:
- 📄 Создан лист "История коммуникаций" с табличной частью.
- 📅 В таблице поля:
Дата,Сотрудник,Текст комментария. - 🔒 Права настроены так, что редактировать может только менеджер по продажам.
Кейс 2: Расширенные реквизиты для номенклатуры
Для склада нужно хранить дополнительные характеристики товаров (вес, объем, срок годности), которых нет в типовой конфигурации. Решение:
- 📦 Добавлен лист "Логистические параметры" в справочник
Номенклатура. - ⚖️ Поля:
ВесБрутто,Объемм3,СрокГодностиДней. - 📊 Данные используются в отчете "Загрузка склада по объему".
Кейс 3: Доп.лист для согласования в документах расходов
В компании введен многоуровневый процесс согласования расходов. Решение:
- 👥 Создан лист "Согласование" с полями для каждого уровня (руководитель отдела, финансовый директор).
- ✅ Добавлены флаги
Согласовано1Уровень,Согласовано2Уровень. - 📧 Настроены уведомления при изменении статуса согласования.
Во всех случаях дополнительные листы позволили автоматизировать процессы, которые ранее велись вручную в Excel или на бумаге, сократив время обработки документов на 30-40%.
Документы (заказы, реализации)|Справочники (номенклатура, контрагенты)|Отчеты|Обработки|Другое
-->
FAQ: Ответы на частые вопросы
Можно ли добавить доп.лист в 1С 8.2 (обычные формы)?
Да, но процесс отличается от 8.3. В 1С 8.2 нужно:
- Открыть конфигуратор и найти форму объекта.
- В редакторе форм добавить элемент
Страницаиз палитры. - Настроить свойства страницы (имя, заголовок, порядок).
- Добавить реквизиты на страницу и связать их с данными объекта.
Важно: в 8.2 нет механизма расширений, поэтому изменения придется переносить вручную при обновлениях.
Почему после добавления листа данные не сохраняются?
Наиболее вероятные причины:
- Реквизиты, размещенные на листе, не добавлены в объект метаданных (документ/справочник).
- Нарушена связь между элементами формы и данными (проверьте свойство
ПутьКДанным). - Отсутствуют права на запись для текущего пользователя.
- В коде формы есть ошибка в процедуре
ПередЗаписью, которая сбрасывает значения.
Решение: проверьте журнал регистрации (Администрирование → Журнал регистрации) на наличие ошибок при сохранении.
Как сделать доп.лист видимым только для определенных пользователей?
Используйте свойство Видимость с проверкой прав:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭлементыФормы.ДопЛист.Видимость = Пользователи.ТекущийПользователь().ГруппыПользователей.Найти("Администраторы") <> Неопределено;
КонецПроцедуры
Альтернативный вариант — настройка через роли:
- Создайте новую роль (например,
ПросмотрДопЛистов). - В настройках формы установите право "Просмотр" для страницы только для этой роли.
- Назначьте роль нужным пользователям.
Можно ли перенести доп.листы из одной базы в другую?
Способы переноса зависят от метода создания листов:
- Через конструктор форм: экспортируйте форму в файл
.epfи импортируйте в другую базу. - Через конфигуратор: используйте выгрузку/загрузку конфигурации (
.cf) или переносите изменения черезСравнить и объединить конфигурации. - Через расширение: экспортируйте расширение в файл
.cfeи импортируйте его в целевую базу.
⚠️ Внимание: при переносе проверьте совместимость версий платформы и конфигураций. Например, расширение, созданное в 1С:Бухгалтерия 3.0.100, может не работать в версии 3.0.80.
Как добавить на доп.лист таблицу с возможностью редактирования?
Для добавления редактируемой таблицы:
- В объекте (документе/справочнике) создайте табличную часть (раздел
Табличные части). - В форме добавьте элемент
Табличное полеи свяжите его с созданной табличной частью через свойствоПутьКДанным. - Настройте колонки таблицы, перетащив нужные реквизиты из палитры.
Пример для документа Заказ покупателя:
// Создаем табличную часть "ДопИнформация" в объекте
ТабличнаяЧасть = Документы.ЗаказПокупателя.ТабличныеЧасти.Добавить();
ТабличнаяЧасть.Имя = "ДопИнформация";
ТабличнаяЧасть.Заголовок = "Дополнительная информация";
// Добавляем колонки
Колонка1 = ТабличнаяЧасть.Колонки.Добавить();
Колонка1.Имя = "ДатаКомментария";
Колонка1.Заголовок = "Дата";
Колонка1.ТипЗначения = Тип("Дата");