Имя: Пароль:
1C
 
При локальном подключении работает изьятие денег, а через rdp - нет. Почему?
0 evorle145
 
18.10.19
12:59
Напишите плиз хотя бы идею, в какую сторону можно копать.
Проблема такая.
Была файловая база розница, к ней подключена касса ККМ онлайн АТОЛ 50Ф, и все отлично работало, в том числе когда нажимали кнопку "Изъять деньги из кассы" - они изымались. Изымались за счет того что вызывалась функция из обработки торгового оборудования Функция Сумма(Объект, Пароль=30, Сумма) Экспорт (сумма была отрицательной). И все работало корректно!

Потом базу переместили на сервер, сделали rdp доступ, пробросили com порт - и все заработало, кроме изъятия денег. Онлайн чеки пробиваются и отправляются. А изъятие нажимаем и получаем ошибку в этой самой функции вот на этой строке

Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_SUM, Сумма);


//
{ВнешняяОбработка.АТОЛФискальныеРегистраторы.МодульОбъекта(5004)}: Ошибка при вызове метода контекста (setParam)
            Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_SUM, Сумма);
по причине:
Произошла исключительная ситуация (0x80070057)
//

на всякий случай прикладываю саму функцию


Функция Сумма(Объект, Пароль=30, Сумма) Экспорт

Результат = мНетОшибки;

ЗанятьПорт(Объект);

ИспользуемыйДрайверККМ = КАС_ПолучитьЗначениеПараметра(Объект.Параметры,"ИспользуемыйДрайверККМ");
Если ИспользуемыйДрайверККМ = Неопределено Тогда
ИспользуемыйДрайверККМ = 1;
КонецЕсли;

Если ИспользуемыйДрайверККМ = 1 Тогда
Объект.Драйвер.Password = ?(Пароль=0,Объект.Параметры.ПарольПользователя,Пароль);
Объект.Драйвер.Mode = 1;
Объект.Драйвер.SetMode();

//устанавливаем пользователя/кассира
КАС_УстановитьКассираДляОперации(Объект,Пароль);

Если Сумма > 0 Тогда
Объект.Драйвер.Summ = Сумма;
Если Объект.Драйвер.CashIncome() <> 0 Тогда
Объект.ОписаниеОшибки = "Ошибка операции внесения";
ПолучитьОписаниеОшибки(Объект, Истина);
Возврат мОшибкаНеизвестно;
КонецЕсли;
ИначеЕсли Сумма < 0 Тогда
МодульСумма=Макс(Сумма,-Сумма);
Объект.Драйвер.Summ = МодульСумма;
Если Объект.Драйвер.CashOutcome() <> 0 Тогда
Объект.ОписаниеОшибки = "Ошибка операции выплаты";
ПолучитьОписаниеОшибки(Объект, Истина);
Возврат мОшибкаНеизвестно;
КонецЕсли;
КонецЕсли;
ИначеЕсли ИспользуемыйДрайверККМ = 2 Тогда
//устанавливаем пользователя/кассира
КАС_УстановитьКассираДляОперации(Объект,Пароль);

Если Сумма > 0 Тогда
Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_SUM, Сумма);
Объект.Драйвер.cashIncome();
ИначеЕсли Сумма < 0 Тогда
Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_SUM, Сумма); ///////////////////////////////////////////////////////вот тут валится с ошибкой!!!!!!!!
Объект.Драйвер.cashOutcome();
КонецЕсли;

Если Объект.Драйвер.errorCode() <> 0 Тогда
Объект.ОписаниеОшибки = "Ошибка операции " + ?(Сумма > 0, "внесения", ?(Сумма < 0, "выплаты", "внесения/выплаты"));
ПолучитьОписаниеОшибки(Объект, Истина);
Возврат мОшибкаНеизвестно;
КонецЕсли;
КонецЕсли;

Отключить(Объект);
Возврат Результат;

КонецФункции // Сумма()

То есть главная зацепка что эта онлайн касса делала изъятия когда было локальное подключение к базе, и перестала делать когда подключили к RDP. Что может быть? какие идеи?
1 evorle145
 
18.10.19
13:38
Если захожу на сервер с этого компа, где касса подключена через rdp и там запускаю драйвер атол 10.4 и в нем нажимаю кнопки внести или выдать какую либо сумму, то чек на эту сумму вылазит...
2 tty12
 
18.10.19
13:40
(1) А сервер случайно не на английской винде?
И работает ли внесение денег?
3 tty12
 
18.10.19
13:42
(2) + внесение денег через 1С соответственно...
4 evorle145
 
18.10.19
13:48
(2) (3) операционная система win server 2012 r2 на русском языке
если нажимаю кнопку внести деньги, то вызывается все та же обработка, все та же функция сумма(), только параметр Сумма в ней уже положительный,и да, внесение денег происходит! чек печатается все как надо... Что это значит?
5 evorle145
 
18.10.19
13:49
в настройках драйвера "Учет наличности" отключил
6 evorle145
 
18.10.19
13:51
даже если подумать, что причина в нехватке денег, то перед тем как выдать 8 рублей, я сначала вношу 8 рублей. Вносится без ошибок. Но стоит попытаться из изъять как сразу валится вот это

{ВнешняяОбработка.АТОЛФискальныеРегистраторы.МодульОбъекта(5006)}: Ошибка при вызове метода контекста (setParam)
            Объект.Драйвер.setParam(Объект.Драйвер.LIBFPTR_PARAM_SUM, Сумма);
по причине:
Произошла исключительная ситуация (0x80070057)
7 Kigo_Kigo
 
18.10.19
13:55
(6) может не надо ему отрицательную сумму подсовывать, ККТ то сама разбирается в командах
Объект.Драйвер.cashIncome();
и
Объект.Драйвер.cashOutcome();
8 tty12
 
18.10.19
13:56
(6) а сумму не надо положительной делать?
9 tty12
 
18.10.19
13:56
версии дров на фр и обработок 1с-ных одинаковые?
10 evorle145
 
18.10.19
14:01
(7) (8) ек макарек... парни, внатуре.. Эта обработка откуда то с инфостарта была куплена и походу в этом куске косяк. Реально стал подсовывать туда значение по модулю и все заработало!! (7) там же реально написано cashOutcome(); и cashIncome(); ...

Парни, кидайте мне на мыло номера карты сбера, закину на пиво) Просто реально выручили! без вас я бы так и не допер походу(
11 tty12
 
18.10.19
14:14
(10) да ладно. делов на 5 минут с перекурами.
12 evorle145
 
18.10.19
14:16
(11) поменять сумму на сумму по модулю - да 5 минут. А вот внимательно разобраться и понять что косяк именно в этом -  вот это уже оказалось для меня сложным, и вы в (8) и (7) мне дали на это намек, за что я безгранично вам благодарен!
13 Мимохожий Однако
 
18.10.19
14:22
Сегодня - хороший день! ))
14 Kigo_Kigo
 
18.10.19
14:53
(10) Да лан забей, обращайся если шо(с) :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший