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