Имя: Пароль:
1C
1С v8
ФР Штрих-Мини-ФР-К. Как задать протяжку и обрезку ленты?
,
0 Антиквар
 
19.07.11
10:33
Всем привет!
Мне нужно из Розницы напечатать на указанный в теме ФР произвольный отчет. Как это сделать я разобрался, но по окончании печати ФР не протаскивает и не обрезает ленту.Приходится это делать вручную.
Нашел в принципе выход:
перед печатью своего отчета делать открытие чека с признаком нефискальности, а по окончании - закрытие чека.
В этом случае лента протягивается и обрезается, но в заголовке перед моим отчетом появляется надпись "Нефискальный документ".
Без этой надписи никак не обойтись? Обработка обслуживания не включает функций протяжки и обрезки?
1 Shurjk
 
19.07.11
10:36
А фискальник зарегистрирован?
2 PLUT
 
19.07.11
10:42
(0) читай "Руководство программиста" с сайта производителя
3 Антиквар
 
19.07.11
11:16
(1) Мне дали фискальник для опытов. Т.е. я печатаю фисальные чеки из 1С и нигде это не отразится и отчитываться не надо будет. Т.е. с нят с учета я так полагаю? Но при печати заголовок фирмы печатается, т.е. значит был зарегистрирован? Я просто с ФР не работал до сих пор, не совсем понимаю что значит зарегистрирован. Но реальные ФР, на которых будет работать моя конфа, будут реальными, т.е. зарегистрированными:) Единственное, там ЕНВД, может ЭКЛЗ и не нужно.
4 Ткачев
 
19.07.11
11:18
(0)Он тормоз, крайне не советую такой в продуктовый маг. ставить.
5 Антиквар
 
19.07.11
11:20
(2) я пытался.
Но там типа такого:

Закрытие чека
Команда: 85H. Длина сообщения: 71 байт.
Ну и далее побайтовая расшифровка.

А насколько я понял, я могу оперировать лишь функциями из 1С-ной обработки обслуживания.
Допустим я найду, что протяжка ленты - это команда к примеру 45Н, а дальше что ? :)
6 Антиквар
 
19.07.11
11:22
(4) спасибо за отзыв, предупрежу. Но магаз не продуктовый, нет очереди. Возможно у клиента будет не конкретно такой ФР, но аналогичный Штриховский, обработка 1с-ная у них одна.
7 mikecool
 
19.07.11
11:23
протяжка и обрезка задается в настроке драйвера ФР, емнип
8 PLUT
 
19.07.11
11:23
(5) х.з. где ты пытался

тут смотрел? http://www.shtrih-m.ru/modules.php?name=Downloads&d_op=showpage&cid=253&lid=254&typeid=18

руководство драйвера ФР (руководство программиста)
9 maxar
 
19.07.11
11:25
(0) штрих-фр-к - поставить драйвер Штрих-М - там есть редактирование таблиц - в одной из них задать обрезку ленты - вместо 0 поставить 1...
10 PLUT
 
19.07.11
11:30
(9) можно и программно резать

CutCheck ОтрезатьЧек
Метод подает на принтер чеков команду «Отрезать чек». Перед исполнением метода необходимо задать способ отрезки («Полная» или «Неполная») в свойстве CutType.
Перед вызовом метода в свойстве Password указать пароль оператора.
В свойстве OperatorNumber возвращается порядковый номер оператора, чей пароль был введен.
Метод может вызываться в любом режиме, кроме 8, 10, 11, 12, 14 и подрежимов 4 и 5 (см. свойства ECRMode и ECRAdvancedMode).
Не меняет режима ККМ.

взято из (8)
11 Антиквар
 
19.07.11
11:41
(8) Спасибо! Там и смотрел, правда более старую версию драйвера, тут только демо. Там несколько руководств было, увлекся не тем руководством :) Т.е. я могу данные команды прямо из 1С вызывать при обращению к драйверу? Спасибо, буду пробовать.
12 PLUT
 
19.07.11
11:46
(11) пожалуйста ;) Смотри для примера, как пробитие чека сделано в типовой, с использованием драйвера ФР
13 Smallrat
 
19.07.11
11:51
я делал так

