[Розница 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 Сейчас в теме
Добрый день. Подскажите, пожалуйста, если я одна выступаю продавцом в смену, можно ли каким-то образом настроить, чтобы для каждого чека не выбирать себя в форме "продавец"; зафиксировать, так сказать?
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)