[Розница 2] Обязательный выбор продавца при формировании чека (РМК)

1. Liris 39 18.11.13 10:32 Сейчас в теме
Доброго дня, коллеги.
Процесс формирования чека должен начинаться с выбора продавца, до начала подбора товара. Сканируется карта сотрудника, затем товары в чек.
При больших "наплывах" покупателей, кассиры "забывают" сканировать карту продавца, регистрация происходит на продавца по-умолчанию. Это доставляет массу забот в бэкофисе, т.к. мотивация завязана на личные продажи.
Есть ли штатный механизм, позволяющий заставить кассира выбрать продавца при формировании чека?
Если нет, то как корректнее решить задачу? Перед добавлением товаров в чек, проверять заполнен ли продавец?
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
6. gagash 22.11.13 13:21 Сейчас в теме
(1) Liris,
а как у вас, настроено что процесс формирования чека начинается с выбора продавца?
7. Liris 39 23.11.13 19:45 Сейчас в теме
(6) gagash, Пока никак не настроено. Для этого создал тему, искал типовые пути решения.
Скорее всего буду дорабатывать конфигурацию, добавлю проверку на не выбранного продавца.
2. trambalda 18.11.13 17:12 Сейчас в теме
Если завязка на продажи конкретных физлиц, то эти физлица должны быть в первую очередь кровно заинтересованы в том, чтобы в чеке пробивалась их фамилия. Администрация пару месяцев повыплачивает бонусы строго согласно чекам, и сразу в головах забывающих образуется порядок.
3. Liris 39 18.11.13 17:52 Сейчас в теме
(2) trambalda, Да, согласен с этой логикой.
Но с ней не согласно руководство. Утверждают, что было бы здорово, если касса не позволяла добавить в чек товар, если не указан продавец.
Поэтому, спрашиваю, можно ли штатными средствами это сделать? Наверное, не предусмотрено. Ничего не нашел, ковыряясь в коде.
Видимо, придется самому дорабатывать этот функционал.
Спасибо, тему можно закрыть.
4. Lenten 25 18.11.13 17:57 Сейчас в теме
Добавлю от себя.

Работал с похожей ситуацией. Оказалось что по логике в 1 чеке могут быть товары от разных продавцов, так что добавили поле продавец не в чек, а в табличную часть. (даже более того, 1 товар могу продавать 2 продавца)

+ при проведении чека, если поле пустое, то оно заполняется продавцом "продавец не найден". Это помогает в отчетах, чтоб при отборах продажи в туалет не улетали.
5. gagash 22.11.13 13:19 Сейчас в теме
(4) Lenten,
Это вообще шикарно, поскольку очень часто в смену могут работать более одного продавца, (и не обязательно в больших магазинах).
Как это настроить, подскажите пожалуйста!
8. Liris 39 03.12.13 05:17 Сейчас в теме
Доработка оказалось простой и не большой. Дольше изучал типовой механизм обработки событий.
В обработке РМК, в модуле формы "Форма", в процедуре "ОбработатьДанныеПОВФормеСервер" добавил код:
....
ИначеЕсли СтруктураПараметров.Действие = "ПроверкаТоваров" Тогда
	Если СтруктураПараметров.ЗначенияПоиска.Количество() > 0 Тогда
		// Начало изменения.
		Если Не ЗначениеЗаполнено( Продавец ) Тогда
			СтрокаСообщения = НСтр("ru = 'Не выбран продавец! '");
			СтрокаСообщения	= СтрокаСообщения + Символы.ПС + НСтр("ru = 'Набор нового чека начинайте с выбора продавца.'");
			ВывестиИнформациюОбОшибке(СтрокаСообщения);
			СтруктураПараметровКлиента.Вставить("ПрекратитьПоиск");
			Возврат СтруктураПараметровКлиента;
		КонецЕсли;
		// Конец изменения.
				
		Если СтруктураПараметров.ЗначенияПоиска.Количество() = 1 Тогда
.....
Показать

Т.е. перед добавлением позиции в чек проверяю заполнение реквизита "Продавец". Если не заполнен реквизит, то сообщаю об этом пользователю.
9. lsd_777 08.12.13 12:47 Сейчас в теме
(8) Liris, Воспользовался вашим способом, все равно пролетают продажи без продавца! Может сделать проверку непосредственно перед оплатой, если не указан продавец, то не допускать к оплате?
13. lsd_777 08.12.13 17:36 Сейчас в теме
(8) Liris, Такая проверка должна проходить еще при поиске товара F3 и добавлении товара INSERT, а так срабатывает только при считывании штрихкода, по этому и проскакивают продажи без продавца. Поможете? Сам не программер.
10. Nevskiy 08.12.13 14:50 Сейчас в теме
Проверку вставьте в процедуру "ОплатитьТовары" после "ПроверитьКассовыеСмены(Отказ);"

