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