Имя: Пароль:
1C
1С v8
Открытие денежного ящика ( Штрих ФР К ) из 1С
,
0 antgrom
 
25.09.12
12:53
Добрый день

Программа 1С Розница 1.0 ( не обновляемая )
Платформа 8.2
ККМ Штрих-ФР-К

После подключения ФР и к ФР денежного ящика выяснилось , что денежный ящик не открывается после пробития чека.
И из программы "Тест драйвера ФР 4.9 " ден ящик тоже не открывался.
Посмотрев таблицы свойств ФР , мы поменяли "логический уровень датчика денежного ящика" с 0 на 1.
Из программы "Тест драйвера ФР 4.9 " ден ящик стал открываться.
Из 1С не открывается.
Подскажите способ , чтоб из 1С ящик открывался.

Поиском искал по темам - решения не нашел.
Если знаете тему , где есть решение - запостите ссылку на тему.

Спасибо.
1 antgrom
 
25.09.12
12:53
код :

Функция ПоддерживаетсяВидТО(Вид) Экспорт
   
   Результат = Ложь;
   
   Если Вид = Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор Тогда
       Результат = Истина;
   КонецЕсли;
   
   Возврат Результат;
   
КонецФункции // ПоддерживаетсяВидТО()


//Допустим на форме есть кнопка ОткрытьДЯ

Процедура ОсновныеДействияФормыОткрытьДЯ(Кнопка)
//эта строчка также не нужна для форм уже работающих с ФР

  // ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
  //ищем ФР, текст взят из модуля документа ЧекККМ
 
  ФР = глЗначениеПеременной("мФР");
  Если ФР = Неопределено Тогда
      //В справочнике КассаККМ должна быть касса, прописанная в торговом оборудовании на закладке "фискальные регистраторы", допустим у нее код 000000001
      Если ФР <> Неопределено
          ИЛИ РаботаСТорговымОборудованием.ПолучитьПроверитьПараметрыДляПробитияЧека(ФР) Тогда
          КассаККМ = ПолучитьСерверТО().ПолучитьКассуККМ(ФР);
          Магазин  = КассаККМ.Магазин;
      Иначе
          Магазин = ПараметрыСеанса.ТекущийМагазин;
      КонецЕсли;
     
      ///КассаККМ  = Справочники.Кассы.НайтиПоКоду("000000001",,,);
      МассивФР      = ПолучитьСерверТО().ПолучитьСписокУстройств(
      Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор,
      КассаККМ);
     
      КоличествоФР = МассивФР.Количество();
     
      Если КоличествоФР = 0 Тогда
          Возврат;
      ИначеЕсли КоличествоФР = 1 Тогда
          ФР = МассивФР[0];
      Иначе
          СписокФР = РаботаСТорговымОборудованием.ПолучитьСписокУстройствТОДляВыбора(МассивФР);
         
          ФР = СписокФР.ВыбратьЭлемент("Необходимо выбрать фискальный регистратор");
          Если ФР = Неопределено Тогда
              Ответ     = "Операция отменена пользователем.";
              Отказ     = Истина;
              Результат = Ложь;
             
              Возврат;
          Иначе
              ФР = ФР.Значение;
          КонецЕсли;
      КонецЕсли;
  КонецЕсли;
 
  //в общем и целом эти 4ре строчки открывают    
 
  Обработка = Неопределено;
  Объект    = Неопределено;
  Результат = ПолучитьСерверТО().ПолучитьОбъектДрайвера(ФР, Обработка, Объект);
  //0 - это CashDrawerID, или номер денежного ящика, смотрим в настройках драйвера штрих-фр-ф

   Объект.Драйвер.ОткрытьДенежныйЯщик(Объект.ИДУстройства,0);

//для форм уже работающих с ТО, удалить.

   ПолучитьСерверТО().ОтключитьКлиента(ЭтаФорма);
КонецПроцедуры


на некоторых кассах работает , а на данной - не работает
2 TigerPXN
 
