|
v7: условие для действия кассира | ☑ | ||
---|---|---|---|---|
0
Fanat26
03.08.11
✎
05:07
|
Здравствуйте уважаемые форумчане! в панорамировании пока новичок, возникла такая ситуация - есть рабочее место с 1с предприятие 7.7 Штрих-М кассир, все настроено все работает нормально, но нужно что бы кассир мог делать "СТОРНО" для товара до определенной цены (например товар с ценной до 100 руб. можно отменить - сторно)
Подскажите пожалуйста какие нибудь идеи. модуль сторно могу выложить |
|||
1
Rie
03.08.11
✎
05:13
|
(0) Как вариант - в РегистрацияПродаж в ОбработкаВнешнегоСобытия() для "НажатиеКлавиши" проверить, что код нажатой клавиши - это код сторно, глянуть в текущую строку таблицы Чек и, ежели условию не удовлетворяет, - послать кассира в светлую даль.
|
|||
2
Fanat26
03.08.11
✎
05:24
|
извените маленько недопонимаю=((
не могли бы вы объяснить по подробнее. |
|||
3
Fanat26
03.08.11
✎
05:24
|
Процедура Сторно()
Если НовыйЧек=1 Тогда НовыйЧек(); КонецЕсли; Если НачинатьСНуля=1 Тогда НачалоСНуля(); КонецЕсли; Если ЧекОткрыт=0 Тогда Возврат; КонецЕсли; Если ВидЧека>3 Тогда Сигнал(); Возврат; КонецЕсли; ВнешняяКомпонента.MaxKeyNum=-1; ВнешняяКомпонента.MinKeyNum=-1; Если Чек.КоличествоСтрок()>0 Тогда Если Чек.Флаг=2 Тогда ВнешняяКомпонента.MaxKeyNum=255; ВнешняяКомпонента.MinKeyNum=1; Возврат; КонецЕсли; Цифры=?(ДесТ=2,"0.00","0."); ПоложениеТочки=ДесТ; НажатаТочка=0; Кол=1; НажатПромИтог=0; ТекТовар=0; К=1; Если ПустоеЗначение(Чек.Товар)=0 Тогда ТекТовар=?(Чек.Товар.Вид()="Товары",Чек.Товар,Чек.Товар.Владелец); Если Чек.Товар.Вид()="Единицы" Тогда К=?(Чек.Товар.Коэффициент=0,1,Чек.Товар.Коэффициент); КонецЕсли; КонецЕсли; Если ПроверкаПрав("Сторно")=0 Тогда СтрокаДляТовараКК(3,0,ТекТовар,Чек.Количество*К,Чек.Цена/К,Чек.Сумма,,Чек.НомерСтроки,2006,Чек.СуммаСкидки); ВнешняяКомпонента.MaxKeyNum=255; ВнешняяКомпонента.MinKeyNum=1; Возврат; КонецЕсли; Если (ИтогЧека("СуммаСоСкидкой")-СуммаСкидкиНаЧек-Чек.СуммаСоСкидкой<0) И (СкидкаНаЧек=0) И (ЕстьВозвратыВЧекеПродажи=0) Тогда ЗвуковойСигнал(); ВывестиПредупреждение("Полученная сумма будет меньше нуля!","Сторно невозможно!"); ВнешняяКомпонента.MaxKeyNum=255; ВнешняяКомпонента.MinKeyNum=1; Возврат; КонецЕсли; Если ВидЧека<>3 Тогда Если ПечататьКаждуюСтроку>0 Тогда Если ПечатьРегистрации(Чек.Номер,Чек.Товар,Чек.Количество,Чек.Цена,Чек.Секция,Чек.Продавец,1)=0 Тогда ВнешняяКомпонента.MaxKeyNum=255; ВнешняяКомпонента.MinKeyNum=1; Возврат; КонецЕсли; Если Чек.СуммаСкидки<>0 Тогда СтрокаДляПечати=""; Если ПустоеЗначение(Чек.АвтоматическаяСкидка)=0 Тогда СтрокаДляПечати=СокрЛП(Чек.АвтоматическаяСкидка.ТекстДляЧека); КонецЕсли; Если ПустоеЗначение(Чек.ФиксированнаяСкидка)=0 Тогда СтрокаДляПечати=СокрЛП(Чек.ФиксированнаяСкидка.ТекстДляЧека); КонецЕсли; Если ПечатьСкидки(Чек.СуммаСкидки,Чек.Скидка,Чек.СуммаСоСкидкой,СтрокаДляПечати)=0 Тогда ВнешняяКомпонента.MaxKeyNum=255; ВнешняяКомпонента.MinKeyNum=1; Возврат; КонецЕсли; КонецЕсли; КонецЕсли; Транз=СоздатьОбъект("Справочник.ВремТранзакции"); Знак=?(ВидЧека=1,-1,1); Если Чек.Флаг=3 Тогда Знак=1; КонецЕсли; Транз.Новый(); Транз.Код=Формат(Число(Чек.ТранзакцияРегистрации)+7,"Ч(0)7"); Транз.Наименование=?(ПустоеЗначение(Чек.Товар)=0,"Сторно","Секция"); Транз.НомерККМ=Константа.НомерПОС; Транз.ДатаТранз=ТекущаяДата(); Транз.ВремяТранз=ТекущееВремя(); Транз.ТипТранзакции=?(ПустоеЗначение(Чек.Товар)=0,12,2); Транз.НомерЧека=НомерЧека; Транз.Секция=Чек.Секция; Транз.КодКассира=ТекущийПользователь.Код; Транз.КодТовара=?(ПустоеЗначение(Чек.Товар)=0,ТекТовар.Код,0); Транз.Цена=Чек.Цена/К; Транз.Количество=Знак*Чек.Количество*К; Транз.Сумма=Окр(Знак*Чек.СуммаСоСкидкой,ДесТ); Попытка Транз.Записать(); Исключение ЗвуковойСигнал(); ВывестиПредупреждение("Ошибка работы с базой данных:"+РазделительСтрок+ОписаниеОшибки()+"!","Ошибка базы!"); ВнешняяКомпонента.MaxKeyNum=255; ВнешняяКомпонента.MinKeyNum=1; Возврат; КонецПопытки; Чек.Флаг=2; СтрокаДляТовараКК(0,0,ТекТовар,Чек.Количество*К,Чек.Цена/К,Чек.Сумма,,Чек.НомерСтроки,2006,Чек.СуммаСкидки); ПозЧ=РасчСкидкиНаПоз.НайтиЗначение(Чек.НомерСтроки); Если ПозЧ>0 Тогда РасчСкидкиНаПоз.УдалитьЗначение(ПозЧ); КонецЕсли; Если СкидкаНаЧек<>0 Тогда Если ПересчетСкидкиНаЧек()=0 Тогда ВнешняяКомпонента.MaxKeyNum=255; ВнешняяКомпонента.MinKeyNum=1; Возврат; КонецЕсли; КонецЕсли; Иначе Чек.УдалитьСтроку(); КонецЕсли; КонецЕсли; Если (Константа.РазрешитьАвтоматическиеСкидки>0) И (ВидЧека=1) Тогда РассчитатьАвтоматическуюСкидкуНаЧек(); КонецЕсли; Если (Константа.РазрешитьНакопительныеСкидки>0) И (ПустоеЗначение(ВыбраннаяДисконтнаяКарта)=0) Тогда Если (ПолучитьСкидкуПоДисконтнойКарте(ВыбраннаяДисконтнаяКарта)<>ДисконтнаяСкидкаНаЧек) ИЛИ (Константа.КонтрольСкидок>0) Тогда Скидка(0,1,,1,,ВыбраннаяДисконтнаяКарта,1); Скидка(0,0,,1,,ВыбраннаяДисконтнаяКарта,1); КонецЕсли; КонецЕсли; Если (ПустоеЗначение(ФиксированнаяСкидкаНаЧек)=0) И (Константа.КонтрольСкидок>0) Тогда Если ФиксированнаяСкидкаНаЧек.ВидСкидки=Перечисление.ВидыСкидок.Процентная Тогда Скидка(?(ФиксированнаяСкидкаНаЧек.ТипСкидки=Перечисление.ТипыСкидок.Скидка,0,2),1,,1,ФиксированнаяСкидкаНаЧек); Скидка(?(ФиксированнаяСкидкаНаЧек.ТипСкидки=Перечисление.ТипыСкидок.Скидка,0,2),,,1,ФиксированнаяСкидкаНаЧек); КонецЕсли; КонецЕсли; ПересчетСкидкиНаЧек(); Если ВидЧека=1 Тогда Операция="Продажа"; ИначеЕсли ВидЧека=2 Тогда Если ФлагВозврата=1 Тогда Операция="Возврат"; Иначе Операция="Аннул."; КонецЕсли; ИначеЕсли ВидЧека=3 Тогда Если ФлагВозврата=1 Тогда Операция="Возврат по №"; Иначе Операция="Аннул. по №"; КонецЕсли; КонецЕсли; Если Константа.РаботаСДисплеем>0 Тогда Если Константа.РазделятьТриады=0 Тогда ФорматСумм="Ч."+ДесТ; Иначе ФорматСумм="Ч."+ДесТ+".'"; КонецЕсли; Если Константа.ВыводитьПромИтогНаДисплей>0 Тогда ВывестиСтрокуНаДисплей("Сторно "+ФормС(Чек.СуммаСоСкидкой,ФорматСумм),1); ВывестиСтрокуНаДисплей("Пром.итог "+ФормС(ИтогЧека("СуммаСоСкидкой")-СуммаСкидкиНаЧек,ФорматСумм),2); Иначе ВывестиСтрокуНаДисплей("Сторно",1); ВывестиСтрокуНаДисплей(ФормС(Чек.СуммаСоСкидкой,ФорматСумм),2); КонецЕсли; КонецЕсли; ОбновитьНомераСтрок(); ВнешняяКомпонента.MaxKeyNum=255; ВнешняяКомпонента.MinKeyNum=1; КонецПроцедуры |
|||
4
Rie
03.08.11
✎
05:31
|
(3) Если хочешь править здесь, то после проверки
Если ПроверкаПрав("Сторно")=0 Тогда воткни проверку на сумму товара в текущей строке чека. |
|||
5
Fanat26
03.08.11
✎
05:40
|
Эхх тяжко все это =)
большое спасибо за подсказку!!! |
|||
6
Fanat26
03.08.11
✎
05:46
|
сегодня попробую поправить, сможете потом посмотерть праильно ли я мыслю?)
|
|||
7
Rie
03.08.11
✎
05:55
|
(6) Правильно ли ты мыслишь - тебе скажут кассиры. Ну или директор конторы :-)
|
|||
8
Erhov_egor
03.08.11
✎
05:58
|
Если Чек.Цена<= 100 Тогда
четочтотебенужно; КонецЕсли; |
|||
9
Fanat26
03.08.11
✎
11:43
|
Erhov_egor а куда это в модуле вставлять??
|
|||
10
Rie
04.08.11
✎
05:42
|
(9) Не трогайте модуль и обратитесь к специалисту.
|
|||
11
Rie
04.08.11
✎
06:13
|
Вообще, ответы вопросы по "Штрих-М Кассир" можно получить здесь: http://new.shtrih-m.ru/forum/
Их техподдержка отвечает вполне нормально (разумеется, каков вопрос - таков и ответ). Обязательно назвать версию - они довольно сильно отличаются внутри. Самостоятельно ковырять конфигурацию, не разобравшись в ней, - несколько рискованно. У них довольно оригинальное взаимодействие модулей - через две глубоко внедрённых ВК. В остальном же конфигурация довольно проста. |
|||
12
Erhov_egor
04.08.11
✎
07:50
|
можно процедуру написать типо
процедура НаймиСпециалистаЛучше() Если Чек.Цена<=100 Тогда Сторно() КонецЕСли; КонецПроцедуры |
|||
13
Erhov_egor
04.08.11
✎
07:51
|
Могу на удаленке поработать цена договоная...
|
|||
14
KRV
04.08.11
✎
08:13
|
Прикольно будет... (13) только-только рассказали про то, как отключить автоввод новой строки, а он уже удаленно готов поработать..
|
|||
15
Erhov_egor
04.08.11
✎
08:17
|
(14)потому что забыл
|
|||
16
Erhov_egor
04.08.11
✎
08:18
|
и пришел с проводов
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |