Как добавить дополнительные реквизиты и сведения в документ «График отпусков» в 1С:ЗУП 3.1

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

В типовых конфигурациях 1С, таких как «Зарплата и управление персоналом 3.1», механизм дополнительных реквизитов и сведений реализован на базе Библиотеки стандартных подсистем (БСП). Однако разработчики включают эту возможность не для всех объектов. Документ ГрафикОтпусков — один из тех, где этот функционал по умолчанию может отсутствовать в списке доступных наборов. В данной статье мы разберем, как расширить возможности программы и добавить поддержку произвольных полей для этого документа, сохранив при этом конфигурацию на поддержке.

Различие между дополнительными реквизитами и сведениями

Прежде чем приступать к разработке, давайте проанализируем, какой именно механизм нам нужен, так как они имеют принципиальные технические различия:

  1. Дополнительные сведения — хранятся в отдельном регистре сведений ДополнительныеСведения. Для их внедрения не нужно изменять структуру самого документа (добавлять таблицы). Они удобны, если данные нужны редко и их не обязательно видеть сразу в основной форме.
  2. Дополнительные реквизиты — хранятся в табличной части самого объекта. Они позволяют выводить поля непосредственно на форму документа так, будто это штатные реквизиты. Для их работы обязательна доработка метаданных.

Рассмотрим наиболее востребованный вариант — добавление именно дополнительных реквизитов, которые будут отображаться на форме документа График отпусков.

Шаг 1: Использование расширения конфигурации

Чтобы не снимать конфигурацию с поддержки и обеспечить легкость обновлений, мы будем использовать механизм расширений. Создадим новое расширение и добавим в него документ ГрафикОтпусков, а также справочник НаборыДополнительныхРеквизитовИСведений.

Важный нюанс: в расширении необходимо убедиться, что включена возможность изменения структуры данных, так как нам потребуется добавить новую табличную часть.

Шаг 2: Модификация метаданных документа

Для того чтобы БСП «узнала» документ как объект, поддерживающий доп. реквизиты, нам необходимо добавить в него табличную часть. Разберем по шагам состав этой таблицы:

  1. Добавим в документ ГрафикОтпусков (в расширении) табличную часть с именем ДополнительныеРеквизиты.
  2. Внутри табличной части создадим следующие реквизиты:
    • Свойство — тип ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения.
    • Значение — тип Характеристика.ДополнительныеРеквизитыИСведения.
    • ТекстоваяСтрока — тип Строка (неограниченной длины).

Проанализируем ситуацию: наличие этой табличной части является сигналом для программных механизмов БСП о том, что объект потенциально может хранить дополнительные данные.

Шаг 3: Регистрация объекта в наборах свойств

Теперь выясним причину, по которой документ не отображается в режиме «1С:Предприятие» в списке наборов. Система ищет соответствие между типом ссылки объекта и предопределенным элементом в справочнике НаборыДополнительныхРеквизитовИСведений.

Поскольку мы не можем напрямую добавить предопределенный элемент в расширение для системного справочника, у нас есть два пути:

  1. Программно создать элемент в этом справочнике при запуске системы или через консоль кода.
  2. Добавить в расширение общий модуль УправлениеСвойствамиПереопределяемый и прописать регистрацию там.

Рассмотрим программный метод регистрации через переопределяемый модуль. Нам нужно найти процедуру ПриОпределенииОбъектовСДополнительнымиРеквизитами и добавить наш документ:


&После("ПриОпределенииОбъектовСДополнительнымиРеквизитами")
Процедура Расш1_ПриОпределенииОбъектовСДополнительнымиРеквизитами(Объекты)
    Объекты.Вставить(Метаданные.Документы.ГрафикОтпусков);
КонецПроцедуры

Шаг 4: Интеграция в форму документа

Даже если мы добавили ТЧ и зарегистрировали набор, поля на форме не появятся сами собой. Нам нужно модифицировать форму документа ГрафикОтпусков. Рассмотрим, как это сделать в расширении:

В модуле формы документа, в процедуре ПриСозданииНаСервере, необходимо вызвать обработчик БСП. Это заставит систему динамически отрисовать дополнительные поля на форме.


&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ПараметрыПодсистемы = УправлениеСвойствами.ПараметрыРедактированияСвойств(ЭтотОбъект);
    ПараметрыПодсистемы.ИмяГруппыДополнительныхРеквизитов = "ГруппаДополнительныеРеквизиты"; // Укажите имя группы на форме
    УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыПодсистемы);
    
КонецПроцедуры

Не забудьте предварительно создать на форме документа обычную группу (без заголовка или с ним), в которую система будет «складывать» новые поля. Назовите её, например, ГруппаДополнительныеРеквизиты.

Шаг 5: Настройка характеристик для отчетов и списков

Выясним еще один важный момент: чтобы добавленные реквизиты можно было использовать в списках документов (через «Изменить форму») или выводить в отчеты, необходимо настроить Характеристики в метаданных документа. Это делается на вкладке «Данные» в Конфигураторе.

Разберем параметры настройки характеристик:

После этой настройки механизм СКД (Система компоновки данных) автоматически увидит ваши новые реквизиты как полноценные поля документа в любом отчете по графикам отпусков.

Шаг 6: Обработка записи данных

Чтобы данные корректно сохранялись, в модуле объекта (через расширение) желательно проверить наличие вызовов БСП в обработчиках записи. Обычно в современных версиях ЗУП 3.1 базовые механизмы уже интегрированы в общие модули, но если реквизиты не сохраняются, проверьте наличие кода в ПередЗаписью:


&После("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    УправлениеСвойствами.ПередЗаписьюОбъекта(ЭтотОбъект);
КонецПроцедуры

Резюме

Мы проанализировали комплексный подход к добавлению функционала дополнительных реквизитов. Главное помнить: простого добавления табличной части недостаточно. Магия БСП работает только тогда, когда соблюдена цепочка: Метаданные (ТЧ) -> Регистрация в наборах (код) -> Вызов на форме (динамическое создание элементов) -> Настройка характеристик (для отчетов).

Используя расширения, вы решаете задачу максимально корректно, не создавая сложностей при последующих обновлениях программы 1С:ЗУП КОРП.

← На главную