При адаптации рабочего места кассира (РМК) под нужды конкретного торгового предприятия часто возникает необходимость расширить стандартный функционал. Самый логичный способ сделать новую функцию доступной для кассира — вывести её в виде отдельной кнопки на нижнюю панель РМК. Однако в конфигурации «1С:Розница 2.3» (управляемый режим) этот механизм устроен не так просто, как обычное добавление кнопки на форму. Нижняя панель РМК формируется динамически, из-за чего разработчики часто сталкиваются с ошибками при попытке добавить пользовательский элемент.
В этой статье мы подробно разберем, как устроена архитектура нижней панели РМК, почему возникает ошибка при нажатии на новую кнопку и как правильно выполнить интеграцию собственного действия по шагам.
Выясним причину, почему обычное добавление элемента на форму управляемого РМК приводит к ошибкам. Дело в том, что кнопки нижней панели в управляемом режиме РМК — это не стандартные элементы интерфейса типа Кнопка. Платформа формирует их динамически, используя элементы типа Декорация-Картинка и специальные подложки.
Когда кассир нажимает на такую «кнопку», система перехватывает это событие и пытается обработать его централизованно. Если мы просто добавим команду и перетащим её на форму, стандартный обработчик РМК не сможет распознать наше кастомное действие. В результате система выдаст ошибку о том, что команда не поддерживается, либо откроет пустое нефункциональное окно.
Чтобы избежать этой проблемы, нам необходимо строго соблюдать правила именования элементов, зарегистрировать кнопку в специальном макете конфигурации и правильно переопределить обработку события нажатия.
---
Рассмотрим подробнее каждый этап разработки — от создания метаданных в конфигураторе до финальной настройки в режиме «1С:Предприятие».
Для начала нам необходимо открыть форму обработки РМКУправляемыйРежим (рекомендуется делать это через расширение конфигурации, чтобы сохранить поддержку и облегчить будущие обновления).
КомандаПО[ИдентификаторВашейКнопки]. Например, назовем команду КомандаПОМояКнопка.Поскольку кнопки нижней панели отрисовываются как декорации-картинки, при их нажатии платформа ищет в модуле формы процедуру, имя которой формируется по строгому правилу: КартинкаПО[ИдентификаторВашейКнопки]Нажатие.
Проанализируем пример кода, который необходимо добавить в модуль управляемой формы РМК:
&НаКлиенте
Процедура КартинкаПОМояКнопкаНажатие(Элемент, СтандартнаяОбработка)
// 1. Отменяем стандартное поведение системы для этой картинки
СтандартнаяОбработка = Ложь;
// 2. Описываем наше кастомное действие
ВыполнитьНашеПроизвольноеДействие();
КонецПроцедуры
Разберем, почему строка СтандартнаяОбработка = Ложь; является ключевой. Если её пропустить или забыть написать, платформа после выполнения нашего кода попытается продолжить стандартную обработку клика по декорации. Так как система «не знает» назначения нашей кнопки, это приведет к ошибке выполнения.
Чтобы система «увидела» нашу кнопку и позволила кассирам или администраторам настраивать её видимость, кнопку нужно прописать в специальном макете.
В конфигураторе найдем справочник НастройкиРМК. В его составе есть макет с именем СтандартныеДействияКнопокНижнейПанели. Этот макет представляет собой таблицу (макет табличного документа), в которой перечислены все доступные команды интерфейса кассира.
Добавим в эту таблицу новую строку и заполним её колонки следующими данными:
КомандаПОМояКнопка). Указывайте имя безошибочно, иначе при запуске РМК возникнет критический сбой: «Неправильно настроены кнопки».МояКнопка).Моё действие).После того как изменения внесены в конфигураторе (или сохранены в расширении) и база данных обновлена, нам необходимо сделать кнопку видимой для пользователей.
Выполним следующие шаги в режиме предприятия под правами администратора:
F10), изменить цвет шрифта или фон плитки, чтобы выделить её на экране кассира.Теперь при запуске рабочего места кассира на нижней панели отобразится новая кнопка, а при нажатии на неё (или при нажатии настроенной быстрой клавиши) корректно отработает наш алгоритм без каких-либо ошибок и пустых окон.