Штрих-ФР-К. Help

Тема в разделе "Торговое оборудование в 1С", создана пользователем alex-79, 26 дек 2009.

  1. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Добрый день! Вчера я подключил фискальный регистратор Шрих-ФР-К к 1С 8.1. Скачал последнюю обработку для взаимодействия фискальника с 1С и драйвер. Только заметил, что в чеке не указана сумма НДС.
    Из 1С 7.7 печатаю чек - всё нормально.

    1. ПРИНЯТО ОТ ИВАНОВ ИВАН ИВАНОВИЧ
    Стоимость.....................=910.96
    В ТОМ ЧИСЛЕ НДС........=138.96 (этой строки нет в 1С 8)

    Не могу понять почему так. Подскажите пожалуйста, что делать :unsure:
  2. midep
    Offline

    midep

    Регистрация:
    23 дек 2009
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Так сложно сказать, извините, телепаты все в отпуск уехали. Уточните имя и версию обработки для работы с ФР, а также имя и версию конфигурации 1С. Если есть возможность, прикрепите обработку к сообщению.
  3. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Конфигурация Бухгалтерия предприятия, редакция 1.6 (1.6.15.6)
    Обработку для работы ФР я прикрепил
  4. midep
    Offline

    midep

    Регистрация:
    23 дек 2009
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Проверить на работоспособность сейчас не могу, нет ФР под рукой... но то, что вижу по коду, говорит одно - все должно работать.

    Вы с отладчиком как - дружите? Если да, то нужно посмотреть, какое значение прилетает в переменную НДС функции ПечататьСтроку(Объект, Наименование, Количество, Цена, Скидка, Отдел, НДС) Экспорт... Если как и полагается 18, то нужно посмотреть в Таблцах ФР. Таблица №1, Ряд №1, Поле №№17 и 19. В первом случае можно поиграться значениями (начисление налога 0 – на каждую операцию в чеке, 1 – на всю сумму чека), а во втором - должно стоять или 1, или 2 (1 – печать названия налога и его накоплений, 2 – печать налоговых ставок, оборота, названия, накопления). Причем изменения 19 поля будут видны только, если моя память не спит с другим, после закрытия текущей смены.

    Проверить в "боевых" условиях обработку смогу, надеюсь, в понедельник, если я не зароюсь в рутине трудового дня.
  5. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Я нашел в тест драйвере Штриха вот это. Правда не знаю поможет ли изменение параметров которые на принт-скрине выделил :unsure:
  6. midep
    Offline

    midep

    Регистрация:
    23 дек 2009
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Нет, не поможет. Здесь вы можете отбивать чеки. Ниже в приложении показал как добраться до таблиц ФР. Самого ФР у меня сейчас нет, поэтому не могу дальше показать параметры. Смотрите в первой таблице.

    Вложения:

    • 123.JPG
      123.JPG
      Размер файла:
      86,2 КБ
      Просмотров:
      253
  7. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Сейчас нашел вот такую статью http://www.forum.mista.ru/topic.php?id=348195
    Правда там рассматривается случай с 1С 7.7, но некоторые моменты можно оттуда посмотреть.
    Надо попробовать протестировать.
  8. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Я взял обработку, которая печатает чек на ФР в 1С 7.7. Оказывается там были сделаны исправления.
    Извиняюсь что такой большой листинг добавил. Я выделил в листинге секцию "Добавка про НДС". Искал, что то подобное в 1С 8, но безрезультатно. :unsure:


    Код:
     
    Функция ПечататьЧек(Объект, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,типЧ = 0)
    
    Если ПустоеЗначение(Объект) = 1 Тогда
    ОписаниеРезультата = "устройство не подключено";
    Возврат 0;
    КонецЕсли;
    
    // регистрация товаров
    РезРегистрация = 1;
    
    Пока "на экране окно вопроса" = "на экране окно вопроса" Цикл
    Объект.Password = 1;
    Объект.Connect();
    Результат = ОбработкаОшибокПриПечати(Объект);
    Если Результат = "Отмена" Тогда 
    Объект.Disconnect();
    Возврат 0;
    ИначеЕсли Результат = 0 Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
    
    Пока "на экране окно вопроса" = "на экране окно вопроса" Цикл
    Объект.GetECRStatus();
    Результат = ОбработкаОшибокПриПечати(Объект);
    Если Результат = "Отмена" Тогда 
    Объект.Disconnect();
    Возврат 0;
    ИначеЕсли Результат = 0 Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
    
    Если Объект.ECRAdvancedMode = 3 Тогда
    Объект.ContinuePrint();
    Пока "на экране окно вопроса" = "на экране окно вопроса" Цикл
    Объект.GetECRStatus();
    Результат = ОбработкаОшибокПриПечати(Объект);
    Если Результат = "Отмена" Тогда 
    Объект.Disconnect();
    Возврат 0;
    ИначеЕсли Результат = 0 Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    
    Объект.Password = 30;
    Объект.OpenDrawer();
    Объект.Password = 30;
    Объект.Connect();
    Если ОбработкаОшибок(Объект) = 1 Тогда
    Возврат 0;
    КонецЕсли;
    
    Объект.Password = 30;
    //Объект.FirstLineNumber=1;
    //Объект.LastLineNumber=67;
    Объект.CheckType = ТипЧ*2;
    Объект.OpenCheck();
    
    
    //Объект.Draw();
    //Объект.Password = 30;
    
    Если ПризнВозврата = 0 Тогда
    СтрокаПечати = "ЧЕК ПРОДАЖИ";
    Иначе
    СтрокаПечати = "ЧЕК ВОЗВРАТА";
    КонецЕсли;
    Если ПечататьПоСередине(СтрокаПечати,ШиринаСтроки,Объект) = 1 Тогда
    Возврат 0;
    КонецЕсли;
    
    СписокТоваров.ВыбратьСтроки();
    Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
    Стр = Лев("------------------------------------",ШиринаСтроки);
    Если ПечатьСтроки(Стр,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    СтрокаНаименования = СокрЛП(ВРЕГ(Строка(СписокТоваров.НомерСтроки) + "." + СписокТоваров.ТовНаим));
    Если БитьНаименованиеИПечатать(СтрокаНаименования,ШиринаСтроки,Объект) = 1 Тогда
    Возврат 0;
    КонецЕсли;
    
    _ПредстЦена = СОКРЛП(Строка(Формат(СписокТоваров.Цена,"Ч15.2")));
    Если СписокТоваров.Количество > 1 Тогда
    Стр = Строка(СписокТоваров.Количество) + " х " + Строка(_ПредстЦена);
    Если ПечатьСтроки(Стр,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    КонецЕсли;
    
    ДлинаНаименования=36;
    А = 0;
    ПредстСуммаБезСкидки = СОКРЛП(Строка(Формат(СписокТоваров.Цена * СписокТоваров.Количество,"Ч15.2")));
    СтрокаСтоимости = "Стоимость";
    Пока А < (ШиринаСтроки - СтрДлина(ПредстСуммаБезСкидки) - СтрДлина("Стоимость")) Цикл
    А = А + 1;
    СтрокаСтоимости = СтрокаСтоимости + ".";
    КонецЦикла;
    СтрокаСтоимости = СтрокаСтоимости + Строка(ПредстСуммаБезСкидки);
    Если ПечатьСтроки(СтрокаСтоимости,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    //***********************************************************************************    
    //Добавка про НДС    
    
    Если СписокТоваров.УказатьНДС=1 Тогда  
    НалогНДС=СокрЛП(Строка(Формат(СписокТоваров.СуммаНДС,"Ч10.2.'")));
    //НалогНДС=СокрЛП(Строка(Формат(СписокТоваров.НДС,"Ч10.2.'")+" руб."));
    Стр=СОкрЛП(ВРЕГ(Лев(("В том числе НДС :                         "),ДлинаНаименования-СтрДлина(НалогНДС)-1))+"="+Строка(НалогНДС));
    //Стр=СОкрЛП(("В том числе НДС "+СписокТоваров.НДС+"%:"));
    Объект.StringForPrinting = Стр;
    Объект.PrintString();
    //СтрНДС=(Лев(("                                    "),ДлинаНаименования-СтрДлина(НалогНДС)-1))+"="+Строка(НалогНДС);
    //Объект.StringForPrinting = СтрНДС;
    //Объект.PrintString();
    КонецЕсли;
    //***********************************************************************************
    
    КонецЦикла;
    
    СуммаИтого = СуммаЧека;
    // сумма со скидкой
    СуммаИтогоСоСкидкой = СуммаЧека;
    Если ПустоеЗначение(Скидка) = 0 Тогда
    // сумма без скидки
    СуммаИтого = СуммаИтого / (1 - Скидка / 100);
    
    // Если скидка на все позиции, тогда печатаем в конце чека
    Если Скидка > 0 Тогда
    Стр = Лев("------------------------------------",ШиринаСтроки);
    Если ПечатьСтроки(Стр,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    А = 0;
    ПредстСтоимость = СОКРЛП(Строка(Формат(СуммаИтого,"Ч15.2")));
    СтрокаСтоимости = "Итого без ск.";
    Пока А < (ШиринаСтроки - СтрДлина(ПредстСтоимость) - СтрДлина("Итого без ск.")) Цикл
    А = А + 1;
    СтрокаСтоимости = СтрокаСтоимости + ".";
    КонецЦикла;
    СтрокаСтоимости = СтрокаСтоимости + Строка(ПредстСтоимость);
    Если ПечатьСтроки(СтрокаСтоимости,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    А = 0;
    ПредстСкидка = СОКРЛП(Строка(Формат(Скидка,"Ч15.2")));
    СтрокаСкидки = "Скидка";
    Пока А < (ШиринаСтроки - СтрДлина(ПредстСкидка) - СтрДлина("Скидка") - СтрДлина("%")) Цикл
    А = А + 1;
    СтрокаСкидки = СтрокаСкидки + ".";
    КонецЦикла;
    СтрокаСкидки = СтрокаСкидки + Строка(ПредстСкидка) + "%";
    Если ПечатьСтроки(СтрокаСкидки,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    А = 0;
    
    //СуммаИтогоСоСкидкой = СуммаИтого * (1 - Скидка/100);
    ПредстСтоимость = СОКРЛП(Строка(Формат(СуммаИтого * (1 - Скидка/100),"Ч15.2")));
    СтрокаСтоимости = "Итого со ск.";
    Пока А < (ШиринаСтроки - СтрДлина(ПредстСтоимость) - СтрДлина("Итого со ск.")) Цикл
    А = А + 1;
    СтрокаСтоимости = СтрокаСтоимости + ".";
    КонецЦикла;
    СтрокаСтоимости = СтрокаСтоимости + Строка(ПредстСтоимость);
    Если ПечатьСтроки(СтрокаСтоимости,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    ИначеЕсли Скидка < 0 Тогда
    Стр = Лев("------------------------------------",ШиринаСтроки);
    Если ПечатьСтроки(Стр,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    
    А = 0;
    ПредстСтоимость = СОКРЛП(Строка(Формат(СуммаИтого,"Ч15.2")));
    СтрокаСтоимости = "Итого без над.";
    Пока А < (ШиринаСтроки - СтрДлина(ПредстСтоимость) - СтрДлина("Итого без над.")) Цикл
    А = А + 1;
    СтрокаСтоимости = СтрокаСтоимости + ".";
    КонецЦикла;
    СтрокаСтоимости = СтрокаСтоимости + Строка(ПредстСтоимость);
    Если ПечатьСтроки(СтрокаСтоимости,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    А = 0;
    ПредстСкидка = СОКРЛП(Строка(Формат( - Скидка,"Ч15.2")));
    СтрокаСкидки = "Надбавка";
    Пока А < (ШиринаСтроки - СтрДлина(ПредстСкидка) - СтрДлина("Надбавка") - СтрДлина("%")) Цикл
    А = А + 1;
    СтрокаСкидки = СтрокаСкидки + ".";
    КонецЦикла;
    СтрокаСкидки = СтрокаСкидки + Строка(ПредстСкидка) + "%";
    Если ПечатьСтроки(СтрокаСкидки,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    А = 0;
    //СуммаИтогоСоСкидкой = СуммаИтого * (1 - Скидка/100);
    ПредстСтоимость = СОКРЛП(Строка(Формат(СуммаИтого * (1 - Скидка/100),"Ч15.2")));
    СтрокаСтоимости = "Итого с над.";
    Пока А < (ШиринаСтроки - СтрДлина(ПредстСтоимость) - СтрДлина("Итого с над.")) Цикл
    А = А + 1;
    СтрокаСтоимости = СтрокаСтоимости + ".";
    КонецЦикла;
    СтрокаСтоимости = СтрокаСтоимости + Строка(ПредстСтоимость);
    Если ПечатьСтроки(СтрокаСтоимости,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    КонецЕсли;
    КонецЕсли;
    
    Стр = Лев("===================================",ШиринаСтроки);
    Если ПечатьСтроки(Стр,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    СуммаДокумента = СуммаИтогоСоСкидкой;
    
    Отдел = Число(НомерСекции);
    Если ПризнВозврата = 0 Тогда
    Если РегистрацияПозиции(Отдел,СуммаДокумента,1,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    Иначе
    Если ВозвратПозиции(Отдел,СуммаДокумента,1,Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    КонецЕсли;
    //
    Если (Получено > 0) И (Получено > СуммаЧека) Тогда
    Если ЗакрытиеЧека(СуммаЧека,Окр(Получено,2,1),Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    Иначе
    Если ЗакрытиеЧека(СуммаЧека,Окр(0,2,1),Объект) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    КонецЕсли;
    
    Если ОбработкаОшибок(Объект) = 0 Тогда
    Объект.GetECRStatus();
    НомерЧека = Объект.OpenDocumentNumber + 1;
    Иначе
    Возврат 0;
    КонецЕсли;
    Объект.Disconnect();
    
    
    Возврат 1;
    КонецФункции
    
    
    
  9. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Сегодня попробовал настроить поля таблицы. Всё получилось. Тема закрыта.

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