Имя: Пароль:
1C
1С v8
ATOL, закрытие чека "Объект.CloseCheck()". Ошибка "-3879", неверный номер конечн
0 duke55
 
31.08.19
21:35
Друзья, весь интернет перекопал чтобы узнать что это за "зоны". Ни в руководстве, ни в интернете нет описания...

Кто-нибудь знает что означает эта ошибка и как её исправить ???
1 duke55
 
31.08.19
21:37
Сорри, название темы получилось обрезанным.

Ошибка "-3879" (неверный номер конечной зоны)...
2 Garykom
 
гуру
31.08.19
21:47
Неси ККТ в сервис сбой или в ней или в ФН.
3 Сияющий в темноте
 
31.08.19
23:15
в описании ошибки сказано,указать верный номер конечной зоны.
данная ошибка относится только к билетному режиму.
чай начальную зону зачем то установили.
какая версия драйвера?
4 Сияющий в темноте
 
31.08.19
23:17
FirstZone и LastZone используются для программирования тарифов.
поставьте их в 1 и попробуйте еще раз.
5 Сияющий в темноте
 
31.08.19
23:18
команда SetRecord используется?
6 duke55
 
01.09.19
19:52
Нет-нет, никаких зон я не устанавливал (я и понятия не имею что это такое)...

В организации заказчика официально нет розничной торговли т поэтому все продажи идут по договорам. Такое, как вы наверно понимаете, возможно только из документа ПКО...

Вот процедура печати чека, которая нормально отрабатывает. Раньше таблица товаров выводилась в чеке только в момент полной оплаты (когда сумма оплаты и сумма реализации полностью совпадают):


// *********** Функция осуществляет формирование и печать чека на "FPrint - 22 ПТК". **********
Функция    ПечатьЧека_FPrint22PTK(Заголовок, Сумма, НДС, Пароль, ПризнВозврата, ФлагБезналичнойОплаты = Ложь, ТаблицаТоваров = Неопределено) Экспорт
    
    СтрокаПробелов = "                                    ";
    
    мПоз = Найти(Заголовок,Символы.ПС);
    
    Если мПоз>36 Тогда
        мПоз = мПоз-36
    КонецЕсли;
    
    Заголовок = Лев(Заголовок,мПоз-1)+Лев(СтрокаПробелов,СтрДлина(СтрокаПробелов)-мПоз+1)+Прав(Заголовок,СтрДлина(Заголовок)-мПоз);
    
    Если НДС=18 ИЛИ НДС=20 Тогда
        НДС = 3
    КонецЕсли;    
    
    Объект = Неопределено;
    
    Если ПодключитьДрайвер_FPrint22PTK(Объект) = 0 Тогда
        Возврат 0;
    КонецЕсли;
    
    Если ПодключитьсяКФР_FPrint22PTK(Объект) = 0 Тогда
        Возврат 0;
    КонецЕсли;
    
    Объект.Mode = 1; // режим регистрации чеков
    Объект.Password = Пароль; // пароль на режим регистрации
    Объект.SetMode();
    
    Объект.GetStatus();
    
    Если Объект.CheckState <> 0 Тогда        
        Попытка
            Объект.CancelCheck();
        Исключение
        КонецПопытки;
    КонецЕсли;
    
    Если Объект.ResultCode <> 0 Тогда
        Попытка
            Объект.CancelCheck();
        Исключение
        КонецПопытки;
        
        ОтключитьсяОтФР_FPrint22PTK(Объект);
        
        Возврат Объект.ResultDescription;
        
    КонецЕсли;
      
    Объект.AttrNumber = 1021;
    Объект.AttrValue = ПараметрыСеанса.ТекущийПользователь;
    Объект.WriteAttribute();
    
    Объект.CheckMode = 1;         // 1- на чек. ленте; 0 - эл. документ
    Если ПризнВозврата = 0 Тогда            
        Объект.CheckType = 1;     // чек прихода
    Иначе
        Объект.CheckType = 2;     // чек возврата прихода
    КонецЕсли;
    
    Объект.OpenCheck();            //Чек открыт на ФР
                        
    //смска почта
    Объект.AttrNumber=1008;
    Объект.AttrValue = "";         //адрес эл. почты
    Объект.AttrValue = "";         //телефон
    Объект.WriteAttribute();
    
    Объект.Destination = 1;
    
    Если НЕ ТаблицаТоваров = Неопределено Тогда
        Для Каждого СтрокаТаблицыТоваров Из ТаблицаТоваров Цикл
            Объект.Department = 1;
            Объект.Name            = СтрокаТаблицыТоваров.Наименование;
            Объект.Quantity        = СтрокаТаблицыТоваров.Количество;
            Объект.Price        = СтрокаТаблицыТоваров.Цена;
            Объект.Summ         = СтрокаТаблицыТоваров.Сумма;
            Объект.TaxTypeNumber= НДС;                // Номер налоговой ставки: "3" это "НДС 18%"
            Если ПризнВозврата     = 0 Тогда            
                Объект.Registration();
            Иначе
                Объект.Return();
            КонецЕсли;
        КонецЦикла
    Иначе
        Объект.Department    = 1;
        Объект.Name            = СокрЛП(Заголовок);    // Строка "Принято от ..."
        Объект.Quantity        = 1;
        Объект.Price        = Сумма;
        Объект.Summ         = Сумма;
        Объект.TaxTypeNumber= НДС;                // Номер налоговой ставки: "3" это "НДС 18%"
        Если ПризнВозврата    = 0 Тогда            
            Объект.Registration();
        Иначе
            Объект.Return();
        КонецЕсли;
    КонецЕсли;
    
    Если ФлагБезналичнойОплаты Тогда
        Объект.TypeClose = 1;                    // Тип оплаты «БЕЗНАЛ»
    Иначе
        Объект.TypeClose = 0;                    // Тип оплаты «НАЛИЧКА»
    КонецЕсли;

    Объект.SummTax();                        // Рассчитать сумму НДС
    // регистрация прихода
    РезРегистрация = 1;
    
    НДСЕсть = "";

    Объект.TextWrap =1;

    Если Объект.ResultCode <> 0 Тогда
        Попытка
            Объект.CancelCheck();
        Исключение
        КонецПопытки;
        ОтключитьсяОтФР_FPrint22PTK(Объект);
        Возврат Объект.ResultDescription;
    КонецЕсли;
        
    Объект.Department = 0; //НомерСекции
    
    НомерЧека = Объект.CheckNumber;
    
    Объект.CloseCheck();
    
    Если Объект.ResultCode <> 0 Тогда
        //ResultDescription = ПолучитьResultDescription(Объект);
        Попытка
            Объект.CancelCheck();
        Исключение
        КонецПопытки;
        
        ОтключитьсяОтФР_FPrint22PTK(Объект);
        
        Возврат Объект.ResultDescription;
        
    КонецЕсли;            
    
    Если ОтключитьсяОтФР_FPrint22PTK(Объект)=1 Тогда
        Возврат 0
    Иначе
        Возврат 1
    КонецЕсли

