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

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

  1. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    Добрый день переделываю стандартную обработку обслуживания под 54 фз застрял на скидках как реализовать действие правильно пока не знаю мб подскажите ?


    Вот что смог сам написать.
    Код:
    //********************************************************************************
    //Функция ПечататьЧек(Объект, Кассир, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ДлинаСтроки)
    Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, ПУП, Кассир, НомерСекции, НомерЧека, ДлинаСтроки)   
        Если ПустоеЗначение(Объект) = 1 Тогда
            ОписаниеРезультата = "устройство не подключено";
            Возврат 0;
        ИначеЕсли ПодключитьсяКФР(Объект) = 0 Тогда
            Возврат 0;
        КонецЕсли;
       
        СистемаНалогообложения = ПУП;
        Электронно = 0;
        НомерЧека = "";
        НомерСмены = "";
        НомерДокумента = "";
        ФискальныйПризнак = "";
        АдресСайтаПроверки = "";
       
        ТипРасчета = 1;
       
        Если ПризнВозврата = 0 Тогда
            ТипРасчета = 1;
        ИначеЕсли ПризнВозврата = 1 Тогда
            ТипРасчета = 2;
        КонецЕсли;   
       
        Объект.Mode = 1; // режим регистрации чеков
        Объект.Password = Пароль; // пароль на режим регистрации
        Объект.SetMode();
       
        Объект.NewDocument();
        // Записать должность и ФИО кассира
        Объект.AttrNumber = 1021;
        Объект.AttrValue = Кассир;
        Объект.WriteAttribute();
    
        Объект.GetStatus();
        Если Объект.СостояниеЧека <> 0 Тогда //Текущее состояние чека: 0-закрыт; 1-открыт чек продажи; 2-открыт чек возврата продажи; 3-открыт чек анулирования продажи; 4-открыт чек покупки; 5-открыт чек возврата покупки;       
            Попытка
                Объект.CancelCheck();
            Исключение
            КонецПопытки;
        КонецЕсли;
       
        Если Объект.Результат <> 0 Тогда
            Попытка
                Объект.CancelCheck();
            Исключение
            КонецПопытки;
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            Сообщить("Ошибка:"+ОписаниеРезультата);
            ОтключитьсяОтФР(Объект, 0);
            Возврат 0;
        КонецЕсли;
       
       
        Объект.CheckType = ТипРасчета;// CheckType - Тип чека:1 - Приход;2 - Возврат прихода;4 - Расход;5 - Возврат расхода;7 - Коррекция прихода;9 - Коррекция расхода;
        Объект.CheckMode = 1;// CheckMode - Режим формирования чека:0 - только в электронном виде без печати на чековой ленте;1 - печатать на чековой ленте;
        Объект.OpenCheck();
        Объект.AttrNumber = 1055;
        Объект.AttrValue = СистемаНалогообложения;// Применяемая система налогооблажения в чеке:ОСН - 1;УСН доход - 2;УСН доход-расход - 4;ЕНВД - 8;ЕСН - 16;ПСН - 32;
        Объект.WriteAttribute();
       
       
       
        // регистрация товаров
        //РезРегистрация = 1;
        СписокТоваров.ВыбратьСтроки();
        ДлинаНаименования = Объект.ДлинаСтрокиСимволов; // зависит от модели ФР
        Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
            //Проверка наличия колонки "НДС" в таблице значений.
            НДСЕсть = "";
            Попытка
                НДС = СписокТоваров.СтавкаНДС;
                НДСЕсть = 1;
            Исключение
                НДСЕсть = 0;
            КонецПопытки;
    
            Объект.Name       = Лев(СписокТоваров.ТовНаим, ДлинаНаименования);
            Объект.Price      = Окр(СписокТоваров.Цена,2,1);
            Объект.Quantity   = СписокТоваров.Количество;               
           
            Если ПризнВозврата = 0 Тогда    //ПРОДАЖА       
               
                Объект.Department = НомерСекции;//печатаем номер секции           
    
                Если НДСЕсть = 1 Тогда//Печатаем НДС       
                // Объект.TaxTypeNumber - Номер налога:|0 - Налог из секции|1 - НДС 0%|2 - НДС 10%|3 - НДС 18%|4 - НДС не облагается|5 - НДС с расчётной ставкой 10%|6 - НДС с расчётной ставкой 18%           
                        Если СписокТоваров.НДС = 0 Тогда // 1 - НДС 0%
                            Объект.TaxTypeNumber = 1;   
                        ИначеЕсли СписокТоваров.НДС = 10 Тогда
                            Объект.TaxTypeNumber = 2;   //  2 - НДС 10%
                        ИначеЕсли СписокТоваров.НДС = 18 Тогда
                            Объект.TaxTypeNumber = 3;      //  3 - НДС 18%
                        ИначеЕсли СписокТоваров.НДС = "none" Тогда
                            Объект.TaxTypeNumber = 4;  //     4 - НДС не облагается
                        Иначе
                            Объект.TaxTypeNumbert = 0; //     0 - Налог из секции
                        КонецЕсли;
                Иначе
                    Объект.TaxTypeNumbert = 0;     //     0 - Налог из секции
                КонецЕсли;
                // рекомендуется рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
                // driver.DiscountValue = 10;
                // // DiscountType - Тип скидки:
                // //     0 - суммовая
                // //     1 - процентная
                // driver.DiscountType = 0;
                Объект.Registration();
            //    ЦенаБезСкидки =Скидка+СуммаЧека;
            //    Объект.Caption = "В том числе скидка: "+Скидка+ "Цена без скидки:"+ЦенаБезСкидки+""
            //    Объект.PrintString();
            //   
            //    // Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения.  SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны
            //    // Destination - Назначение скидки:
            //    //     0 - на чек
            //    //     1 - на позицию (недоступно)
            //    driver.Destination = 0;
            //    driver.Summ = 0.66;
            //    driver.SummDiscount();
            //
       
        Иначе                      //ВОЗВРАТ
                Объект.Возврат();
        КонецЕсли;
           
            Если Объект.Результат <> 0 Тогда
                ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
                Сообщить("Ошибка:"+ОписаниеРезультата);
                    Попытка
                        Объект.CancelCheck();
                    Исключение
                    КонецПопытки;
                ОтключитьсяОтФР(Объект, 0);
                Возврат 0;
            КонецЕсли;
        КонецЦикла;
       
       
    ////   
    ////   
    ////    Если ПустоеЗначение(Скидка) = 0 Тогда
    ////        Если Скидка < 0 Тогда   
    ////            //Размер применяемой Надбавки
    ////            Объект.DiscountValue = -Скидка;
    ////            // DiscountType - Тип скидки:0 - суммовая;1 - процентная;
    ////            Объект.DiscountType = 1;
    ////        Иначе
    ////            //Размер применяемой скидки
    ////            Объект.DiscountValue = Скидка;
    ////            // DiscountType - Тип скидки:0 - суммовая;1 - процентная;
    ////            Объект.DiscountType = 1;   
    ////        КонецЕсли;   
    ////    КонецЕсли;
    ////   
    ////        ЦенаБезСкидки =Скидка+СуммаЧека;
    ////        Объект.Caption = "В том числе скидка: "+Скидка+ "Цена без скидки:"+ЦенаБезСкидки+"";
    ////        Объект.PrintString();
    ////        // Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения.  SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны
    ////        // Destination - Назначение скидки:
    ////        //     0 - на чек
    ////        //     1 - на позицию (недоступно)
    ////        Объект.Destination = 0;
    ////   
    ////    Если Объект.Результат <> 0 Тогда
    ////        Объект.DiscountValue    = 0;
    ////        ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
    ////        Сообщить("Ошибка:"+ОписаниеРезультата);
    ////        Попытка
    ////            Объект.CancelCheck();
    ////        Исключение
    ////        КонецПопытки;
    ////        ОтключитьсяОтФР(Объект, 0);
    ////        Возврат 0;
    ////    КонецЕсли;
    ////   
    ////
    ////    НомерЧека = Объект.НомерЧека;
       
        Если (Получено > 0) И (Получено > СуммаЧека) Тогда// Оплата и закрытие чека
            // TypeClose - Тип оплаты:0 - Наличными | 1 - Электронными средствами платежа
            Объект.TypeClose = 0;
            Объект.Summ = Окр(Получено, 2, 1);
            Объект.ОплатаСоСдачей();
            Объект.Payment();
        Иначе
            Объект.CloseCheck();
        КонецЕсли;
       
        Если Объект.Результат <> 0 Тогда
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            //    Сообщить("Ошибка:"+ОписаниеРезультата);
            Попытка
                Объект.CancelCheck();
            Исключение
            КонецПопытки;
            ОтключитьсяОтФР(Объект, 0);
            Возврат 0;
        КонецЕсли;           
       
        Возврат ОтключитьсяОтФР(Объект);
       
    КонецФункции
    
    
    --- Объединение сообщений, 20 апр 2017 ---
    а вот пример от атола


    Код:
    // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
    // ---------- Чек прихода без отправки электронного чека покупателю ---------- //
    // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
    
    // Mode - Режим:
    //     0 - Выбора
    //     1 - Регистрации
    //     2 - Отчётов без гашения
    //     3 - Отчётов с гашением
    driver.Mode = 1;
    driver.SetMode();
    
    driver.NewDocument();
    
    // Записать должность и ФИО кассира
    driver.AttrNumber = 1021;
    driver.AttrValue = "Старший кассир Иванов И.И.";
    driver.WriteAttribute();
    
    // CheckType - Тип чека:
    //     1 - Приход
    //     2 - Возврат прихода
    //     4 - Расход
    //     5 - Возврат расхода
    //     7 - Коррекция прихода
    //     9 - Коррекция расхода
    driver.CheckType = 1;
    // CheckMode - Режим формирования чека:
    //     0 - только в электронном виде без печати на чековой ленте
    //     1 - печатать на чековой ленте
    driver.CheckMode = 1;
    driver.OpenCheck();
    
    driver.AttrNumber = 1055;
    // Применяемая система налогооблажения в чеке:
    //     ОСН - 1
    //     УСН доход - 2
    //     УСН доход-расход - 4
    //     ЕНВД - 8
    //     ЕСН - 16
    //     ПСН - 32
    driver.AttrValue = 8;
    driver.WriteAttribute();
    
    // Регистрация товара или услуги
    driver.Name = "Молоко 3.2%";
    driver.Price = 50.33;
    driver.Quantity = 2;
    driver.Department = 0;
    // TaxTypeNumber - Номер налога:
    //     0 - Налог из секции
    //     1 - НДС 0%
    //     2 - НДС 10%
    //     3 - НДС 18%
    //     4 - НДС не облагается
    //     5 - НДС с расчётной ставкой 10%
    //     6 - НДС с расчётной ставкой 18%
    driver.TaxTypeNumber = 4;
    // рекомендуется рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
    // driver.DiscountValue = 10;
    // // DiscountType - Тип скидки:
    // //     0 - суммовая
    // //     1 - процентная
    // driver.DiscountType = 0;
    driver.Registration();
    driver.Caption = "В том числе скидка: 4.67\nЦена без скидки: 55.00";
    driver.PrintString();
    
    // Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения.  SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны
    // Destination - Назначение скидки:
    //     0 - на чек
    //     1 - на позицию (недоступно)
    driver.Destination = 0;
    driver.Summ = 0.66;
    driver.SummDiscount();
    
    // Нефискальная печать с информацией по скидкам чека
    driver.Caption = "--Скидки по чеку--";
    driver.PrintString();
    driver.Caption = "Сумма чека без скидок 110.00";
    driver.PrintString();
    driver.Caption = "Скидки по карте: 9.34";
    driver.PrintString();
    driver.Caption = "Округление: 0.66";
    driver.PrintString();
    
    // Оплата и закрытие чека
    // TypeClose - Тип оплаты:
    //     0 - Наличными
    //     1 - Электронными средствами платежа
    driver.TypeClose = 0;
    driver.Summ = 500.00;
    driver.Payment();
    driver.CloseCheck();
    Последнее редактирование: 20 апр 2017
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Так на каком месте застряли? Все же у вас в руках
  3. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    После объект.регистрация() незнаю что писать чтобы правильно сделать вывод скидки



    Вот от с этого момента начиная не знаю что писать...
    Это код стандартной обработки

    Код:
                   
                Объект.Регистрация();
            Иначе
                Объект.Возврат();
            КонецЕсли;
    
            Если Объект.Результат <> 0 Тогда
                ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
                Попытка
                    Объект.CancelCheck();
                Исключение
                КонецПопытки;
                ОтключитьсяОтФР(Объект, 0);
                Возврат 0;
            КонецЕсли;
           
            Если НДСЕсть = 1 Тогда
                СтрокаДляПечати = СписокТоваров.ТовНаим;
                Пока СтрДлина(СтрокаДляПечати)>0 Цикл
                    Объект.Caption = Лев(СтрокаДляПечати,ДлинаНаименования);
                    Объект.PrintString();
                    СтрокаДляПечати = СокрЛП(Сред(СтрокаДляПечати,ДлинаНаименования+1));
                КонецЦикла;
            КонецЕсли;
           
            Если Объект.Результат <> 0 Тогда
                ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
                Попытка
                    Объект.CancelCheck();
                Исключение
                КонецПопытки;
                ОтключитьсяОтФР(Объект, 0);
                Возврат 0;
            КонецЕсли;
           
        КонецЦикла;
           
        Если ПустоеЗначение(Скидка) = 0 Тогда
            Если Скидка < 0 Тогда
                // надбавка
                Объект.Percents = -Скидка;
                Объект.ПроцентнаяНадбавка();
            Иначе
                // Скидка
                Объект.Percents = Скидка;
                Объект.ПроцентнаяСкидка();
            КонецЕсли;
                   
        КонецЕсли;
       
        Если Объект.Результат <> 0 Тогда
            Объект.Percents    = 0;
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            Попытка
                Объект.CancelCheck();
            Исключение
            КонецПопытки;
            ОтключитьсяОтФР(Объект, 0);
            Возврат 0;
        КонецЕсли;
    
        Объект.Department = НомерСекции;
       
        НомерЧека = Объект.НомерЧека;
       
        Если (Получено > 0) И (Получено > СуммаЧека) Тогда
            Объект.Summ = Окр(Получено, 2, 1);
            Объект.ОплатаСоСдачей();
        Иначе
            Объект.ЗакрытьЧек();
        КонецЕсли;
       
        Если Объект.Результат <> 0 Тогда
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            Попытка
                Объект.CancelCheck();
            Исключение
            КонецПопытки;
            ОтключитьсяОтФР(Объект, 0);
            Возврат 0;
        КонецЕсли;           
       
        Возврат ОтключитьсяОтФР(Объект);
    
    КонецФункции
    Последнее редактирование: 21 апр 2017
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    если я правильно понял из ваших комментариев вам надо:
    печать цены сразу с учетом скидки
    строка скидки не д.б. фискализирована (просто печать текста в чеке)
    Так?
  5. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    upload_2017-4-21_9-16-0.png



    Код:
    ВыбратьСтроки();
        Пока ПолучитьСтроку() = 1 Цикл
            СписокТоваров.НоваяСтрока();
          
            //added
            //СписокТоваров.ТовНаим    = Номенклатура.Наименование;
            СписокТоваров.ТовНаим    = Лев(Номенклатура.Наименование,30);
            //added
            СписокТоваров.Цена       = Цена;
            СписокТоваров.Количество = Количество;
            СписокТоваров.Сумма         = Сумма;
            СписокТоваров.СтавкаНДС  = 100 * глНачисляемыйНДС(Номенклатура.СтавкаНДС);
        КонецЦикла;
      
        ПризнВозврата = ?(ВидОперации = Перечисление.ВидыОперацийЧекККМ.Чек, 0, 1);
        ПУП           = 1;
       
            ЧекПробитККМ  = глФРПечататьЧек(СписокТоваров, Итог("Сумма"), ?(Получено=0,Итог("Сумма"),Получено), Скидка.Процент, ПризнВозврата, Склад.НомерСекции, НомерЧека, ПУП, Кассир)
    
    

    Скидку на чек теперь применять нельзя, только построчно
    Скидки нельзя указывать в онлайн-кассах. Указывай цену (Price) уже с учетом всех скидок и наценок.

    мб еще что то незнаю про скидки?

    получается как вы сказали.. мб я и ошибаюсь просто уже запутался сам

    кстати вот ссылка на ффд мб кому пригодится http://yadi.sk/d/lHkIq9fC3GD2aw
    Последнее редактирование: 21 апр 2017
  6. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    где
    Объект.СуммаЧека = с учетом скидки 23.75
    Объект.Скидка = процент скидки 5 %
    Объект.Price = цена без учета скидки 25
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
  8. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    Код:
    //********************************************************************************
    Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, ПУП, Кассир, НомерСекции, НомерЧека, ДлинаСтроки)  
      
        объект.CurrentDeviceIndex =0;
        Если ПустоеЗначение(Объект) = 1 Тогда
            ОписаниеРезультата = "устройство не подключено";
            Возврат 0;
        ИначеЕсли ПодключитьсяКФР(Объект) = 0 Тогда
            Возврат 0;
        КонецЕсли;
      
        СистемаНалогообложения = ПУП;
        Электронно = 0;
        НомерЧека = "";
        НомерСмены = "";
        НомерДокумента = "";
        ФискальныйПризнак = "";
        АдресСайтаПроверки = "";
      
        ТипРасчета = 1;
      
        Если ПризнВозврата = 0 Тогда
            ТипРасчета = 1;
        ИначеЕсли ПризнВозврата = 1 Тогда
            ТипРасчета = 2;
        КонецЕсли;  
         
      
        //Регистрация продаж
        Объект.Mode = 1; // режим регистрации чеков
        Объект.Password = Пароль; // пароль на режим регистрации
        Объект.SetMode();
      
        Объект.NewDocument();
    
        // Записать должность и ФИО кассира
        Объект.AttrNumber = 1021;
        Объект.AttrValue = Кассир;
        Объект.WriteAttribute();
      
        //Проверяем ошибки
        Если Объект.ResultCode <> 0 Тогда
            Попытка
                Объект.CancelCheck();
            Исключение
            КонецПопытки;
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            Сообщить("Ошибка:"+ОписаниеРезультата);
            ОтключитьсяОтФР(Объект, 0);
            Возврат 0;
        КонецЕсли;  
      
        //Тип Чека  Приход или Возврат
        Объект.CheckType = ТипРасчета;// CheckType - Тип чека:1 - Приход;2 - Возврат прихода;4 - Расход;5 - Возврат расхода;7 - Коррекция прихода;9 - Коррекция расхода;
        Объект.CheckMode = 1;// CheckMode - Режим формирования чека:0 - только в электронном виде без печати на чековой ленте;1 - печатать на чековой ленте;
        Объект.OpenCheck();
      
        //Проверяем ошибки
        Если Объект.ResultCode <> 0 Тогда
            Попытка
                Объект.CancelCheck();
            Исключение
            КонецПопытки;
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            Сообщить("Ошибка:"+ОписаниеРезультата);
            ОтключитьсяОтФР(Объект, 0);
            Возврат 0;
        КонецЕсли; 
      
        //Применяемая система налогооблажения в чеке
        Объект.AttrNumber = 1055;
        Объект.AttrValue = СистемаНалогообложения;// Применяемая система налогооблажения в чеке:ОСН - 1;УСН доход - 2;УСН доход-расход - 4;ЕНВД - 8;ЕСН - 16;ПСН - 32;
        Объект.WriteAttribute();
      
        //Проверяем ошибки
        Если Объект.ResultCode <> 0 Тогда
            Попытка
                Объект.CancelCheck();
            Исключение
            КонецПопытки;
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            Сообщить("Ошибка:"+ОписаниеРезультата);
            ОтключитьсяОтФР(Объект, 0);
            Возврат 0;
        КонецЕсли;
      
      
        // регистрация товаров
        РезРегистрация = 1;
           ДлинаНаименования = Объект.CharLineLength; // CharLineLength= ДлинаСтрокиСимволов зависит от модели ФР  
    
    
        СписокТоваров.ВыбратьСтроки();
        Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
            //Проверка наличия колонки "НДС" в таблице значений.
            НДСЕсть = "";
            Попытка
                НДС = СписокТоваров.СтавкаНДС;
                НДСЕсть = 1;
            Исключение
                НДСЕсть = 0;
            КонецПопытки;
    
            Объект.Name       = Лев(СписокТоваров.ТовНаим, ДлинаНаименования);
            Объект.Price      = Окр(СписокТоваров.Цена,2,1); //ЦенаБезСкидки   
            Объект.Quantity   = СписокТоваров.Количество;              
          
              Объект.Department = НомерСекции;//печатаем номер секции          
    
            Если НДСЕсть = 1 Тогда//Печатаем НДС      
                    // Объект.TaxTypeNumber - Номер налога:|0 - Налог из секции|1 - НДС 0%|2 - НДС 10%|3 - НДС 18%|4 - НДС не облагается|5 - НДС с расчётной ставкой 10%|6 - НДС с расчётной ставкой 18%          
                    Если СписокТоваров.СтавкаНДС = 0 Тогда
                            Объект.TaxTypeNumber = 1;   // 1 - НДС 0%
                        ИначеЕсли СписокТоваров.СтавкаНДС = 10 Тогда
                            Объект.TaxTypeNumber = 2;   //  2 - НДС 10%
                        ИначеЕсли СписокТоваров.СтавкаНДС = 18 Тогда
                            Объект.TaxTypeNumber = 3;      //  3 - НДС 18%
                        ИначеЕсли СписокТоваров.СтавкаНДС = "none" Тогда
                            Объект.TaxTypeNumber = 4;  //     4 - НДС не облагается
                        Иначе
                            Объект.TaxTypeNumbert = 0; //     0 - Налог из секции
                    КонецЕсли;
            Иначе
                    Объект.TaxTypeNumbert = 0;     //     0 - Налог из секции
            КонецЕсли;      
            Объект.Registration();
            //Проверяем ошибки
            Если Объект.ResultCode <> 0 Тогда
                ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
                Сообщить("Ошибка:"+ОписаниеРезультата);
                    Попытка
                        Объект.CancelCheck();
                    Исключение
                    КонецПопытки;
                ОтключитьсяОтФР(Объект, 0);
                Возврат 0;
            КонецЕсли;
        КонецЦикла;
      
      
        НомерЧека = Объект.CheckNumber; //Номер текущего чека
      
      
      
        Если (Получено > 0) И (Получено > СуммаЧека) Тогда
            // Оплата
            Объект.TypeClose = 0;                // TypeClose - Тип оплаты:0 - Наличными | 1 - Электронными средствами платежа
            Объект.Summ = Окр(Получено, 2, 1);  //Cумма оплаты 
            Объект.Payment();                    //Метод  производит  регистрацию  платежа  по  чеку  заданным  типом  оплаты  с  подсчетом суммы сдачи и неоплаченного остатка чека. Оплаченная сумма задается свойством Summ
        Иначе
            Объект.CloseCheck();                //Закрытие чека
        КонецЕсли;
      
        //Проверяем ошибки
        Если Объект.ResultCode <> 0 Тогда
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            Сообщить("Ошибка:"+ОписаниеРезультата);      
            Попытка
                Объект.CancelCheck();
            Исключение
            КонецПопытки;
            ОтключитьсяОтФР(Объект, 0);
            Возврат 0;
        КонецЕсли;          
      
        Возврат ОтключитьсяОтФР(Объект);  
    КонецФункции

    пока мой крайний вариант выглядит вот так но пока не проверял и тут опять же
    Объект.Price = Окр(СписокТоваров.Цена,2,1); //ЦенаБезСкидки
    и вывод скидки не настроен.
    --- Объединение сообщений, 21 апр 2017 ---
    интересно еще что пытаюсь с кассой феликс -02к использовать AddIn.FPrnM8
    объект.CurrentDeviceIndex =0;
    пишет логическое устройство не найдено но стоит поменять на AddIn.FPrnM45 все начинает видеть и менять чем отличается FPrnM8 от FPrnM45
    и как сделать чтобы лу видело и на FPrnM8

    вот по поводу скидок
    http://infostart.ru/public/603118/
    Последнее редактирование: 21 апр 2017
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Думаю ни как... Разные объекты - разные методы
  10. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    а по поводу печати скидок можете подсказать как правильно вывести цену со скидкой (округлить)
    и как самми скидки вывести????

    Я праввильно же понял что сама скидка в ФН и в ОФД не идет а только конечная цена товара?
  11. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Правильно... Скидку вычисляйте от суммы.. Ибо сумму касса вычисляет сама цена*количество=сумма.
  12. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    А вывод как сделать
  13. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
  14. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29

    Объект.Price = Окр((СуммаЧека/Количество),2,1)
    где суммачека= сумма со скидкой
    так?

    Теперь надо как то вывести размер скидки или на все позиции так как скидка идет на чек
    или на каждую позицию но сам вывод я незнаю как сделать
    Последнее редактирование: 22 апр 2017
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Используйте метод ПечатьСтроки()
  16. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    Объект.Price = Окр((СуммаЧека/Количество),2,1)
    чет я ступил это же общая сумма
  17. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Так нужно рассчитывать построчно
  18. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    так и застрял с этими скидками пару раз попробовал сделать вывод в итоге аннулирование чека вышло... можете помочь????...
    а да еще выровнять вывод хз как
  19. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Чем помочь? Предупреждаю, писать за вас не буду. Не признаю халявы. Все необходимое уже озвучивалось в данной теме!
    1) Выгружайте табличную часть в ТЗ
    2) Рассчитывайте скидку меняя цену
    3) Зная общую скидку на весь документ и построчно убираем ошибку округления меняя последнюю строку
    4) Выводим результат ТЗ (фискализируя)
    5) Печатаем строку вашей скидки
    6) Закрываем чек.
  20. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    547
    Симпатии:
    1
    Баллы:
    29
    Все сделал незнаю только на новой кассе будет все идеально работать или нет но на старой кассе все хорошо срабатывает