Почему исчезают дополнительные свойства при сохранении организации в 1С и как это исправить?

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

Ситуация, когда дополнительные реквизиты или сведения корректно отображаются в одних справочниках (например, в «Контрагентах»), но полностью игнорируются или затираются в других (например, в «Организациях»), является классической проблемой для нетиповых или некорректно обновленных конфигураций на базе 1С:Предприятие 8.3. Основная причина кроется в механизме работы Библиотеки стандартных подсистем (БСП), которая требует не только наличия данных в регистрах, но и строго определенного программного кода в модулях форм.

В рамках данной статьи мы подробно разберем, почему свойства могут «слетать» при перезаписи, как обеспечить их корректное отображение на форме и какие настройки метаданных необходимо проверить в первую очередь.

Разберем механизм работы свойств в 1С

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

Если вы видите, что в регистре сведений ЗначенияСвойствОбъектов записи существуют и программно читаются, но на форме их нет — значит, форма «не знает», что она должна их отобразить. Еще опаснее ситуация, когда при сохранении (записи) объекта свойства удаляются. Это происходит из-за того, что механизм записи объекта инициирует обновление связанных свойств, и если форма не передала актуальный набор данных, система считает, что все свойства были очищены пользователем, и добросовестно затирает их в базе данных.

Шаг 1. Проверка программного кода в модуле формы

Первым делом нам необходимо сравнить модуль формы справочника «Организации» с модулем «Контрагентов», где всё работает правильно. Ищите вызовы общего модуля УправлениеСвойствами. В нетиповых конфигурациях эти вызовы часто забывают добавить при создании новых форм или при копировании объектов.

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

1. Инициализация при создании формы

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


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

2. Чтение существующих значений

Чтобы система подгрузила данные из регистра при открытии уже существующего элемента, необходим вызов в обработчике ПриЧтенииНаСервере:


&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    
    // Чтение значений дополнительных реквизитов
    УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
    
КонецПроцедуры

3. Сохранение изменений (критически важно)

Именно отсутствие этого вызова приводит к «затиранию» свойств. Когда бухгалтер нажимает «Записать», срабатывает серверный обработчик. Если в нем нет команды на обработку свойств, БСП получает пустой набор данных и очищает регистр.


&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    
    // Подготовка свойств к записи
    УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
    
КонецПроцедуры

Шаг 2. Проверка настройки наборов свойств

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

  1. Перейдите в раздел Администрирование — Общие настройки — Дополнительные реквизиты и сведения.
  2. Найдите в списке справочник «Организации».
  3. Убедитесь, что для него создан набор. В нетиповых конфигурациях может случиться так, что создано несколько наборов для одного справочника, и форма «смотрит» не в тот.
  4. Проверьте, что созданное вами свойство входит именно в тот набор, который назначен объекту «Организация».

Важный нюанс: В коде формы справочника иногда жестко прописывается имя набора. Если вы копировали форму из другого справочника, проверьте, не осталось ли там упоминания «Контрагентов» вместо «Организаций» в параметрах инициализации свойств.

Шаг 3. Конфликт между Табличной частью и Регистром

Выясним причину разного поведения справочников. В 1С есть два способа хранения доп. реквизитов:

Проанализируем структуру справочника «Организации» в конфигураторе. Если у «Контрагентов» есть табличная часть ДополнительныеРеквизиты, а у «Организаций» — нет, то они будут работать через разные механизмы. Если вы добавили свойство как «Регистровое» (сведение), а форма настроена на работу с табличной частью (реквизит), данные отображаться не будут.

Рекомендация: Убедитесь, что тип свойства (реквизит или сведение) соответствует архитектуре справочника в вашей конкретной базе.

Шаг 4. Права доступа и функциональные опции

Иногда решение лежит на поверхности. Проанализируем ситуацию с правами пользователя. Даже если программист видит свойства, бухгалтер может их не видеть из-за ограничений прав (RLS) на регистр ЗначенияСвойствОбъектов. При записи объекта под правами бухгалтера система пытается обновить записи регистра. Не имея прав на чтение существующих записей в этом регистре, система может интерпретировать это как отсутствие данных и перезаписать их «пустотой».

Также проверьте общую функциональную опцию ИспользоватьДополнительныеРеквизитыИСведения. Хотя автор темы утверждает, что у контрагентов всё работает, в сильно измененных базах эта опция может быть продублирована или разделена по разным участкам учета.

Итоги и план действий

Подведем итог. Чтобы свойства организации перестали затираться и начали отображаться на форме, выполните следующие действия:

  1. Сравните модули форм: убедитесь, что в «Организациях» присутствуют вызовы УправлениеСвойствами в процедурах ПриСозданииНаСервере, ПриЧтенииНаСервере и ПередЗаписьюНаСервере.
  2. Проверьте наличие группы на форме: на форме элемента должна существовать группа (обычно обычная группа без отображения), которая указана в параметре ГруппаДляРазмещения в коде инициализации.
  3. Проверьте справочник «Наборы свойств»: убедитесь, что для организации создан корректный набор и ваше свойство включено в него.
  4. Синхронизируйте типы: используйте «Дополнительные реквизиты», если в справочнике есть соответствующая ТЧ, или «Дополнительные сведения», если ее нет.

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

← На главную