В процессе работы с конфигурацией «Управление торговым предприятием» (УТП) версии 1.2 или другими решениями на базе обычных форм пользователи иногда сталкиваются с крайне странным поведением интерфейса. При нажатии на кнопку «Создать на основании» в форме документа вместо привычного перечня документов, которые должны вводиться на основании текущего, программа выводит список документов, которые сами являются основанием для него. Происходит своего рода «логическая инверсия» меню. Проанализируем, почему это происходит и какими методами можно устранить данную техническую проблему.
Данная ситуация не является следствием неправильной настройки конфигурации пользователем или ошибок в программном коде конкретного документа. Рассмотрим техническую сторону вопроса: это известный баг платформы 1С:Предприятие 8.2, который наиболее остро проявлялся в релизах ветки 8.2.18 (например, 8.2.18.61, 8.2.18.102).
Суть проблемы заключается в некорректной работе механизма кеширования метаданных. Платформа при динамическом построении командного интерфейса ошибочно обращается не к той коллекции объектов. Вместо того чтобы прочитать список документов, где текущий объект указан в свойстве Вводится на основании, она подставляет список из свойства Является основанием для самого этого документа. В итоге на документе «Реализация товаров и услуг» мы видим предложение создать «Заказ покупателя», хотя логически должно быть наоборот.
Выясним, какой способ решения является самым надежным. Поскольку корень проблемы лежит в исполняемых файлах самой платформы, наиболее правильным решением будет переход на стабильный релиз. Разработчики 1С признали этот дефект и выпустили исправления в последующих сборках.
8.2.18.хх и номер сборки ниже 1289, вы находитесь в зоне риска.8.2.19.Иногда обновление платформы невозможно провести оперативно, или ошибка сохраняется из-за «застрявших» временных файлов. Посмотрим, как очистить кеш вручную. Это часто помогает, если проблема проявляется не у всех пользователей сразу.
Проделаем следующие действия на рабочем месте пользователя:
%AppData%\Local\1C\1Cv82%AppData%\Roaming\1C\1Cv82Также эффективно использовать параметр запуска /ClearCache. Для этого в окне списка информационных баз выберем нужную базу, нажмем «Изменить», перейдем на последнюю закладку и в поле «Дополнительные параметры запуска» впишем:
/ClearCache
Этот параметр принудительно очистит кеш запросов к серверу при следующем запуске.
Если «снятие с поддержки» помогло автору вопроса, это произошло потому, что данное действие вызывает полную перезапись внутренних таблиц связей метаданных в файле базы данных (или таблиц SQL). Однако снимать конфигурацию с поддержки — это радикальный и не всегда оправданный шаг. Разберем более мягкие варианты реструктуризации.
Способ А: Фиктивное изменение.
Способ Б: Тестирование и исправление (ТиИ). Проанализируем состояние базы через штатную утилиту:
Иногда платформа запоминает некорректное состояние командного интерфейса в настройках конкретного пользователя. В этом случае полезно выполнить сброс панелей. Посмотрим, как это сделать в режиме «1С:Предприятие»:
Подводя итог, можно сказать, что ситуация с перепутанными списками ввода на основании — это типичный «призрак» платформы 8.2.18. Не стоит пугаться и сразу снимать базу с поддержки. Начнем с очистки кеша и тестирования базы, а в качестве окончательного решения запланируем обновление платформы до актуального релиза. Помните, что в мире 1С «чудес не бывает», и большинство подобных аномалий связано с некорректной работой кэширующих механизмов при работе с метаданными.