Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

ФЗ 54 ККМ с передачей данных в регламентном задании

ФЗ 54  ККМ с передачей данных в регламентном задании
Я
   lamme
 
07.11.17 - 22:07
Есть работающий (в ручном режиме) механизм 
1 автоматическое формирование заказа покупателя
2 автоматическое формирование реализации
3 формировании чека ККМ - с передачей в сбис для налоговой.

Собственно, 1 и 2 выполня.ются на ура в фоновом задании.
На сервере соответственно.

А вот как сюда прикрутить п3 - если оно тупо идет - в модуль обычного приложения для ПолучитьСерверТО() -а это клиентская работа ..

Переписывать всю процедуру работы с ККТ  на серверную часть ?
 
 
   piter3
 
1 - 07.11.17 - 22:09
На последний вопрос ответ да
   lamme
 
2 - 07.11.17 - 22:09
и если брать типовую схему в УТ10, например, в документе ЧекККМ - то там вся работа с ККМ идет в модуле формы документа и все манипуляции делаются на клиенте ..
   Woldemar177
 
3 - 07.11.17 - 22:11
(2) Сделай проборс портов на сервер и прикрути к нему онлайн ККМ через рс 232
   lamme
 
4 - 07.11.17 - 22:13
(3)
дык все равно все на серверный вариант придется переделывать ..
или кассу физически поставить на сервер .. да не- не поможет ...
все равно регламентное задание - это серверное выполнение ... отсюда и все ноги
   lamme
 
5 - 07.11.17 - 22:35
может тупо сделать пользователя - который будет постоянно висеть ... и тупо мониторить раз в 60сек - документы определенного вида .. открывать их ... нажимать кнопочку для работы с ккм .. потом проводить документ
   lamme
 
6 - 07.11.17 - 22:35
тупой метод ..
   Woldemar177
 
7 - 07.11.17 - 22:47
(5) Написать AI на джаве? Он будет смотреть на экран и тыкать кнопочку. У меня знакомый написал такого для игры в сапера.
   lamme
 
8 - 07.11.17 - 22:54
на УТ11 как это сделано?
там же как раз клиент-сервер должен быть реализован в области торгового оборудования.
или не?
   Woldemar177
 
9 - 07.11.17 - 22:57
(8) Понятия не имею ;) я ставлю в основном вики микро и туда качаю с ут 11, скрипт дает разработчик.
   Sapiens_bru
 
10 - 08.11.17 - 04:58
Механика работы с оборудованием такая
1) На клиенте - собирается информация с формы для печати чека, либо просто факт нажатия кнопки
2) На сервере - проверяется возможность пробития чека по бизнес логике, проводится документ
Собирается информация о подключенном оборудовании, его параметрах из настроек программы
Формируется XML файл для передачи в фискальный регистратор и передается на клиент
3) На клиенте - происходит вызов внешней компоненты и передача ему сформированного файла

Первую часть вы без проблем перенесете на сервер в обработку, третью часть на сервер перенести невозможно. Внешняя компонента существует по ТОЛЬКО &НаКлиенте. Это тупо внешний файл dll с инструкциями драйвера.
Если вы суметете декомпилировать ядро 1С , вставить в него дополнительный файл и компилировать обратно - вы получите функционал драйвера &НаСервере. Иначе - извращайтесь с эмуляцией действий пользователя, чтобы был доступен контекст &НаКлиенте.
 
 Рекламное место пустует
   Aleksey
 
11 - 08.11.17 - 05:24
(10) А почему нельзя положить болт на БСО и убрать прокладку в виде драйвера от 1С? Почему нельзя напрямую общаться с драйверами ФР?

Ну или другой вариант, на инфостарте мне попадался exe файл который висит в треи и посылаает на ФР данные из текстового файла типа http://catalog.mista.ru/public/656068/
   Sapiens_bru
 
12 - 08.11.17 - 06:12
(11)Напрямую это как? шестнадцатеричными командами в COM-порт? Уверены, что &НаСервере можно подать такую команду?