Процедура ПроверитьЗаполнениеПоляСотрудник(Отказ)
	
	ТекстОшибки = "";
	
	Для каждого СтрокаТовары из Товары Цикл
		Если СтрокаТовары.Продавец.Пустая() Тогда
			
			Если ТекстОшибки = "" Тогда
				ТекстОшибки = "Не указан продавец!" + Символы.ПС + Символы.ПС; //Заголовок
			КонецЕсли;
			
			ТекстОшибки = ТекстОшибки  + "В строке " + СтрокаТовары.НомерСтроки + " не указан продавец!" + Символы.ПС;
			Отказ = Истина;
			
		КонецЕсли;
	КонецЦикла;
	
	Если Отказ Тогда
		ВывестиИнформациюОбОшибке(ТекстОшибки);
	КонецЕсли;
	
КонецПроцедуры
Показать
11. lsd_777 08.12.13 15:33 Сейчас в теме
(10) Nevskiy, Я так понимаю, что продавец указывается для каждой строки чека, а не для чека целиком?
14. Liris 39 10.12.13 17:17 Сейчас в теме
(11) (13) lsd_777,
Проверка, которую делал в (8), предназначена для использования кассы совместно с торговым оборудованием (сканером ШК). У меня не разрешается регистрация позиции в чек "мимо" сканера ШК.
Завтра посмотрю процедуры, которые Вы назвали (13), напишу что и куда "вставить".
15. lsd_777 10.12.13 22:18 Сейчас в теме
(14) Liris, Ну у меня строительные материалы, имеется товар, на который нереально шрихкоды сделать, да и не донести до кассы такой товар) А идея замечательная, сначала думал ерунда, с пятницы ввел в работу, шепнул продавцам про процент, и о чудо, работа закипела)))
16. Liris 39 11.12.13 17:56 Сейчас в теме
(15) lsd_777, Вот две доработки, которые блокируют добавление в чек позиции, пока не будет выбран продавец.
Продавца рекомендую регистрировать регистрационными картами. Наделал на каждого карточек со штрихкодами и пусть каждый сканирует свою карточку при продаже.
Оговорюсь сразу: мои доработки подразумевают схему работы один продавец - один чек. Не предусматривал вариант один чек - несколько продавцов.
Первое. Перед добавлением товара в чек проверяем: выбран продавец или нет.
В обработке РМК, в модуле формы "Форма", в процедуре "ТоварыПередНачаломДобавления", в самом начале добавь код:
....
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование)
	
 Отказ = Истина;
 // Начало изменения.
 Если Не ЗначениеЗаполнено( Продавец ) Тогда
  СтрокаСообщения = НСтр("ru = 'Не выбран продавец! '");
  СтрокаСообщения = СтрокаСообщения + Символы.ПС + НСтр("ru = 'Набор нового чека начинайте с выбора продавца.'");
  ВывестиИнформациюОбОшибке(СтрокаСообщения);
  Возврат;
 КонецЕсли;
 // Конец изменения.
 ОбработкаТабличнойЧастиТоварыКлиент.ОбновитьКэшированныеЗначенияДляУчетаСерий(
  ЭлементыФормы.Товары, КэшированныеЗначения, ПараметрыУказанияСерий, Копирование);
....
Показать

Второе. Перед тем, как показать форму подбора, проверяем: выбран продавец или нет.
В обработке РМК, в модуле формы "Форма", в процедуре "КнопкаПоискНажатие", в самом начале добавь код:
....
Процедура КнопкаПоискНажатие(Элемент)
	
 // Начало изменения.
 Если Не ЗначениеЗаполнено( Продавец ) Тогда
  СтрокаСообщения = НСтр("ru = 'Не выбран продавец! '");
  СтрокаСообщения = СтрокаСообщения + Символы.ПС + НСтр("ru = 'Набор нового чека начинайте с выбора продавца.'");
  ВывестиИнформациюОбОшибке(СтрокаСообщения);
  Возврат;
 КонецЕсли;
 // Конец изменения.
	
 СтруктураПараметровОткрытия = Новый Структура;
....
Показать

На тестовой проверил, исправно "отлавливает" попытки добавить товар и не позволяет ничего сделать, пока не будет указан продавец.
Удачи!
17. lsd_777 11.12.13 18:11 Сейчас в теме
(16) Liris, Вот спасибо, выручил, щас торговля попрет! А то сидят, за оклад штаны протирают)
18. lsd_777 12.12.13 12:53 Сейчас в теме
(16) Liris, Нашел еще одну дырку-это кнопки быстрых товаров!
я так понимаю проверять перед нажатием надо, а не при заполнении кнопок?