Функция ОтрезатьЛенту(Объект, ОжиданиеОкончанияПечати = 0) Экспорт
   
   Результат  = мНетОшибки;
   
   Если ОжиданиеОкончанияПечати <> 0 Тогда
       Предупреждение("Идёт печать", ОжиданиеОкончанияПечати);
   КонецЕсли;
   Объект.Драйвер.КоличествоСтрок = 5;
   Объект.Драйвер.ПродвинутьДокумент();
   //Предупреждение("Идёт отрезка",1);
   Объект.Драйвер.ТипОтрезки = Ложь;
   Ответ = Объект.Драйвер.ОтрезатьЧек();
   
   Если Ответ <> 0 Тогда
       Результат = мОшибкаНеизвестно;
       Объект.ОписаниеОшибки = Объект.Драйвер.ОписаниеРезультата;
   КонецЕсли;
   
   Возврат Результат;
   
КонецФункции
14 Антиквар
 
19.07.11
12:45
(13) Странно, но у меня ругается на:

Объект.Драйвер.ТипОтрезки = Ложь;
Объект.Драйвер.ОтрезатьЧек();

Говорит: "Метод объекта не обнаружен (ОтрезатьЧек)".
Ну и про ТипОтрезки аналогично.
Пробовал и английские аналоги команд.

Но при этом у меня работает например:
Объект.Драйвер.ОткрытьЧек()
Точнее я пробовал вызывать из внешней 1С-ной обработки драйвера функцию ОткрытьЧек():
ВнешняяОбработкаДрайвера.ОткрытьЧек(Объект,,,,,Ложь);
А уже в этой функции идет вызов самой функции драйвера:
Объект.Драйвер.ОткрытьЧек()

(10) Кстати вот что странно, в описании программисту не написано никаких параметров при вызове функций, например при вызове той же функции открытьЧек(), но из 1С эта функция вызывается с кучей параметров:
Объект.Драйвер.ОткрытьЧек(Объект.ИДУстройства, ФискальныйЧек, ЭтоВозврат, Истина, НомерЧека, НомерСмены)

Откуда эти данные взяты, если в руководстве программиста, которое Вы посоветовали, про них ничего?
15 xazrad
 
19.07.11
12:54
Feed() - команда протяжки
16 Ткачев
 
19.07.11
13:04
Процедура ПолнаяОтрезкаЛенты();
   FR.Password=Password;
   FR.CutType=0;
   FR.CutCheck();
   ОтветДрайвера();
КонецПроцедуры

Процедура НеполнаяОтрезкаЛенты();
   FR.Password=Password;
   FR.CutType=1;
   FR.CutCheck();
   ОтветДрайвера();
КонецПроцедуры

Процедура ПротяжкаЛенты()
   FR.Password=Password;
   FR.UseJournalRibbon=КонтрольнаяЛента;              
   FR.UseReceiptRibbon=ЧековаяЛента;          
   FR.UseSlipDocument=ПодкладнойДокумент;                
   FR.FeedDocument();
   ОтветДрайвера();
КонецПроцедуры
17 poligraf
 
19.07.11
13:07
Влезу сюда, про принтер такой же:)

Заменили Штрих-ФР на Штрих-Мини-ФР и в чеке не отрабатывает перенос строки.
Бумажка вроде одна по размеру.
Куда посмотреть?
1С - 7.7
18 Антиквар
 
19.07.11
13:19
(16) "FR" - это в стандартном исполнении 1С наверное "Объект.Драйвер"
Я пробовал так, но мне пишет, что поле объекта не обнаружено "Password"
И метод не обнаружен "CutCheck".
Не понимаю пока, как из 1С вызывать эти процедуры.
19 Ткачев
 
19.07.11
13:25
Процедура ПриОткрытии()    
   Password=FR.Password;
   Name="Булка";
   Department=1;
   Price=25;
   Quantity=1;
   Summ1=100;
   Summ=5;
   Caption="Строка для печати";
   
   ЧековаяЛента=1;
   КонтрольнаяЛента=1;
       
КонецПроцедуры

Процедура ОтветДрайвера()
   
   Result=FR.ResultCode;
   ОшибкаПараметра=FR.ResultCodeDescription;  
   
КонецПроцедуры
20 Ткачев
 
19.07.11
13:26
Там в драйвере есть примеры программирование на 7.7, я оттуда копирую.
21 Ткачев
 
19.07.11
13:27
FR = СоздатьОбъект("AddIn.DrvFR");
22 Ткачев
 
19.07.11
13:29
23 Антиквар
 
19.07.11
14:46
(20) у меня 1С 8.1
24 poligraf
 
19.07.11
14:48
(23) а разницы-то?
принцип один
25 GStiv
 
19.07.11
14:49
Рекомендую не ставить обрезку, из 6 ФР-К на двух вылетела через несколько месяцев, сервис говорит о том, что проблемное место, на остальных выключили.
26 Антиквар
 
