Имя: Пароль:
1C
1C 7.7
v7: Пробитие чека + Маркировка
0 Mafiozaa
 
23.11.20
03:20
Приветствую, при пробитии чека с несколькими позициями (а не разным кол-вом) в офд уходит 1 код маркировки, вместо всех, так как по базе все прыгает хорошо, то уверен что где то в обработке фискальника ошибка возникает, обработка fr_elves. При этом все в цикле

Функция ПечататьЧек(Объект, Пароль, СписокТоваров, Получено, ПолучСерт, ПолучКарт, Скидка, ПризнВозврата, НомерСекции, НомерЧека,СкидкаСуммой,НомерДок)
    Если ПустоеЗначение(Объект) = 1 Тогда
        ОписаниеРезультата = "устройство не подключено";
        Возврат 0;
    ИначеЕсли ПодключитьсяКФР(Объект, Пароль) = 0 Тогда
        Возврат 0;
    КонецЕсли;
    // регистрация товаров
    РезРегистрация = 1;
    СписокТоваров.ВыбратьСтроки();
    
    Объект.StringForPrinting = "          Товарный чек";    
    Объект.PrintString();                    
    Объект.StringForPrinting = "     "+    НомерДок+" от "+ТекущаяДата();
    Объект.PrintString();  
    
    Если (Нрег(глПользователь.Наименование))="кассир1"  Тогда
        пробел ="                                 " ;
        Объект.StringForPrinting = Лев("Продавец:"+прав(пробел,32-(9+СтрДлина(Константа.Кассир1)))+(Константа.Кассир1),32);    
        Объект.PrintString();  
    КонецЕсли;      
    
    
    Если (Нрег(глПользователь.Наименование))="кассир2"  Тогда
        пробел ="                                 " ;
        Объект.StringForPrinting = Лев("Продавец:"+прав(пробел,32-(9+СтрДлина(Константа.Кассир2)))+(Константа.Кассир2),32);    
        Объект.PrintString();  
    КонецЕсли;      
    
    Если (Нрег(глПользователь.Наименование))="кассир3"  Тогда
        пробел ="                                 " ;
        Объект.StringForPrinting = Лев("Продавец:"+прав(пробел,32-(9+СтрДлина(Константа.Кассир3)))+(Константа.Кассир3),32);    
        Объект.PrintString();  
    КонецЕсли;      
    
    Если (Нрег(глПользователь.Наименование))="кассир4"  Тогда
        пробел ="                                 " ;
        Объект.StringForPrinting = Лев("Продавец:"+прав(пробел,32-(9+СтрДлина(Константа.Кассир4)))+(Константа.Кассир4),32);    
        Объект.PrintString();                                                                
    КонецЕсли;      
    
    Если (Нрег(глПользователь.Наименование))="кассир5"  Тогда
        пробел ="                                 " ;
        Объект.StringForPrinting = Лев("Продавец:"+прав(пробел,32-(9+СтрДлина(Константа.Кассир5)))+(Константа.Кассир5),32);    
        Объект.PrintString();  
    КонецЕсли;      
    
    Если (Нрег(глПользователь.Наименование))="кассир6"  Тогда
        пробел ="                                 " ;
        Объект.StringForPrinting = Лев("Продавец:"+прав(пробел,32-(9+СтрДлина(Константа.Кассир6)))+(Константа.Кассир6),32);    
        Объект.PrintString();  
    КонецЕсли;      
    
    Если (Нрег(глПользователь.Наименование))="кассир7"  Тогда
        пробел ="                                 " ;
        Объект.StringForPrinting = Лев("Продавец:"+прав(пробел,32-(9+СтрДлина(Константа.Кассир7)))+(Константа.Кассир7),32);    
        Объект.PrintString();  
    КонецЕсли;      
    
    Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
        
        СтрокаДляПечати = СокрЛП(СписокТоваров.ТовНаим);
        ДлинаСтроки = 32;
        
        //Пока СтрДлина(СтрокаДляПечати)>0 Цикл
            //Объект.StringForPrinting = Лев(СтрокаДляПечати,ДлинаСтроки);
            //Объект.PrintString();
            //СтрокаДляПечати = СокрЛП(Сред(СтрокаДляПечати,ДлинаСтроки+1));
        //КонецЦикла;
        
        Объект.Password          = Пароль;
        Объект.StringForPrinting = Лев(СтрокаДляПечати,ДлинаСтроки);
    //    Объект.Price             = СписокТоваров.Цена;  
    Если  СписокТоваров.Количество=0 тогда      
        Объект.Price             = СписокТоваров.Цена;  
    иначе
        Объект.Price             = СписокТоваров.Сумма/СписокТоваров.Количество;
    КонецЕсли;
        Объект.Quantity          = СписокТоваров.Количество;
        Объект.Department        = НомерСекции;
        КодМаркировки             = СписокТоваров.Маркировка;
        Если Лев(КодМаркировки, 2) = "01" Тогда
            GTIN = Сред(КодМаркировки, 3, 14);
            SerialNumber = Сред(КодМаркировки, 19, 13);
        КонецЕсли;
        Объект.FNOperation();
        Объект.GTIN              = GTIN;
        Объект.SerialNumber      = SerialNumber;
        Объект.MarkingType = 17485;
        Объект.FNSendItemData();
        //Проверка наличия колонки "НДС" в таблице значений.
        НДСЕсть = "";
        Попытка
            НДС = СписокТоваров.НДС;
            НДСЕсть = 1;
        Исключение
            НДСЕсть = 0;
        КонецПопытки;
        
        Если НДСЕсть = 1 Тогда//Печатаем НДС
            
            // В настройках ФР надо настроить ставки:
            // Налог 1 = 18% - НДС 18%
            // Налог 2 = 10% - НДС 10%
            // Налог 3 = 20% - НДС 20%            
    
            Если СписокТоваров.НДС = 18 Тогда
                Объект.Tax1 = 1;
            ИначеЕсли СписокТоваров.НДС = 10 Тогда
                Объект.Tax1 = 2;
            ИначеЕсли СписокТоваров.НДС = 20 Тогда
                Объект.Tax1 = 3;
            Иначе
                Объект.Tax1 = 0;
            КонецЕсли;
            Объект.Tax2 = 0;
            Объект.Tax3 = 0;
            Объект.Tax4 = 0;
        КонецЕсли;                

        Если ПризнВозврата = 0 Тогда
            Объект.CheckType = 0;
        Иначе
            Объект.CheckType = 2;
        КонецЕсли;
        
        Объект.OpenCheck();
        
        Если Объект.ResultCode <> 0 Тогда
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            АннулированиеЧека(Объект, Пароль);
            ОтключитьсяОтФР(Объект, Пароль, 0);
            Возврат 0;
        КонецЕсли;  
        Если ПустоеЗначение(СписокТОваров.СкидкаПоСтроке) = 0 Тогда
            пробел ="................................" ;
            Объект.StringForPrinting = Лев("Стоимость"+прав(пробел,32-(9+СтрДлина(Формат(СписокТоваров.Цена*СписокТоваров.Количество,"Ч.2"))))+Формат(СписокТоваров.Цена*СписокТоваров.Количество,"Ч.2"),32);
            Объект.PrintString();//                                                  СписокТоваров.СкидкаПоСтроке
            Объект.StringForPrinting = "Скидка "+СписокТоваров.СкидкаПоСтроке+"%"+прав(пробел,32-(5+СтрДлина(СписокТоваров.СкидкаПоСтроке-СписокТоваров.СкидкаСпасибо)+СтрДлина(Формат((СписокТоваров.Цена*СписокТоваров.Количество-СписокТоваров.Сумма-СписокТоваров.СкидкаСпасибо),"Ч.2"))))+Формат(((СписокТоваров.Цена*СписокТоваров.Количество)-СписокТоваров.Сумма-СписокТоваров.СкидкаСпасибо),"Ч.2");
            Объект.PrintString();  
        //доб.скидка СПАСИБО
            Если пустоезначение(СписокТоваров.СкидкаСпасибо)=0 тогда
                Объект.StringForPrinting = "Скидка СПАСИБО"+прав(пробел,32-(10+СтрДлина(СписокТоваров.СкидкаСпасибо)+СтрДлина(Формат((СписокТоваров.СкидкаСпасибо),"Ч.2"))))+Формат(((СписокТоваров.СкидкаСпасибо)),"Ч.2");
                Объект.PrintString();
        
                Объект.StringForPrinting = "Общая скидка "+прав(пробел,32-(11+СтрДлина(СписокТоваров.СкидкаПоСтроке)+СтрДлина(Формат((СписокТоваров.Цена*СписокТоваров.Количество-СписокТоваров.Сумма),"Ч.2"))))+Формат(((СписокТоваров.Цена*СписокТоваров.Количество)-СписокТоваров.Сумма),"Ч.2");
                Объект.PrintString();  
            КонецЕсли;
            Объект.StringForPrinting     = Лев("Всего"+прав(пробел,32-(5+СтрДлина(Формат(СписокТоваров.Сумма,"Ч.2"))))+Формат(СписокТоваров.Сумма,"Ч.2"),32);
            Объект.PrintString();  
        ИначеЕсли ПустоеЗначение(СписокТОваров.СкидкаСпасибо) = 0 тогда
            пробел ="................................" ;
            Объект.StringForPrinting = Лев("Стоимость"+прав(пробел,32-(9+СтрДлина(Формат(СписокТоваров.Цена*СписокТоваров.Количество,"Ч.2"))))+Формат(СписокТоваров.Цена*СписокТоваров.Количество,"Ч.2"),32);
            Объект.PrintString();//
            Объект.StringForPrinting = "Скидка СПАСИБО"+прав(пробел,32-(10+СтрДлина(СписокТоваров.СкидкаСпасибо)+СтрДлина(Формат((СписокТоваров.СкидкаСпасибо),"Ч.2"))))+Формат(((СписокТоваров.СкидкаСпасибо)),"Ч.2");
            Объект.PrintString();
            Объект.StringForPrinting     = Лев("Всего"+прав(пробел,32-(5+СтрДлина(Формат(СписокТоваров.Сумма,"Ч.2"))))+Формат(СписокТоваров.Сумма,"Ч.2"),32);
            Объект.PrintString();        
        //конец скидка СПАСИБО
        КонецЕсли;
        //
                  