Разработка на инфостарте никоим образом не противоречит моему комменту. Человек реализовал контекст &НаКлиенте при помощи сторонней программы. От самого факта общения с драйвером посредством внешней компоненты он не ушел.
   Aleksey
 
13 - 08.11.17 - 06:24
(12) Есть драйвера от разработчиков ККМ
Фирма 1с реализовала свою прокладку, т.е. свои dll для работы со сторонними DLL и обернудо это все в БСО

Напрямую это значит отказаться от dll от 1С в пользу драйверов от разработчиков (штрих, атол)
   isa2net
 
14 - 08.11.17 - 06:25
(10) почему это длл можно подключить только наклиенте? Другое дело что серверТО подключается традиционно к форме, так как к ней подвязываются события оборудования.
   Aleksey
 
15 - 08.11.17 - 06:25
т.е. не через FprnM1C82_54FZ.dll,а через FprnM1C.dll
   isa2net
 
16 - 08.11.17 - 06:30
(15) зачем длл трогать?
   Aleksey
 
17 - 08.11.17 - 06:31
ЗагрузитьВнешнююКомпоненту("FPRNM1C.dll");
ECR = Новый("AddIn.FprnM45");
ECR.DeviceEnabled = 1;
Если ECR.ResultCode <> 0 тогда
   Возврат;
 КонецЕсли;

// получаем состояние ККМ

Если ECR.GetStatus() <> 0 тогда
   Возврат;
КонецЕсли;

// если есть открытый чек, то отменяем его

  Если ECR.CheckState <> 0 тогда
    Если ECR.CancelCheck() <> 0 тогда
      Возврат;
    КонецЕсли;
  КонецЕсли;

// если смена открыта снимаем Z-отчет

  Если ECR.SessionOpened = 1 тогда
    // устанавливаем пароль системного администратора ККМ

    ECR.Password = "30";
    // входим в режим отчетов с гашением

    ECR.Mode = 3;
    Если ECR.SetMode() <> 0 тогда
      Возврат;
    КонецЕсли;
    // снимаем отчет

    ECR.ReportType = 1;
    Если ECR.Report() <> 0 тогда
      Возврат;
    КонецЕсли;
  КонецЕсли;

// входим в режим регистрации

  // устанавливаем пароль кассира

  ECR.Password = "1";
  // входим в режим регистрации

  ECR.Mode = 1;
  Если ECR.SetMode() <> 0 тогда
    Возврат;
  КонецЕсли;

// продажа без сдачи

  // регистрация продажи

  ECR.Name = "Молоко";
  ECR.Price = 10.45;
  ECR.Quantity = 1;
  ECR.Department = 2;
  Если ECR.Registration() <> 0 тогда
    Возврат;
  КонецЕсли;
  // скидка суммой на предыдущую позицию

  ECR.Percents = 10;
  ECR.Destination = 1;
  Если ECR.PercentsDiscount() <> 0 тогда
    Возврат;
  КонецЕсли;
  // регистрация продажи

  ECR.Name = "Фанта";
  ECR.Price = 25;
  ECR.Quantity = 5;
  ECR.Department = 1;
  Если ECR.Registration() <> 0 тогда
    Возврат;
  КонецЕсли;
  // скидка суммой на весь чек

  ECR.Summ = 10.4;
  ECR.Destination = 0;
  Если ECR.SummDiscount() <> 0 тогда
    Возврат;
  КонецЕсли;

  // закрытие чека наличными без ввода полученной от клиента суммы

  ECR.TypeClose = 0;
  Если ECR.CloseCheck() <> 0 тогда
    Возврат;
  КонецЕсли;


// X - отчет

  // устанавливаем пароль администратора ККМ

  ECR.Password = "29";
  // входим в режим отчетов без гашения

  ECR.Mode = 2;
  Если ECR.SetMode() <> 0 тогда
    Возврат;
  КонецЕсли;
  // снимаем отчет

  ECR.ReportType = 2;
  Если ECR.Report() <> 0 тогда
    Возврат;
  КонецЕсли;

// Z - отчет

  // устанавливаем пароль системного администратора ККМ

  ECR.Password = "30";
  // входим в режим отчетов с гашением

  ECR.Mode = 3;
  Если ECR.SetMode() <> 0 тогда
    Возврат;
  КонецЕсли;
  // снимаем отчет

  ECR.ReportType = 1;
  Если ECR.Report() <> 0 тогда
    Возврат;
  КонецЕсли;

// выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее

  Если ECR.ResetMode() <> 0 тогда
    Возврат;
  КонецЕсли;

// освобождаем порт

  ECR.DeviceEnabled = 0;
  Если ECR.ResultCode <> 0 тогда
    Возврат;
  КонецЕсли;
   Aleksey
 
18 - 08.11.17 - 06:32
(16) Ну раз прокладка по какой то причине на сервере не работает (точнее подозреваю что речь всётаки о реализации в БСО), то основная dll должна работатьбез проблем
   isa2net
 
19 - 08.11.17 - 06:40
(18) а налоговая не спросит за неправильный формат чекоа? Эта длл поддерживает тэги фн по 54 фз?
   Лодырь
 
20 - 08.11.17 - 06:53
А сделать простейшее решение? на клиенте обработку ожидания и запустить на машине с ККМ клиентский сеанс 1ски, который с заданной периодичностью печатает чеки?
   Sapiens_bru
 
21 - 08.11.17 - 09:52
(18) На сервере не работает только "прокладка" а сам вызов "ПодключитьВнешнююКомпоненту"
Вы никакую Dll не подключите &НаСервере, неважно была она написана под БПО или является основой поставки драйвера под Windows
   Скай
 
22 - 08.11.17 - 09:58
   Сияющий в темноте
 
23 - 08.11.17 - 10:03
писать свою программу общения с фискальным регистратором
передавать ей файл команд,причем не обязательно хмл
или из сервера открывать еще одну пустую базу с оборудовагием и на нем печатать
   Сияющий в темноте
 
24 - 08.11.17 - 10:03
только 1с скушает лицензию,а скрипт-бесплатно
   Aleksey
 
25 - 08.11.17 - 11:08
(19) это длл от разработчиков. Естественно там все тэги. И прокладка потому и назвается прокладка, что в конечном итоги она её и вызывает
   isa2net
 
26 - 09.11.17 - 03:15
(21) Что у вас на сервере не подключить?
ПодключитьВнешнююКомпоненту (AttachAddIn)
Вариант синтаксиса: По имени и местоположению

Синтаксис:

ПодключитьВнешнююКомпоненту(<Местоположение>, <Имя>, <Тип>)
Параметры:

<Местоположение> (обязательный)

Тип: Строка.
Местоположение внешнего компонента.
В качестве местоположения может использоваться:
путь к файлу внешнего компонента в файловой системе (недоступно на веб-клиенте), не ZIP-архив; 
полное имя макета, хранящего двоичные данные или ZIP-архив; 
URL к внешнему компоненту, в виде двоичных данных или ZIP-архива, в формате, аналогичном ПолучитьНавигационнуюСсылку.
<Имя> (обязательный)

Тип: Строка. 
Символическое имя подключаемой внешнего компонента.
Имя должно удовлетворять правилам именования встроенного языка.
<Тип> (необязательный)

Тип: ТипВнешнейКомпоненты. 
Тип подключаемого внешнего компонента.
Не используется, если компонент упакован в ZIP-архив.
Описание варианта метода:

Подключает компоненты, выполненные по технологии Native API и COM.
Компонент может храниться в информационной базе или макете конфигурации в виде двоичных данных или в ZIP-архиве.
Для режимов запуска "Тонкий клиент" и "Веб-клиент", компонент должен быть предварительно установлен методом УстановитьВнешнююКомпоненту.
Вариант синтаксиса: По идентификатору

Синтаксис:

ПодключитьВнешнююКомпоненту(<ИдентификаторОбъекта>)
Параметры:

<ИдентификаторОбъекта> (обязательный)

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