// Процедура - обработчик события "Нажатие" кнопки командной панели "Быстрые товары"
//
Процедура КоманднаяПанельБыстрыеТоварыТовар(Кнопка)
	
	ИмяКнопки = Кнопка.Имя;
	
	Если Не мИспользоватьНастройкуРМК Тогда
		Возврат;
	КонецЕсли;
	
	СтрокиКнопки = мНастройкаРМК.БыстрыеТовары.НайтиСтроки(Новый Структура("ИмяКнопки", ИмяКнопки));
	
	Если СтрокиКнопки.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ВыбратьНоменклатуру(СтрокиКнопки[0].Номенклатура, СтрокиКнопки[0].Характеристика);
	
	Если мНастройкаРМК.ЗакрыватьБыстрыеТоварыПриВыбореТовара Тогда
		ЗакрытьПанельПодборБыстрыеТовары();
	КонецЕсли;
	
КонецПроцедуры


Показать
или я чето не то говорю?)
19. Liris 39 15.12.13 09:40 Сейчас в теме
(18) lsd_777, Можно решить несколькими способами.
Можно добавить известный тебе код в приведенную процедуру, перед вызовом процедуры ВыбратьНоменклатуру().
Или вставить проверку непосредственно в процедуру ВыбратьНоменклатуру().
20. lsd_777 23.12.13 07:57 Сейчас в теме
(19) Liris, Добавил, но откуда то все равно проскакивает без продавца, а откуда не могу вычислить) Ну все равно спасибо за помощь!!!
21. Liris 39 23.12.13 18:15 Сейчас в теме
(20) lsd_777, Пожалуйста.
Понаблюдай за чеками, может проявится последовательность. Тогда будет понятно что упустил.
22. lsd_777 23.12.13 18:17 Сейчас в теме
(21) Liris, ага, все равно попадется)
23. lsd_777 03.01.14 11:15 Сейчас в теме
(19) Liris, Решил добавить в обработку РМК управляемый, получил кучу ошибок:

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(91,36)}: Переменная не определена (Продавец)
Если Не ЗначениеЗаполнено( <<?>>Продавец ) Тогда (Проверка: Сервер)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(94,13)}: Процедура или функция с указанным именем не определена (ВывестиИнформациюОбОшибке)
<<?>>ВывестиИнформациюОбОшибке(СтрокаСообщения); (Проверка: Сервер)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(454,29)}: Переменная не определена (Продавец)
Если Не ЗначениеЗаполнено( <<?>>Продавец ) Тогда (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(3292,29)}: Переменная не определена (Продавец)
Если Не ЗначениеЗаполнено( <<?>>Продавец ) Тогда (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(457,3)}: Процедура или функция с указанным именем не определена (ВывестиИнформациюОбОшибке)
<<?>>ВывестиИнформациюОбОшибке(СтрокаСообщения); (Проверка: Тонкий клиент)
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(3295,3)}: Процедура или функция с указанным именем не определена (ВывестиИнформациюОбОшибке)
<<?>>ВывестиИнформациюОбОшибке(СтрокаСообщения); (Проверка: Тонкий клиент)
24. Liris 39 10.01.14 19:46 Сейчас в теме
(23) lsd_777, в РМКУправляемый не добавлял и не проверял. Возможно, там другая логика.
12. lsd_777 08.12.13 16:25 Сейчас в теме
(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)}: Обнаружено логическое завершение исходного текста модуля
	КонецЕсли;<<?>>
Показать

туплю где-то!
25. user642865_yu_tat 21.12.16 08:17 Сейчас в теме
Спасибо. Единственный вразумительный ответ, который приблизил меня к цели.

Хоть тема и старая, хочу поделится своим решением.
Розница 1.0

Конфигуратор
Документы-Чек ККМ-ФормаРегистрацииПродаж (модуль)
Процедура УстановитьНомерЧекаПриОткрытии ()

Прописала след.код перед концом процедуры:

КонецЕсли;
мНомерЧекаККМ = НомерЧекаККМ;

// Начало мой код.

Если Не ЗначениеЗаполнено( Продавец ) Тогда

Пока ПустаяСтрока(Продавец)
Цикл
Предупреждение ("Введите штрихкод продавца" );
Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();
РаботаСТорговымОборудованием.ОбработатьВведенныйШтрихкод(Результат, ЭтаФорма, Истина);
КонецЦикла;

КонецЕсли;
// Конец мой код


КонецПроцедуры // УстановитьНомерЧекаПриОткрытии()



Первый раз срабатывает при входе в РМК-Регистрация продаж.
Далее при создании каждого нового чека.
Блокирует все попытки ввести неправильный штрихкод, или вообще не вводить.

Не срабатывает - если установлен продавец по умолчанию.
Прикрепленные файлы:
26. пользователь 18.04.23 08:09
Сообщение было скрыто модератором.
...
27. пользователь 18.04.23 08:11
Сообщение было скрыто модератором.
...
28. user1937892 18.04.23 08:14 Сейчас в теме
Добрый день. Подскажите, пожалуйста, если я одна выступаю продавцом в смену, можно ли каким-то образом настроить, чтобы для каждого чека не выбирать себя в форме "продавец"; зафиксировать, так сказать?
Оставьте свое сообщение

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