В практике сопровождения типовых конфигураций на платформе 1С:Предприятие 8.3 (например, 1С:Бухгалтерия предприятия 3.0) иногда возникает критическая ситуация: пользователи внезапно обнаруживают, что в журналах и формах списков документов (таких как «Поступление (акты, накладные)», «Реализация (акты, накладные)», «Авансовые отчеты») исчезли стандартные реквизиты — Дата и Номер. При попытке настроить форму через меню «Еще — Изменить форму» оказывается, что этих полей нет даже в списке доступных реквизитов. Более того, при попытке интерактивной работы или проведения документов система выдает программную ошибку:
Поле объекта не обнаружено (Ссылка)
Оповестить("Запись_ПоступлениеТоваровУслуг", , ДанныеСтроки.Ссылка);
Стандартные первичные действия — очистка пользовательского и серверного кэша, сброс пользовательских настроек и тестирование базы — в этом случае не дают никакого результата. Проанализируем, почему возникает такое поведение платформы и как по шагам восстановить нормальную работу списков.
Выясним причину такого сбоя. В современных типовых конфигурациях управляемые формы списков документов практически никогда не отображают таблицы напрямую. Вместо этого используется динамический список (основной реквизит формы типа ДинамическийСписок), который строится на основе сложных запросов, часто переопределяемых программно в модуле формы при ее открытии или инициализации.
Главный виновник описываемой ситуации — изменение системного свойства конфигурации «Режим совместимости». Обычно это происходит при попытке администратора или программиста подключить стороннее расширение конфигурации (файл .cfe). Если режим совместимости расширения выше, чем у основной конфигурации, платформа выдает предупреждение и блокирует загрузку. Ошибочно пытаясь обойти это ограничение, специалист открывает свойства корневого элемента метаданных базы и устанавливает параметр «Режим совместимости» в значение «Не использовать» (или повышает его до версии установленной технологической платформы).
После отключения режима совместимости вступают в силу обновленные внутренние механизмы платформы 1С:
Дата, Номер и Ссылка с источником данных.В результате динамический список теряет ключевые поля: колонки пропадают из состава формы, а программный код типовой конфигурации, который обращается к свойству ДанныеСтроки.Ссылка, падает с ошибкой «Поле объекта не обнаружено».
Разберем по шагам, как исправить структуру конфигурации и вернуть динамические списки в рабочее состояние:
Версия 8.3.8, Версия 8.3.10 или иной в зависимости от вашей версии БП 3.0). Узнать исходное значение можно в типовом дистрибутиве того же релиза или в свойствах конфигурации поставщика (меню Конфигурация → Поддержка → Настройка поддержки).F7 или через меню Конфигурация → Обновить конфигурацию базы данных.Посмотрим на правильный порядок действий с расширением, из-за которого возникла проблема. Вместо изменения свойств основной конфигурации необходимо адаптировать само расширение под существующую базу:
Важное ограничение: режим совместимости расширения ни при каких обстоятельствах не может быть старше (выше) режима совместимости основной информационной базы. Если расширение использует синтаксические конструкции или объекты новых версий платформы, понижение его совместимости приведет к ошибкам компиляции. В этом случае правильным системным решением будет штатное обновление всей конфигурации до актуального релиза, где разработчик конфигурации официально поднял режим совместимости.
Рассмотрим завершающий этап. В процессе работы со сбитым режимом совместимости платформа 1С могла зафиксировать дефектное состояние динамических списков (без колонок) в пользовательские системные таблицы настроек. Если после возврата совместимости колонки «Дата» и «Номер» не появились автоматически, выполним сброс персональных настроек:
Документ.ПоступлениеТоваровУслуг.Форма.ФормаСписка).