КонецФункции


А вот эта же процедура, которую заказчик просил переделать, чтобы таблица товаров печаталась в любом случае (будь то аванс или оплата кредита), и которая в итоге выдает ошибку "-3879":

// *********** Функция осуществляет формирование и печать чека на "FPrint - 22 ПТК". **********
Функция    ПечатьЧека_FPrint22PTK(Заголовок, Сумма, НДС, Пароль, ПризнВозврата, ФлагБезналичнойОплаты = Ложь, ТаблицаТоваров = Неопределено) Экспорт

    СтрокаПробелов = "                                    ";
    мПоз = Найти(Заголовок,Символы.ПС);
    Если мПоз>36 Тогда мПоз = мПоз-36 КонецЕсли;
    Заголовок = Лев(Заголовок,мПоз-1)+Лев(СтрокаПробелов,СтрДлина(СтрокаПробелов)-мПоз+1)+Прав(Заголовок,СтрДлина(Заголовок)-мПоз);
    
    СуммаНДС = УчетНДС.РассчитатьСуммуНДС(Сумма, Истина, Истина, НДС);
    Если НДС=18 ИЛИ НДС=20 Тогда
        НДС = 3;
    КонецЕсли;    
    
    Объект = Неопределено;
    Если ПодключитьДрайвер_FPrint22PTK(Объект) = 0     Тогда Возврат 0 КонецЕсли;
    Если ПодключитьсяКФР_FPrint22PTK(Объект) = 0     Тогда Возврат 0 КонецЕсли;
    
    Объект.Mode = 1;             // режим регистрации чеков
    Объект.Password = Пароль;     // пароль на режим регистрации
    Объект.SetMode();
    
    Объект.GetStatus();
    
    Если Объект.CheckState <> 0 Тогда        
        Попытка Объект.CancelCheck() Исключение    КонецПопытки;
    КонецЕсли;
    
    Если Объект.ResultCode <> 0 Тогда
        Попытка Объект.CancelCheck() Исключение    КонецПопытки;
        ОтключитьсяОтФР_FPrint22PTK(Объект);
        Возврат Объект.ResultDescription;
    КонецЕсли;
      
    Объект.AttrNumber = 1021;
    Объект.AttrValue = ПараметрыСеанса.ТекущийПользователь.Наименование;
    Объект.WriteAttribute();
    
    Объект.CheckMode = 1;         // 1- на чек. ленте; 0 - эл. документ
    Если ПризнВозврата = 0 Тогда            
        Объект.CheckType = 1;     // чек прихода
    Иначе
        Объект.CheckType = 2;     // чек возврата прихода
    КонецЕсли;
    
    Объект.OpenCheck();            //Чек открыт на ФР
                        
    //смска почта
    Объект.AttrNumber=1008;
    Объект.AttrValue = "";         //адрес эл. почты
    Объект.AttrValue = "";         //телефон
    Объект.WriteAttribute();
    
    Объект.Destination = 1;
    
    ТипОплаты = 0;
    Если НЕ ТаблицаТоваров = Неопределено Тогда
        
        Для Каждого СтрокаТаблицыТоваров Из ТаблицаТоваров Цикл
            Объект.BeginItem();
            Объект.Department = 1;
            Объект.Name            = СтрокаТаблицыТоваров.Наименование;
            Объект.Quantity        = СтрокаТаблицыТоваров.Количество;
            Объект.Price        = СтрокаТаблицыТоваров.Цена;
            Объект.Summ         = СтрокаТаблицыТоваров.Сумма;
            
            Объект.TaxMode=0;
            Если СтрокаТаблицыТоваров.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
                Объект.TaxTypeNumber = 3;                
            ИначеЕсли СтрокаТаблицыТоваров.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
                Объект.TaxTypeNumber = 3;                
            ИначеЕсли СтрокаТаблицыТоваров.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
                Объект.TaxTypeNumber = 2;
            Иначе
                Объект.TaxTypeNumber = 0;
            КонецЕсли;
            Объект.TaxSumm =СтрокаТаблицыТоваров.СуммаНДС;
            
            Объект.EndItem();
            //Если ПризнВозврата = 0 Тогда Объект.Registration() Иначе Объект.Return() КонецЕсли;
        КонецЦикла;
        
        Объект.Summ    = Сумма;
        Если ТаблицаТоваров.Итог("Сумма")<>Сумма Тогда
            Если СтрокаТаблицыТоваров.ДокументОплаты.РасшифровкаПлатежа[0].ПризнакСпособаРасчета = Перечисления.ПризнакиСпособаРасчета.Аванс Тогда
                ТипОплаты = 2;                            // Предоплата (аванс)
            ИначеЕсли СтрокаТаблицыТоваров.ДокументОплаты.РасшифровкаПлатежа[0].ПризнакСпособаРасчета = Перечисления.ПризнакиСпособаРасчета.ОплатаКредита Тогда
                ТипОплаты = 3;                            // Последующая оплата (кредит)
            КонецЕсли
        КонецЕсли
        
    Иначе
        
        Объект.Department    = 1;
        Объект.Name            = СокрЛП(Заголовок);    // Строка "Принято от ..."
        Объект.Quantity        = 1;
        Объект.Price        = Сумма;
        Объект.Summ         = Сумма;
        Объект.TaxTypeNumber= НДС;                    // Номер налоговой ставки: "3" это "НДС 18%"
        //Если ПризнВозврата = 0 Тогда Объект.Registration() Иначе Объект.Return() КонецЕсли;
        
        Объект.TaxMode=0;
        Объект.TaxTypeNumber = 3;                
        Объект.TaxSumm = СуммаНДС;
        Объект.EndItem();
        
        Объект.Summ         = Сумма;
        Если ФлагБезналичнойОплаты Тогда
            ТипОплаты = 1;
        КонецЕсли;
        
    КонецЕсли;
    
    Объект.TypeClose = ТипОплаты;
    
    //Объект.SummTax();                                // Рассчитать сумму НДС
    
    Объект.Payment();
    Объект.TextWrap = 1;

    Если Объект.ResultCode <> 0 Тогда
        Попытка
            Объект.CancelCheck();
        Исключение
        КонецПопытки;
        ОтключитьсяОтФР_FPrint22PTK(Объект);
        Возврат Объект.ResultDescription;
    КонецЕсли;
        
    //Объект.Department = 0; //НомерСекции
    
    НомерЧека = Объект.CheckNumber;
    Объект.CloseCheck();
    
    Если Объект.ResultCode <> 0 Тогда
        //ResultDescription = ПолучитьResultDescription(Объект);
        Попытка
            Объект.CancelCheck();
        Исключение
        КонецПопытки;
        
        ОтключитьсяОтФР_FPrint22PTK(Объект);
        
        Возврат Объект.ResultDescription;
        
    КонецЕсли;            
    
    Если ОтключитьсяОтФР_FPrint22PTK(Объект)=1 Тогда
        Возврат 0
    Иначе
        Возврат 1
    КонецЕсли

КонецФункции
7 duke55
 
01.09.19
19:58
"...
В организации заказчика официально нет розничной торговли т поэтому все продажи идут по договорам. Такое, как вы наверно понимаете, возможно только из документа ПКО...
..."

Сорри, не совсем понятно выразился... Хотел сказать что чеки ККМ, в случае "договорных" продаж, обычно печатают из документа ПКО...
8 Garykom
 
гуру
01.09.19
20:01
Выкинь 8-й драйвер он уже того у атол и бери 10-й.
В 8-м драйвере на новых прошивках ККТ могут быть любые глюки.

Недавно так же столкнулись что не понимает указание другой СНО через 8-й после перепрошивки.