7.7 Дубли чеков на ККМ

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем Vertex, 22 июн 2013.

  1. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Всем привет.
    Вопрос такой: есть 3 магазина у всех одинаковое оборудование, конфа ТиС в каждом магазине является дочерней по отношению к центральной (т.е конфы и обработки полностью идентичны).
    В одном из магазинов продавцы умудряются провести ещё раз пробитый чек, а точнее при первом проведении чека по ФР НомерЧекаККМ не заполняется. Какие мысли господа? Прошу совета.

    Идейка подкралась, но есть сомнения.
    Идея: в документе ПКО в процедуре печать чека, доработать вот этот ошмёток кода

    Код:
     Если глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,НомДок) = 1 Тогда
    НомерЧекаККМ = ?(НомерЧека = 0, -1, НомерЧека);
    ПриЗаписиПерепроводить(0);
    Записать();
    ПриЗаписиПерепроводить(1);
    КонецЕсли;
    Поставить его в
    Попытка
    [код]
    Исключение
    [обработчик исключения]
    КонецПопытки

    Хочется в обработчике исключения написать такого смысла строки:
    Если Объект.ЧекОткрыт()=1 Тогда
    Объект.ОтменаЧека();
    КонецЕсли;

    Только сомневаюсь как бы красиво в проверку передать объект созданный из компоненты. Объект же создаётся в сторонней обработке, как его красиво передать сюда?

    Либо какие варианты ещё могут быть?
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Нужно смотреть обработку печати. Она же у вас глючит или железо. Оборудование везде одинаковое? ПО/версия одинаковые? Кассы COM или USB? Настройки/параметры кассы?
  3. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    ПО,версии, интерфейс соединения везде одинаков COM. Железо полностью решил поменять. Поменял. Ситуация в том магазине повторилась. Полюбому дело не в нем, оно новое.
    В этом и проблема что понять не могу в чем дело.
    Вчера управляющая заметила что это произошло в время загрузки файла данных из центральной ИБ (при автообмене короче).
    Или просто совпадение или хз

    Саму обработку печати?

    Вложения:

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

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    транзакция?
  5. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Я могу только предполагать что да. Эта торговая точка в другом городе, а продавцы во главе с управляющей нубы полные, но типа управляющая заметила закономерность. Обмен выполняла со своего рабочего места и видимо в этот момент не заполнился реквизит номер чека ккм. =(
    Как это обойти можно? Видимо чек печатается на ККМ, а в момент записи документа с заполненым реквизитом что то блочится другой транзакцией и номер не сохраняется.
    В "попытка/исключение" пробивать чек?
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    не поможет... Думаю через файл-флаг или константу (дело вкуса) блокировать создание нового документа на момент обмена.
    Ну выведи предупреждение ("Ждите столько-то минут"). Или наоборот - не осуществлять обмен пока открыт документ...
    Копайте в эту сторону
  7. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Можно поподробнее про идею с файл флагом? Как такое можно реализовать?
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    при обмене создаем файл в каталоге БД... Ну скажем stop.txt
    В документе чека

    Код:
    Процедура ВводНового()
    Если ФС.СуществуетФайл(КаталогИБ()+"stop.txt")=1 Тогда
    Предупреждение("Производится обмен данных. Немного подождите",20);
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    ........
    КонецПроцедуры
    после обмена - файл удаляем
  9. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Файл stop.txt создавать средствами скрипта запуска обмена так? У меня через batch скрипт. То есть им же и создать так?
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Да. Можно создать и скриптом.

    copy /Y КаталогБД\stop.tmp КаталогБД\stop.txt
    запускаем обмен
    del /Q КаталогБД\stop.txt
  11. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    А как ещё можно?
    Руки не доходили этим заняться, а сейчас кассиры воют.
    В других магазинах тоже такая байда стала случаться. Где стоят новые ФР
    Я вот думаю тему с файл флагом попробовать и добавить не во время ввода нового документа, а в процедуру ПечатьЧека() проверку на файл флаг.
    p.s Понять что стало не так не могу. Проблема появилась после установки новых FPrint-22k , старые трудятся нормально FPrint-02K. Видимо они что то с дровами намутили и пришлось доработать обработку пробития чека. (Была тема про кривую печать чека).
  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ну так пробуйте! Что еще мудрить-то?
  13. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Попробовал. Всё равно ситуация повторяется. Я уже 2 проверки добавил. Как только нажимаю кнопку ПечатьЧека сразу присваиватеся полю НомерЧека числовое значение и документ записывается. До этого проверка на файл " защёлку" при автообмене. Результат 0 =(
  14. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Код:
    Процедура ПечатьЧека()
    //Проверка на файл флаг
    Если Константа.ChekFlag = 1 Тогда
    Если ФС.СуществуетФайл(КаталогИБ()+"\Obmen\flag.txt")=1 Тогда
    Сообщить(" Выполняется автообмен, повторите попытку позже");
    Возврат;  
    КонецЕсли;
    КонецЕсли;
    ////////////////////////////////////////////////////////////////
    Если КодОперации <> Перечисление.КодыОпераций.ОплатаОтПокупателя Тогда
    Сообщить("Чек может быть напечатан только при получении оплаты от покупателя!");
    Возврат;
    КонецЕсли;
    
    Если глФРДляПриемаНаличныхОтЮрЛиц <> 1 Тогда
    Сообщить("Фискальный регистратор не предназначен для отражения наличных денежных расчетов.");
    Возврат;
    КонецЕсли;
    
    Если НомерЧекаККМ <> 0 Тогда
    Предупреждение("Чек уже пробит на фискальном регистраторе!",60);
    Возврат;
    ИначеЕсли глФРВкл=0 Тогда
    Предупреждение("Фискальный регистратор не подключен!",60);
    Возврат;
    ИначеЕсли (ОблагаетсяНП=1) и (СтавкаНП.Ставка<>0) Тогда
    Предупреждение("Чтобы распечатать чек на фискальном регистраторе" + РазделительСтрок +
    "необходимо, чтобы ставка НП была равна 0!",60);
    Возврат;
    ИначеЕсли ПометкаУдаления()=1 Тогда
    Предупреждение("Документ помечен на удаление, поэтому" + РазделительСтрок +
    "нельзя пробить чек на фискальном регистраторе!",60);
    Возврат;
    ИначеЕсли Проведен()=0 Тогда
    Если Вопрос("Провести документ и пробить чек на фискальном регистраторе?","Да+Нет")="Нет" Тогда
    Возврат;
    КонецЕсли;
    Попытка	 
    //Проверка 2 значение переменная 1 или 0 получает от константы
    Если ЧекChek=1 Тогда
    НомерЧекаККМ = 0001;
    КонецЕсли;
    /////////////////////////////////////////////////////////////////////////////////////
    Записать();
    Провести();
    Исключение
    Возврат;
    КонецПопытки;
    ИначеЕсли Модифицированность()=1 Тогда
    Если Вопрос("Сохранить документ и пробить чек на фискальном регистраторе?","Да+Нет")="Нет" Тогда
    Возврат;
    КонецЕсли;
    Попытка	 
    //Проверка 2 значение переменная 1 или 0 получает от константы
    Если ЧекChek=1 Тогда
    НомерЧекаККМ = 0001;
    КонецЕсли;
    //////////////////////////////////////////////////////////////////////////////////////////
    Записать();
    Исключение
    Возврат;
    КонецПопытки;
    КонецЕсли;
    
    Список = СоздатьОбъект("ТаблицаЗначений");
    Список.НоваяКолонка("ТовНаим"   , "Строка");
    Список.НоваяКолонка("Цена"	  , "Число");
    Список.НоваяКолонка("Количество", "Число");
    Список.НоваяКолонка("НДС"	   , "Число");
    СкидкаВсего = 0;
    Если НЕ(ПустоеЗначение(ДокОснование)=1) Тогда
    ДокОснование.ВыбратьСтроки();
    Пока ДокОснование.ПолучитьСтроку()=1 Цикл
    Список.НоваяСтрока();
    Список.ТовНаим	= СокрЛП(ДокОснование.Номенклатура.Наименование);
    Список.Цена	   = ДокОснование.Цена;
    Список.Количество = ДокОснование.Количество;
    Список.НДС		= глНачисляемыйНДС(?(ДокОснование.СтавкаНДС.Выбран() = 1, ДокОснование.СтавкаНДС, глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС")))*100;
    СкидкаВсего = СкидкаВсего + Окр(ДокОснование.Цена*ДокОснование.Количество,2,1)-ДокОснование.Сумма;
    КонецЦикла;
    Иначе
    Список.НоваяСтрока();
    Список.ТовНаим	= ?(ПустаяСтрока(ПринятоОт)=0,"Принято от ","")+СокрЛП(СокрЛП(ПринятоОт)+" "+СокрЛП(Основание));
    Список.Цена	   = Сумма;
    Список.Количество = 1;
    Список.НДС		= глНачисляемыйНДС(?(СтавкаНДС.Выбран() = 1, СтавкаНДС, глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС")))*100;
    
    КонецЕсли;
    
    СуммаЧека		 = Сумма;
    Получено		  = Сумма;
    Скидка			= СкидкаВсего/Итог("Сумма")*100;
    ПризнВозврата	 = 0;
    НомерСекции	   = 1;
    НомерЧека		 = 0;
    Если ПустоеЗначение(ДокОснование)=0 Тогда
    НомДок = ДокОснование.НомерДок;
    Иначе
    НомДок = "";
    КонецЕсли;
    Если глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,НомДок) = 1 Тогда
    НомерЧекаККМ = ?(НомерЧека = 0, -1, НомерЧека);
    ПриЗаписиПерепроводить(0);
    Записать();
    ПриЗаписиПерепроводить(1);
    КонецЕсли;
    
    КонецПроцедуры  
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Получается что автообмен не причем. Все дело в глФРПечататьЧек. Т.е дрова виноваты... Переустановить пробовали?
  16. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Ага. Пробовал. И это во всех магазинах такая хрень где новые аппараты стоят.
    В дополнительном файле чтоли вести журнал приходников которые пробиты. Хз хз..
    Бухгалтерский угодник Ещё идеи есть? :sm_rolleyes:
    Старые версии дров не катят =(
  17. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Есть... Курить отладчиком..
    1) Нужно анализировать обработку обслуживания ФР. Ведь в обработке идет работа с объектом...
    Вы поменяли дрова. Возможно изменились и методы работы с объектом.
    2) Запрашивать номер чека не один раз, а в цикле (предусмотреть вход в бесконечный цикл). Возможно не хватает времени отклика
    3) Попробовать поиграть со скоросью (в параметрах для фискальника)
  18. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Не плохо, но целый день "курить" рядом с кассиром проблематично.
    +
    +
    Спасибо, вот это попробую.
  19. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не за что... Прочитайте на оф. сайте. Может там есть описание и рекомендации.
  20. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Да методы работы немного изменились, тема была про неправильную печать чеков. Раньше не нужно было входить в режим регистрации чтобы корректно пробить чек, в новой версии пока не установишь режим регистрация или возврат, чек бьётся криво (алгоритм работы описан в документах), что и было добавлено к существующей обработке.
Похожие темы
  1. videomause
    Ответов:
    2
    Просмотров:
    897
  2. videomause
    Ответов:
    5
    Просмотров:
    1.256
Загрузка...

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