7.7 Распроведение документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем SerzhM, 20 авг 2014.

  1. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Тис,
    Юзаем документ чек кккм.
    В чеке есть процедура для оплаты кредиткой. Незнаю как проверить остаток по позициям.
    Бывает так что отсканировалось две штуки а на остатке 1. Т.е когда включается процедура оплата кредиткой, сначала идет запрос в банк, потом печатает фискальник слипы и чек, потом только проводился документ, при проведении выскакивает ошибка что остатка нет по такой то позиции, а слип уже есть и в фискальнике чек пробит.
    Сейчас процедуру провести поставил перед вызовом процедуры оплаты кредиткой.
    Как отменить проведение документа если операция с банком не удалась?
    Код:
    Процедура ОплатаКартой();
            //Перем Сумма;   
            //Сумма=Итог("Сумма");
            //Вызовим диалог для ввода суммы от покупателя
            ВрмСумма=Итог("Сумма");
            Параметр    = СоздатьОбъект("СписокЗначений");
            Параметр.ДобавитьЗначение(ВрмСумма                , "ВрмСумма");
            Параметр.ДобавитьЗначение(Получено              , "Получено");
            Параметр.ДобавитьЗначение("Кредитка"            , "Кредитка");
               
           
            ОткрытьФормуМодально("Обработка.ВводПолучено", Параметр);
           
            Если Параметр.Получить("СтатусВозврата") = 0 Тогда
                Возврат;
            КонецЕсли;
                   
            Получено    = Параметр.Получить("Получено");
            ПечЧек      = Параметр.Получить("ПечЧек");
           
            Форма.Обновить();
       
           
            //вызовим уже непосрдественно оплату банка
            //надо бы провести сначала документ
         Если Модифицированность()=1 Тогда
            ВыбратьСтроки();
            Пока ПолучитьСтроку()=1 Цикл
                Если (Количество=0)Или(Сумма=0) Тогда
                    Предупреждение("В строке "+НомерСтроки+" не указано количество или сумма",20);
                    СтатусВозврата(0);
                    Возврат;
                КонецЕсли;           
            КонецЦикла;
        КонецЕсли;
        //2Сергей    
            Касса = Константа.КассаЭквайринг;
            БылПроведен=Проведен();
            Если Записать()=1 Тогда
               
                // если документ был проведен, то при записи он перепроведется
                // и поэтому нет необходимости его снова проводить
                Если БылПроведен=0 Тогда
                    Если ПравоДоступа("ПроведениеДокумента", "Документ.ЧекККМ") = 1 Тогда
                    //    Провести();
                    Если Провести()= 0 Тогда
                            Возврат;
                    Иначе
                           
            Если ВидОперации= Перечисление.ВидыОперацийЧекККМ.Чек Тогда
                ОперацияПродажи= 1 иначеесли
                ВидОперации= Перечисление.ВидыОперацийЧекККМ.ЧекНаВозврат Тогда
                ОперацияПродажи=0
            КонецЕсли;
               
            Параметр    = СоздатьОбъект("СписокЗначений");
            Параметр.ДобавитьЗначение(Итог("Сумма")             , "Сумма");
            Параметр.ДобавитьЗначение(ОперацияПродажи        , "ОперацияПродажи");
                   
            ОткрытьФормуМодально("Обработка.SBrF.ert", Параметр);
                        
            Провести = Параметр.Получить("МожноПровестиЧекККМ");            
            Если провести=1 тогда
                Касса = Константа.КассаЭквайринг;
                ТипОплаты = "ПЛАТ. КАРТОЙ";
             КонецЕсли;
                    // пробьем чек на ККМ
             Если Касса.РежимККМ = Перечисление.РежимыККМ.ФР Тогда
                 Если глФРВкл = 1 Тогда
                     Если ЧекПробитККМ = 0 Тогда
                         Если ПробитьЧекНаККМ() = 0 Тогда
                            
                             // по каким-то причинам Чек не пробит
                            Сообщить("Чек ККМ не пробит!");
                             Возврат;
                           
                        КонецЕсли;
             Если ПечЧек=1 Тогда
                ПоКнопкеПечать(1,1);
            КонецЕсли;
                    КонецЕсли;
                 КонецЕсли;
             КонецЕсли; 
         КонецЕсли;
    КонецЕсли;
    КонецЕсли;
                        //////Сергей////////////    
                       
                        Форма.Закрыть(1);
                    ОткрытьФорму("Документ.ЧекККМ");
    КонецЕсли;
    КонецПроцедуры;
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    а какая проблема сначала проверить наличие остатков?
  3. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Что то не соображу как это сделать
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    запрос к регистру ОстаткиТМЦ

Поделиться этой страницей