25.09.12
12:58
Я бы поковырял внешнюю обработку для обслуживания фискальника.
3 antgrom
 
25.09.12
13:12
(2) Можно ,  но она одинаковая , для > 60 касс данной розничной сети. И не открывается ящик примерно на 8 кассах.
Обработка одна и та же. Драйвера те же.
Фиг знает.

В обработке нет команды "ОткрытьДенежныйЯщик"
В обработках есть стандартные команды типа пробития чека.

Я думал - мало ли кто сталкивался именно с темой  "логический уровень датчика денежного ящика" ...
4 antgrom
 
25.09.12
13:48
Ну , хорошо. Кто сталкивался с кодом принудительного открытия ДЯ ( как в (1) ) и с тем что такой код не работал.

И кто знает : команда ОткрытьДенежныйЯщик возвращает Истину или Ложь по результатам - можно ли получить описание ошибки в случае возврата Ложь ?
5 antgrom
 
25.09.12
14:01
Ну , хорошо. Кто сталкивался просто с кодом принудительного открытия ДЯ ?
6 Torquader
 
26.09.12
01:05
Команда возвращает код ошибки (если вы о методе драйвера).
7 antgrom
 
26.09.12
02:21
(6) А как она возвращает , можно пример ?

Т.к. если я пишу , например :
Ответ = Объект.Драйвер.ОткрытьДенежныйЯщик(Объект.ИДУстройства,0);
то Ответ равен Истина или Ложь.
8 big
 
26.09.12
06:53
Погляди в таблицах настройки ККМ.
Таблица 1, Ряд 1, Поле 7.
0 – при оплате наличными денежный ящик не открывается
1 – при оплате наличными денежный ящик открывается
9 2S
 
26.09.12
07:05
может распиновка разная?
10 antgrom
 
26.09.12
09:08
(8) Что значит "Таблица 1, Ряд 1, Поле 7. " ?

Есть "настройка свойств" , которая открывает таблицы. Первая таблица "Тип и режим кассы"
там строка 6 "Работа с денежным ящиком". Стоит "1"
11 BuHu
 
26.09.12
09:13
(9) сталкивался с таким , ДЯ не подходил под фискальник , но если через драйвер открывается ,то значит причина не в этом
12 big
 
26.09.12
09:24
(10) 1. Это по документации так.

Как вариант ещё - проверить версии драйверов на "неработающих" местах. Причем поискать надо все файлы драйвера на это компутере, ибо может получиться, что тест драйвера работает на одной версии, а 1С на другом
13 antgrom
 
26.09.12
09:25
(11) Именно это и настораживает - то что в программе "Тест драйвера"  ДЯ открывается.

Нарыл вот ещё что :
http://forum.shtrih-m.ru/viewtopic.php?t=15509&start=0&postdays=0&postorder=asc&highlight=



Wrols писал(а):
Ответьте, пожалуйста, где можно найти документацию по данной библиотеки?    


DrvFR1C - это не библиотека, а компонента входящая в состав библиотеки. Описание данной компаненты Вы можете найти на нашем сайте или воспользовавшись ссылкой.


Wrols писал(а):
Новая библиотека не содержит методов ПолучитьСостояниеККМ, ОткрытьДенежныйЯщик (УстановитьДату, ПодтвердитьДату ?)    


Данная компонента написана согласно требований компании 1С, в котором нет требований по наличию указанных Вами методов.
14 antgrom
 
26.09.12
09:28
(12) "все файлы" долго искать. И проще просто переустановить + проверить папки bin
Может только DrvFR1C.dll виновата ?
15 antgrom
 
02.10.12
10:22
Подниму тему.

Есть ещё "вести с полей" :
при внесении ДС , выплате ДС  - ящик открывается

при пробитии чека - ящик не открывается.

Может такая ситуация у кого-то была ?
16 antgrom
 
02.10.12
11:04
Мне вот мысль пришла - может ящик не срабатывал из-за того что Основной режим запуска - выбирать автоматически ?
Может надо Толстого клиента выставить ?
17 antgrom
 
