Почему в 1С:Управление торговлей 11.4 не отображаются дополнительные реквизиты на форме документа?

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

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

Причина возникновения проблемы

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

Ошибка возникает в процедуре СтраницыПриСменеСтраницы модуля формы. В типовой реализации платформа пытается проверить, существует ли в структуре ПараметрыСвойств ключ, соответствующий имени текущей страницы. Если имя страницы в конфигураторе не совпадает с тем, что ожидает код БСП, или если это имя не найдено в структуре, условие не выполняется, и процедура инициализации реквизитов попросту пропускается.

Пошаговое решение проблемы

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

Вариант 1: Устранение критического условия (Быстрое решение)

Проанализируем процедуру СтраницыПриСменеСтраницы. В исходном коде она выглядит примерно так:


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

Причиной сбоя является условие ЭтотОбъект.ПараметрыСвойств.Свойство(ТекущаяСтраница.Имя), так как имя страницы не всегда корректно определяется как ключ структуры. Чтобы заставить систему работать, мы можем изменить логику проверки:

  1. Откройте модуль формы документа в конфигураторе.
  2. Найдите процедуру СтраницыПриСменеСтраницы.
  3. Измените условие так, чтобы оно явно проверяло страницу СтраницаДополнительно или принудительно вызывало инициализацию.

Вариант 2: Корректировка условия для предотвращения лишних вызовов

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


Если ТекущаяСтраница.Имя = "СтраницаДополнительно"
    И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
    
    СвойстваВыполнитьОтложеннуюИнициализацию();
    УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;

Рекомендации по реализации

При внесении подобных правок помните о следующих важных моментах:

Используя предложенные методы, вы сможете вернуть работоспособность дополнительных реквизитов и обеспечить их корректное появление на форме документа без необходимости перепиливать всю конфигурацию.

← На главную