Внешние компоненты могут быть выполнены по технологии Native API или COM. Компоненты, выполненные по технологии COM, совместимы с компонентами 1С:Предприятия 7.7.
Веб-клиент может работать только с компонентами в информационной базе, упакованными в архив.
Тонкий клиент может работать с компонентами в информационной базе, упакованными в архив, и компонентами, расположенными в файловой системе.
Толстый клиент может работать со всеми вариантами хранения компонентов. При этом, если компонент установлен методом УстановитьВнешнююКомпоненту, то используется установленный компонент, а если не установлен, то компонент будет получен в момент подключения.
Сервер может работать со всеми компонентами. Компонент кэшируется на сеанс работы сервера.
Пример:

Если ПодключитьВнешнююКомпоненту("AddinObject.Scanner") Тогда
    Сообщить("Компонента для сканера штрихкодов загружена");
Иначе
    Сообщить("Компонента для сканера штрихкодов не загружена");
КонецЕсли;
   isa2net
 
27 - 09.11.17 - 03:28
(25) Есть ФР, а есть ККТ с ОФД, у них разные требования к разработке драйверов https://its.1c.ru/db/metod8dev#content:4829:hdoc:_top:opencheck
   Aleksey
 
28 - 09.11.17 - 05:08
(27) явно кто то не понимает

По ссылки это для прокладки от 1С.
К примеру у меня 1С 7.7 вполне работает с типовыми драйверами от разработчиков без прокладок и БСО. 8-ка может работать аналогично (код в (17)).
То что по ссылки это описания прокладки от 1С и реализация её в БСО. Т.е. грубо говоря это надстройка над драйверами, более высокий уровень абстракции я бы сказал.

Т.е. можно или просто взять прокладку и сказать СформироватьЧек(Параметры), и тогда прокладка уже сама преобразует эту команду в команды драйевра, т.е. разложит параметры и передаст драйверу 
ECR.Name = "Молоко";
ECR.Price = 10.45;
ECR.Quantity = 1;
ECR.Department = 2;
ECR.Registration();
...

Либо писать этот код самостоятельно.

Для чего нужна прокладка - толи лишь для того чтобы поднятся на уровень абстракции выше. Т.е. тебе не нужно кодить и учитывать особенности оборудования (ну к примеру разные команды для разных моделей ФР), этим будет заниматься прокладка.


И да ФР с ФН это и есть ККТ с ОФД
   Сияющий в темноте
 
29 - 09.11.17 - 09:07
если хочется абстракции
пишите из 1с файл с данными чека в общем виде,а потом отдельным процесмом мониторьте появление этого файла и обрабатывайте его в другой программе
   Aleksey
 
30 - 09.11.17 - 12:39
(29) Вот хоть убей не могу понять почему у разработчиков ФР нет такой программы. Т.е. есть dll для 1С, для екселя, делфи, шарпа ... а вот тупо готовой программы для печати чека (ну кроме "Тест драйвера ККМ") нет. Т.е. нельзя взять ФР и начать бить чеки, обязательно нужно искать отдельную программу которая будет через dll печатать чеки
   opus70
 
31 - 09.11.17 - 12:44
(30) как хорошо сказано, еще бы так сказать по поводу ЕГАИС ну что за такая зара без нормальной программы от разработчиков а не уродства в виде команд и ихнего черного ящика
   piter3
 
32 - 09.11.17 - 13:02
Эх,а еще бы как казахам повезло и нам бы тоже не помешало,без ккма
   isa2net
 
33 - 09.11.17 - 14:32
(28) я понимаю что есть "прокладка" в виде апи, я о том, что  есть ли у вас те тэги которые передаются в XML таблице  ДанныеЧека(CheckPackage), как например: ECR.Tax = %ставкаНДС%;, Cash,CashLessType1. А без этого чек не соответствует требованиям ФЗ 54.
 
 
   Aleksey
 
34 - 09.11.17 - 23:58
(33) конечно есть
   Сияющий в темноте
 
35 - 10.11.17 - 09:14
(31) в последнем егаис можно запросы отправлять прям из вкладки исходящие,так что практически есть

у нас с фр предлагается программа чтобы просто пробить чек


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует