[Розница 2] Обязательный выбор продавца при формировании чека (РМК)
Доброго дня, коллеги.
Процесс формирования чека должен начинаться с выбора продавца, до начала подбора товара. Сканируется карта сотрудника, затем товары в чек.
При больших "наплывах" покупателей, кассиры "забывают" сканировать карту продавца, регистрация происходит на продавца по-умолчанию. Это доставляет массу забот в бэкофисе, т.к. мотивация завязана на личные продажи.
Есть ли штатный механизм, позволяющий заставить кассира выбрать продавца при формировании чека?
Если нет, то как корректнее решить задачу? Перед добавлением товаров в чек, проверять заполнен ли продавец?
Процесс формирования чека должен начинаться с выбора продавца, до начала подбора товара. Сканируется карта сотрудника, затем товары в чек.
При больших "наплывах" покупателей, кассиры "забывают" сканировать карту продавца, регистрация происходит на продавца по-умолчанию. Это доставляет массу забот в бэкофисе, т.к. мотивация завязана на личные продажи.
Есть ли штатный механизм, позволяющий заставить кассира выбрать продавца при формировании чека?
Если нет, то как корректнее решить задачу? Перед добавлением товаров в чек, проверять заполнен ли продавец?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если завязка на продажи конкретных физлиц, то эти физлица должны быть в первую очередь кровно заинтересованы в том, чтобы в чеке пробивалась их фамилия. Администрация пару месяцев повыплачивает бонусы строго согласно чекам, и сразу в головах забывающих образуется порядок.
(2) trambalda, Да, согласен с этой логикой.
Но с ней не согласно руководство. Утверждают, что было бы здорово, если касса не позволяла добавить в чек товар, если не указан продавец.
Поэтому, спрашиваю, можно ли штатными средствами это сделать? Наверное, не предусмотрено. Ничего не нашел, ковыряясь в коде.
Видимо, придется самому дорабатывать этот функционал.
Спасибо, тему можно закрыть.
Но с ней не согласно руководство. Утверждают, что было бы здорово, если касса не позволяла добавить в чек товар, если не указан продавец.
Поэтому, спрашиваю, можно ли штатными средствами это сделать? Наверное, не предусмотрено. Ничего не нашел, ковыряясь в коде.
Видимо, придется самому дорабатывать этот функционал.
Спасибо, тему можно закрыть.
Добавлю от себя.
Работал с похожей ситуацией. Оказалось что по логике в 1 чеке могут быть товары от разных продавцов, так что добавили поле продавец не в чек, а в табличную часть. (даже более того, 1 товар могу продавать 2 продавца)
+ при проведении чека, если поле пустое, то оно заполняется продавцом "продавец не найден". Это помогает в отчетах, чтоб при отборах продажи в туалет не улетали.
Работал с похожей ситуацией. Оказалось что по логике в 1 чеке могут быть товары от разных продавцов, так что добавили поле продавец не в чек, а в табличную часть. (даже более того, 1 товар могу продавать 2 продавца)
+ при проведении чека, если поле пустое, то оно заполняется продавцом "продавец не найден". Это помогает в отчетах, чтоб при отборах продажи в туалет не улетали.
Доработка оказалось простой и не большой. Дольше изучал типовой механизм обработки событий.
В обработке РМК, в модуле формы "Форма", в процедуре "ОбработатьДанныеПОВФормеСервер" добавил код:
Т.е. перед добавлением позиции в чек проверяю заполнение реквизита "Продавец". Если не заполнен реквизит, то сообщаю об этом пользователю.
В обработке РМК, в модуле формы "Форма", в процедуре "ОбработатьДанныеПОВФормеСервер" добавил код:
....
ИначеЕсли СтруктураПараметров.Действие = "ПроверкаТоваров" Тогда
Если СтруктураПараметров.ЗначенияПоиска.Количество() > 0 Тогда
// Начало изменения.
Если Не ЗначениеЗаполнено( Продавец ) Тогда
СтрокаСообщения = НСтр("ru = 'Не выбран продавец! '");
СтрокаСообщения = СтрокаСообщения + Символы.ПС + НСтр("ru = 'Набор нового чека начинайте с выбора продавца.'");
ВывестиИнформациюОбОшибке(СтрокаСообщения);
СтруктураПараметровКлиента.Вставить("ПрекратитьПоиск");
Возврат СтруктураПараметровКлиента;
КонецЕсли;
// Конец изменения.
Если СтруктураПараметров.ЗначенияПоиска.Количество() = 1 Тогда
.....
ПоказатьТ.е. перед добавлением позиции в чек проверяю заполнение реквизита "Продавец". Если не заполнен реквизит, то сообщаю об этом пользователю.
Проверку вставьте в процедуру "ОплатитьТовары" после "ПроверитьКассовыеСмены(Отказ);"
Процедура ПроверитьЗаполнениеПоляСотрудник(Отказ)
ТекстОшибки = "";
Для каждого СтрокаТовары из Товары Цикл
Если СтрокаТовары.Продавец.Пустая() Тогда
Если ТекстОшибки = "" Тогда
ТекстОшибки = "Не указан продавец!" + Символы.ПС + Символы.ПС; //Заголовок
КонецЕсли;
ТекстОшибки = ТекстОшибки + "В строке " + СтрокаТовары.НомерСтроки + " не указан продавец!" + Символы.ПС;
Отказ = Истина;
КонецЕсли;
КонецЦикла;
Если Отказ Тогда
ВывестиИнформациюОбОшибке(ТекстОшибки);
КонецЕсли;
КонецПроцедуры
Показать
(11) (13) lsd_777,
Проверка, которую делал в (8), предназначена для использования кассы совместно с торговым оборудованием (сканером ШК). У меня не разрешается регистрация позиции в чек "мимо" сканера ШК.
Завтра посмотрю процедуры, которые Вы назвали (13), напишу что и куда "вставить".
Проверка, которую делал в (8), предназначена для использования кассы совместно с торговым оборудованием (сканером ШК). У меня не разрешается регистрация позиции в чек "мимо" сканера ШК.
Завтра посмотрю процедуры, которые Вы назвали (13), напишу что и куда "вставить".
(14) Liris, Ну у меня строительные материалы, имеется товар, на который нереально шрихкоды сделать, да и не донести до кассы такой товар) А идея замечательная, сначала думал ерунда, с пятницы ввел в работу, шепнул продавцам про процент, и о чудо, работа закипела)))
(15) lsd_777, Вот две доработки, которые блокируют добавление в чек позиции, пока не будет выбран продавец.
Продавца рекомендую регистрировать регистрационными картами. Наделал на каждого карточек со штрихкодами и пусть каждый сканирует свою карточку при продаже.
Оговорюсь сразу: мои доработки подразумевают схему работы один продавец - один чек. Не предусматривал вариант один чек - несколько продавцов.
Первое. Перед добавлением товара в чек проверяем: выбран продавец или нет.
В обработке РМК, в модуле формы "Форма", в процедуре "ТоварыПередНачаломДобавления", в самом начале добавь код:
Второе. Перед тем, как показать форму подбора, проверяем: выбран продавец или нет.
В обработке РМК, в модуле формы "Форма", в процедуре "КнопкаПоискНажатие", в самом начале добавь код:
На тестовой проверил, исправно "отлавливает" попытки добавить товар и не позволяет ничего сделать, пока не будет указан продавец.
Удачи!
Продавца рекомендую регистрировать регистрационными картами. Наделал на каждого карточек со штрихкодами и пусть каждый сканирует свою карточку при продаже.
Оговорюсь сразу: мои доработки подразумевают схему работы один продавец - один чек. Не предусматривал вариант один чек - несколько продавцов.
Первое. Перед добавлением товара в чек проверяем: выбран продавец или нет.
В обработке РМК, в модуле формы "Форма", в процедуре "ТоварыПередНачаломДобавления", в самом начале добавь код:
....
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование)
Отказ = Истина;
// Начало изменения.
Если Не ЗначениеЗаполнено( Продавец ) Тогда
СтрокаСообщения = НСтр("ru = 'Не выбран продавец! '");
СтрокаСообщения = СтрокаСообщения + Символы.ПС + НСтр("ru = 'Набор нового чека начинайте с выбора продавца.'");
ВывестиИнформациюОбОшибке(СтрокаСообщения);
Возврат;
КонецЕсли;
// Конец изменения.
ОбработкаТабличнойЧастиТоварыКлиент.ОбновитьКэшированныеЗначенияДляУчетаСерий(
ЭлементыФормы.Товары, КэшированныеЗначения, ПараметрыУказанияСерий, Копирование);
....
ПоказатьВторое. Перед тем, как показать форму подбора, проверяем: выбран продавец или нет.
В обработке РМК, в модуле формы "Форма", в процедуре "КнопкаПоискНажатие", в самом начале добавь код:
....
Процедура КнопкаПоискНажатие(Элемент)
// Начало изменения.
Если Не ЗначениеЗаполнено( Продавец ) Тогда
СтрокаСообщения = НСтр("ru = 'Не выбран продавец! '");
СтрокаСообщения = СтрокаСообщения + Символы.ПС + НСтр("ru = 'Набор нового чека начинайте с выбора продавца.'");
ВывестиИнформациюОбОшибке(СтрокаСообщения);
Возврат;
КонецЕсли;
// Конец изменения.
СтруктураПараметровОткрытия = Новый Структура;
....
ПоказатьНа тестовой проверил, исправно "отлавливает" попытки добавить товар и не позволяет ничего сделать, пока не будет указан продавец.
Удачи!
(16) Liris, Нашел еще одну дырку-это кнопки быстрых товаров!
я так понимаю проверять перед нажатием надо, а не при заполнении кнопок?
или я чето не то говорю?)
я так понимаю проверять перед нажатием надо, а не при заполнении кнопок?
// Процедура - обработчик события "Нажатие" кнопки командной панели "Быстрые товары"
//
Процедура КоманднаяПанельБыстрыеТоварыТовар(Кнопка)
ИмяКнопки = Кнопка.Имя;
Если Не мИспользоватьНастройкуРМК Тогда
Возврат;
КонецЕсли;
СтрокиКнопки = мНастройкаРМК.БыстрыеТовары.НайтиСтроки(Новый Структура("ИмяКнопки", ИмяКнопки));
Если СтрокиКнопки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ВыбратьНоменклатуру(СтрокиКнопки[0].Номенклатура, СтрокиКнопки[0].Характеристика);
Если мНастройкаРМК.ЗакрыватьБыстрыеТоварыПриВыбореТовара Тогда
ЗакрытьПанельПодборБыстрыеТовары();
КонецЕсли;
КонецПроцедуры
Показать
(19) Liris, Решил добавить в обработку РМК управляемый, получил кучу ошибок:
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(91,36)}: Переменная не определена (Продавец)
Если Не ЗначениеЗаполнено( <<?>>Продавец ) Тогда (Проверка: Сервер)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(94,13)}: Процедура или функция с указанным именем не определена (ВывестиИнформациюОбОшибке)
<<?>>ВывестиИнформациюОбОшибке(СтрокаСообщения); (Проверка: Сервер)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(454,29)}: Переменная не определена (Продавец)
Если Не ЗначениеЗаполнено( <<?>>Продавец ) Тогда (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(3292,29)}: Переменная не определена (Продавец)
Если Не ЗначениеЗаполнено( <<?>>Продавец ) Тогда (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(457,3)}: Процедура или функция с указанным именем не определена (ВывестиИнформациюОбОшибке)
<<?>>ВывестиИнформациюОбОшибке(СтрокаСообщения); (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(3295,3)}: Процедура или функция с указанным именем не определена (ВывестиИнформациюОбОшибке)
<<?>>ВывестиИнформациюОбОшибке(СтрокаСообщения); (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(91,36)}: Переменная не определена (Продавец)
Если Не ЗначениеЗаполнено( <<?>>Продавец ) Тогда (Проверка: Сервер)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(94,13)}: Процедура или функция с указанным именем не определена (ВывестиИнформациюОбОшибке)
<<?>>ВывестиИнформациюОбОшибке(СтрокаСообщения); (Проверка: Сервер)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(454,29)}: Переменная не определена (Продавец)
Если Не ЗначениеЗаполнено( <<?>>Продавец ) Тогда (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(3292,29)}: Переменная не определена (Продавец)
Если Не ЗначениеЗаполнено( <<?>>Продавец ) Тогда (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(457,3)}: Процедура или функция с указанным именем не определена (ВывестиИнформациюОбОшибке)
<<?>>ВывестиИнформациюОбОшибке(СтрокаСообщения); (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(3295,3)}: Процедура или функция с указанным именем не определена (ВывестиИнформациюОбОшибке)
<<?>>ВывестиИнформациюОбОшибке(СтрокаСообщения); (Проверка: Тонкий клиент)
(10) Nevskiy,
туплю где-то!
{Обработка.РМК.Форма.Форма.Форма(2126,1)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
<<?>>Процедура ПроверитьЗаполнениеПоляСотрудник(Отказ)
{Обработка.РМК.Форма.Форма.Форма(2174,10)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2185,10)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2242,11)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2268,11)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2286,11)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2293,10)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2301,10)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2312,10)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2320,10)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2376,12)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2418,10)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2447,11)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
Возврат<<?>>;
{Обработка.РМК.Форма.Форма.Форма(2480,12)}: Обнаружено логическое завершение исходного текста модуля
КонецЕсли;<<?>>
Показатьтуплю где-то!
Спасибо. Единственный вразумительный ответ, который приблизил меня к цели.
Хоть тема и старая, хочу поделится своим решением.
Розница 1.0
Конфигуратор
Документы-Чек ККМ-ФормаРегистрацииПродаж (модуль)
Процедура УстановитьНомерЧекаПриОткрытии ()
Прописала след.код перед концом процедуры:
КонецЕсли;
мНомерЧекаККМ = НомерЧекаККМ;
// Начало мой код.
Если Не ЗначениеЗаполнено( Продавец ) Тогда
Пока ПустаяСтрока(Продавец)
Цикл
Предупреждение ("Введите штрихкод продавца" );
Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();
РаботаСТорговымОборудованием.ОбработатьВведенныйШтрихкод(Результат, ЭтаФорма, Истина);
КонецЦикла;
КонецЕсли;
// Конец мой код
КонецПроцедуры // УстановитьНомерЧекаПриОткрытии()
Первый раз срабатывает при входе в РМК-Регистрация продаж.
Далее при создании каждого нового чека.
Блокирует все попытки ввести неправильный штрихкод, или вообще не вводить.
Не срабатывает - если установлен продавец по умолчанию.
Хоть тема и старая, хочу поделится своим решением.
Розница 1.0
Конфигуратор
Документы-Чек ККМ-ФормаРегистрацииПродаж (модуль)
Процедура УстановитьНомерЧекаПриОткрытии ()
Прописала след.код перед концом процедуры:
КонецЕсли;
мНомерЧекаККМ = НомерЧекаККМ;
// Начало мой код.
Если Не ЗначениеЗаполнено( Продавец ) Тогда
Пока ПустаяСтрока(Продавец)
Цикл
Предупреждение ("Введите штрихкод продавца" );
Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();
РаботаСТорговымОборудованием.ОбработатьВведенныйШтрихкод(Результат, ЭтаФорма, Истина);
КонецЦикла;
КонецЕсли;
// Конец мой код
КонецПроцедуры // УстановитьНомерЧекаПриОткрытии()
Первый раз срабатывает при входе в РМК-Регистрация продаж.
Далее при создании каждого нового чека.
Блокирует все попытки ввести неправильный штрихкод, или вообще не вводить.
Не срабатывает - если установлен продавец по умолчанию.
Прикрепленные файлы:



Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот