Каждый администратор, программист или опытный пользователь 1С хотя бы раз сталкивался с ситуацией, когда в копии базы данных привычные механизмы начинают вести себя странно. Типичный пример: при попытке удалить помеченные объекты в конфигурации на обычных формах (например, Управление торговлей 10.3) мы видим дерево ссылок, но двойной клик по документу или справочнику ни к чему не приводит — окно просто не открывается. При этом в рабочей базе всё функционирует исправно.
В этой статье мы подробно разберем, почему возникает данная проблема, проанализируем неочевидные механизмы платформы 1С:Предприятие 8.3 и рассмотрим по шагам несколько эффективных способов решения этой технической неполадки.
Это самая распространенная причина «неоткрытия» документов в копиях баз данных. Платформа 1С сохраняет индивидуальные настройки интерфейса для каждого пользователя локально на компьютере. В этих настройках фиксируются координаты расположения окон, их размеры и состояние (развернуто, свернуто, нормальное).
Когда вы создаете копию базы данных и запускаете ее, платформа может применить старые экранные координаты для новых окон. Если рабочая база ранее открывалась на компьютере с двумя мониторами, а копию вы запустили на ноутбуке или мониторе с меньшим разрешением, то при двойном клике в обработке УдалениеПомеченныхОбъектов документ физически открывается, но его координаты (например, по оси X) уводят окно далеко за границы текущего экрана.
Для того чтобы вернуть окно в зону видимости, выполним следующие действия:
При копировании базы данных (особенно файлового варианта путем копирования файла 1Cv8.1CD или развертывания резервной копии под тем же именем) локальный кэш платформы часто забивается некорректными ссылками. Платформа пытается сопоставить форму документа из кэша старой базы с метаданными новой, что приводит к внутреннему конфликту. В результате метод открытия формы аварийно завершается в фоновом режиме, не выдавая пользователю никаких видимых ошибок.
Для устранения этой проблемы проведем полную очистку кэша по шагам:
%AppData%\Local\1C\1Cv8 и нажмите Enter. Удалите все папки с длинными буквенно-цифровыми названиями (UID-идентификаторами).%AppData%\Roaming\1C\1Cv8.Платформа 1С:Предприятие 8.3 на обычных (неуправляемых) формах имеет известную проблему совместимости с высокими разрешениями экранов и масштабированием Windows (125%, 150% и более). При несовпадении масштабов координаты клика мыши в табличном поле рассчитываются некорректно.
В этот момент платформа «считает», что двойной клик произошел не по строке с документом, а по пустой области или границе колонки. В итоге событие Выбор попросту не инициируется, и код открытия формы не срабатывает.
Чтобы проверить и исправить эту проблему, выполним следующую настройку:
В копиях баз данных нередко сбиваются настройки авторизации, либо вход выполняется под другим пользователем с ограниченными правами. Если в системе настроен RLS (ограничение доступа на уровне записей), то в обработке удаления помеченных объектов битые ссылки и связанные документы могут отображаться в дереве связей.
Однако при попытке открыть такой документ двойным кликом платформа заблокирует это действие, так как у текущего пользователя нет прав на чтение данного объекта. При этом в обычных формах система часто не выводит предупреждение «Нарушение прав доступа», а просто игнорирует действие пользователя.
Решение: Запустите базу данных под пользователем с полными правами (например, под учетной записью администратора) и повторите попытку открытия документа.
Если вышеописанные методы не помогли, нам как разработчикам необходимо заглянуть «под капот» обработки. Разберем, как проанализировать проблему в конфигураторе.
Откроем конфигуратор нашей копии базы данных, найдем обработку УдалениеПомеченныхОбъектов и найдем форму, в которой выводится список объектов. Нам нужно убедиться, что для табличного поля назначен обработчик события Выбор.
В модуле формы обработчик события должен выглядеть следующим образом:
Процедура ТабличноеПолеСпискаВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
// Отменяем стандартное поведение, чтобы переопределить открытие
СтандартнаяОбработка = Ложь;
// Получаем ссылку на объект из выбранной строки
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
СсылкаНаОбъект = ТекущиеДанные.Ссылка;
// Проверяем, что ссылка валидна и это действительно объект базы данных
Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
Попытка
// Пытаемся открыть форму объекта
ОткрытьЗначение(СсылкаНаОбъект);
Исключение
Предупреждение("Не удалось открыть объект: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Проанализируем этот код. Если в вашей конфигурации используется измененная обработка удаления объектов, в ней может отсутствовать конструкция Попытка...Исключение, либо свойство табличного поля ТолькоПросмотр установлено в значение Ложь, что заставляет платформу переходить в режим редактирования ячейки вместо открытия формы. Убедитесь, что для колонки со ссылкой установлено свойство ТолькоПросмотр = Истина.
Используя эти методы по шагам, вы гарантированно сможете локализовать и устранить проблему с открытием документов из обработки удаления помеченных объектов в любой базе данных 1С на обычных формах.