Имя: Пароль:
1C
1C 7.7
v7: 77 оплата картой как реализуется в новых ккм?
0 НичегоНе Понятно
 
21.11.19
10:45
Всем привет! 7кой забыл когда занимался, подскажите как настроить оплату картами. Там или ТИС древний или не знаю в чем проблема. Они просто нажимают ОК в доке чекККМ. И ккм отдает чек, где вся сумма наличкой. Подскажите как это делается в 77?
1 DeMi4
 
21.11.19
10:48
передавать данные с другим типом оплаты
2 Kigo_Kigo
 
21.11.19
10:56
(0) никак, этого нет в стандарте 1с, но решается легко 3 строчками кода, даже не в конфе а обработке обслуживания
3 Kigo_Kigo
 
21.11.19
10:57
это если не заморачиваться частичными оплатами
4 victuan1
 
25.11.19
07:18
(3) А если заморачиваться?
5 HawkEye
 
25.11.19
08:39
(4) а если заморачиваться, то сначала надо спросить сколько есть денег, отнять их от нужной суммы, а потом добавить "три строчки кода"
6 HawkEye
 
25.11.19
08:40
(0) приглашается программист, который минимум умеет пользоваться отладчиком и платятся ему деньги..
7 Kigo_Kigo
 
25.11.19
08:44
(4) Не тогда надо сделать
~ОшибкаВводаСумм;
ОплатаНал = 0;
ОплатаБезнал = 0;
Если ВвестиЧисло(ОплатаНал,"Введите сумму оплаты НАЛИЧНЫМИ, Сумма по чеку = " + СуммаЧека) = 1 тогда

КонецЕсли;
Если ВвестиЧисло(ОплатаБезнал ,"Введите сумму оплаты БЕЗНАЛИЧНЫМИ, Сумма по чеку " + СуммаЧека) = 1 тогда

КонецЕсли;
Далее проверяй на ноль и на НАЛИЧНЫМИ+ БЕЗНАЛИЧНЫМИ = СуммаЧека
и распихивай

Если (НАЛИЧНЫМИ = 0) И (БЕЗНАЛИЧНЫМИ = 0) Тогда
Возврат "ОшиькаВводаСумм";
КонецЕсли;

Если НАЛИЧНЫМИ+ БЕЗНАЛИЧНЫМИ  <> СуммаЧека Тогда
Перейти ~ОшибкаВводаСумм;
КонецЕсли;
Сообщить();

Если НАЛИЧНЫМИ <> 0 Тогда
Объект.Summ1  = НАЛИЧНЫМИ;
КонецЕсли;
Если БЕЗНАЛИЧНЫМИ <> 0 Тогда
Объект.Summ2  = БЕЗНАЛИЧНЫМИ;
КонецЕсли;

Можно на форме обработки разместить Нал безнал и так далее сами фантазируйте в удобстве работы
8 Сияющий в темноте
 
25.11.19
08:55
также как и в старых
у кого-то код вида оплаты,а у кого-то отдельная сумма в пакете завершения чека.
эквайринг все равно отдельно подключается и с ккт свчзывается только через код в 1с
9 Arbuz
 
25.11.19
11:42
(4) ))) то там вылезет не только частичная оплата. К тому же зачем оно надо, если всё или почти всё уже заморочено и готово к употреблению, по цене одного среднего ужина)))

(7) жуть какая. я понимаю, понедельник, утро, но надо как-то сдерживаться, что-ли.
10 НичегоНе Понятно
 
26.11.19
03:33
(2) Это нужно еще немного допилить форму, что бы она могла где то указать, что оплата безналичная, как я понимаю. Как обычно это выглядит?  Можно увидеть эти три строчки кода?
(3) Частичными оплатами заморачиваться не будем.
(6) Я умею пользоваться отладчиком. Возиться на рабочем месте, нет возможности, оперативная работа. Домой тащить ккм вообще не вариант. Хорошо бы глянуть, рабочий код, сразу на месте внести изменения, чтобы по минимуму там занимать рабочую машину, разглядывая как это работало в ледниковом периоде(или когда там 77 была актуальна?).
11 victuan1
 
26.11.19
06:02
12 victuan1
 
26.11.19
06:03
(11) Вот здесь этот пример в документе ЧекККМ для ТИС, ред. 9.2 реализован https://yadi.sk/d/0kc_Ait63MBGSh
13 victuan1
 
26.11.19
06:04
(12) В файле TIS987_54FZ.md
14 Kigo_Kigo
 
26.11.19
07:50
(9) А в чем жуть, или код не рабочий?
(10) 3 а точнее 5 строк добавить, 2 исправть кода в Обработке обслуживания в процедуре ПечататьЧек()
ОплатаБезнал = 0;
Получено = СуммаЧека;
Если Вопрос("Оплата БЕЗНАЛИЧНЫМИ",6) = 4 тогда
ОплатаБезнал = СуммаЧека;
Получено = 0;
КонецЕсли;