//         Если ПустоеЗначение(СписокТОваров.СкидкаПоСтроке) = 0 Тогда
//             
//                Объект.Password          = Пароль;
//        Объект.StringForPrinting = Лев(СтрокаДляПечати,ДлинаСтроки);
//    //    Объект.Price             = СписокТоваров.Цена;
//        Объект.Price             = СписокТоваров.Сумма/СписокТоваров.Количество;
//        Объект.Quantity          = СписокТоваров.Количество;
//        Объект.Department        = НомерСекции;
//        
//        //Проверка наличия колонки "НДС" в таблице значений.
//        НДСЕсть = "";
//        Попытка
//            НДС = СписокТоваров.НДС;
//            НДСЕсть = 1;
//        Исключение
//            НДСЕсть = 0;
//        КонецПопытки;
//        
//        Если НДСЕсть = 1 Тогда//Печатаем НДС
//            
//            // В настройках ФР надо настроить ставки:
//            // Налог 1 = 18% - НДС 18%
//            // Налог 2 = 10% - НДС 10%
//            // Налог 3 = 20% - НДС 20%            
//    
//            Если СписокТоваров.НДС = 18 Тогда
//                Объект.Tax1 = 1;
//            ИначеЕсли СписокТоваров.НДС = 10 Тогда
//                Объект.Tax1 = 2;
//            ИначеЕсли СписокТоваров.НДС = 20 Тогда
//                Объект.Tax1 = 3;
//            Иначе
//                Объект.Tax1 = 0;
//            КонецЕсли;
//            Объект.Tax2 = 0;
//            Объект.Tax3 = 0;
//            Объект.Tax4 = 0;
//        КонецЕсли;                
//
//        Если ПризнВозврата = 0 Тогда
//            Объект.Sale();
//        Иначе
//            Объект.ReturnSale();
//        КонецЕсли;                            
//        
//        Если Объект.ResultCode <> 0 Тогда
//            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
//            АннулированиеЧека(Объект, Пароль);
//            ОтключитьсяОтФР(Объект, Пароль, 0);
//            Возврат 0;
//        КонецЕсли;
//        
//    
//
//
//
//    КонецЕсли;
//        
        
        
        
        
        
        
        
    КонецЦикла;
      
    //Если СкидкаСуммой <> 0 тогда  
    //        Объект.StringForPrinting="        Спасибо за покупку";
    //        Объект.Summ1    = СкидкаСуммой;
    //        Объект.Discount();
    //КонецЕсли;      
    //    
    Объект.Password = Пароль;
    Объект.Summ1    = Получено;
    Объект.Summ2    = ПолучСерт;
    Объект.Summ3    = 0;
    Объект.Summ4    = ПолучКарт;  
        Объект.StringForPrinting=" ";


    Объект.StringForPrinting="        Спасибо за покупку";
    
    

    
    //    Объект.StringForPrinting=" ";
