7.7 Печать чека под 54фз

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем Raideres, 20 апр 2017.

  1. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.262
    Симпатии:
    498
    Баллы:
    104
  2. magru
    Offline

    magru

    Регистрация:
    7 фев 2015
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте. ККМ - атол 30ф. Программа Торговля и склад 9.2 . Проблема при оплате картой. В файле frATOL54_comm.ert добавил след код для печати картой.
    Атрибут(XMLPayments, "Cash", "0");
    Атрибут(XMLPayments, "CashLessType1", Макс(СуммаЧека, Получено));
    Атрибут(XMLPayments, "CashLessType2", "0");
    Атрибут(XMLPayments, "CashLessType3", "0");
    При печати чека выходит Электронно = 100 и затем Получено = 0.
    Как сделать , чтобы писало получено 100. Когда выписываем чек за наличку все нормально
    Наличными = 100
    Получено = 100.
    Помогите, в чем может быть проблема?
  3. ivanich
    Offline

    ivanich Новичок в 1С

    Регистрация:
    2 июн 2017
    Сообщения:
    14
    Симпатии:
    1
    Баллы:
    4
    флаг оплаты картой на форме документа указан? И оплата электронно подразумевает, что списывается с карты покупателя именно указанная сумма. Сдачу-то вы не выдаете. вот кусок кода из frcomm.ert:

    Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ДлинаСтроки, НалоговыйРежим, Кассир="",ОплатаКартой=0)

    Если ПустоеЗначение(Объект) = 1 Тогда
    ОписаниеРезультата = "устройство не подключено";
    Возврат 0;
    ИначеЕсли ПодключитьсяКФР(Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;

    Объект.Mode = 1; // режим регистрации чеков
    Объект.Password = Пароль; // пароль на режим регистрации
    Объект.SetMode();
    Объект.GetStatus();
    Если Объект.СостояниеЧека <> 0 Тогда
    Попытка
    Объект.CancelCheck();
    Исключение
    КонецПопытки;
    КонецЕсли;

    Если Объект.Результат <> 0 Тогда
    Попытка
    Объект.CancelCheck();
    Исключение
    КонецПопытки;
    ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
    ОтключитьсяОтФР(Объект, 0);
    Возврат 0;
    КонецЕсли;

    // регистрация товаров
    РезРегистрация = 1;
    СписокТоваров.ВыбратьСтроки();

    ДлинаНаименования = Объект.ДлинаСтрокиСимволов; // зависит от модели ФР
    Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
    //Проверка наличия колонки "НДС" в таблице значений.
    НДСЕсть = "";
    Попытка
    НДС = СписокТоваров.НДС;
    НДСЕсть = 1;
    Исключение
    НДСЕсть = 0;
    КонецПопытки;

    Если НДСЕсть = 1 Тогда
    Объект.Name = "";
    Иначе
    Объект.Name = Лев(СписокТоваров.ТовНаим, ДлинаНаименования);
    КонецЕсли;

    Объект.Price = Окр(СписокТоваров.Цена,2,1);
    Объект.Quantity = СписокТоваров.Количество;

    Если ПризнВозврата = 0 Тогда

    Если НДСЕсть = 1 Тогда//Печатаем НДС

    // В настройках ФР надо настроить ставки:
    // Налог 1 = 18% - НДС 18%
    // Налог 2 = 10% - НДС 10%
    // Налог 3 = 20% - НДС 20%
    // Налог 4 = 0% - без НДС
    // и Тип налога = 2 (Налог на каждую продажу)

    Если СписокТоваров.НДС = 18 Тогда
    Объект.Department = 1;
    ИначеЕсли СписокТоваров.НДС = 10 Тогда
    Объект.Department = 2;
    ИначеЕсли СписокТоваров.НДС = 20 Тогда
    Объект.Department = 3;
    Иначе
    Объект.Department = 4;
    КонецЕсли;
    Иначе
    Объект.Department = 4;
    КонецЕсли;

    Объект.Регистрация();
    Иначе
    Объект.Возврат();
    КонецЕсли;

    Если Объект.Результат <> 0 Тогда
    ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
    Попытка
    Объект.CancelCheck();
    Исключение
    КонецПопытки;
    ОтключитьсяОтФР(Объект, 0);
    Возврат 0;
    КонецЕсли;

    Если НДСЕсть = 1 Тогда
    СтрокаДляПечати = СписокТоваров.ТовНаим;
    Пока СтрДлина(СтрокаДляПечати)>0 Цикл
    Объект.Caption = Лев(СтрокаДляПечати,ДлинаНаименования);
    Объект.PrintString();
    СтрокаДляПечати = СокрЛП(Сред(СтрокаДляПечати,ДлинаНаименования+1));
    КонецЦикла;
    КонецЕсли;

    Если Объект.Результат <> 0 Тогда
    ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
    Попытка
    Объект.CancelCheck();
    Исключение
    КонецПопытки;
    ОтключитьсяОтФР(Объект, 0);
    Возврат 0;
    КонецЕсли;

    КонецЦикла;
    //1021 КАССИР
    Объект.AttrNumber = 1021;
    Объект.AttrValue = Кассир;
    Объект.WriteAttribute();
    Если НалоговыйРежим = "УСН" тогда
    Объект.AttrNumber = 1055;
    Объект.AttrValue = 2;//УСН Доход
    Объект.WriteAttribute();
    ИначеЕсли НалоговыйРежим = "ЕНВД" тогда
    Объект.AttrNumber = 1055;
    Объект.AttrValue = 8;//ЕНВД
    Объект.WriteAttribute();
    КонецЕсли;

    Если ПустоеЗначение(Скидка) = 0 Тогда
    Если Скидка < 0 Тогда
    // надбавка
    Объект.Percents = -Скидка;
    Объект.ПроцентнаяНадбавка();
    Иначе
    // Скидка
    Объект.Percents = Скидка;
    Объект.ПроцентнаяСкидка();
    КонецЕсли;

    КонецЕсли;

    Если Объект.Результат <> 0 Тогда
    Объект.Percents = 0;
    ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
    Попытка
    Объект.CancelCheck();
    Исключение
    КонецПопытки;
    ОтключитьсяОтФР(Объект, 0);
    Возврат 0;
    КонецЕсли;

    Объект.Department = НомерСекции;

    НомерЧека = Объект.НомерЧека;

    Если ОплатаКартой = 0 Тогда
    Объект.TypeClose = 0;
    Если (Получено > 0) И (Получено > СуммаЧека) Тогда
    Объект.Summ = Окр(Получено, 2, 1);
    Объект.ОплатаСоСдачей();
    Иначе
    Объект.ЗакрытьЧек();
    КонецЕсли;
    Иначе
    Объект.Summ = СуммаЧека;
    Объект.TypeClose = 3;
    Объект.Оплата();
    Объект.ЗакрытьЧек();
    КонецЕсли;

    Если Объект.Результат <> 0 Тогда
    ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
    Попытка
    Объект.CancelCheck();
    Исключение
    КонецПопытки;
    ОтключитьсяОтФР(Объект, 0);
    Возврат 0;
    КонецЕсли;

    Возврат ОтключитьсяОтФР(Объект);
    КонецФункции

    У нас все кассы подключены через эту обработку. Атолловскую не стали использовать
  4. magru
    Offline

    magru

    Регистрация:
    7 фев 2015
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Благодарю, попробую с этой обработкой .
  5. ivanich
    Offline

    ivanich Новичок в 1С

    Регистрация:
    2 июн 2017
    Сообщения:
    14
    Симпатии:
    1
    Баллы:
    4
    Только у меня признак УСН или ЕНВД в карточке номенклатуры выставлен, т.е в этом куске кода выходит 2 чека друг за другом, если покупатель берет масло моторное и фильтр масляный (2 разные системы налогообложения). А городить что-то как сделали знакомым моим - 2 склада, мне не особо удобно. Если нужно, напиши адрес эл. почты, скину обработку полностью, поясню, попробуешь может пойдет вам для работы. Смотрел в интернете, наши чеки все передаются правильно.
  6. magru
    Offline

    magru

    Регистрация:
    7 фев 2015
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    У меня вообще только УСН (Доходы - Расходы). Может быть или наличка или оплата картой. Я начал править под новую обработку.
    Мой адрес magru61@mail.ru. Сбросьте полностью обработку Вашу, я подправлю где надо. Я так понял, надо использовать FprnM1C.dll.
    Заранее благодарю!
  7. ivanich
    Offline

    ivanich Новичок в 1С

    Регистрация:
    2 июн 2017
    Сообщения:
    14
    Симпатии:
    1
    Баллы:
    4
    Отправил, смотри

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