Объект.Summ1  = Получено ;
Объект.Summ2  = ОплатаБезнал;
Объект.Summ3  =0;
Объект.Summ4  =0;
15 Arbuz
 
26.11.19
11:32
(14) за один только безусловный переход я бы уже бил по рукам - здесь он совершенно не оправдан. ещё как минимум одно условие лишнее. да и в целом, общая логика - я понимаю, сферическая в вакууме - но делать так нельзя.
(14) это то же, сомнительного качества код. Получено - это реквизит чека с определённой логикой, тупо присваивать ему что-либо  - это бред, тем более когда введена ОплатаБезнал. где в чеке сохраняется признак оплаты картой, ОплатаБезнал - это реквизит? ну и вопросы по логике документа по кнопке ок/провести - это ещё одна причина бить по рукам.
16 Kigo_Kigo
 
26.11.19
11:46
(15) Себе настучи кодоморалфаг,Логика в получено - это реквизит ЧекаККМ, а не обработки обслуживания,не думаю что в этом случае критично расчет сдачи в печати чека, не хочешь получено - сделай забратоналомупакупателя, и так во всем, а логика безусловного перехода - в том что кассир ошибся при вводе суммы, их надо переввести, или есть другое решение? а нуда, мы же скажем не верно введена сумма, и по кругу будем возвращать в чек да?
логики не более чем достаточно
17 Kigo_Kigo
 
26.11.19
11:49
(16) + и да это всего лишь заготовки а как их будет реализовывать автор, мне честно по барабану
18 Кодер
 
26.11.19
11:51
(17) "Поставляемая конфигурация - пример реализации учёта", кажется так было в документации от типовой?
19 MWWRuza
 
гуру
26.11.19
12:18
Вот, кусок из моей рабочей самописки, под АТОЛ, Пар - 1 если нал, 2 если картой:

    ИтогЧека    = ТЧ.Итог("Сумма");
    Если Пар = 1 Тогда
        Если СуммаОтПок > ИтогЧека Тогда
            ECR.TypeClose         = 0;
            ECR.Summ             = СуммаОтПок;
            Если ECR.Delivery() <> 0 Тогда
                Ошибка = 1;
                Возврат;
            КонецЕсли;             
        Иначе
            ECR.TypeClose     = 0;
            ECR.Summ        = ИтогЧека;
            ECR.Payment();
              Если ECR.CloseCheck() <> 0 тогда
                  Сообщить("Ошибка продажи по накладной ");
                  Ошибка = 1;
                Если ECR.OutOfPaper = 0 Тогда
                      Предупреждение("В ККМ закончилась бумага!");
                  КонецЕсли;
                  Если ECR.GetCurrentMode() <> 0 Тогда
                     Возврат;
                КонецЕсли;
                Возврат;
              КонецЕсли;        
        КонецЕсли;
    ИначеЕсли Пар = 2 Тогда
        ECR.TypeClose = 5; // В новых прошивках соответствует платежной карте
        ECR.Summ        = ИтогЧека;
        ECR.Payment();
          Если ECR.CloseCheck() <> 0 тогда
              Сообщить("Ошибка продажи по накладной ");
              Ошибка = 1;
            Если ECR.OutOfPaper = 0 Тогда
                  Предупреждение("В ККМ закончилась бумага!");
              КонецЕсли;
              Если ECR.GetCurrentMode() <> 0 Тогда
                Возврат;
            КонецЕсли;
            Возврат;
        КонецЕсли;
    Иначе
        ECR.TypeClose     = 5;
        ECR.Summ         = Мин(ДоляКарт,ИтогЧека);
        ECR.Payment();
        ECR.TypeClose     = 0;
        ECR.Summ         = ИтогЧека - ДоляКарт;
        ECR.Payment();
        
          Если ECR.CloseCheck() <> 0 тогда
              Сообщить("Ошибка продажи по накладной ");
              Ошибка = 1;
            Если ECR.OutOfPaper = 0 Тогда
                  Предупреждение("В ККМ закончилась бумага!");
              КонецЕсли;
              Если ECR.GetCurrentMode() <> 0 Тогда
                Возврат;
            КонецЕсли;
            Возврат;
          КонецЕсли;        
    КонецЕсли;
20 Злопчинский
 
26.11.19
12:32
21 victuan1
 
27.11.19
21:00
(20) Когда допилишь смешанную оплату? ;)
22 tgu82
 
27.11.19
21:50
(21) А как делать Возврат при смешанной оплате (картой наличкой)? если возвращается часть то как делить на наличку и безнал
23 Kigo_Kigo
 
27.11.19
21:59
(22) В этом случае делается полный возврат, и выбивается новый чек
24 MWWRuza
 