19.07.11
14:56
(24) дак не пойму почему не работает
Например Объект.Драйвер.ОткрытьЧек() работает
А вот Объект.Драйвер.ОтрезатьЧек() не работает, пишет, что метод объекта не обнаружен.
27 Ткачев
 
19.07.11
15:16
28 Ткачев
 
19.07.11
15:21
ftp://ftp.shtrih-m.ru/download/FR/Doc/DriverFR_4.9.pdf
29 Ткачев
 
19.07.11
15:21
Все что в (28), все работает, проверено лично.
30 Антиквар
 
19.07.11
15:31
(27) Я тут и смотрю, но мне кажется я что-то не понимаю.
У 1С для фискальных регистраторов есть внешние обработки, которые как раз и позволяют управлять ФР-ом из 1С.
В этих внешних обработках вызываются функции, которые допустимы драйвером этого ФР.
И если смотреть стандартный код управления ФР-ом в 1С, то там создается объект - внешняя обработка управления ФР-ом. Далее вызываются 1С-ные методы этой обработки. А уже в этих 1С-ных методах вызываются те функции, которые непосредственно через драйвер управляют ФР-ом. И по идее описание этих функций я и должен увидеть в руководстве программиста.
Например, в руководстве есть метод ОткрытьЧек().
Обработка 1С также его вызывает:
Объект.Драйвер.ОткрытьЧек(Объект.ИДУстройства, ФискальныйЧек, ЭтоВозврат, Истина, НомерЧека, НомерСмены)
Но откуда все эти параметры в скобках? В руководстве программисту этого нет.
Далее, чтобы напечатать произвольную строку, обработка 1С вызывает вот это:
Объект.Драйвер.НапечататьНефискСтроку(Объект.ИДУстройства, НашаСтрока);
И это работает, но в руководстве программисту такого метода нет!!!
Ну и то, с чем я мучаюсь: в руководстве есть метод ОтрезатьЧек(), а 1С на него ругается при попытке вызова
Объект.Драйвер.ОтрезатьЧек();

Видимо те функции, что вызываются в 1С-ной обработке обслуживания через Объект.Драйвер - это ещё не те функции, которые описаны в руководстве. Но тогда вообще не понимаю как это работает... :(
31 PLUT
 
19.07.11
15:59
(30) у тебя есть ФР и отладчик. дерзай!
32 Антиквар
 
19.07.11
16:05
(31) В отладчике Объект.Драйвер = "Неизвестный объект", т.е. отладчик не может посмотреть, какие функции доступны внутри драйвера.
При этом Объект.Драйвер.ОткрытьЧек() работает, и есть в описании.
Объект.Драйвер.НапечататьНефискСтроку() работает, но нет в описании.
Объект.Драйвер.ОтрезатьЧек() не работает, но есть в описании :)
33 Антиквар
 
20.07.11
10:25
(13) Smallrat, я смотрю Ваш пример, реализовано всё через Объект.Драйвер
Т.е. как и в стандартной конфе розницы в 1С8.
И я именно так пробую. Но никак не могу понять в чем дело.
Уже в отладчике пишу например:
Объект.Драйвер.НапечататьНефискСтроку() - срабатывает, сразу на печать идет строка.
А пишу тут же Объект.Драйвер.ОтрезатьЧек() - ошибка, метод не найден.
И главное, что внутрь Объект.Драйвер в отладчике не заглянешь, пишет НеизвестныйОбъект.
34 Антиквар
 
