Здравствуйте уважаемые форумчане! в панорамировании пока новичок, возникла такая ситуация - есть рабочее место с 1с предприятие 7.7 Штрих-М кассир, все настроено все работает нормально, но нужно что бы кассир мог делать "СТОРНО" для товара до определенной цены (например товар с ценной до 100 руб. можно отменить - сторно)
Подскажите пожалуйста какие нибудь идеи.
Процедура Сторно()
        Если НовыйЧек=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;
    КонецПроцедуры