При работе с типовыми конфигурациями, такими как 1С:Управление торговлей 11.4, пользователи иногда сталкиваются с ситуацией, когда созданные дополнительные реквизиты не отображаются в документе, хотя в настройках Свойства они активированы. Чаще всего эта проблема проявляется в документе Передача товаров между организациями. Давайте разберем, почему это происходит и как исправить ситуацию, не нарушая работу системы.
Механизм Библиотеки стандартных подсистем (БСП) использует технологию отложенной инициализации дополнительных реквизитов для ускорения открытия форм. Суть проста: система не отрисовывает реквизиты сразу, а подгружает их только тогда, когда пользователь переходит на определенную вкладку (обычно это страница СтраницаДополнительно).
Ошибка возникает в процедуре СтраницыПриСменеСтраницы модуля формы. В типовой реализации платформа пытается проверить, существует ли в структуре ПараметрыСвойств ключ, соответствующий имени текущей страницы. Если имя страницы в конфигураторе не совпадает с тем, что ожидает код БСП, или если это имя не найдено в структуре, условие не выполняется, и процедура инициализации реквизитов попросту пропускается.
Чтобы восстановить корректное отображение реквизитов, нам необходимо модифицировать логику проверки в модуле формы документа. Рассмотрим два основных подхода: временное исправление и более корректную настройку.
Вариант 1: Устранение критического условия (Быстрое решение)
Проанализируем процедуру СтраницыПриСменеСтраницы. В исходном коде она выглядит примерно так:
&НаКлиенте
Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
// СтандартныеПодсистемы.Свойства
Если ЭтотОбъект.ПараметрыСвойств.Свойство(ТекущаяСтраница.Имя)
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
Причиной сбоя является условие ЭтотОбъект.ПараметрыСвойств.Свойство(ТекущаяСтраница.Имя), так как имя страницы не всегда корректно определяется как ключ структуры. Чтобы заставить систему работать, мы можем изменить логику проверки:
СтраницыПриСменеСтраницы.СтраницаДополнительно или принудительно вызывало инициализацию.Вариант 2: Корректировка условия для предотвращения лишних вызовов
Простое удаление условия вызовет инициализацию свойств при переключении на любую вкладку, что может негативно сказаться на производительности. Более правильным будет жесткое указание целевой страницы:
Если ТекущаяСтраница.Имя = "СтраницаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
При внесении подобных правок помните о следующих важных моментах:
Расширения конфигурации. В расширении можно создать процедуру СтраницыПриСменеСтраницы, переопределив штатное поведение через аннотацию &После или &Вместо.ПараметрыСвойств в режиме отладчика. Возможно, при разработке конфигурации конкретно для этого документа разработчики 1С переименовали страницу, что и вызвало рассинхронизацию с кодом БСП.Используя предложенные методы, вы сможете вернуть работоспособность дополнительных реквизитов и обеспечить их корректное появление на форме документа без необходимости перепиливать всю конфигурацию.