20.07.11
10:27
А может моя проблема говорит о несоответствии драйвера моему ФР-ру? Может какой другой драйвер надо поставить?
Дело в том, что я скачал с сайта родной драйвер для этого ФР, но у него версия 4.6, 1С отказалась с ним работать, т.к. 1С-ная обработка обслуживания только для версии 4.9. Тогда я скачал драйвер версии 4.9, но уже от другого ФР, но тоже штриховского. И всё заработало. Все стандартные механизмы 1С работают, чеки печатаются, но вот такая проблема нерешаемая :(
35 Леха Дум
 
20.07.11
10:47
(33), (34) Драйвера, описанные в руководстве и используемые в стандартных обработках разные и интерфейсы разные. Еще заметил, что драйвер для 1С тормозит в сравнении с обычным драйвером.
36 Smallrat
 
20.07.11
10:47
(34) Мне кажется дело где-то на уровне дров все-таки. Почему 1С отказалась работать со старыми ? что сказала ?
37 Антиквар
 
20.07.11
10:53
(36) Я уж точно не помню что сказала, помню что не работало. Я открыл справочник обработок обслуживания, сделал отбор по виду оборудования: ФР, и увидел, что для штриха всего одна обработка и в ней явно написано, что только для драйвера версии 4.9.
Скачал 4.9. от другого штриховского ФР и всё заработало сразу.
Попробую вернуть старый драйвер, что из этого получится.
38 Антиквар
 
20.07.11
15:18
(36) Скачал с сайта Штриха:
Описание работы с ПО «ШТРИХ-М: Драйвер ФР» в соответствии с «требованиями к разработке драйверов для фискальных регистраторов» компании 1С

Я так понял, что там перечень методов, которые доступны для 1С. И именно там в описании методов как раз те параметры, которые в 1С и задаются. Например ОткрытьЧек() имет те параметры, как в 1С и вызывается. В руководстве же программисту для ОткрытьЧек() этих параметров нет.

И в этом описании нет метода ОтрезатьЧек(). Может поэтому 1С его и не видит.
Но тогда я не понимаю как у других работает.
Smallrat, у вас точно работает это:
Объект.Драйвер.ОтрезатьЧек()
???
39 Smallrat
 
20.07.11
16:23
(38) У меня работало, но у меня "ШТРИХ-М-ФР-К", а не "Штрих-Мини-ФР-К"
40 Smallrat
 
20.07.11
16:25
(38) У меня тоже есть это описание и там всё есть (Штрих-М: Драйвер ФР» Руководство программиста):

CutCheck ОтрезатьЧек
Метод подает на принтер чеков команду «Отрезать чек». Перед исполнением метода необходимо задать способ отрезки («Полная» или «Неполная») в свойстве CutType.
Перед вызовом метода в свойстве Password указать пароль оператора.
В свойстве OperatorNumber возвращается порядковый номер оператора, чей пароль был введен.
Метод может вызываться в любом режиме, кроме 8, 10, 11, 12, 14 и подрежимов 4 и 5 (см. свойства ECRMode и ECRAdvancedMode). Не меняет режима ККМ.
41 Антиквар
 
20.07.11
16:33
(40) Это описание всех методов, но это не методы, доступные из 1С.
Вот посмотрите например как в 1С вызывается метод ОткрытьЧек(), там куча всяких параметров. А теперь в руководстве программиста посмотрите, там нет этих параметров.
И я говорю уже не про руководство программиста, а про:
"Описание работы с ПО «ШТРИХ-М: Драйвер ФР» в соответствии с «требованиями к разработке драйверов для фискальных регистраторов» компании 1С".

В нем именно все функции, доступные в 1С. И метод Открытьчек() описан в нем как раз со всеми параметрами, как в 1С и вызывается. А вот метода ОтрезатьЧек() там нет.
Но раз у Вас работало, я тогда не знаю что думать...
Встретил в инете, что нужно через COM-объект подключаться, тогда будет всё доступно. Ещё не пробовал...
42 Антиквар
 
20.07.11
17:51
(29) Ткачев, попробовал я описанным Вами механизмом, подключение через COM. Тогда в самом деле стали доступны все методы, и обрезка чека и протяжка.
Но теперь другая проблема. Если я в 1С-Рознице напечатал хоть один обычный чек, то моя обработка уже не работает. Код ошибки -3: "СOM порт занят другим приложением". И после выхода из 1С и выключения ФР ничего не меняется, только перезагруз компа.
И наоборот, если, зайдя в Розницу, я напечатал сначала своей обработкой через COM-объект, то обычная печать чеков уже не работает, пишет что драйвер не установлен.
Вы как решили эту проблему, может сбросить что-то надо, как освободить порт?
43 Torquader
 
21.07.11
00:33
Чтобы сделать всё честно нужно:
1) Считать из памяти ФР заголовок чека, то есть клише (надо покопаться в таблицах).
2) Напечатать пустую строку и строки заголовка (их там, по-мойму, 4).
3) Вызвать команду отрезки чека.
P.S. некоторые ФР поддерживают команду печать клише (именно клише, а не "заголовка документа", так как заголовок документа состоит из клише и служебных строк с номером.

(42) Если вы используете стандартный драйвер, то его объект доступен через подключение торгового оборудования - попытка подключить второй драйвер приводит именно к тому, что у вас.
44 Антиквар
 
21.07.11
09:36
(43) Пункт 3) - вызвать команду отрезки чека - не работает. Я правда не считывал клише, но суть в том, что 1С не видит вообще такого метода.

Я использую стандартный драйвер. Т.е. нет возможности совместить работу 1С со своим подключением к драйверу, и моей обработки с подключением через COM ?
Закон Брукера: Даже маленькая практика стоит большой теории.