Почему не работает подбор номенклатуры с характеристиками в 1С:Розница и как это исправить

Программист 1С v8.3 (Обычные формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

В работе с конфигурацией «1С:Розница» (особенно на платформе «1С:Предприятие 8» с использованием обычных форм) пользователи часто сталкиваются со следующей проблемой: при попытке выбрать товар в документе через стандартное диалоговое окно подбора ничего не происходит. При этом позиции без характеристик добавляются в документ без проблем, а позиции, для которых предусмотрен учет по характеристикам, полностью игнорируют двойной клик или нажатие клавиши выбора.

В этой статье мы подробно разберем технические причины такого поведения платформы, проанализируем код стандартной обработки подбора под отладчиком и рассмотрим четыре практических способа устранения данной неисправности — от простых настроек в пользовательском режиме до точечного изменения программного кода.

Выясняем причину: почему платформа игнорирует выбор товара

Для того чтобы понять природу ошибки, обратимся к механизму работы обычной формы подбора номенклатуры. Когда мы выбираем товар, у которого включен учет по характеристикам, система не должна сразу переносить его в документ. Сначала она обязана предложить пользователю выбрать конкретную характеристику (например, размер или цвет) из подчиненного списка.

Проанализируем поведение системы под отладчиком. В модуле формы подбора при выборе номенклатуры срабатывает обработчик, в котором присутствует строка:

ФормаПодбора.ТекущийЭлемент = ТабличноеПолеХарактеристик;

В штатном режиме выполнение этой строки приводит к следующим действиям:

  1. Платформа переводит фокус ввода на таблицу с характеристиками выбранной номенклатуры.
  2. Автоматически инициируется событие формы ПриСменеСтраницыФормы.
  3. Пользователю визуально открывается вкладка со списком характеристик, где он может завершить выбор.

Однако в проблемной базе данных при выполнении этой строки отладчик просто переходит к следующему шагу, а событие ПриСменеСтраницыФормы не вызывается. Почему так происходит? Дело в особенностях работы обычных форм «1С:Предприятия»: попытка сделать текущим элемент формы, который в данный момент скрыт (Видимость = Ложь) или недоступен (Доступность = Ложь), игнорируется платформой без вывода каких-либо предупреждений или ошибок. Программа пытается передать фокус невидимому объекту, операция завершается «молчаливым» отказом, и процесс подбора прерывается.

Рассмотрим детально четыре метода устранения этой проблемы, начиная с самых простых административных действий.

Способ 1. Проверка глобальных настроек параметров учета

Очень часто подобная проблема возникает при переносе данных из других конфигураций (например, из «1С:Управление торговлей») или при создании новой информационной базы. Справочник номенклатуры заполняется программно, включая виды номенклатуры с установленным признаком ведения учета по характеристикам. При этом в самой новой базе глобальная функциональная опция может быть отключена.

Разберем по шагам, как проверить и активировать эту настройку:

  1. Переключите интерфейс системы на «Заведующий учетом» (или зайдите под пользователем с полными правами).
  2. Перейдите в главное меню: Сервис -> Настройка учета -> Настройка параметров учета.
  3. В открывшемся окне выберите вкладку «Учет товаров».
  4. Найдите и установите флаг «Использовать характеристики номенклатуры».
  5. Сохраните изменения, нажав кнопку «ОК», и перезапустите сессию работы пользователя.

После активации этой константы платформа начнет корректно отображать элементы управления, связанные с характеристиками, на форме подбора, и функционал восстановится.

Способ 2. Сброс индивидуальных настроек формы подбора

Если у одного пользователя подбор работает исправно, а у другого в этой же базе данных возникает описанная ошибка, причина кроется в персональных настройках интерфейса.

Пользователи имеют возможность кастомизировать обычные формы под себя. Если случайно скрыть панель характеристик, программный код формы подбора потеряет возможность обращаться к ней. Сбросим настройки к первоначальному виду:

  1. Откройте документ (например, «Поступление товаров» или «Чек ККМ») и нажмите кнопку «Подбор».
  2. В любом пустом месте открывшейся формы подбора нажмите правой кнопкой мыши для вызова контекстного меню.
  3. Выберите пункт «Настройка формы...».
  4. В открывшемся окне со списком элементов формы нажмите кнопку «Стандартные» в правом верхнем углу. Это сбросит видимость всех колонок и панелей к заводским настройкам конфигурации.
  5. Дополнительно в меню «Действия» формы подбора выберите пункт «Восстановить положение окна».

После этого закройте форму подбора и откройте её заново — все необходимые панели отобразятся на экране, и фокус ввода сможет на них позиционироваться.

Способ 3. Анализ прав доступа и ограничений на уровне записей (RLS)

Иногда корни проблемы уходят в настройки прав доступа. Если пользователь работает под ролью с ограниченными правами (например, «Продавец» или «Кассир»), у него может отсутствовать доступ на чтение справочника ХарактеристикиНоменклатуры.

Платформа «1С» автоматически скрывает элементы управления, связанные с объектами метаданных, к которым у текущей роли нет прав. В результате табличное поле характеристик на форме подбора становится недоступным, и фокус на него не передается.

Для диагностики выполните следующие действия:

  1. Запустите сеанс «1С:Предприятие» под учетной записью с административными (полными) правами.
  2. Попробуйте выполнить подбор проблемной номенклатуры.
  3. Если под полными правами подбор работает корректно, перейдите в конфигуратор и проанализируйте роли пользователя. Убедитесь, что для его профиля разрешено чтение и просмотр справочника характеристик. При необходимости скорректируйте роли или добавьте пользователю дополнительные права.

Способ 4. Корректировка программного кода (для разработчиков)

Если все настройки проверены, но подбор в обновленных релизах технологической платформы все равно дает сбой, это может быть связано с изменившимся поведением самой платформы при работе с многостраничными панелями. Платформа блокирует установку фокуса на элемент, если страница панели, на которой он расположен, не является активной в данный момент.

В этом случае нам потребуется внести небольшое изменение в код обработки подбора в конфигураторе. Нам нужно явно указать платформе сначала активировать вкладку с характеристиками, а уже затем передавать фокус на табличное поле.

Рассмотрим пример доработки кода:


// Находим в модуле формы подбора процедуру, отвечающую за выбор элемента
// Перед установкой текущего элемента принудительно делаем активной страницу панели

ФормаПодбора.ЭлементыФормы.ПанельПодбора.ТекущаяСтраница = ФормаПодбора.ЭлементыФормы.ПанельПодбора.Страницы.Характеристики;

// Теперь, когда страница гарантированно активна и видима, передаем фокус ввода
ФормаПодбора.ТекущийЭлемент = ФормаПодбора.ЭлементыФормы.ТабличноеПолеХарактеристик;

Важное примечание: Имена элементов управления (ПанельПодбора, Страницы.Характеристики, ТабличноеПолеХарактеристик) могут незначительно отличаться в зависимости от конкретного релиза вашей конфигурации «1С:Розница». Перед изменением кода откройте форму подбора в конфигураторе и проверьте свойства элементов в палитре свойств.

Резюме

Мы подробно разобрали проблему блокировки подбора номенклатуры с характеристиками в «1С:Розница». В подавляющем большинстве случаев данная неполадка решается без привлечения программиста — достаточно проверить константы параметров учета или сбросить настройки отображения формы подбора до стандартных. Если же дело в особенностях платформы, точечное исправление кода с предварительной активацией страницы панели решит эту проблему раз и навсегда.

← На главную