//    Сообщить("ывпаыв");
    Объект.DiscountOnCheck=Скидка;
    Объект.DiscountOnCheck=0;  
    
    
    
    
        
        
    Объект.CloseCheck();  
    
            
        

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

    НомерЧека = Объект.OpenDocumentNumber+?(Объект.ECRAdvancedMode=5,1,0);
    
//    ОтрезатьЧек(Объект, Пароль);      


  



    Возврат ОтключитьсяОтФР(Объект, Пароль);
    
КонецФункции
1 big
 
23.11.20
05:40
В цикле по строкам делается ОпенЧек, а закрытие всего одно? Сдается мне, что только последняя строка реально и регистрируется как в продажах, так и в ФН
2 Mafiozaa
 
23.11.20
05:43
(1) Почему, в офд уходят все позиции чека, нормально все, а именно код маркировки который должен быть на каждую позицию, а уходит только крайней позиции в чеке,
3 big
 
23.11.20
05:43
ОткрытьЧек() надо поставить перед циклом, вместо ОпенЧек поставить Объект.Регистрация()
4 Mafiozaa
 
23.11.20
05:44
(3) Тут Штрих, не Атол
5 Mafiozaa
 
23.11.20
05:45
(3) Но действительно, попробую открыть чек до цикла
6 big
 
