Ошибка получения фискальных реквизитов чека.

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Ошибка получения фискальных реквизитов чека.
 
После обновления до актуального укр.релиза 4,1,07 во фронте кассира при внесении денег выдается ошибка Ошибка получения фискальных реквизитов чека. Внос денег в фиск.память регистратора проводится, но в Журнале "Инкассация" Альфы операция не выполняется. Подскажите в чем причина?
Изменено: Геннадий - 13.09.2012 15:30:24
 
Добрый день!
Скажите, пожалуйста, какую модель фискального регистратора используете?
 
datecs 3530t
 
Спасибо за информацию!
Это ошибка. Она зарегистрирована и будет исправлена в следующем релизе решения.
 
Печалько. Будем бороться своими силами.  :cry:
 
В нашем случае ошибка возникала из-за разницы времени ФР и фронта кассира. Дописали обработку чтобы при такой ситуации ошибка игнорировалась и фронт кассира делал запись в документ инкассация. Это пример детализированной ошибки
Изменено: Геннадий - 21.09.2012 10:16:11
 
Проблема в том, что при внесение денег (вероятно вынесение до 10.00 тоже) при каких-то условиях, до конца не проясненных, Фискальный регистратор возвращает дату в виде строки 2012.09.21 9:02:11.
Такая строка не может быть преобразована к дате. Это и вызывает исключение с собщением о ошибке "Ошибка получения фискальных реквизитов чека." К дате тем кодом что был может быть преобразована только строка 2012.09.21 09:02:11. То есть начиная с 10.00 уже все нормально!
----------- Исправление.
Заменить в обработке ФронтКассира в модуле формы ФормаИнкасации строки
 
//Попытка
// ДокументИнкассации.НомерСмены=Число(SafeArrayПараметрыИнкассации.GetValue(0,0));
// ДокументИнкассации.НомерЧека=Число(SafeArrayПараметрыИнкассации.GetValue(1,0));
// ДокументИнкассации.НомерДокумента=Число(SafeArrayПараметрыИнкассации.GetValue(2,0));
// ДокументИнкассации.ДатаФР=Вычислить("'"+SafeArrayПараметрыИнкассации.GetValue(3,0)+"'");
//Исключение
// ОткрытьДиалог("Ошибка получения фискальных реквизитов чека", СтатусСообщения.ОченьВажное);
// ОтменитьТранзакцию(); Возврат;
//КонецПопытки;
На строки
 
// --> + Рубцов начало
//<-- из конфы начало
//Попытка
// ДокументИнкассации.НомерСмены=Число(SafeArrayПараметрыИнкассации.GetValue(0,0));
// ДокументИнкассации.НомерЧека=Число(SafeArrayПараметрыИнкассации.GetValue(1,0));
// ДокументИнкассации.НомерДокумента=Число(SafeArrayПараметрыИнкассации.GetValue(2,0));
// ДокументИнкассации.ДатаФР=Вычислить("'"+SafeArrayПараметрыИнкассации.GetValue(3,0)+"'");
//Исключение
// ОткрытьДиалог("Ошибка получения фискальных реквизитов чека", СтатусСообщения.ОченьВажное);
// ОтменитьТранзакцию(); Возврат;
//КонецПопытки;
//<-- из конфы Конец
Попытка
ДокументИнкассации.НомерСмены=Число(SafeArrayПараметрыИнкассации.GetValue(0,0));
Исключение
ОткрытьДиалог(ОписаниеОшибки()+".Ошибка получения фискальных реквизитов! НомерСмены не получен!", СтатусСообщения.ОченьВажное);
ОтменитьТранзакцию(); Возврат;
КонецПопытки;
Попытка
ДокументИнкассации.НомерЧека=Число(SafeArrayПараметрыИнкассации.GetValue(1,0));
Исключение
ОткрытьДиалог(ОписаниеОшибки()+".Ошибка получения фискальных реквизитов! НомерЧека не получен!", СтатусСообщения.ОченьВажное);
ОтменитьТранзакцию(); Возврат;
КонецПопытки;
Попытка
ДокументИнкассации.НомерДокумента=Число(SafeArrayПараметрыИнкассации.GetValue(2,0));
Исключение
ОткрытьДиалог(ОписаниеОшибки()+".Ошибка получения фискальных реквизитов! НомерДокумента не получен!", СтатусСообщения.ОченьВажное);
ОтменитьТранзакцию(); Возврат;
КонецПопытки;
Попытка
ПерДатаИЗФР = SafeArrayПараметрыИнкассации.GetValue(3,0);
// ПерДатаИЗФР = ФункРубц.ПреобразованиеСтрДатыЕслиВремяБез0(ПерДатаИЗФР);
// + вместо ФункРубц.ПреобразованиеСтрДатыЕслиВремяБез0
ПерДатаИЗФР = СокрЛП(ПерДатаИЗФР);
кодСимвола = КодСимвола(Сред(ПерДатаИЗФР,13,1));
Если (кодСимвола < 48) Или (кодСимвола > 57) Тогда
ПерДатаИЗФР = Лев(ПерДатаИЗФР, 11)+"0"+Прав(ПерДатаИЗФР,СтрДлина(ПерДатаИЗФР)-11);
КонецЕсли;
// - вместо ФункРубц.ПреобразованиеСтрДатыЕслиВремяБез0
ДокументИнкассации.ДатаФР=Вычислить("'"+ПерДатаИЗФР+"'");
Исключение
ДокументИнкассации.ДатаФР = ТекущаяДата();
ОткрытьДиалог(ОписаниеОшибки()+". Ошибка получения ДатаФР из ФР! Получено как "+ПерДатаИЗФР+". Установлено ДокументИнкассации.ДатаФР = ТекущаяДата()", СтатусСообщения.ОченьВажное);
//ОтменитьТранзакцию(); Возврат;
КонецПопытки;
// --> - Рубцов конец
 
