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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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



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

Не срабатывает - если установлен продавец по умолчанию.
Прикрепленные файлы:
Оставьте свое сообщение