09.10.12
16:53
Тема всё ещё актуальна.

Готов поговорить )

В качестве тем :
драйвер DrvFR.dll единственный или бывают варианты и модификации ?

Обращение :
Объект.Драйвер.ОткрытьДенежныйЯщик(Объект.ИДУстройства,0);
это команда драйверу.
есть ли ещё команды , которые открывают денежный ящик ? например ЗакрытьЧек и т.п.
18 antgrom
 
12.10.12
18:01
Этот код заработал :

//Допустим на форме есть кнопка ОткрытьДЯ

Процедура ОсновныеДействияФормыОткрытьДЯ(Кнопка)
//эта строчка также не нужна для форм уже работающих с ФР

   
  ФР = глЗначениеПеременной("мФР");
  Если ФР = Неопределено Тогда
      //В справочнике КассаККМ должна быть касса, прописанная в торговом оборудовании на закладке "фискальные регистраторы", допустим у нее код 000000001
      Если ФР <> Неопределено
          ИЛИ РаботаСТорговымОборудованием.ПолучитьПроверитьПараметрыДляПробитияЧека(ФР) Тогда
          КассаККМ = ПолучитьСерверТО().ПолучитьКассуККМ(ФР);
          Магазин  = КассаККМ.Магазин;
      Иначе
          Магазин = ПараметрыСеанса.ТекущийМагазин;
      КонецЕсли;
     
      МассивФР      = ПолучитьСерверТО().ПолучитьСписокУстройств(
      Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор,
      КассаККМ);
     
      КоличествоФР = МассивФР.Количество();
     
      Если КоличествоФР = 0 Тогда
          Возврат;
      ИначеЕсли КоличествоФР = 1 Тогда
          ФР = МассивФР[0];
      Иначе
          СписокФР = РаботаСТорговымОборудованием.ПолучитьСписокУстройствТОДляВыбора(МассивФР);
         
          ФР = СписокФР.ВыбратьЭлемент("Необходимо выбрать фискальный регистратор");
          Если ФР = Неопределено Тогда
              Ответ     = "Операция отменена пользователем.";
              Отказ     = Истина;
              Результат = Ложь;
             
              Возврат;
          Иначе
              ФР = ФР.Значение;
          КонецЕсли;
      КонецЕсли;
  КонецЕсли;
 
 
  Обработка = Неопределено;
  Объект    = Неопределено;
  Результат = ПолучитьСерверТО().ПолучитьОбъектДрайвера(ФР, Обработка, Объект);
  //0 - это CashDrawerID, или номер денежного ящика, смотрим в настройках драйвера штрих-фр-ф
  Если  Результат = Перечисления.ТООшибкиОбщие.ПустаяСсылка() Тогда
      врОтвет = Объект.Драйвер.ОткрытьДенежныйЯщик(Объект.ИДУстройства,0); // НомерДенежногоЯщика)
      КодОшибки = Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
  КонецЕсли;
КонецПроцедуры
19 antgrom
 
12.10.12
18:02
При условии что есть :
////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ МОДУЛЯ

Перем мКассаККМ;
Перем мМагазин;
Перем мФР;
Перем мНастройкаРМК;

Перем мВысотаКнопки;
Перем мШиринаКнопки;
Перем мВерхКнопок;

Перем мМассивНазванийВсехКнопок;



Процедура ПриОткрытии()
   ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
   
   Если мФР <> Неопределено
    ИЛИ РаботаСТорговымОборудованием.ПолучитьПроверитьПараметрыДляПробитияЧека(мФР) Тогда
       мКассаККМ = ПолучитьСерверТО().ПолучитьКассуККМ(мФР);
       мМагазин  = мКассаККМ.Магазин;
   Иначе
       мМагазин = ПараметрыСеанса.ТекущийМагазин;
   КонецЕсли;

КонецПроцедуры
20 ЕстьОтвет
 
12.10.12
18:25
извращение ......
всю жизнь в фискале настраивал и ни чего не писал
правильный ответ в (8)