Спасибо за информацию!
Мы учтем это при исправлении ошибки.
 
Еще кусочек кода, иначе ФР не может до 10:00 прописать номер документа в чек.
Обработка фронт Кассира   модуль объекта строка 7043 заменена на:
// --> + Рубцов в конфу начало
  //<-- из конфы ДатаФР=Вычислить("'"+SafeArrayПараметрыЧека.GetValue(3,0)+"'");
  ПерДатаИЗФР = SafeArrayПараметрыЧека.GetValue(3,0);
  ДатаФР = ФункРубц.ПреобразованиеСтрДатыЕслиВремяБез0(ПерДатаИЗФР);    
  // --> - Рубцов в конфу конец
 
P.S. номер документа писался как    " -1"
 
По той же причине в документе Чек до 10.00 присваивается реквизиту номерДокумента (не сам номер) -1, хотя он проводится из ФронтаКассира и в остальном все нормально!
Обработка фронт Кассира   модуль объекта строка 7043 заменена на:
// --> + Рубцов в конфу начало
  //<-- из конфы ДатаФР=Вычислить("'"+SafeArrayПараметрыЧека.GetValue(3,0)+"'");
  ПерДатаИЗФР = SafeArrayПараметрыЧека.GetValue(3,0);
  ДатаФР = ФункРубц.ПреобразованиеСтрДатыЕслиВремяБез0(ПерДатаИЗФР);    
  // --> - Рубцов в конфу конец

Можно заменить вызов функции ДатаФР = ФункРубц.ПреобразованиеСтрДатыЕслиВремяБез0(ПерДатаИЗФР);
на
 // + вместо ФункРубц.ПреобразованиеСтрДатыЕслиВремяБез0
 ПерДатаИЗФР = СокрЛП(ПерДатаИЗФР);
 кодСимвола = КодСимвола(Сред(ПерДатаИЗФР,13,1));
 Если (кодСимвола < 48) Или (кодСимвола > 57) Тогда
  ПерДатаИЗФР = Лев(ПерДатаИЗФР, 11)+"0"+Прав(ПерДатаИЗФР,СтрДлина(ПерДатаИЗФР)-11);
 КонецЕсли;    
ДатаФР = ПерДатаИЗФР;
// - вместо ФункРубц.ПреобразованиеСтрДатыЕслиВремяБез0


Впрочем это пока не проверялось!
Изменено: Геннадий - 26.09.2012 16:43:33
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С