23.11.20
05:45
(4) А-а-а.  Какая-то интересная логика у Штриха ))
7 Mafiozaa
 
24.11.20
05:03
Вверх, открытие чека до цикла не решило
8 Mafiozaa
 
24.11.20
05:07
Продал 2 пары носков, в чеке есть 2 буквы [M] а в честном знаке, только у вторых виден код маркировки, а у первых прочерк
9 Mafiozaa
 
24.11.20
05:20
Подозреваю что где то переменная затирает, пикаю все км, но передается один крайний, скорее всего неправильно передаю переменную
10 MWWRuza
 
гуру
24.11.20
09:18
Блин... Разбираться в Вашем "километре" кода, да еще по форуму, не в живой программе, без отладчика... как-то напрягает.
Лучше Вы сами, вот Вам тоже "километр" кода, из моей конфы, где все работает нормально, все передается по всем позициям, сравнивайте:
Процедура ПечататьЧек()
    Док                = Расшифровка.Получить("Документ");
    Предоплата        = Расшифровка.Получить("Предоплата");
    Если Предоплата = 1 Тогда
       ПечататьЧекНаПредоплату();
       Возврат;
    КонецЕсли;
    Если ПустоеЗначение(Док) = 1 Тогда
        Возврат;
    КонецЕсли;
    ОбрДок            = Расшифровка.Получить("ОбрДок");
    Если ПустоеЗначение(ОбрДок)    = 1 Тогда
       ОбрДок        = Док;
    КонецЕсли;
    Если ФискальныйРегистратор.ECRMode()         = 8 Тогда
        ФискальныйРегистратор.CancelCheck();
        Сообщить("Аннулирован незакрытый чек");
        //Дождемся - когда закончится печать отчета и отрежем ленту
        ОтрезкаЧека();
    ИначеЕсли ФискальныйРегистратор.ECRMode()     = 3 Тогда
        Если Вопрос("Смена превысила 24 часа!" + РазделительСтрок +
        "Снять Z-отчет?", "Да+Нет")    = "Нет" Тогда
            Предупреждение("Дальнейшая работа с ККМ невозможна!");
            Возврат;
        Иначе
            ЗакрытиеСмены();
        КонецЕсли;
    КонецЕсли;
    ФискальныйРегистратор.Password                     = СокрЛП(глПользователь.ПарольККТ);
    ФискальныйРегистратор.GetFieldStruct();
    ФискальныйРегистратор.TableNumber                = 18;
    ФискальныйРегистратор.RowNumber                 = 1;
    ФискальныйРегистратор.FieldNumber                 = 5;
    Если Док.Подразделение.ОблагаетсяЕНВД = 1 Тогда
        ФискальныйРегистратор.ValueOfFieldString    = 8;
    Иначе
        ФискальныйРегистратор.ValueOfFieldString    = 2;
    КонецЕсли;
    ФискальныйРегистратор.WriteTable();    
    ФискальныйРегистратор.StringForPrinting            = "№ документа :" + ОбрДок.НомерДок;
    ФискальныйРегистратор.PrintString();
    ФискальныйРегистратор.StringForPrinting            = "====================";
    ФискальныйРегистратор.PrintString();
    ФискальныйРегистратор.Department                 = Мин(15,Число(ОбрДок.Подразделение.Код));
    ОбрДок.ВыбратьСтроки();
    СуммаДокумента                                    = 0;
    
    Если ОбрДок.Вид() <> "ЗаказНаряд" Тогда
        Если ОбрДок.ЧекНаВозврат = 0 Тогда
            ФискальныйРегистратор.CheckType = 0;            
        Иначе
            ФискальныйРегистратор.CheckType    = 2;
        КонецЕсли;
    Иначе
        ФискальныйРегистратор.CheckType     = 0;
    КонецЕсли;
    Рез    = ФискальныйРегистратор.OpenCheck();        
    
    Пока ОбрДок.ПолучитьСтроку()    > 0 Цикл
        Если ОбрДок.Вид()        = "ЗаказНаряд" Тогда
            Если ОбрДок.Наличие    = 4 Тогда
                Продолжить;
            КонецЕсли;  
        КонецЕсли;
        
        ПредстЦена                                    = Окр((ОбрДок.Сумма + ОбрДок.НП) / ОбрДок.Количество, 2, 1);
        СуммаДокумента                                = СуммаДокумента + ОбрДок.Количество * ПредстЦена;
        
        КТН     = СокрЛП(ОбрДок.КТН);
        
        Наим                                        = Лев(СтрокуНоменклатурыЧек(ОбрДок.Номенклатура.Наименование, ОбрДок.Номенклатура), 40);
        Если (ПустоеЗначение(КТН) = 0) И (ОбрДок.Касса.ПечПризнМарк = 1) Тогда
            ФискальныйРегистратор.StringForPrinting    = "[M] " + Наим;
        Иначе
            ФискальныйРегистратор.StringForPrinting    = Наим;
        КонецЕсли;    
        ФискальныйРегистратор.Price                    = ПредстЦена;
        ФискальныйРегистратор.Quantity                = ОбрДок.Количество;
        
        Рез = ФискальныйРегистратор.FNOperation();
        
        Если ПустоеЗначение(КТН) = 0 Тогда
            
            GTIN     = Сред(КТН, 3, 14);                            
            SerialNumber = Сред(КТН, 19, 13);
            
            ФискальныйРегистратор.MarkingType          = 17485;//  Это "444D"    
            ФискальныйРегистратор.GTIN                 = GTIN;
            ФискальныйРегистратор.SerialNumber         = SerialNumber;
            Рез = ФискальныйРегистратор.FNSendItemCodeData(); // отправка тега маркировки    
            
            //ФискальныйРегистратор.TLVDataHex = "8A041500444d000002C0EED8583F696F2B714341426D382020";
            //ФискальныйРегистратор.FNSendTLVOperation();
            
        КонецЕсли;    
        
        Если ОбработкаОшибок() <> 0 Тогда
            Возврат;
        КонецЕсли;
    КонецЦикла;
    
    Получено                        = Число(Расшифровка.Получить("Получено"));
    Если Получено <= 0 Тогда
        Получено                    = СуммаДокумента;
    КонецЕсли;
    Если (Получено > 0) И (Получено > СуммаДокумента) Тогда
        ФискальныйРегистратор.Summ1             = Окр(Получено,2,1);
        ФискальныйРегистратор.Summ2             = 0;
        ФискальныйРегистратор.Summ3             = 0;
        ФискальныйРегистратор.Summ4             = 0;        
        ФискальныйРегистратор.StringForPrinting    = "====================";
        ФискальныйРегистратор.CloseCheck();
        ВыданаСдача                                = ФискальныйРегистратор.Change;
    Иначе
        Если Док.ВидОпл = Перечисление.ВидОплаты.Мир Тогда    
            ФискальныйРегистратор.Summ2         = Окр(СуммаДокумента,2,1);
            ФискальныйРегистратор.Summ1         = 0;
            ФискальныйРегистратор.Summ3         = 0;
            ФискальныйРегистратор.Summ4         = 0;
        ИначеЕсли Док.ВидОпл = Перечисление.ВидОплаты.Visa Тогда    
            ФискальныйРегистратор.Summ3         = Окр(СуммаДокумента,2,1);
            ФискальныйРегистратор.Summ1         = 0;
            ФискальныйРегистратор.Summ2         = 0;
            ФискальныйРегистратор.Summ4         = 0;
        ИначеЕсли Док.ВидОпл = Перечисление.ВидОплаты.Master Тогда    
            ФискальныйРегистратор.Summ4         = Окр(СуммаДокумента,2,1);
            ФискальныйРегистратор.Summ1         = 0;
            ФискальныйРегистратор.Summ3         = 0;
            ФискальныйРегистратор.Summ2         = 0;
        Иначе
            ФискальныйРегистратор.Summ1         = Окр(СуммаДокумента,2,1);
            ФискальныйРегистратор.Summ2         = 0;
            ФискальныйРегистратор.Summ3         = 0;
            ФискальныйРегистратор.Summ4         = 0;            
        КонецЕсли;    
        ФискальныйРегистратор.StringForPrinting    = "====================";
        
    //    ФискальныйРегистратор.FNCloseCheckEx();
        
        ФискальныйРегистратор.CloseCheck();
    КонецЕсли;
    Если ОбработкаОшибок() = 0 Тогда
        Если Метаданные.Документ(Док.Вид()).РеквизитШапки("ЧекПробитККМ").Выбран()        = 1 Тогда
            Док.ЧекПробитККМ                     = 1;
        КонецЕсли;
        
        Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("ЧекПробитККМ").Выбран()    = 1 Тогда
            ОбрДок.ЧекПробитККМ                 = 1;
        КонецЕсли;
    Иначе
        Если Метаданные.Документ(Док.Вид()).РеквизитШапки("ЧекПробитККМ").Выбран()        = 1 Тогда
            Док.ЧекПробитККМ                     = 0;
        КонецЕсли;
        
        Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("ЧекПробитККМ").Выбран()    = 1 Тогда
            ОбрДок.ЧекПробитККМ                 = 0;
        КонецЕсли;
    КонецЕсли;
    
    Если Метаданные.Документ(Док.Вид()).РеквизитШапки("НомерЧекаККМ").Выбран()            = 1 Тогда
        Док.НомерЧекаККМ                         = ФискальныйРегистратор.DocumentNumber;
    КонецЕсли;
    
    Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("НомерЧекаККМ").Выбран()        = 1 Тогда
        ОбрДок.НомерЧекаККМ                     = ФискальныйРегистратор.DocumentNumber;
    КонецЕсли;

    Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("Касса").Выбран()                = 1 Тогда
        ОбрДок.Касса                             = ККМ;
    КонецЕсли;
    
    Если Метаданные.Документ(Док.Вид()).РеквизитШапки("Касса").Выбран()                    = 1 Тогда
        Док.Касса                                 = ККМ;
    КонецЕсли;
    
    Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("ВыданаСдача").Выбран()        = 1 Тогда
        ОбрДок.ВыданаСдача                         = Получено - СуммаДокумента;
    КонецЕсли;
    
    Если Метаданные.Документ(Док.Вид()).РеквизитШапки("ВыданаСдача").Выбран()            = 1 Тогда
        Док.ВыданаСдача                         = Получено - СуммаДокумента;
    КонецЕсли;
    
    
    ФискальныйРегистратор.OpenDrawer();
    Если ОбработкаОшибок() <> 0 Тогда
        Возврат;
    КонецЕсли;
    ОтрезкаЧека();
КонецПроцедуры
11 Mafiozaa
 
25.11.20
02:20
(10) С этим разобрался, спасибо за отклик))
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший