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

01.07.20

Учетные задачи - Розничная торговля

Очень медленная работа с ККТ по 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: Полгода полет нормальный.

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

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

Розница ККТ Атол Ethernet медленная печать чеков два кассира одна касса

См. также

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 1.6 1С:Бухгалтерия автономного учреждения 1С:CRM ПРОФ, КОРП Россия Платные (руб)

Универсальная обработка для обслуживания любых фискальных регистраторов (ККТ), в том числе Веб сервер АТОЛ. Работает в соответствии с 54-ФЗ. (ФФД 1.0, ФФД 1.05, ФФД 1.1). Подключайте любую онлайн кассу к практически любой конфигурации. Нет необходимости обновлять 1С. Можно бесплатно скачать и протестировать. Может работать одновременно с несколькими онлайн-кассами, либо одной с разных рабочих мест. (через RDP, TCP\IP или веб-сервер) Позволяет разделить один чек сразу на несколько ККТ или на несколько систем налогообложения. Поддерживает разрешительный режим. Можно настроить собственный шаблонов чека. Можно использовать эквайринг там, где он не поддерживается. Работает на LINUX и Windows ЭМУЛЯТОР + ЭКВАЙРИНГ + МАРКИРОВКА + ПОДДЕРЖКА ФФД 1.2

6000 руб.

27.02.2017    799376    4927    9555    

2863

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Пользователь Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом. ВНИМАНИЕ! 09.01.25 г. планируется повышение цен на 20%!

28500 руб.

21.04.2017    96826    133    42    

214

Оптовая торговля Розничная торговля Обмен с ГосИС Бухгалтер Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Полнофункциональное расширение (ранее известное как Модуль 1С-ЕГАИС) для взаимодействия типовых конфигураций 1С и ЕГАИС, предоставляющее максимум возможностей по работе с УТМ. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

8970 руб.

15.12.2015    171014    958    364    

401

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Обработка осуществляет обслуживание ККТ АТОЛ, Штрих, Вики Принт и Меркурий для конфигураций "УТ 10.3", "КА 1.1", "УПП 1.3", "Розница 1.0", "БП 2.0" и других отраслевых решений, построенных на основе указанных выше конфигурациях. Поддерживает возможность параллельно пробития чеков на одной ККМ несколькими пользователями. Поддерживает Веб-сервер Атол. Соответствует требованиям 54-ФЗ. Поддерживает ФФД 1.0, 1.05, 1.1 и 1.2. Разделяет чеки по нескольким СНО. Поддерживает механизмы подключения ККТ по TCP/IP, для работы через RDP или интернет. Поддержка маркировки и разрешительного режима.

5880 руб.

25.05.2015    336244    1967    3062    

1033

ККМ Кассовые операции Розничная торговля Обмен с ГосИС Программист Бухгалтер Пользователь Бухгалтерский учет Оперативный учет Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение конфигурации для УТ 11.5, КА 2.5 ,ERP 2.5 (Управляемые формы) позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

5000 руб.

27.08.2018    122910    1038    586    

872

Управление взаимоотношениями с клиентами (CRM) Оптовая торговля Розничная торговля Пользователь Платформа 1С v8.3 Оперативный учет Управляемые формы 1С:Управление торговлей 10 1С:Розница 2 Россия Управленческий учет Платные (руб)

Подсистема призвана упростить и автоматизировать процесс расчета и начисления бонусов покупателей. Бонусная система работает с конфигурациями 1С:УТ 10.3, 1С:Розница. Механизм реализован в начале 2013г. и работает до сих пор с постоянными совершенствованиями.

30000 руб.

02.11.2015    112541    101    88    

185
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. barich 05.07.20 10:27 Сейчас в теме
Сначала мы вкорячиваем в простейший кейс дополнительную точку отказа в виде терминального сервера, а потом жалуемся на админов и производителей ПО как это всё кондово работает. Что мешает розницу разместить на одном из ноутов, а ККТ подключить по USB?
2. oldcopy 174 06.07.20 12:33 Сейчас в теме
(1)И который еще стоит диких денег по лицензированию, хотя в Рознице давно работает тонкий клиент. Это раз.

Делать как автор с рабочими местами тоже не надо, потому что на все реальные рабочие места будет клонироваться один и тот-же набор торгового оборудования, которого там может и не быть.

Мы делали по другому, в момент открытия смены на рабочем месте проверяли, есть ли открытая смена на этом экземпляре оборудования, если есть, то выполняли открытие в программе без открытия на устройстве. При закрытии проверяли, если это последняя смена для экземпляра устройства, то выполняли закрытие на оборудовании.
yaguarrr; +1 Ответить
4. lepihin 25 10.07.20 09:44 Сейчас в теме
(2) Решение с терминальным сервером принималось и оплачивалось не мной, и совершенно из других соображений.
Я же решал узкую задачу, два АРМ - одна ККТ.
Да согласен, что мне повезло - места были идентичные по подключаемому оборудованию. Сканер ШК (как клавиатура), ККТ и все.
Идея о закрытии/открытии смены без устройства возможно и более правильная, но более трудозатратная, а заказчик хотел экономить )

ps: Вообще то я не продаю данное решение по подключению одной ККТ к двум АРМ, а Описываю одну из возможных проблем (и ее решение) медленной печати чеков при подключении ККТ по сети.
smetanko; +1 Ответить
5. oldcopy 174 10.07.20 13:10 Сейчас в теме
(4)
Идея о закрытии/открытии смены без устройства возможно и более правильная, но более трудозатратная, а заказчик хотел экономить )


Кроилово ведет к попадалову, завтра заказчик притащит еще что нибудь, та тот же BT-сканер ШК, который работает через COM-порт и будет весело. А еще может и предъяву кинуть, вместо того чтобы оплачивать доработки.
3. lepihin 25 10.07.20 09:27 Сейчас в теме
Подлключение ККТ по USB не позволило бы использовать одну ККТ на два рабочих места.
А если есть сетевой порт на ККТ (и за него уплочено !!!) почему же не жаловаться что оно не работает как надо?
При работе ККТ по сети нет принципиальной разницы где запускается клиент на терминальном сервере или непосредственно на АРМ, связь с ККТ идет по сети в любом случае и регистри править приходится там где запускается клиент.
6. zhuntovda 1 15.09.20 08:41 Сейчас в теме
Люблю изучать всякие такие решения. Чем меньше бизнес и больше амбиции по автоматизации, тем в голову владельцам приходят более невероятные идеи. Пусть все работает по одной кнопке. Логичные доводы, основанные на опыте, слышать они не хотят, пока не наступят на грабли сами)
9. lepihin 25 23.12.20 21:49 Сейчас в теме
(6)Рад что Вам было, что почитать, и над чем посмеяться )

Действия "сказки" происходили в далеком "ЗаМКАДье"
жители которого плохо представляют что такое амбиции и мало думают про размеры бизнесов,
просто пытаются выжить там "где жизни нет".

Заказчик (по своему все просчитал:) за стоимость еще одной ККМ он может выплачивать З.П. одному своему работнику пару месяцев (да да я понимаю что у некоторых пара обуви стоит дороже), а если и случатся какие грабли то он всегда сможет вызвать кулибина (программиста) и тот ему все устроит-допилит-починит (за сумму на которую и шнурков не купишь к той самой паре обуви :)
7. kasperok 31 25.09.20 14:17 Сейчас в теме
А имеет значение Dword 32 или 64 ?
8. lepihin 25 23.12.20 21:18 Сейчас в теме
(7)Имелось ввиду просто Dword
Ноуты на РМК были древние винда 32х разрядная
12. user1273680 24.08.23 17:41 Сейчас в теме
(8) Столкнулся с такой же проблемой - чеки печатаются буквально по буквам. ККМ подключена через сеть. Пользователи в 1с по RDP.
То есть 1с видит кассу по локальному IP чрез VPN.
Ссылка на Вашу статью по поводу TcpAckFrequency не открывается. Подскажите, где прописывать этот параметр на локальном компе или терминальном сервере?
10. user635667 05.02.21 16:38 Сейчас в теме
"а также во избежание недоразумений не стоит абсолютно синхронно нажимать кнопку "Пробить чек")"
- А как решить эту проблему?
Мы взяли кктВикиПринт 57Ф. У него на задней стороне два способа подключения - USB и Rs232. Один кинули к одному ПК. второй ко второму. Настроили одинаковый номер СОМ порта на двух ПК. Пошаманили с рабочими местами. В общем можно бить чеки с двух рабочих мест. НО есть именно эта проблема - при одновременном пробитии чека на двух ПК чек выходит один нормально, а на втором происходит сбой.
Как решить данную проблемы? Я так думаю надо замутить что-то типа очереди, но не придумал как.
11. lepihin 25 07.05.21 01:39 Сейчас в теме
(10)Ну там ноуты стоят довольно близко и пользователи могут "взглянуть в глаза друг-другу перед тем как пробить чек" по этому просто предупредил "одновременно не пробивать чеки!!!" , так что особой проблемы нет.

Это вы "здорово" придумали использовать оба интерфейса ККТ одновременно, и клево что так заработало (мне бы мой Жопыт не позволил это опробовать, напоминая о различии в потенциалах на корпусах устройств с импульсными блоками питания и сомнении в наличии гальванической развязки на интерфейсах )
наверное не на всех кассах так можно сделать в частности на старых Штрихах помнится надо было сначала путем "шаманского" нажатия кнопок при включении ККТ выбрать нужный интерфейс и только после этого из драйвера можно было достучатся до неё, соответственно выбрать можно было что то одно :(

Очередь я однажды делал в другом проекте: там была задача записывать и стирать ключи E-Marine, в турникет для пропуска клиентов.
Данные ключей на запись или удаление сначала писались в РегистрСведений (Это могут делать хоть 100/500 операторов параллельно) а непосредственно запись в турникет производилась РегламентнымЗаданием, в фоне, по расписанию каждые 2-3 сек.
13. 1c-asu 31.08.23 14:12 Сейчас в теме
Спасибо огромное Вам за эту статью. Чеки по TCP стали "летать"
14. user1273680 31.08.23 14:50 Сейчас в теме
Где прописывали этот ключ TcpAckFrequency? У меня почему-то не сработало, может не там прописал... Чеки так и печатаются "по буквам"
15. lepihin 25 10.09.23 22:47 Сейчас в теме
(14) Под "Тут" была статья на сайте Атола, но видимо убрали :(
TcpAckFrequency Это ключик в Реестре виндовс

Яндексим TcpAckFrequency и вот первые две ссылки

https://www.war2.ru/modules/newbb_plus/viewtopic.php?topic_id=1882&forum=1

https://learn.microsoft.com/ru-ru/troubleshoot/windows-server/networking/registry-entry-control-tcp-acknowledgment-behavior

Если коротко то вот:
win+R
regedit

В реестре поменять
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\P­arameters\Interfaces\
Там будет несколько подпапок с именем по типу {7DBA6DCA-FFE8-4002-A28F-4D2B57AE8383}. Заглядываем в каждую. Ищем ту, что содержит ключ с IP-адресом вашего интернет-соединения. Например, "DhcpIPAddress = 192.168.0.5". Остальные подпапки, скорее всего, будут содержать нулевые значения.
Ищем TcpAckFrequency, если нету создаем DWORD параметр с таким названием. значение 1.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters
Ищем TCPNoDelay, если нету создаем DWORD параметр с таким названием. значение 1.

ОК и перезагружить комп.
16. Djo82 12 25.07.24 11:35 Сейчас в теме
(15) Здравствуйте, на сервере под rdp это делается или там где касса стоит?
17. lepihin 25 25.07.24 15:07 Сейчас в теме
(16) т.к. описываемый пример про печать чеков с терминального сервера на ККТ подключенную по Ethernet то регистри правили на то той машине с которой отправляются TCP пакеты на кассу т.е. на RDP сервере.
(возможно это был частный случай, за последние версии ОС/драйверов сетевых карт и прошивок ККТ ничего не скажу. на самом деле от этой системы уже давно отказались: терминального сервера больше нет, используются тонкие клиенты и база опубликованная на Апаче, еще и сеть заново протянули новым правильным кабелем, кабель разделали в патчпанели и розетки, соединили все фабричными патч-кордами , и поставили новый гигабитный свитч )
18. user1273680 25.07.24 15:28 Сейчас в теме
(17) Соглашусь. У нас тоже не завелось нормально чеки ККМ+RDP. Мы еще туда добавили интеграцию эквайринговых терминалов и все упало. В итоге тонкие клиенты на местах продажников работают в разы стабильнее и быстрее. Неудобно только их обновлять в случае обновления платформы. Но на то тоже есть решение, если таких рабочих место станет неприлично много.
Оставьте свое сообщение