Каталог решений - Если ККМ Атол + 1С Розница тормозит при печати чеков по сети, или экономим на покупке ККТ и ФР

Если ККМ Атол + 1С Розница тормозит при печати чеков по сети, или экономим на покупке ККТ и ФР

Если ККМ Атол + 1С Розница тормозит при печати чеков по сети, или экономим на покупке ККТ и ФР

В наличии

Очень медленная работа с ККТ по Tcp/ip
или
Как заставить две клиентских Розницы 1С печатать чеки на одной кассе ККТ онлайн
Предыстория и чем все закончилось.

Категория:

Описание

Все началось с того, что один мой знакомый (клиент) захотел добавить в своем магазине еще пару рабочих мест кассира, не  на постоянной основе, а так, на случай большого наплыва клиентов в "Часы Пик", предполагая, что лицензии 1С будут отбираться у бухгалтера и менеджера, и на  период "Час Пик" они же и будут "переводиться" в кассиры (покупатели наше все 😉   Были изысканы пара дохленьких ноутбуков (отобраны у детей взамен обещания, что будут им новее и лучше 🙂

Ну и были озвучены все пожелания мне, короче, все в духе сказки "О Попе и его работнике Балде"

Обдумав ситуацию, было решено:

1. что крутиться  будут эти два дополнительных места  на файловом сервере 1С где лежит база, подключаясь туда по RDP;

2. кассу ККМ нужно покупать новую, выбор пал на Атол, с возможностью подключения по сети Ethernet, (выбрали АТОЛ FPrint-22ПТК)

3. нужно будет слегка допилить 1С Розницу в плане возможности печатать чеки на одну ККТ с нескольких компьютеров (Сеансов 1С)

Сказано-сделано!

1) Терминальный доступ поручили настраивать Сисадмину (нечего у людей хлеб отбирать 🙂

2) ККТ приобрели, зарегистрировали и получили ее для "Опытов"  ну в смысле для отладки нового функционала.

3) Имелась 1С Розница 2.2.13.8 (кто-то до нас в ней включил возможность внесения изменений, вот и славно, не придется "брать грех на душу" 🙂 и мне предстояло отучить ее от привычки намертво привязывать настройки подключаемого оборудования к имени пользователя_windows/компьютера, а точнее дать возможность задать каждому пользователю 1С указывать "понравившееся" Рабочее_Место и вместе с ним и настройки торгового оборудования и РМК.

Что и было сделано парой небольших мазков молодого  отрока на холсте великого мастера

//ПланВидовХарактеристик.НастройкиПользователей в тип хранимых настроек добавляем Справочник.РабочиеМеста

//ОбщийМодуль->МенеджерОборудованияВызовСервера
//Добавим функцию для получения Рабочего места из настроек пользователя 
Функция ПолучитьРМПользователя() Экспорт
УстановитьПривилегированныйРежим(Истина);
    Магазин = ПараметрыСеанса.ТекущийМагазин;
    Пользователь = ОбщегоНазначенияРТ.ПользовательСУчетомИзмененныхПрав();

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    НастройкиПользователей.Значение КАК Значение
                   |ИЗ
                   |    РегистрСведений.НастройкиПользователей КАК НастройкиПользователей
                   |ГДЕ
                   |    НастройкиПользователей.Пользователь.Ссылка = &Пользователь
                   |    И НастройкиПользователей.Магазин = &Магазин
                   |    И НастройкиПользователей.Настройка = &Настройка";
    
    Запрос.УстановитьПараметр("Пользователь", Пользователь);
    Запрос.УстановитьПараметр("Магазин"     , Магазин);
    Запрос.УстановитьПараметр("Настройка"   , ПланыВидовХарактеристик.НастройкиПользователей.РабочееМесто);
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    
    Если Выборка.Следующий() Тогда
        ОсновнРабочееМесто = Выборка.Значение
    КонецЕсли;
    
Если ЗначениеЗаполнено(ОсновнРабочееМесто)тогда    
 Возврат ОсновнРабочееМесто.Ссылка;
Иначе
 возврат Справочники.РабочиеМеста.ПустаяСсылка();
 КонецЕсли;

КонецФункции
// И тут буквально 3 строчки для вызова нашей процедуры
Процедура УстановитьПараметрыСеансаПодключаемогоОборудования(ИмяПараметра, УстановленныеПараметры) Экспорт

    Если ИмяПараметра = "РабочееМестоКлиента" Тогда
        
        // Если с идентификатором клиента текущего сеанса связано одно рабочее место,
        // то его сразу и запишем в параметры сеанса.
        ТекущееРМ           = Справочники.РабочиеМеста.ПустаяСсылка();
        СистемнаяИнформация = Новый СистемнаяИнформация();
        // ++ТутВставить
        ТекущееРМ = ПолучитьРМПользователя();
        Если  ТекущееРМ = Справочники.РабочиеМеста.ПустаяСсылка() тогда
        //--До сюда
            СписокРМ = НайтиРабочиеМестаПоИД(ВРег(СистемнаяИнформация.ИдентификаторКлиента));
            Если СписокРМ.Количество() = 0 Тогда
                // Будет создано с клиента.
            Иначе
                ТекущееРМ = СписокРМ[0];
            КонецЕсли;
        // ++ТутВставить    
        КонецЕсли;
        //--До сюда

       
        УстановитьРабочееМестоКлиента(ТекущееРМ);
        
        Если ТипЗнч(УстановленныеПараметры) = Тип("Структура") Тогда
            УстановленныеПараметры.Вставить("РабочееМестоКлиента");
        Иначе
            УстановленныеПараметры.Добавить("РабочееМестоКлиента");
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

Протестировал:

На RDP сервер  Установили драйвер ККТ Атол v10.7 (На v10.5 тоже работает на других не проверял)

На новом рабочем месте (т.е. в сеансе RDP под пользователем Кассир№2) запускаем 1С от пользователя Кассир№2
пробегаемся  мастером настройки РМК (Настраиваем Кассу обычным порядком, как в любой  1С Рознице для подключения ККТ)

вроде все печатается Ок.

На втором дополнительном рабочем месте (т.е. в сеансе RDP под пользователем Кассир№3 и пользователем 1С Кассир№3 ) Заходим Администрирование — Пользователи — настройки пользователя — Рабочее_Место указываем рабочее место Кассира№2 настроенное шагом выше. 
Все теперь при входе  под пользователем  Кассир№3 можем работать с Кассой ККТ Кассира№2 (Понимаем, что Кассовая смена будет одна на двоих Закрывать/Открывать смену дважды не нужно, а также во избежание недоразумений не стоит абсолютно синхронно нажимать кнопку "Пробить чек")

Отдаем все в промышленную эксплуатацию.

Все бы хорошо, но на деле, как всегда, не все бывает гладко

Выяснилось, что когда ККТ поставили в то место где ему предназначено между двумя АРМами (ноутами) в торговом зале, подключили все это добро к "Рабочей Сети" где гуляет файловая 1С, интернет и еще Бог знает что. На печать одного чека на сетевую ККТ требуется от 30 секунд до нескольких минут, при этом Чек печатается буквально по-сим-воль-но.

Проверил скорости портов, линки сети, загрузку сервера… и все на что мог подумать… все Ок!?

Из теста драйвера  ККМ одинаково хорошо печатает как по USB/COM так и при подключении по сети Ethernet.

Когда пытаешь распечатать чек из 1С,  при подключении ККМ непосредственно к компьютеру, то все печатается как обычно без нареканий, а если ККМ подключить по сети, то на печать  чека уходит столько времени, что покупатель может успеть сбегать в соседний ларек за пивом 🙂

Потратил кучу времени на поиск решения проблемы в интернете, похожие ситуации изредка попадались, но чаще всего народ сдавался и плевал на идею печати на Кассу ККТ по сети, либо предлагались замудренные решения с установкой виртуальных СОМ портов (что-то наподобие программного принт-сервера только для устройств на СОМ портах), натыкался на попытки обратиться в техподдержку  Атола и их ответ:  мол  если из драйвера все нормально, то вопрос не к нам, а к 1С или купите у нас Фронтол 🙂

В конце концов наткнулся на упоминание некоего параметра  в win_registry TcpAckFrequency вот Тут  , спасибо огромное автору.

Смысл в том, как я понял, что происходят бесконечные согласования между сторонами при установке связи по протоколу  TCP/IP между кассой и компом, но если через regedit открыть  параметры сетевого интерфейса и добавить ключ TcpAckFrequency с типом  Dword и задать ему значение =1 то все начинает работать как надо.

Вот так!!!

PS: Полгода полет нормальный.

Открылся дополнительный пруфит, если менеджеру или Бухгалтеру нужно распечатать чек к ПКО/РКО то совсем нет необходимости идти и сгонять с рабочего места Продавца-Кассира  они также прописав себе  в настройках Рабочее_Место могут спокойно печатать чеки.

Но вот "вредный СисАдмин" решил поапгрейдить сервер, и все вроде переставил (как он думал), а чеки опять стали тормозить… и чтобы в третий раз не мучить Яндекс глупыми вопросами, решился тут наваять публикацию себе на память, ну и вдруг кому пригодится.   

has been added to your cart:
Оформление заказа