гуру
27.11.19
22:10
В (19) у меня смешанная оплата работает. И для возврата тоже будет работать, только сумму первой оплаты(безнал) надо вручную вводить. Естественно, терминал не подключен, вводится на терминале сумма и в кассе вручную. Есть у меня немного другая конфа, где СБЕР подключен интегрированно, через sbrf.dll, правда, под восьмеркой, но "семерошными" методами, переписать на 7.7 ни каких проблем. Там тоже смешанная оплата работает, вводится сумма по карте, а остаток предлагает ввести наличкой, можно со сдачей или без.
25 HawkEye
 
27.11.19
22:25
(10) ну вот... тебе легче станет?
ИначеЕсли СокрЛП(код) = "115" Тогда // Клавиша  F4 //оплата по безналу  
    ЗаписалиДокумент    = 0;  
    ЗапустилиНаПробитие = 1;
    //ЗаписьЖурналаРегистрации("Готовим таблицу докмента", "ФР", "Чек", ТекущийДокумент(), 3);
    Если лкмПодготовитьДокументСуммы() = 1 Тогда
        //ЗаписьЖурналаРегистрации("Подключаем терминал СБ", "ФР", "Чек", ТекущийДокумент(), 3);
        Если лкмПодключитьТерминалБанка() = 1 Тогда
            ПарамДляФормы = СоздатьОбъект("СписокЗначений");
            ПарамДляФормы.ДобавитьЗначение(СуммаПоРучнойКассе - ЧекПробитККМВВ * СуммаКартойВВ, "СуммаВВ");
            ПарамДляФормы.ДобавитьЗначение(СуммаНеВВ - ЧекПробитККМ * СуммаКартойНеВВ, "СуммаНеВВ");  
            ПарамДляФормы.ДобавитьЗначение(ТекущийДокумент(),"ТекущийДокумент");
            //ЗаписьЖурналаРегистрации("Спрашиваем сумму: " + (СуммаПоРучнойКассе + СуммаНеВВ), "ФР", "Чек", ТекущийДокумент(), 3);
            ОткрытьФормуМодально("Обработка.ВводСуммыПоТерминалу", ПарамДляФормы);  //здесь спрашиваем сколько будут оплачивать налом, остальное картой.
            СуммаОплатыКартойВсего = ПарамДляФормы;  
            //ЗаписьЖурналаРегистрации("Спросили сумму для терминала, ввели: " + СокрЛП(СуммаОплатыКартойВсего) + ". В чеке: " +
            //СокрЛП(СуммаПоРучнойКассе + СуммаНеВВ) + " (не ВВ: " + СокрЛП(СуммаНеВВ) + " + ВВ: " +
            //СокрЛП(СуммаПоРучнойКассе) + "). Получили от клиента: " + СокрЛП(Получено), "ФР", "Терминал банка", ТекущийДокумент(), 3);
            Если СуммаОплатыКартойВсего > 0 Тогда
                Если (СуммаПоРучнойКассе > 0) И (ЧекПробитККМВВ = 0) Тогда
                    СуммаКартойВВ = Мин(СуммаПоРучнойКассе, ПарамДляФормы);
                    ПарамДляФормы = ПарамДляФормы - СуммаКартойВВ;
                КонецЕсли;
                Если (СуммаНеВВ > 0) И (ЧекПробитККМ = 0) Тогда
                    СуммаКартойНеВВ = Мин(СуммаНеВВ, ПарамДляФормы);
                    ПарамДляФормы = ПарамДляФормы - СуммаКартойВВ;    
                КонецЕсли;
                
                Если ВыполнитьНажатиеНаКнопку("ОК") = 1 Тогда
                    БылаНажатаКнопкаАлт = 0;
                КонецЕсли;
            Иначе
                Предупреждение("Ввели нулевую сумму!", 15);    
            КонецЕсли;    
        Иначе
            Предупреждение("Ошибка при подготовке документа к пробитию!!!", 15);
            ЗапустилиНаПробитие = 0;
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
    Иначе
        Предупреждение("Проверьте цены в документе!!!", 15);
        ЗапустилиНаПробитие = 0;
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
26 Злопчинский
 
27.11.19
22:39
(21) надо, надо! а то опух от малоджелания. неинтересные эти мелкие копания ;-)
27 Злопчинский
 
27.11.19
22:41
а как, поясните, делается документ.ОтчетККМ за смену?
я у себя допиливал в МНЧ дока реквизит типа ТипОплаты, при проведении что безналом - проводил по Регистру.Банк, налом - по регистр.Касса.
.
но как-то никто не упоминает как он в базе проводит закрытие смены..
???
28 tgu82
 
27.11.19
22:57
(27) Да обычно, через обработку "Закрытие кассовой смены" малость переделаную
29 tgu82
 
27.11.19
22:58
(27) Что безналом то потом с помощью РКО убираем из касс эквайринг
30 Kigo_Kigo
 
28.11.19
07:48
(27) Ну если по нормальному заморачиваться, то у меня эти модули перепилены сильно, там и банк - касса переносятся, и клиенты и скидки и сертификаты и баллы и карты клиентов которае применилась при расчете скидки, но это уже совсем другая история