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

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

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

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

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

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

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

Напрямую это значит отказаться от dll от 1С в пользу драйверов от разработчиков (штрих, атол)
14 isa2net
 
08.11.17
06:25
(10) почему это длл можно подключить только наклиенте? Другое дело что серверТО подключается традиционно к форме, так как к ней подвязываются события оборудования.
15 Aleksey
 
08.11.17
06:25
т.е. не через FprnM1C82_54FZ.dll,а через FprnM1C.dll
16 isa2net
 
08.11.17
06:30
(15) зачем длл трогать?
17 Aleksey
 
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 тогда
    Возврат;
  КонецЕсли;
18 Aleksey
 
08.11.17
06:32
(16) Ну раз прокладка по какой то причине на сервере не работает (точнее подозреваю что речь всётаки о реализации в БСО), то основная dll должна работатьбез проблем
19 isa2net
 
08.11.17
06:40
(18) а налоговая не спросит за неправильный формат чекоа? Эта длл поддерживает тэги фн по 54 фз?
20 Лодырь
 
08.11.17
06:53
А сделать простейшее решение? на клиенте обработку ожидания и запустить на машине с ККМ клиентский сеанс 1ски, который с заданной периодичностью печатает чеки?
21 Sapiens_bru
 
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с скушает лицензию,а скрипт-бесплатно
25 Aleksey
 
08.11.17
11:08
(19) это длл от разработчиков. Естественно там все тэги. И прокладка потому и назвается прокладка, что в конечном итоги она её и вызывает
26 isa2net
 
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") Тогда
    Сообщить("Компонента для сканера штрихкодов загружена");
Иначе
    Сообщить("Компонента для сканера штрихкодов не загружена");
КонецЕсли;
27 isa2net
 
09.11.17
03:28
(25) Есть ФР, а есть ККТ с ОФД, у них разные требования к разработке драйверов https://its.1c.ru/db/metod8dev#content:4829:hdoc:_top:opencheck
28 Aleksey
 
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с файл с данными чека в общем виде,а потом отдельным процесмом мониторьте появление этого файла и обрабатывайте его в другой программе
30 Aleksey
 
09.11.17
12:39
(29) Вот хоть убей не могу понять почему у разработчиков ФР нет такой программы. Т.е. есть dll для 1С, для екселя, делфи, шарпа ... а вот тупо готовой программы для печати чека (ну кроме "Тест драйвера ККМ") нет. Т.е. нельзя взять ФР и начать бить чеки, обязательно нужно искать отдельную программу которая будет через dll печатать чеки
31 opus70
 
09.11.17
12:44
(30) как хорошо сказано, еще бы так сказать по поводу ЕГАИС ну что за такая зара без нормальной программы от разработчиков а не уродства в виде команд и ихнего черного ящика
32 piter3
 
09.11.17
13:02
Эх,а еще бы как казахам повезло и нам бы тоже не помешало,без ккма
33 isa2net
 
09.11.17
14:32
(28) я понимаю что есть "прокладка" в виде апи, я о том, что  есть ли у вас те тэги которые передаются в XML таблице  ДанныеЧека(CheckPackage), как например: ECR.Tax = %ставкаНДС%;, Cash,CashLessType1. А без этого чек не соответствует требованиям ФЗ 54.
34 Aleksey
 
09.11.17
23:58
(33) конечно есть
35 Сияющий в темноте
 
10.11.17
09:14
(31) в последнем егаис можно запросы отправлять прям из вкладки исходящие,так что практически есть

у нас с фр предлагается программа чтобы просто пробить чек
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.